CN113590910B - 一种网络流量检索方法和装置 - Google Patents

一种网络流量检索方法和装置 Download PDF

Info

Publication number
CN113590910B
CN113590910B CN202111126275.6A CN202111126275A CN113590910B CN 113590910 B CN113590910 B CN 113590910B CN 202111126275 A CN202111126275 A CN 202111126275A CN 113590910 B CN113590910 B CN 113590910B
Authority
CN
China
Prior art keywords
session
index
file
spcap
query
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
Application number
CN202111126275.6A
Other languages
English (en)
Other versions
CN113590910A (zh
Inventor
曲武
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinjing Yunhua Shenyang Technology Co ltd
Beijing Jinjingyunhua Technology Co ltd
Original Assignee
Jinjing Yunhua Shenyang Technology Co ltd
Beijing Jinjingyunhua Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jinjing Yunhua Shenyang Technology Co ltd, Beijing Jinjingyunhua Technology Co ltd filed Critical Jinjing Yunhua Shenyang Technology Co ltd
Priority to CN202111126275.6A priority Critical patent/CN113590910B/zh
Publication of CN113590910A publication Critical patent/CN113590910A/zh
Application granted granted Critical
Publication of CN113590910B publication Critical patent/CN113590910B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes

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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明属于网络流量实时捕获、存储和检索技术领域,具体涉及一种网络流量检索方法和装置:捕获网络数据包;对数据包按照会话进行重组并标记会话,写入SPCAP文件;提取每个数据包在SPCAP文件中的位置信息,生成会话位置向量。提取相关会话元数据信息;提出面向会话的流量索引建立算法TIndex,索引内存中的会话元数据及其位置向量数据集合,生成索引文件,并写入时序文件夹;利用流量检索算法TSearch对会话的元数据进行检索,获取会话的元数据和位置向量,进而获取相关会话的PCAP文件。本发明提出相对应的索引建立算法TIndex以及检索算法TSearch,能够支持实时高速网络全流量存储、索引和检索业务。

Description

一种网络流量检索方法和装置
技术领域
本发明属于网络流量实时捕获、存储和检索技术领域,具体涉及一种网络流量检索方法和装置,能够高效的获取到用户关注的数据包。
背景技术
大多数网络流量监控和安全应用,例如 IDS/IPS(入侵检测/入侵阻断系统)在不事先存储网络流量的情况下实时分析经过的网络流量。然而,在某些情况下,必须在磁盘上创建一个存储库用于存储整个网络流量,这使得网络管理员可以回溯历史的网络流量去分析异常,而很多流量分析领域都需要这样的“时间机器”,例如:
(1)由于计算性能有限,而网络流量实时处理是一种计算密集型的工作,导致很多网络流量不能实时处理,这需要在业务要求的范围内对流量进行留存,以便后续处理;
(2)在合法监听和网络取证领域,必须确保能够无损存储原始网络实时流量,为后续溯源取证提供依据;
(3)在网络安全领域,网络安全专家需要利用最新的知识库或检测能力分析历史流量,以便发现未识别的威胁;
(4)在金融领域的交易中,网络延迟和通信必须满足指定的要求,故需要保留网络通信流量,以便进行故障定位并解决问题。
对于全流量存储,如何快速的检索网络流量数据是非常关键的技术。通常会对存储的网络流量数据建立索引以满足后续的检索工作。在面对高速链路、大规模网络和复杂多样应用时,仍旧存在着大量的挑战:
(1)数据规模,全流量存储产品需要记录以周为单位的流量数据,这将需要大量的存储空间。对于1Gb/s的实时流量带宽,存储一周的原始流量将需要76TB的存储阵列。而10Gb/s的实时流量带宽场景在当前也是常见的,存储一周的原始流量将需要756TB的存储阵列;
(2)处理性能,全流量存储产品需要能够处理高速流量,而10Gb/s的实时流量带宽场景在当前也是常见的;
(3)查询性能,由于实时流量带宽的稳步增长,存储周期也不断延长,而用户需要能够从大规模数据存储阵列中快速检索出满足条件的数据包。
为了解决以上问题,研究人员也提出了一些方案试图缓解或部分解决以上问题。专利CN103714134B,一种网络流量数据索引方法及系统,基于位图数据结构和字典树结构提出一种索引结构,位图-字典树对流量数据包进行查询,其索引结构并没有提供对时间范围进行查询能力,也未提供对查询条件的预过滤筛选。此外,缺乏预过滤能力的面向数据包的查询索引将会导致大量的磁盘IO;专利CN109614518A,一种网络流量数据存储、还原方法及系统,提供一种网络流量数据存储、还原方法及系统,旨在将添加了时间戳的数据包与数据流分别单独进行存储,通过数据流与数据包建立的索引关系以及用户设置的查询条件还原数据包,实现数据流和数据包存储的区分和管理,从而通过相应对应关系使得数据包的还原快速且准确。该专利提出一种抽象的查询逻辑,索引和数据映射是面向数据包的,而且作者并没有说明如何构建这套系统。此外,在该专利中,作者提出的数据流是指时间戳、源IP、目的IP、源端口、目的端口、方向以及数据包索引数组。专利CN108989301A,一种多索引的网络流量数据索引方法、设备及存储介质,提供了能快速生成会话索引信息和数据包索引两级索引方案。该专利提出一种抽象的二级索引逻辑并提供相关字段,并没有说明如何建立这两级索引实现快速定位到会话的所有数据包索引信息。
简言之,当前技术依然存在一些缺陷:
(1)索引建立过于简单,整个索引随着时间积累变得非常庞大,甚至难以引导到内存中,查询代价较高。此外,缺少时间索引、过滤索引,用户的查询直接遍历磁盘上的数据包索引文件,导致对复杂的查询需求效率较低。而且,对于索引文件和原始数据没有进行压缩,存储效率较低;
(2)有损存储:利用聚合或条件筛选技术,仅存储用户关注的流量。但这种方式对于很多对于无损流量要求高的领域并不适用,例如合法监听和网络取证、网络安全领域和金融交易领域;
(3)全流量实时处理、查询性能和存储使用不平衡:大量的全流量存储系统难以实现在流量实时存储和查询性能之间兼顾。重视高速流量实时存储的方案,专注于将硬盘阵列视为一个用于记录数据包的高吞吐量的循环队列。在该方案中,由于数据包的无效组织导致查询处理过程浪费了大量的磁盘IO带宽,进而导致流量实时存储性能下降。另一类方案要求高效的查询性能,不要求实时流量落盘,采用离线或半离线的方式落盘和构建索引。在该方案中,由于缺乏实时性导致对实时性要求较高的应用场景难以适用。
由于上述方法在网络流量的实时处理和检索方面存在着不同程度的缺点,从而使得这些方法不能够真正应用于10Gbps及以上的高速链路环境中。而客户迫切要求既能够实时地对高带宽环境下的网络数据流量进行存储,又能够对历史数据流量进行快速查询检索的方案。
发明内容
为了解决上述技术问题,本发明提供了一种网络流量检索方法和装置,能够有效地支持实时高速网络流量的存储、索引和检索,满足用户高效的检索需求,即时间窗口+五元组+自定义特征(例如MAC)的逻辑运算查询。
本发明是这样实现的,提供一种网络流量检索方法,包括如下步骤:
1)实时从网络适配器捕获网络流量数据包;
2)按照网络会话组织步骤1)捕获的网络流量数据包:将同一会话的网络流量数据包从网络适配器以零拷贝的方式复制到会话缓冲区中;当缓冲区满或者会话结束后,生成session_id标记该会话,将会话写入磁盘中预分配的SPCAP文件;
3)在步骤2)的会话写入SPCAP文件过程中,提取该会话的元数据信息;同时生成会话位置向量;将会话位置向量维护到内存中;
4)在指定的时间窗口内或者SPCAP文件达到指定的大小,对内存中的会话元数据和位置向量集合,利用流量索引建立算法TIndex进行索引,生成索引文件,并写入指定的时序文件夹;
5)索引完成后,利用流量检索算法TSearch对会话的索引进行检索,获取会话的元数据和位置向量集合,进而获取相关会话的PCAP文件。
优选地,对于步骤2)中所述的SPCAP文件,格式满足PCAP文件国际标准,并具有以下特性:(1)用户指定大小的PCAP文件,或指定时间窗口内生成的PCAP文件;(2)文件中,按照会话顺序组织的,SPCAP={session_1(packet_1,packet_2,packet_3,...,packet_n),session_2(packet_1,packet_2,packet_3,...,packet_m),...,session_x(packet_1,packet_2,packet_3,...,packet_p)};其中,m、n、p和x是变量,会话定义为5元组相同的数据包,按照时序组成会话;(3)对于SPCAP文件,会话可能在单个SPCAP文件中,也可能在两个SPCAP文件中,不可能跨多个SPCAP文件;(4)对于SPCAP文件,会话的顺序与时间无关,与会话流量落盘的顺序有关。
进一步优选,对于步骤3)所述的会话位置向量,包括packetPos、packetLen、packetDir、fieId字段,其中,packetPos表示每个数据包在文件中的偏移,负数表示所在文件ID,如果一个会话存储在2个SPCAP文件中,会有2个负数;packetLen表示每个数据包的长度;packetDir表示每个数据包的方向,1表示发给服务器方向,0表示发给客户端方向;-1是无效值,与packetPos中的负数是对应的;fieId表示SPCAP文件的ID,如果一个会话存储在2个SPCAP文件中,fieId中有2个值。
进一步优选,对于步骤4)所述的流量索引建立算法TIndex,利用面向时间的文件目录树提供用户时间范围查询能力,定位索引文件组,即建立年/月/日/小时嵌套目录;利用索引文件组中的“.cf”索引文件进行“.idx”索引筛选;利用“.idx”索引文件进行会话筛选,定位SPCAP文件集合;最后,通过上述步骤获取的会话位置向量列表从SPCAP文件集合中获取满足用户查询条件的会话PCAP文件。
进一步优选,对于步骤4)所述的流量索引建立算法TIndex,具有如下特征:(1)面向会话的;(2)每个SPCAP文件对应一个索引组,包括以后缀“.cf”和后缀“.idx”文件,其中,“.cf”索引用于过滤筛选,“.idx”索引用来定位会话元数据和位置向量,进而获取会话的PCAP文件;(3)对于“.cf”索引文件,要求数据结构空间效率高,允许一定程度的误报,但不能漏报,即当判断元素存在时,可能不存在,但是当判断元素不存在时就一定不存在;(4)对于“.idx”索引文件,为提高索引结构空间效率,提出编码和压缩算法对“.idx”文件进行压缩。
进一步优选,对于步骤4)所述的流量索引建立算法TIndex,支持五元组查询、MAC查询,且能够扩展添加其他关键字查询,此外,还支持查询条件的逻辑运算,即AND、OR和NOT的条件嵌套查询。
进一步优选,对于步骤4)所述的流量索引建立算法TIndex,索引存储在SSD阵列上,利用面向时间的文件目录树完成时间范围查询后,命中的时间范围的索引要被引导到内存中,由于硬件资源的稀缺性,使得索引建立算法设计过程中使用了不同的压缩方案对“.cf”索引和“.idx”索引进行优化,对于“.cf”索引,通过编码和高效压缩算法实现了较高的压缩比,对于“.idx”索引,利用会话位置向量的单调特性,通过数据优化,使得会话位置向量仅存储连续位置的差值,即包大小,进而产生大量的等值字段,利用字典压缩实现了较高的压缩比。
进一步优选,对于步骤5)所述的流量检索算法TSearch,提供用户五元组查询和MAC查询接口,若索引文件支持其他关键字查询,检索算法也提供扩展能力,此外,检索算法支持对五元组、MAC地址和其他自定义关键字的逻辑运算,即AND、OR和NOT的条件嵌套查询。
本发明还提供了一种网络流量检索装置,包括下列模块:
流量捕获模块:用于实时从网络适配器捕获网络流量数据包;
会话重组&索引模块:会话重组用于将数据包按到达时间戳排序,并在内存缓冲区中进行存储;索引模块,用于对内存缓冲区中的会话数据包进行分析,生成元数据和会话位置向量,以上这些数据将被维护到内存中;然后,对于指定时间窗口的会话元数据,利用流量索引建立子模块生成索引文件;
存储模块:对于索引文件,提取其年、月、日和小时或指定的时间窗口,默认为小时,在SSD阵列和HDD阵列上分别建立时间目录树,并将索引文件落盘到SSD阵列的相应时间目录里,将SPCAP文件落盘到HDD阵列的相应时间目录里,此外,由于存储硬件规格和用户要求的存储周期需求,周期覆盖子模块利用先进先出算法周期性使用新数据覆盖旧数据;
会话查询处理模块:包括会话查询子模块和包重组&会话PCAP生成子模块,会话查询子模块用于根据用户输入的查询请求检索所述索引结构从而获得网络流量数据的存储位置信息,将该存储位置信息返回给包重组&会话PCAP生成子模块;包重组&会话PCAP生成子模块从若干个SPCAP文件中提取包并重组成会话PCAP;最后,返回给客户会话元数据列表及其相应的会话PCAP下载链接作为查询应答;
流量分析模块:对于每条会话元数据及其会话PCAP包,用户使用PCAP分析工具对其进行协议解析和文件还原等操作,实现业务目的。
与现有技术相比,本发明的优点在于:
1、是一种全流量、高保真的存储和检索系统,能够兼顾高速流量实时处理、索引实时构建和高效查询等优点;
2、对于流量和索引,采用面向会话的处理、索引和检索方法,优于传统面向数据包的处理方法,极大的提高存储、索引和检索效率;
3、对于索引的建立, 采用四级索引定位用户关注的会话PCAP文件,包括时间索引、哈希过滤索引“.cf”、位置索引“.idx”和SPCAP文件;
4、在基于索引的查询过程中,采用了内存、SSD阵列和HDD阵列三级存储结构,最近指定时间范围内的、且满足小于指定大小的索引放入内存,其他索引放入SSD阵列,SPCAP文件放在HDD阵列,确保最慢的硬件尽量少的访问;
5、对于存储的优化,在索引建立过程中,采用了高效的编码和压缩算法降低索引的存储开销,并降低了存储到内存的加载开销,提高了查询效率。此外,SPCAP文件也使用了LZ4压缩算法进一步降低了磁盘开销;
6、对于用户查询的支持,满足用户如下类别的查询示例,"2021-07-31T13:22:33+00:00"<="time_range"<=2021-08-10T13:22:33+00:00”AND "src_mac"="00:00:5E:00:14:64" OR "src_ip":"61.147.82.59" NOT("src_port":"4319") AND "dst_ip":"59.34.239.234"AND"protocol":"tcp"AND "dst_port":"443"。即检索算法支持对五元组、MAC地址的逻辑运算,即AND、OR和NOT的条件嵌套查询;此外,支持用户自定义查询字段。对于查询的算法方案能够利用尽量少的存储IO,快速地定位用户需要的会话列表,包含多个会话元数据以及相对应的PCAP文件;
7、最后,本发明提出的网络流量检索装置支持商用服务器硬件,对比其他方案对专业硬件的需求,本发明极大的降低了用户的整体拥有成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的网络流量检索方法的系统流程图;
图2为本发明实施例提供的网络流量检索方法的会话重组示意图;
图3为本发明实施例提供的网络流量检索方法的索引结构示意图;
图4为本发明实施例提供的网络流量检索装置的模块流程图;
图5为本发明实施例提供的网络流量检索装置的架构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
本发明提出一种网络流量数据检索方法,包括下列步骤:
步骤1,实时从网络适配器捕获网络流量数据包;
步骤2,按照网络会话组织数据包,包括将同一会话的数据包从网络适配器以零拷贝的方式复制到会话缓冲区中;当缓冲区满或者会话结束,生成session_id标记该会话,将会话写入磁盘中预分配的SPCAP文件空间。SPCAP文件为会话检索提供了便捷的文件系统,减小了检索会话所需的磁盘IO;
步骤3,在会话写入SPCAP文件过程中,提取该会话的元数据信息,例如五元组、MAC等;同时,生成会话位置向量,包含packetPos、packetLen、packetDir、fieId。其中,packetPos表示每个数据包在SPCAP文件中的偏移量向量,packetLen表示每个数据包的大小向量,packetDir表示每个数据包的方向向量,field表示SPCAP文件的ID。以上这些向量将被维护到内存中;
步骤4,在指定的时间窗口内或者SPCAP文件达到指定的大小,对内存中的会话元数据和位置向量集合,利用流量索引建立算法TIndex进行索引,生成索引文件,并写入指定的时序文件夹;
步骤5,索引完成后,利用流量检索算法TSearch对会话的元数据进行检索,获取会话的元数据和位置向量,进而获取相关会话的PCAP文件。
对于SPCAP文件,其格式满足PCAP文件国际标准,并具有以下特性:
(1)用户指定大小的PCAP文件,或指定时间窗口内生成的PCAP文件;
(2)文件中,按照会话顺序组织的,SPCAP={session_1(packet_1,packet_2,packet_3,...,packet_n), session_2(packet_1,packet_2,packet_3,...,packet_m),...,session_x(packet_1,packet_2,packet_3,...,packet_p)}。其中,m、n、p和x是变量,会话定义为5元组相同的数据包,按照时序组成会话;
(3)对于SPCAP文件,会话可能在单个SPCAP中,也可能在两个文件SPCAP文件中,不可能跨多个SPCAP文件;
(4)对于SPCAP文件,会话的顺序与时间无关,与会话落盘的顺序有关。
对于SPCAP文件,其构建算法如图2所示,形式化描述如下:
SPCAP_Buffer =Malloc[Max_SPCAP_Buffer]
spcap_year,spcap_month,spcap_day,spcap_hour=time()
path_data=“/HDD/”
While(Circular_Buffer)do:
if (size(SPCAP_Buffer)>=Max_SPCAP_BufferORTimeout_SPCA==True):
path_SPCAP=mkdir_SPCAP(path_data,spcap_year,spcap_month,
spcap_day,spcap_hour)
SPCAP_Buffer = LZ4(SPCAP_Buffer)
SPCAP_Buffer.Save_HDD(path_SPCAP)
SPCAP_Buffer=Malloc[Max_SPCAP_Buffer]
spcap_year,spcap_month,spcap_day,spcap_hour=time()
Session_Buffer=Group_5Tuple(Circular_Buffer)
if (size(Session_Buffer)>=Max_Session_BufferORTimeout_Session==True ORend_session==True):
Session_ID_Context=Session_Buffer
Session_ID=Getid(Session_Buffer)
SPCAP_Buffer.add(Session_ID_Context)
packetPos,packetLen,packetDir,fieId=get_loc(Session_ID_Context)
Loc[Session_ID]=packetPos,packetLen,packetDir,fieId
Metadata_Session = get_metadata(Session_ID_Context)
return (Session_ID, Session_ID_Context,Loc[Session_ID],path_SPCAP,Metadata_Session)
end While
return NULL
其中,Circular_Buffer为时序数据包环形队列,时序数据包来自零拷贝驱动程序;SPCAP_Buffer表示内存中开辟的自定义大小的SPCAP缓存,默认4GB。随着会话数据包不断加入缓存,当缓存达到指定大小Max_SPCAP_Buffer,则将SPCAP缓存写入HDD阵列相应的时间索引文件夹;若实时流量较小,SPCAP缓存在指定的时间Timeout_SPCA内难以达到指定大小,为满足用户的查询需求,也需要将SPCAP缓存写入HDD阵列相应的时间索引文件夹;spcap_year、spcap_month、spcap_day、spcap_hour,定义为SPCAP缓存申请的时间,用来构造SPCAP存储的时间索引目录path_SPCAP;函数Group_5Tuple,负责循环从Circular_Buffer获取数据包package,根据数据包的五元组不同将数据包归到不同的会话缓存Session_Buffer中。当会话缓存达到指定大小Max_Session_Buffer,或者会话持续时间超时指定的时间Timeout_Session,即会话超时,或者会话结束,该会话数据包序列Session_ID_Context将被进行分析,生成会话ID定义为Session_ID,获取会话位置向量信息,包括packetPos,packetLen,packetDir,fieId。对于会话元数据Metadata_Session,该向量包含了会话五元组信息,MAC地址以及其他用户关注的特征信息。
构建SPCAP文件过程描述如下:
(1)从零拷贝驱动程序(DPDK、Pfring_zc等)获取时序数据包序列;
(2)利用Group_5Tuple函数根据数据包的五元组不同将数据包序列进行分组,放到不同的会话缓存队列中;
(3)当缓存中的会话超时、会话结束或者数据超过缓存大小,则定义为该会话已经完整,生成会话Session_ID,并获取会话元数据和位置向量信息,位置向量信息包括packetPos,packetLen,packetDir,fieId。会话元数据和位置向量信息将作为流量索引建立算法TIndex的输入,建立索引文件组;
(4)同时,将该会话写入SPCAP缓存队列。当SPCAP缓存申请时,根据申请时间构造SPCAP存储的时间索引目录path_SPCAP;
(5)当SPCAP缓存队列达到指定大小或者生成时间超时,将SPCAP缓存数据利用常用压缩算法(例如LZ4算法)压缩后写入到HDD阵列的指定文件目录中path_SPCAP。示例,“/HDD/2021/8/20/22/1615392002463.spcap”;
(6)将这些信息Session_ID, Session_ID_Context,Loc[Session_ID],path_SPCAP,Metadata_Session作为流量索引建立算法TIndex的输入,用于构建四级索引。
对于五元组的描述,源IP、目标IP、源端口、目标端口和协议;
对于会话结束定义如下:对于TCP协议,TCP的连接终止需要4个包交换来完成。在两个逻辑管道上每个逻辑管道上发送方发送FIN置位的终止包,然后收到ACK后关闭该逻辑管道的连接。对于UDP协议,是无连接的协议,仅以超时作为其会话结束的标志。其他协议也有相关标准进行定义。
对于会话位置向量定义如下:
(1)packetPos,每个数据包在文件中的偏移,其中负数表示所在文件ID(取反),如果一个会话存储在2个SPCAP文件中,会有2个负数。会话存储在单个SPCAP文件中是最常见的,如下示例,"packetPos"[-1615392002463,1973083516,1973458249,1973470869,1974424597,1975226208,1975245558,1975384521,1975552574,1975788948,1977461663,1977978980];
(2)packetLen,每个数据包的长度。示例,"packetLen":[0,76,76,200,82,76,172,76,76,121,76,76];
(3)fieId,SPCAP文件的ID,如果一个会话存储在2个2PCAP文件中,fieId中有2个值。示例,"fileId":[1615392002463];
(4)packetDir,每个数据包的方向;1表示发给服务器方向;0表示发给客户端方向;-1是无效值(与packetPos中的负数是对应的)。示例,"packetDir":[-1,0,0,0,1,1,1,0,0,1,1,1]。
流量索引事实上是一个四级索引组,如图3所示,包括时间索引、哈希过滤索引(“.cf”索引)和会话索引(“.idx”索引)和SPCAP文件。对于每级索引,查询代价逐步提高;
对于流量索引建立算法TIndex,利用面向时间的文件目录树提供用户时间范围查询能力,即利用年/月/日/小时嵌套目录定位“.cf”索引和“.idx”索引;利用索引文件组中的“.cf”索引文件进行“.idx”索引筛选;利用“.idx”索引文件进行会话筛选,定位SPCAP文件集合;最后,通过上述步骤获取的会话位置向量列表从SPCAP文件集合中获取满足用户查询条件的会话PCAP文件。
对于流量索引建立算法TIndex,具有如下特征:
(1)面向会话的;
(2)每个SPCAP文件对应一个索引组,包括以后缀“.cf”和后缀“.idx”文件。其中,“.cf”索引用于过滤筛选,“.idx”索引用来定位会话元数据和位置向量,进而获取会话的PCAP文件;
(3)对于“.cf”索引文件,要求数据结构空间效率高,允许一定程度的误报,但不能漏报。即当判断元素存在时,可能不存在。但是当判断元素不存在时就一定不存在;
(4)对于“.idx”索引文件,为提高索引结构空间效率,提出编码和压缩算法对“.idx”文件进行压缩。
对于流量索引建立算法TIndex,支持五元组查询、MAC查询,也可以扩展添加其他关键字查询。此外,支持查询条件的逻辑运算,即AND、OR和NOT的条件嵌套查询。
对于流量索引建立算法TIndex,索引存储在SSD阵列上,利用面向时间的文件目录树完成时间范围查询后,命中的时间范围的索引要被引导到内存中。由于硬件资源的稀缺性,使得索引建立算法设计过程中使用了不同的压缩方案对“.cf”索引和“.idx”索引进行优化。对于“.cf”索引,通过编码和高效压缩算法实现了较高的压缩比,对于“.idx”索引,利用会话位置向量的单调特性,通过数据优化,使得会话位置向量仅存储连续位置的差值,即包大小,进而产生大量的等值字段,利用字典压缩实现了较高的压缩比。
对于流量索引建立算法TIndex,形式化描述如下:
TIndex(Session_ID,Loc,path_SPCAP):
{
spcap_year,spcap_month,spcap_day,spcap_hour=get_dir(path_SPCAP)
path_index=“/SSD/”
path_Time_Index=get_path(path_index,spcap_year,spcap_month,spcap_day,spcap_hour)
time_Index=mkdir_time_index(path_Time_Index)
cf_SrcIP=Cuckoo_filter(Metadata_Session)
cf_DstIP=Cuckoo_filter(Metadata_Session)
cf_SrcPORT=Cuckoo_filter(Metadata_Session)
cf_DstPORT=Cuckoo_filter(Metadata_Session)
cf_SrcMAC=Cuckoo_filter(Metadata_Session)
cf_DstMAC=Cuckoo_filter(Metadata_Session)
cf_Index=[cf_SrcIP,cf_DstIP,cf_SrcPORT,cf_DstPORT,cf_SrcMAC,cf_DstMAC]
cf_Index_compress=LZ4.compression(cf_Index)
Locc=compress(Loc,Session_ID)
value=Locc
key_ip=encode(IP)
key_port=PORT
idx.Index_SrcIP=hashmap(key_ip,value)
idx.Index_DstIP=hashmap(key_ip,value)
idx.Index_SrcPORT=hashmap(key_port,value)
idx.Index_DstPORT=hashmap(key_port,value)
idx_compress=LZ4.compression(idx)
}
哈希过滤索引“.cf”生成过程描述如下:
(1)哈希过滤索引包括源IP索引、目标IP索引、源端口索引、目标端口索引、源MAC索引和目标MAC索引;
(2)哈希过滤索引算法采用插入和检索效率都是常数(O(k))的哈希算法例如CuckooFilter、BloomFilter。其中,k表示k个Hash函数。其优点是在引入一定概率误报的基础上,节约极大的存储空间的同时,查询效率极大优于传统索引结构。即当判断元素存在时,可能不存在。但是当判断元素不存在时就一定不存在。一定概率的误报,将会在后面阶段进一步过滤,确保返回给用户的结果100%准确;
(3)以CuckooFilter为例,为了节约存储(内存和SSD阵列)资源,提高索引加载内存效率,需要对哈希过滤索引组中的各个索引大小进行设计,满足应用的前提下,压缩存储空间。MAC类的CuckooFilter大小为216bits,端口类的CuckooFilter大小为216bits,IPV4类的CuckooFilter大小为232bits;
(4)在哈希过滤索引算法中提出了以下优化方案,包括将面向包的索引优化为面向会话的哈希过滤索引、索引结构允许较低概率的误报(不存在漏报,误报在下一阶段将会被过滤掉)、哈希索引压缩、每个SPCAP文件对应一个哈希索引等;
(5)对于哈希过滤索引,采用压缩算法(例如LZ4算法)对哈希过滤索引进行压缩,进一步节约存储(内存和SSD阵列)资源,提高哈希过滤索引加载内存效率。
会话索引生成过程描述如下:
(1)会话索引包括源IP索引、目标IP索引、源端口索引、目标端口索引;
(2)会话索引采用Hashmap结构进行数据存储。其中,会话索引中IP索引Hashmap的Key选择最大桶数以B类地址的规模为准,62536个桶;
(3)会话索引采用Hashmap结构进行数据存储。其中,会话索引中端口索引Hashmap的Key选择最大桶数以端口总数量为准,也是62536个桶;
(4)会话索引采用Hashmap结构进行数据存储。其中,Hashmap结构的Value为编码和压缩后的会话位置信息;
(5)为了提高会话索引的效率,节约存储(内存和SSD阵列)资源,提高索引加载内存效率,在算法中提出了以下优化策略,包括将面向包的索引优化为面向会话的索引、会话索引结构允许较低概率的误报(不存在漏报,误报在下一阶段将会被过滤掉)、会话索引压缩;
(6)对于会话索引,采用压缩算法(例如LZ4算法)对会话索引进行压缩,进一步节约存储(内存和SSD阵列)资源,提高会话索引加载内存效率。
对于会话索引,每个SPCAP文件对应一个会话索引,每个SPCAP文件包含若干条会话流量。即每个会话索引包含多条会话元数据及位置信息;
会话索引Hashmap的Key压缩算法基于以下假设,即不同的A类地址往往分配到不同的国家、运营商、组织等,源IP地址中的B类地址哈希碰撞概率较低。故用户流量中源IP地址A类地址不同而B类地址相同的流量占比极少甚至不存在。因此,会话索引中IP索引Hashmap的Key选择最大桶数以B类地址的规模为准,62536个桶;会话索引中端口索引Hashmap的Key选择最大桶数以端口总数量为准,也是62536个桶。Hashmap的Key范围为0~65535。
会话索引Hashmap的Value压缩算法描述如下:
(1)Value的值为Json结构,实例如下,
{
"src_ip":"61.147.82.59",
"src_port":"4319",
"dst_ip":"59.34.239.234",
"dst_port":"443",
"protocol":"tcp",
"mac":"0800200A8C6D",
"packetPos":[-1615392002463,1973083516,1973458249,1973470869,1974424597,1975226208,1975245558,1975384521,1975552574,1975788948,1977461663,1977978980],
"packetLen":[0,76,76,200,82,76,172, 76,76,121,76,76],
"fileId":[1615392002463],
"packetDir":[-1,0,0,0,1,1,1,0,0,1,1,1]
}
其中,packetPos,每个数据包在文件中的偏移,其中负数表示所在文件ID(取反),如果一个会话存储在2个pcap文件中,会有2个负数。packetLen,每个数据包的长度。fieId,pcap文件的ID,如果一个会话存储在2个pcap文件中,fieId中有2个值。packetDir,每个数据包的方向;1表示发给服务器方向;0表示发给客户端方向;-1是无效值(与packetPos中的负数是对应的)。
(2)为压缩Value,首先将Json结构转成嵌套数组。然后,对于IP地址,将其编码为无符号整型;对于端口字段,也将其视为无符号整型;对于协议字段protocol,将其编码为枚举类型,也将其视为无符号整型;对于网卡MAC地址,若字符串将占用12个字节,将其编码成两个无符号整型,总计占4个字节空间。而对于packetPos、packetLen、fieId、packetDir,通过运算和编码,生成一个等长度向量,记为Locc,通过这个向量能够获取到这四个向量相应的信息。示例,Locc(session_10)=[-1615392002463,1973083516,76,76,200,-82,-76,-172,76,76,-121,-76,-76]。会话session_10,存在一个文件ID为1615392002463的SPCAP文件中,带“-”的字段且大于指定数值表示文件ID,文件ID之后的第一个字段表示会话流量在SPCAP文件中的起始位置,起始位置与包大小绝对值相加即为下一个包的起始位置。其他字段表示包大小,正数和负数表示通信方向。对于会话存在多个SPCAP文件中情况,见示例,Locc(session_11)=[-1615392002463,1973083516,76,76,200,-82,-76,-172,76,76,-121,-76,-76,-1977978980,1932083734,76,76,-121,-76,-76,122,122,122,-172,-76,-76]。会话session_11存在两个SPCAP文件中。由于SPCAP文件的大小远大于会话内存缓冲区的大小,故仅存在会话session_10和会话session_11这两种情况。利用会话位置向量的单调特性,通过数据优化,使得会话位置向量仅存储连续位置的差值,即包大小,进而产生大量的等值字段,利用字典压缩实现了较高的压缩比。因此,通过运算和编码,生成压缩位置向量Locc,压缩原始向量接近3:1。
(3)采用压缩算法(例如LZ4算法)对会话索引进行压缩,进一步节约存储(内存和SSD阵列)资源,提高会话索引加载内存效率。
IP地址编码和解码过程描述如下:
(1)IP地址转换为整数:比如"192.168.1.254",以点为分割,将192 168 1 254保存在一个int a[4]数组里,然后通过unsigned int nResult = (a[3] << 24) + (a[2] <<16) + (a[1] << 8) + a[0]得到一个无符号32位整数;
(2)整数转换为IP地址:把这个整数转换成一个无符号32位二进制数。从左到右,每八位进行一下分割,得到4段8位的二进制数,把这些二进制数转换成整数。
对于流量检索算法TSearch,形式化描述如下:
TSearch(query_string):
{
query_list=split_query(query_string)
time_range=time_Index.query(query_list[0])
cf_index,idx_index=cf_index.get(time_range)
idx_index=cf_index.filter(query, idx_index)
session_list=idx_index.filter(query)
session_hit=djust_query(session_list)
session_metadata=session_hit.get_matedata()
session_pcap=session_hit.get_sessionpcap()
}
对于流量检索算法TSearch,对于形式化过程中相关函数描述如下:
(1)函数split_query(),根据逻辑运算符对查询字符串进行切分,返回query_list列表,包括时间窗口查询串、源IP查询串、目标IP查询串、源端口查询串、目标端口查询串、源MAC查询串和目标MAC查询串;
(2)函数time_Index.query(query_list[0]),根据利用时间索引查询时间窗口串,返回满足时间条件的哈希过滤索引cf_index索引列表和会话索引idx_index列表;
(3)函数cf_index.filter(query, idx_index),利用哈希过滤算法,对查询字符串中涉及的源IP查询串、目标IP查询串、源端口查询串、目标端口查询串、源MAC查询串和目标MAC查询串进行检索,获取满足条件的cf_index索引,返回与之对应的idx_index索引;
(4)函数idx_index.filter(query),利用会话索引对查询字符串中涉及的源IP查询串、目标IP查询串、源端口查询串、目标端口查询串进行检索,获取满足条件的会话元数据列表以及会话PCAP的位置向量;
(5)由于哈希过滤索引和会话索引都存在一定概率的误报,而这些误报将使用adjust_query(session_list)进行校准,返回给用户满足条件的、精准的会话元数据列表以及会话PCAP的位置向量;
(6)session_hit.get_matedata(),将满足条件的、精准的会话元数据列表返回给业务端;
(7)将满足条件的、精准的会话PCAP的位置向量列表返回给业务端。
对于流量检索算法TSearch,提供用户时间窗口查询、五元组查询和MAC查询接口,若索引文件支持其他关键字查询,检索算法也提供扩展能力。此外,检索算法支持对时间窗口、五元组、MAC地址和其他自定义关键字的逻辑运算,即AND、OR和NOT的条件嵌套查询;
对于流量检索算法TSearch,对于用户输入的查询条件逻辑运算字符串query_string,例如,"2021-07-31T13:22:33+00:00"<="time_range"<=2021-08-10T13:22:33+00:00”AND "src_mac"="00:00:5E:00:14:64" OR "src_ip":"61.147.82.59" NOT("src_port":"4319") AND "dst_ip":"59.34.239.234"AND"protocol":"tcp"AND "dst_port":"443",TSearch能够利用尽量少的存储IO,快速地定位用户需要的会话列表,包含多个会话元数据以及相对应的PCAP文件。用户使用PCAP分析工具对其进行协议解析和文件还原等操作,实现业务目的。
对于流量检索算法TSearch,提供用户时间窗口查询、五元组查询和MAC查询接口,若索引文件支持其他关键字查询,检索算法也提供扩展能力。此外,检索算法支持对五元组、MAC地址和其他自定义关键字的逻辑运算,即AND、OR和NOT的条件嵌套查询。此外,由于算法本身限制,本发明不支持对获取的会话PCAP文件进一步进行标准的BPF查询,尽管该能力提供给用户更为灵活的字符串级查询匹配能力。此外,由于算法设计并没有兼顾IPV6版本,本发明不支持对IPV6的流量进行检索;
对于流量检索算法TSearch,由于哈希过滤索引和会话索引都存在一定概率的误报,而这些误报将使用检索校准算法进行校准,返回给客户精准的结果。对于查询示例,例如,"2021-07-31T13:22:33+00:00"<="time_range"<=2021-08-10T13:22:33+00:00”AND"src_mac"="00:00:5E:00:14:64"OR "src_ip":"61.147.82.59" NOT("src_port":"4319")AND "dst_ip":"59.34.239.234"AND"protocol":"tcp"AND "dst_port":"443",检索校准算法描述如下:
(1)分解查询条件后,获取会话索引的子索引返回的多组查询结果集合,例如"src_ip":{session_1,session_11,session_12,session_19,session_21,session_23}",dst_ip":{session_1,session_12,session_19,session_23}},"dst_port":{session_1,session_19,session_21,session_23}},"src_mac":{session_1,session_11,session_12,session_19,session_23}},"src_port":"4319":{session_19};
(2)这些结果集合,根据用户的逻辑运算条件进行逻辑运算,其结果为{session_1, session_23};
(3)由于哈希过滤索引和会话索引都是概率索引,存在一定概率的误报,不存在漏报。因此,最后需要利用查询条件对上一步的结果进一步过滤,得出最终的结果。假若session_23是由概率索引引发的误报,则用户最终的查询结果为{session_1}。
本发明方法实施例及其系统架构相对应,参考图4和图5,还提供了一种网络流量检索装置,包含下列模块:
流量捕获模块:用于实时从网络适配器捕获网络流量数据包;
会话重组&索引模块:会话重组用于将具有相同5元组的数据包按到达时间戳排序,并在内存缓冲区中进行存储。索引模块,用于对内存缓冲区中的会话数据包进行分析,生成元数据(例如session_id、五元组、MAC地址等)和会话位置向量,以上这些数据将被维护到内存中。然后,对于指定时间窗口的会话元数据,利用流量索引建立子模块生成索引文件;
存储模块:对于索引文件,提取其年、月、日和小时(或指定的时间窗口,默认为小时),在SSD阵列和HDD阵列上分别建立时间目录树,并将索引文件落盘到SSD阵列的相应时间目录里,将SPCAP文件落盘到HDD阵列的相应时间目录里。此外,由于存储硬件规格和用户要求的存储周期需求,周期覆盖子模块利用先进先出算法周期性使用新数据覆盖旧数据;
会话查询处理模块:包括会话查询子模块和包重组&会话PCAP生成子模块。其中,会话查询子模块用于根据用户输入的查询请求检索所述索引结构从而获得网络流量数据的存储位置信息,将该存储位置信息返回给包重组&会话PCAP生成子模块。包重组&会话PCAP生成子模块从若干个SPCAP文件中提取包并重组成会话PCAP。最后,返回给客户会话元数据列表及其相应的会话PCAP下载链接作为查询应答;
流量分析模块:对于每条会话元数据及其会话PCAP包,用户使用PCAP分析工具对其进行协议解析和文件还原等操作,实现业务目的。

Claims (8)

1.一种网络流量检索方法,其特征在于,包括如下步骤:
1)实时从网络适配器捕获网络流量数据包;
2)按照网络会话组织步骤1)捕获的网络流量数据包:将同一会话的网络流量数据包从网络适配器以零拷贝的方式复制到会话缓冲区中;当缓冲区满或者会话结束后,生成session_id标记该会话,将会话写入磁盘中预分配的SPCAP文件;
对于步骤2)中所述的SPCAP文件,格式满足PCAP文件国际标准,并具有以下特性:(1)用户指定大小的PCAP文件,或指定时间窗口内生成的PCAP文件;(2)文件中,按照会话顺序组织的,SPCAP={session_1(packet_1,packet_2,packet_3,...,packet_n), session_2(packet_1,packet_2,packet_3,...,packet_m),...,session_x(packet_1,packet_2,packet_3,...,packet_p)};其中,m、n、p和x是变量,会话定义为5元组相同的数据包,按照时序组成会话;(3)对于SPCAP文件,会话可能在单个SPCAP文件中,也可能在两个SPCAP文件中,不可能跨多个SPCAP文件;(4)对于SPCAP文件,会话的顺序与时间无关,与会话流量落盘的顺序有关;
3)在步骤2)的会话写入SPCAP文件过程中,提取该会话的元数据信息;同时生成会话位置向量;将会话位置向量维护到内存中;
构建SPCAP文件过程如下:
301)从零拷贝驱动程序获取时序数据包序列;
302)利用Group_5Tuple函数根据数据包的五元组不同将数据包序列进行分组,放到不同的会话缓存队列中;
303)当缓存中的会话超时、会话结束或者数据超过缓存大小,则定义为该会话已经完整,生成会话session_id ,并获取会话元数据和位置向量信息,会话元数据和位置向量信息作为流量索引建立算法TIndex的输入,建立索引文件组;
304)同时,将该会话写入SPCAP缓存队列,当SPCAP缓存申请时,根据申请时间构造SPCAP存储的时间索引目录path_SPCAP;
305)当SPCAP缓存队列达到指定大小或者生成时间超时,将SPCAP缓存数据利用压缩算法压缩后写入到HDD阵列的时间索引目录path_SPCAP中;
306)将SPCAP数据的session_id, session_id_Context,Loc[session_id],path_SPCAP,Metadata_Session作为流量索引建立算法TIndex的输入,用于构建四级索引,其中session_id代表会话地址;session_id_Context代表会话数据包序列;Loc[session_id]代表位置向量信息;path_SPCAP代表时间索引目录;Metadata_Session代表会话元数据,包含了会话五元组信息,MAC地址以及用户关注的其他特征信息;
4)在指定的时间窗口内或者SPCAP文件达到指定的大小,对内存中的会话元数据和位置向量集合,利用流量索引建立算法TIndex进行索引,生成索引文件,并写入指定的时序文件夹;
流量索引建立算法TIndex包括如下内容:
401)时间索引;
402)哈希过滤索引:
4021)哈希过滤索引包括源IP索引、目标IP索引、源端口索引、目标端口索引、源MAC索引和目标MAC索引;
4022)哈希过滤索引算法采用插入和检索效率都是常数O(k)的哈希算法,其中,k表示k个Hash函数,引入一定概率误报,即当判断元素存在时,可能不存在,但是当判断元素不存在时就一定不存在,一定概率误报将会在后面阶段进一步过滤,确保返回给用户的结果100%准确;
4023)以CuckooFilter为例,为了节约存储资源,提高索引加载内存效率,需要对哈希过滤索引组中的各个索引大小进行设计,满足应用的前提下,压缩存储空间,MAC类的CuckooFilter大小为216bits,端口类的CuckooFilter大小为216bits,IPV4类的CuckooFilter大小为232bits;
4024)在哈希过滤索引算法中提出了以下优化方案,包括将面向包的索引优化为面向会话的哈希过滤索引、索引结构允许较低概率的误报、哈希索引压缩、每个SPCAP文件对应一个哈希索引;
4025)采用压缩算法对哈希过滤索引进行压缩,进一步节约存储资源,提高哈希过滤索引加载内存效率;
403)会话索引:
会话索引生成过程描述如下:
4031)会话索引包括源IP索引、目标IP索引、源端口索引、目标端口索引;
4032)会话索引采用Hashmap结构进行数据存储,其中,会话索引中IP索引Hashmap的Key选择最大桶数以B类地址的规模为准,62536个桶;
4033)会话索引采用Hashmap结构进行数据存储,其中,会话索引中端口索引Hashmap的Key选择最大桶数以端口总数量为准,也是62536个桶;
4034)会话索引采用Hashmap结构进行数据存储,其中,Hashmap结构的Value为编码和压缩后的会话位置信息;
4035)为了提高会话索引的效率,节约存储资源,提高索引加载内存效率,在算法中提出了以下优化策略,包括将面向包的索引优化为面向会话的索引、会话索引结构允许较低概率的误报、会话索引压缩;
4036)对于会话索引,采用压缩算法对会话索引进行压缩,进一步节约存储资源,提高会话索引加载内存效率;
404)SPCAP文件;
5)索引完成后,利用流量检索算法TSearch对会话的索引进行检索,获取会话的元数据和位置向量集合,进而获取相关会话的PCAP文件;
流量检索算法TSearch包括如下内容:
501)函数split_query(),根据逻辑运算符对查询字符串进行切分,返回query_list列表,包括时间窗口查询串、源IP查询串、目标IP查询串、源端口查询串、目标端口查询串、源MAC查询串和目标MAC查询串;
502)函数time_Index.query(query_list[0]),根据利用时间索引查询时间窗口串,返回满足时间条件的哈希过滤索引cf_index索引列表和会话索引idx_index列表;
503)函数cf_index.filter(query, idx_index),利用哈希过滤算法,对查询字符串中涉及的源IP查询串、目标IP查询串、源端口查询串、目标端口查询串、源MAC查询串和目标MAC查询串进行检索,获取满足条件的cf_index索引,返回与之对应的idx_index索引;
504)函数idx_index.filter(query),利用会话索引对查询字符串中涉及的源IP查询串、目标IP查询串、源端口查询串、目标端口查询串进行检索,获取满足条件的会话元数据列表以及会话PCAP的位置向量;
505)由于哈希过滤索引和会话索引都存在一定概率的误报,而这些误报将使用adjust_query(session_list)进行校准,返回给用户满足条件的、精准的会话元数据列表以及会话PCAP的位置向量;
506)session_hit.get_matedata(),将满足条件的、精准的会话元数据列表返回给业务端;
507)将满足条件的、精准的会话PCAP的位置向量列表返回给业务端。
2.根据权利要求1所述的网络流量检索方法,其特征在于,对于步骤3)所述的会话位置向量,包括packetPos、packetLen、packetDir、fieId字段,其中,packetPos表示每个数据包在文件中的偏移,负数表示所在文件ID,如果一个会话存储在2个SPCAP文件中,会有2个负数;packetLen表示每个数据包的长度;packetDir表示每个数据包的方向,1表示发给服务器方向,0表示发给客户端方向;-1是无效值,与packetPos中的负数是对应的;fieId表示SPCAP文件的ID,如果一个会话存储在2个SPCAP文件中,fieId中有2个值。
3.根据权利要求1所述的网络流量检索方法,其特征在于,对于步骤4)所述的流量索引建立算法TIndex,利用面向时间的文件目录树提供用户时间范围查询能力,定位索引文件组,即建立年/月/日/小时嵌套目录;利用索引文件组中的“.cf”索引文件进行“.idx”索引筛选;利用“.idx”索引文件进行会话筛选,定位SPCAP文件集合;最后,通过上述步骤获取的会话位置向量列表从SPCAP文件集合中获取满足用户查询条件的会话PCAP文件。
4.根据权利要求1所述的网络流量检索方法,其特征在于,对于步骤4)所述的流量索引建立算法TIndex,具有如下特征:(1)面向会话的;(2)每个SPCAP文件对应一个索引组,包括以后缀“.cf”和后缀“.idx”文件,其中,“.cf”索引用于过滤筛选,“.idx”索引用来定位会话元数据和位置向量,进而获取会话的PCAP文件;(3)对于“.cf”索引文件,要求数据结构空间效率高,允许一定程度的误报,但不能漏报,即当判断元素存在时,可能不存在,但是当判断元素不存在时就一定不存在;(4)对于“.idx”索引文件,为提高索引结构空间效率,提出编码和压缩算法对“.idx”文件进行压缩。
5.根据权利要求1所述的网络流量检索方法,其特征在于,对于步骤4)所述的流量索引建立算法TIndex,支持五元组查询、MAC查询,且能够扩展添加其他关键字查询,此外,还支持查询条件的逻辑运算,即AND、OR和NOT的条件嵌套查询。
6.根据权利要求1所述的网络流量检索方法,其特征在于,对于步骤4)所述的流量索引建立算法TIndex,索引存储在SSD阵列上,利用面向时间的文件目录树完成时间范围查询后,命中的时间范围的索引要被引导到内存中,由于硬件资源的稀缺性,使得索引建立算法设计过程中使用了不同的压缩方案对“.cf”索引和“.idx”索引进行优化,对于“.cf”索引,通过编码和高效压缩算法实现了较高的压缩比,对于“.idx”索引,利用会话位置向量的单调特性,通过数据优化,使得会话位置向量仅存储连续位置的差值,即包大小,进而产生大量的等值字段,利用字典压缩实现了较高的压缩比。
7.根据权利要求1所述的网络流量检索方法,其特征在于,对于步骤5)所述的流量检索算法TSearch,提供用户五元组查询和MAC查询接口,若索引文件支持其他关键字查询,检索算法也提供扩展能力,此外,检索算法支持对五元组、MAC地址和其他自定义关键字的逻辑运算,即AND、OR和NOT的条件嵌套查询。
8.一种使用权利要求1所述的网络流量检索方法的网络流量检索装置,其特征在于,包括下列模块:
流量捕获模块:用于实时从网络适配器捕获网络流量数据包;
会话重组&索引模块:会话重组用于将数据包按到达时间戳排序,并在内存缓冲区中进行存储;索引模块,用于对内存缓冲区中的会话数据包进行分析,生成元数据和会话位置向量,元数据和会话位置向量将被维护到内存中;然后,对于指定时间窗口的会话元数据,利用流量索引建立子模块生成索引文件;
存储模块:对于索引文件,提取其年、月、日和小时或指定的时间窗口,默认为小时,在SSD阵列和HDD阵列上分别建立时间目录树,并将索引文件落盘到SSD阵列的相应时间目录里,将SPCAP文件落盘到HDD阵列的相应时间目录里,此外,由于存储硬件规格和用户要求的存储周期需求,周期覆盖子模块利用先进先出算法周期性使用新数据覆盖旧数据;
会话查询处理模块:包括会话查询子模块和包重组&会话PCAP生成子模块,会话查询子模块用于根据用户输入的查询请求检索所述索引结构从而获得网络流量数据的存储位置信息,将该存储位置信息返回给包重组&会话PCAP生成子模块;包重组&会话PCAP生成子模块从若干个SPCAP文件中提取包并重组成会话PCAP;最后,返回给客户会话元数据列表及其相应的会话PCAP下载链接作为查询应答;
流量分析模块:对于每条会话元数据及其会话PCAP包,用户使用PCAP分析工具对其进行协议解析和文件还原操作,实现业务目的。
CN202111126275.6A 2021-09-26 2021-09-26 一种网络流量检索方法和装置 Active CN113590910B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111126275.6A CN113590910B (zh) 2021-09-26 2021-09-26 一种网络流量检索方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111126275.6A CN113590910B (zh) 2021-09-26 2021-09-26 一种网络流量检索方法和装置

Publications (2)

Publication Number Publication Date
CN113590910A CN113590910A (zh) 2021-11-02
CN113590910B true CN113590910B (zh) 2021-12-24

Family

ID=78242179

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111126275.6A Active CN113590910B (zh) 2021-09-26 2021-09-26 一种网络流量检索方法和装置

Country Status (1)

Country Link
CN (1) CN113590910B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114047881B (zh) * 2021-11-18 2023-11-17 江苏省未来网络创新研究院 一种基于用户策略的网络数据包存储装置及方法
CN114710565B (zh) * 2022-03-31 2023-11-03 绿盟科技集团股份有限公司 网络报文的压缩与解压方法、装置、设备及可读存储介质
CN115002179A (zh) * 2022-05-06 2022-09-02 北京中睿天下信息技术有限公司 一种网络全流量会话流数据存储与还原的方法
CN114978897B (zh) * 2022-05-17 2023-09-05 阿里巴巴(中国)有限公司 基于eBPF和应用识别技术的网络控制方法和系统
CN115473836B (zh) * 2022-08-15 2023-06-06 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种基于流图模型的网络流量测量方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103281213A (zh) * 2013-04-18 2013-09-04 西安交通大学 一种网络流量内容提取和分析检索方法
CN107645398A (zh) * 2016-07-22 2018-01-30 北京金山云网络技术有限公司 一种诊断网络性能和故障的方法和装置
CN108600053A (zh) * 2018-05-10 2018-09-28 南京邮电大学 一种基于零拷贝技术的无线网络数据包捕获方法
CN110704714A (zh) * 2019-09-27 2020-01-17 杭州九略智能科技有限公司 pcap文件的快速数据索引方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7779021B1 (en) * 2004-03-09 2010-08-17 Versata Development Group, Inc. Session-based processing method and system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103281213A (zh) * 2013-04-18 2013-09-04 西安交通大学 一种网络流量内容提取和分析检索方法
CN107645398A (zh) * 2016-07-22 2018-01-30 北京金山云网络技术有限公司 一种诊断网络性能和故障的方法和装置
CN108600053A (zh) * 2018-05-10 2018-09-28 南京邮电大学 一种基于零拷贝技术的无线网络数据包捕获方法
CN110704714A (zh) * 2019-09-27 2020-01-17 杭州九略智能科技有限公司 pcap文件的快速数据索引方法及装置

Also Published As

Publication number Publication date
CN113590910A (zh) 2021-11-02

Similar Documents

Publication Publication Date Title
CN113590910B (zh) 一种网络流量检索方法和装置
US11601351B2 (en) Aggregation of select network traffic statistics
Fusco et al. Net-fli: on-the-fly compression, archiving and indexing of streaming network traffic
Tang et al. SpreadSketch: Toward invertible and network-wide detection of superspreaders
US7944822B1 (en) System and method for identifying network applications
EP3282643B1 (en) Method and apparatus of estimating conversation in a distributed netflow environment
US9210090B1 (en) Efficient storage and flexible retrieval of full packets captured from network traffic
CN113672629B (zh) 一种分布式网络流量检索方法和装置
US20100199348A1 (en) Efficient intrusion detection
CN112532642B (zh) 一种基于改进Suricata引擎的工控系统网络入侵检测方法
CN104009984A (zh) 基于倒排列表的网流索引检索与压缩的方法
Fusco et al. pcapIndex: an index for network packet traces with legacy compatibility
CN112486914A (zh) 一种数据包存储与快查方法与系统
Patgiri et al. Hunting the pertinency of bloom filter in computer networking and beyond: A survey
Chen et al. TIFAflow: enhancing traffic archiving system with flow granularity for forensic analysis in network security
US11799745B2 (en) Distributed and timely network flow summarization at scale
Zhou et al. Exploring Netfow data using hadoop
Xie et al. Index–Trie: Efficient archival and retrieval of network traffic
Elsen et al. goProbe: a scalable distributed network monitoring solution
Chen et al. IPzip: A stream-aware IP compression algorithm
Wang et al. Compact-Index: An efficient index algorithm for network traffic
Chen et al. ANTI: An Adaptive Network Traffic Indexing Algorithm for High-Speed Networks
Piskozub et al. CompactFlow: A Hybrid Binary Format for Network Flow Data
Indumathi et al. Enhanced Adaptive Cuckoo filter searching technique for Approximate Membership Data Structure (AMDS) in network layer.
Kim et al. PcapWT: An Efficient Packet Extraction Tool for Large Volume Network Traces

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