一种基于流图模型的网络流量测量方法和装置



1.本发明涉及网络流量测量技术领域,尤其涉及一种基于流图模型的网络流量测量方法和装置。


背景技术:



2.网络流量测量对于网络安全、网络管理和流量工程至关重要,它为网络健康诊断、检测网络异常、故障排除、流量工程和流量计费提供了丰富的信息。传统的网络流量监测技术主要包括:1)基于深度数据包检测(dpi)的方法;2)基于netflow和sflow的流量摘要方法;3)基于sketch的流计数器方法。
3.现有技术中存在以下缺点:
4.1)深度数据包检测方法:精细分析数据包负载的时空开销大,流量加密技术的普及影响分析数据包负载内容的有效性;
5.2)流量摘要方法:流量混淆技术的兴起使得恶意流量可以表现出与良性流量类似的流统计特性,从而限制了基于流量摘要的监测方法用于网络分析和流量识别应用的准确度;
6.3)流计数器方法:sketch的查询场景固定,难以自定义查询类型且不能实现与网络流的拓扑相关的结构查询。


技术实现要素:



7.本发明提供一种基于流图模型的网络流量测量方法和装置,降低了网络流量测量的时空开销和提高了网络流量测量的效率。
8.本发明一实施例提供一种基于流图模型的网络流量测量方法,包括以下步骤:
9.将每次从网卡或网络流量文件接收到的数据包流插入到一个高速缓冲队列中,并从所述数据包中提取数据包信息;所述数据包信息包括源ip、目的ip、源端口、目的端口和特征向量;
10.根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,所述流图模型的节点、边和边上的权重向量,分别对应ip地址、ip之间的网络流和网络流的统计特征向量;
11.通过基础查询接口对所述布谷矩阵进行查询获取网络流特征数据。
12.进一步的,对所述布谷矩阵进行查询时,包括边查询、节点查询和复合查询,所述复合查询是指基于边查询和节点查询的自定义查询。
13.进一步的,对所述布谷矩阵进行查询后,根据查询结果生成csv文件,所述csv文件中的每一行记录对应一条网络流的统计特征向量,所述网络流的统计特征向量以网络流的源ip、目的ip、源端口和目的端口组成的四元组作为标识。
14.进一步的,根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,所述布谷矩阵为二维指针矩阵,所述布谷矩阵的每个桶均指向一个嵌套的
cuckoo哈希表。
15.进一步的,根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,包括以下步骤:
16.对于每个数据包通过xxhash函数计算出所述数据包对应网络流在所述布谷矩阵中的行索引和列索引;
17.根据提取的所述数据包信息、所述数据包的行索引和所述数据包的列索引更新外部布谷哈希表和内部布谷哈希表。
18.进一步的,所述高速缓冲队列为无锁环形队列。
19.进一步的,所述无锁环形队列根据以下步骤更新和取出队列元素:
20.更新队列元素时,通过一个指向队列头部的原子增量在队列中确定一个唯一点,再对队列长度做取模运算得到实际插入到队列中的地址,并根据所述地址插入新增的队列元素;
21.取出队列元素时,根据原子量tail和原子量front确定批量处理的元素区间并计算区间长度,当所述区间长度大于等于预设阈值时,对区间内的队列元素进行并行批处理,所述并行批处理结束后将原子量tail的值更新为原子量front的值;当新增的队列元素插入后,原子量tail保持不变,对原子量front进行原子增量计算。
22.进一步的,当所述无锁环形队列的缓冲区被填满时,通过阻塞队列阻止所述无锁环形队列继续更新数据。
23.进一步的,所述网络流量文件为pcap文件。
24.本发明另一实施例提供了一种基于流图模型的网络流量测量装置,包括数据包信息提取模块、布谷矩阵构建模块和网络流特征数据查询模块;
25.所述数据包信息提取模块用于将每次从网卡或网络流量文件接收到的数据包流插入到一个高速缓冲队列中,并从所述数据包中提取数据包信息;所述数据包信息包括源ip、目的ip、源端口、目的端口和特征向量;
26.所述布谷矩阵构建用于根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,所述流图模型的节点、边和边上的权重向量,分别对应ip地址、ip之间的网络流和网络流的统计特征向量;
27.所述网络流特征数据查询模块用于通过基础查询接口对所述布谷矩阵进行查询获取网络流特征数据。
28.本发明的实施例,具有如下有益效果:
29.本发明提供了一种基于流图模型的网络流量测量方法和装置,该方法通过根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,所述流图模型的节点、边和边上的权重向量,分别对应ip地址、ip之间的网络流和网络流的统计特征向量,实现了在恒定时间开销内同时更新网络流量的拓扑结构和计算网络流的统计特征,在评估实验中可以实现每秒百万级别的数据包吞吐量。因此,本发明降低了网络流量测量的时空开销和提高了网络流量测量的效率。
附图说明
30.图1是本发明一实施例提供的基于流图模型的网络流量测量方法的流程示意图;
31.图2是本发明一实施例提供的基于流图模型的网络流量测量装置的结构示意图;
32.图3是本发明一实施例提供的基于流图模型的网络流量测量方法的无锁环形队列的结构示意图;
33.图4是本发明一实施例提供的基于流图模型的网络流量测量方法的布谷矩阵的结构示意图。
具体实施方式
34.下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.如图1所示,本发明一实施例提供的一种基于流图模型的网络流量测量方法,包括以下步骤:
36.步骤s101:将每次从网卡或网络流量文件接收到的数据包流插入到一个高速缓冲队列中,并从所述数据包中提取数据包信息。优选的,所述网络流量文件为pcap文件,所述高速缓冲队列为无锁环形队列。通过将数据包流插入到一个无锁环形队列,用于后续按照到达顺序处理数据包元素和应对处理高速到来的网络流数据。所述高速数据包缓冲是一个单生产者多消费者的无锁队列,支持从缓冲队列中批量取出元素并同时用多个线程进行处理。
37.作为其中一种实施例,所述无锁环形队列的结构如图3所示,所述无锁环形队列根据以下步骤更新和取出队列元素:
38.更新队列元素时,通过一个指向队列头部的原子增量head在队列中确定一个唯一点,再对队列长度做取模运算得到实际插入到队列中的地址,并根据所述地址插入新增的队列元素;具体的,所述队列元素为数据包。
39.取出队列元素时,根据原子量tail和原子量front确定批量处理的元素区间并计算区间长度|front-tail|,当所述区间长度大于等于预设阈值时,对区间内的队列元素进行并行批处理,所述并行批处理结束后将原子量tail的值更新为原子量front的值;当新增的队列元素插入后,原子量tail保持不变,对原子量front进行原子增量计算。
40.当所述无锁环形队列的缓冲区被填满时,通过阻塞队列阻止所述无锁环形队列继续更新数据,可以避免未被处理的数据包被更新到达的数据覆盖。所述无锁环形队列的环形结构设计可以确保缓冲区内存的安全使用并实现自动重用。
41.作为其中一种实施例,所述数据包信息包括源ip、目的ip、源端口、目的端口和特征向量。对于高速缓冲中的数据包pkt=(sip,dip,sport,dport,w),其中前四项分别表示数据包的源ip、目的ip、源端口和目的端口,最后一项w表示数据包的特征向量,所述特征向量包括协议号、数据包负载长度、时间戳、syn、ack等标志位,以及窗口长度和首部长度。如果是udp数据包则将缺失的特征初始化为0。
42.步骤s102:根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,所述流图模型的节点、边和边上的权重向量,分别对应ip地址、ip之间的网络流和网络流的统计特征。
43.通过将所述流图模型的节点、边和边上的权重向量,分别对应ip地址、ip之间的网络流和网络流的统计特征向量,将线性的网络流数据建模为流图模型。所述布谷矩阵由一个m
×
n大小的指针矩阵组成,每个桶都指向一个嵌套的cuckoo哈希表,可以用来快速更新流图的拓扑结构和边上的权重向量,所述布谷矩阵的结构如图4所示。数据包的特征向量是数据包本身的一些特征信息,网络流的统计特征向量是用数据包携带的特征信息经过计算后得到的统计值,如每个数据包的特征中存在一个首部长度,网络流对包含在这个流的所有数据包的首部长度做最小值统计,得到的就是这个网络流的一个最小首部长度特征。
44.作为其中一种实施例,根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,包括以下步骤:
45.步骤s11:对于每个数据包通过xxhash函数计算出所述数据包对应网络流在所述布谷矩阵中的行索引和列索引。计算方式为:行索引rindex=xxhash(sip)%m,列索引cindex=xxhash(dip)%n。
46.步骤s12:根据提取的所述数据包信息、所述数据包的行索引和所述数据包的列索引更新外部布谷哈希表(对应图4中的外部哈希表)和内部布谷哈希表(对应图4中的内部哈希表)。即根据提取的所述数据包信息更新存储在矩阵rindex行cindex列的桶内的布谷哈希表。具体的,包括以下步骤:
47.将每个ip地址用32位无符号整数表示,使用[(sip,dip),p]作为键值对检索所述外部布谷哈希表,其中p是指向内部布谷哈希表的指针;当检索结果为空时,在所述外部布谷哈希表创建一条指向所述内部布谷哈希表的新记录,所述新记录具体为:[(sip,dip),p],其中(sip,dip)是key,p是value;再根据数据包信息在所述内部布谷哈希表创建一条网络流记录。
[0048]
将每个端口号用16位无符号整数表示,使用[(sport,dport),w]作为p指向的内部布谷哈希表的键值对在所述内部布谷哈希表进行检索,其中w表示网络流的的统计特征向量,包括网络流字节数的统计值(如:总和、最值、均值和方差)、数据包到达时间间隔的统计值、syn(以及fin、ack、psh、rst、urg、ece和cwr共计8个)标志计数、最大首部长度等68维特征;当检索结果为空时,根据数据包信息在所述内部布谷哈希表中创建一条网络流记录。
[0049]
步骤s103:通过基础查询接口对所述布谷矩阵进行查询获取网络流特征数据。对所述布谷矩阵进行查询时,包括边查询、节点查询和复合查询,所述复合查询是指基于边查询和节点查询的自定义查询,如bfs查询和heavy hitter查询。所述节点查询包括一阶后继节点查询和一阶前驱节点查询。本发明通过实现三个图查询原语:边查询、一阶后继节点查询和一阶前驱节点查询,来实现对网络流图的拓扑结构和网络流特征向量的查询任务。
[0050]
作为其中一种实施例,对所述布谷矩阵进行查询后,根据查询结果生成csv文件,所述csv文件的每一行记录对应一条网络流的统计特征向量,所述一条网络流的统计特征向量具体为一条以网络流的源ip、目的ip、源端口和目的端口组成的四元组作为标识的统计特征向量。本发明通过布谷矩阵将运行期间计算的所有网络流特征导出为csv文件,以实现流量日志的持久化存储,进而支持后续流量分析和识别等任务。
[0051]
作为其中一种实施例,通过遍历所述布谷矩阵的每一个外部布谷哈希表和内部布谷哈希表,将网络流的源ip和目的ip的组合,以及源端口和目的端口的组合作为网络流的键,将网络流的统计特征向量作为值,将遍历得到的键值对逐行保存在本地的文件中,文件
格式为逗号分隔值文件格式(即csv格式)。
[0052]
作为其中一种实施例,所述边查询具体为:给定边e=(s,d,sp,dp),如果图中存在e则返回权重向量w(e),否则返回null。首先查询矩阵h(s)行、h(d)列索引的桶,如果在该桶指向的哈希表(对应所述外部布谷哈希表)中不到键(s,d),则直接返回null。否则继续查询键(s,d)对应的指针值所指向的嵌套哈希表(对应所述内部布谷哈希表)。如果在内部布谷哈希表中到键(sp,dp),则返回相应的权重w(e);否则,返回null。
[0053]
作为其中一种实施例,一阶后继节点查询:为了到ip节点v的一阶后继节点集合s,首先搜索矩阵h(v)行的所有桶。对于矩阵h(v)行和c列中的桶,c为h(v)行的任意一列,如果该桶指向的哈希表中有一条键值为(v,d)的记录,那么将d添加到集合s,v和d均为ip地址。
[0054]
作为其中一种实施例,一阶前驱节点查询:为了到ip节点v的一阶前驱节点集合p,首先搜索矩阵h(v)列的所有桶。对于矩阵c行和h(v)列中的桶,c为h(v)列的任意一行,如果该桶指向的哈希表中有一条键值为(s,v)的记录,那么将s添加到集合p,s和v均为ip地址。
[0055]
本发明实现了一个无锁环形缓冲队列,可以用来应对处理高速到来的网络流数据,多线程批处理提高了网络流数据包的处理效率。本发明通过设计一个基于流图模型的布谷矩阵,可以在恒定时间开销内同时更新网络流量的拓扑结构和计算网络流的统计特征,在评估实验中可以实现每秒百万级别的数据包吞吐量。布谷矩阵具有与网络流数量成线性关系的存储开销。支持对网络流图的边查询和节点查询,同时可以基于此实现更复杂的自定义查询。最终可以文件形式对测量网络流量的统计特征向量和网络流图的拓扑结构进行持久化存储,用以支持对流量特性和网络拓扑结构的进一步分析。
[0056]
本发明针对现有的网络流量测量技术中存在的时空开销较大、流量特征单一和查询场景固定的问题,设计了一种基于流图模型的网络流量测量方法,可以实现线性存储开销和恒定时间内同时更新网络拓扑及流量统计特征,支持基于节点和边的图查询接口的自定义查询类型。通过实现线性存储开销,可以保证存储网络流的内存开销随着网络流数量的增加是线性增长的,进而可以根据测量时实际网络环境中和时间窗口内的网络流数预估需要的存储空间大小。通过实现恒定时间更新,保证处理每一个数据包的时间开销是o(1)的,不随存储的网络拓扑规模或网络流数量的增大而增加更新的时间开销。如邻接链表的更新时间是o(d),d为最大的边链表长度,即邻接链表会随着边链表长度的增加而增加更新时的计算开销。由于传统的流量摘要方法后只能获得流量的统计特征,如果希望获得关联的网络拓扑结构,就需要从海量的流量数据中重新构建图索引。本发明通过同时更新拓扑和统计特征,节省了这种重新构建图网络的时间和编码开销。
[0057]
在上述发明实施例的基础上,本发明对应提供了装置项实施例,如图2所示;
[0058]
本发明另一实施例提供了一种基于流图模型的网络流量测量装置,包括数据包信息提取模块11、布谷矩阵构建模块12和网络流特征数据查询模块13;
[0059]
所述数据包信息提取模块用于将每次从网卡或网络流量文件接收到的数据包流插入到一个高速缓冲队列中,并从所述数据包中提取数据包信息;所述数据包信息包括源ip、目的ip、源端口、目的端口和特征向量;
[0060]
所述布谷矩阵构建用于根据流图模型和提取的所述数据包信息构建用于更新和
存储网络流特征的布谷矩阵,所述流图模型的节点、边和边上的权重向量,分别对应ip地址、ip之间的网络流和网络流的统计特征向量;
[0061]
所述网络流特征数据查询模块用于通过基础查询接口对所述布谷矩阵进行查询获取网络流特征数据。
[0062]
为描述的方便和简洁,本发明装置项实施例包括上述基于流图模型的网络流量测量方法实施例中的全部实施方式,此处不再赘述。
[0063]
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0064]
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
[0065]
本领域普通技术人员可以理解实现上述实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。

技术特征:


1.一种基于流图模型的网络流量测量方法,其特征在于,包括以下步骤:将每次从网卡或网络流量文件接收到的数据包流插入到一个高速缓冲队列中,并从所述数据包中提取数据包信息;所述数据包信息包括源ip、目的ip、源端口、目的端口和特征向量;根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,所述流图模型的节点、边和边上的权重向量,分别对应ip地址、ip之间的网络流和网络流的统计特征向量;通过基础查询接口对所述布谷矩阵进行查询获取网络流特征数据。2.根据权利要求1所述的基于流图模型的网络流量测量方法,其特征在于,对所述布谷矩阵进行查询时,包括边查询、节点查询和复合查询,所述复合查询是指基于边查询和节点查询的自定义查询。3.根据权利要求2所述的基于流图模型的网络流量测量方法,其特征在于,对所述布谷矩阵进行查询后,根据查询结果生成csv文件,所述csv文件中的每一行记录对应一条网络流的统计特征向量,所述网络流的统计特征向量以网络流的源ip、目的ip、源端口和目的端口组成的四元组作为标识。4.根据权利要求3所述的基于流图模型的网络流量测量方法,其特征在于,根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,所述布谷矩阵为二维指针矩阵,所述布谷矩阵的每个桶均指向一个嵌套的cuckoo哈希表。5.根据权利要求4所述的基于流图模型的网络流量测量方法,其特征在于,根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,包括以下步骤:对于每个数据包通过xxhash函数计算出所述数据包对应网络流在所述布谷矩阵中的行索引和列索引;根据提取的所述数据包信息、所述数据包的行索引和所述数据包的列索引更新外部布谷哈希表和内部布谷哈希表。6.根据权利要求5所述的基于流图模型的网络流量测量方法,其特征在于,所述高速缓冲队列为无锁环形队列。7.根据权利要求6所述的基于流图模型的网络流量测量方法,其特征在于,所述无锁环形队列根据以下步骤更新和取出队列元素:更新队列元素时,通过一个指向队列头部的原子增量在队列中确定一个唯一点,再对队列长度做取模运算得到实际插入到队列中的地址,并根据所述地址插入新增的队列元素;取出队列元素时,根据原子量tail和原子量front确定批量处理的元素区间并计算区间长度,当所述区间长度大于等于预设阈值时,对区间内的队列元素进行并行批处理,所述并行批处理结束后将原子量tail的值更新为原子量front的值;当新增的队列元素插入后,原子量tail保持不变,对原子量front进行原子增量计算。8.根据权利要求7所述的基于流图模型的网络流量测量方法,其特征在于,当所述无锁环形队列的缓冲区被填满时,通过阻塞队列阻止所述无锁环形队列继续更新数据。9.根据权利要求1-8任一项所述的基于流图模型的网络流量测量方法,其特征在于,所述网络流量文件为pcap文件。
10.一种基于流图模型的网络流量测量装置,其特征在于,包括数据包信息提取模块、布谷矩阵构建模块和网络流特征数据查询模块;所述数据包信息提取模块用于将每次从网卡或网络流量文件接收到的数据包流插入到一个高速缓冲队列中,并从所述数据包中提取数据包信息;所述数据包信息包括源ip、目的ip、源端口、目的端口和特征向量;所述布谷矩阵构建用于根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,所述流图模型的节点、边和边上的权重向量,分别对应ip地址、ip之间的网络流和网络流的统计特征向量;所述网络流特征数据查询模块用于通过基础查询接口对所述布谷矩阵进行查询获取网络流特征数据。

技术总结


本发明公开了一种基于流图模型的网络流量测量方法和装置。该方法包括步骤:将每次从网卡或网络流量文件接收到的数据包流插入到一个高速缓冲队列中,并从所述数据包中提取数据包信息;根据流图模型和提取的所述数据包信息构建用于更新和存储网络流特征的布谷矩阵,所述流图模型的节点、边和边上的权重向量,分别对应I P地址、I P之间的网络流和网络流的统计特征向量;通过基础查询接口对所述布谷矩阵进行查询获取网络流特征数据。本发明降低了网络流量测量的时空开销和提高了网络流量测量的效率。的效率。的效率。


技术研发人员:

贾焰 任思远 逄博 王晔 廖清

受保护的技术使用者:

哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院)

技术研发日:

2022.08.15

技术公布日:

2022/12/12

本文发布于:2024-09-23 04:30:35,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/43659.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:所述   布谷   数据包   队列
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议