一种网络流特征的提取与存储方法与流程

文档序号:14950795发布日期:2018-07-17 22:30阅读:247来源:国知局

本发明涉及计算机通信技术领域,具体涉及一种网络流特征的提取与存储方法。



背景技术:

目前许多的网络特征提取工具往往依赖于开源软件如:snort、snmp、netflow等,物理硬件资源利用率得不到很好的提升,磁盘的io瓶颈得不到解决,网络资源大量浪费,以及数据的可靠、冗余等机制的缺失,阻碍系统整体的性能、可靠性,最终导致大量的物理、人力资源的浪费。并且snort等的工具的不可控性会带来很多安全性问题以及更多的人力成本,同时,面对海量网络数据流的情况下,传统的网络流特征提取工具的性能不足以承担高速网络的网络流特征提取与存储工作。本发明所使用的特征提取技术能够在大流量的情况下保障整个系统的高效性、稳定性,节省物理、人力成本。

在实际生产环境中,特征数据流的传输,往往采用原文的方式在数据管道中流转,处理灵活性低,造成了网络资源的浪费,容易达到网络瓶颈,进而从而引发整个系统的停滞。



技术实现要素:

针对现有技术中所存在的不足,本发明提供了一种网络流特征的提取与存储方法,解决在有限的网络条件下保障网络流特征提取的鲁棒性、高效性,保证存储的可用性、可靠性的问题。为实现上述目的,本发明采用了如下的技术方案:一种网络流特征的提取与存储方法,包括以下步骤:

s1:使用gopacket数据包工具驱动libpcap函数包,按网络的不同的层次的特性对网络数据进行网络数据包提取,得到特征原文数据,并且进行落盘处理,生成本地数据包文件并存储;

s2:使用avro二进制序列化的方式将特征原文数据序列化成特征二进制数据;

s3:将特征二进制数据写入到分布式消息队列构成的数据管道中,进行数据的缓存存储;

s4:提取缓存数据进行反序列化处理得到特征数据,运用基于flink流式处理引擎的窗口运算获取所述特征数据的统计特征数据;

s5:将所述特征数据和统计特征数据拼接成网络流特征,用列式稀疏存储的方式将网络流特征存储在分布式数据库hbase中。

进一步的,运用基于flink流式处理引擎的窗口运算获取所述特征数据的统计特征数据,得到数量统计特征数据和时间统计特征数据,具体实现步骤为:

s4-1:建立时间窗口并设定时间阈值;

s4-2:对进入时间窗口的特征数据中的每一条数据时数据进行信息计算;

s4-3:到达时间窗口的时间阈值时,调用窗口计算,得出时间统计特征数据;

s4-4:建立数量窗口并设定数量时间阈值;

s4-5:对进入窗口的特征数据中的每一条数据时数据进行信息计算;

s4-6:到达时间数量时间阈值时,调用窗口计算,得出数量统计特征数据。

进一步的,特征原文数据的类型包括特征包括ethernet、ip、icmp、tcp和udp五种协议的报文头部数值特征。

进一步的,步骤s1中特征原文数据提取的具体步骤为:

s1-1:将原始的网络数据包镜像汇聚,得到镜像数据;

s1-2:捕获网络数据包:运用libpcap函数包处理镜像数据捕获网络数据包;

s1-3:运用gopacket工具读取网络数据包,按照网络的不同的层次的特性,提取各个协议的报文头部特征,既得到特征原文数据,并打包成多个本地的pcap包,既网络数据包本地文件。

进一步的,所述步骤s1-1中:原始的网络数据包镜像汇聚的处理过程为:得到镜像数据是通过网络设备的span模块,将其他端口的网络流镜像到指定的的端口,获取整个网络的镜像网络流。

相比于现有技术,本发明具有如下有益效果:本发明创新的使用avro二进制序列化的方式进行数据特征流的传输,提供更灵活的数据流传输方式,节省网络资源,提高系统的整体性能。同时,本发明所使用的基于分布式文件系统的分布式数据库来进行流量特征的存储,相对于市面上其他的直接采用本地磁盘的存储方案,具有高可靠、高可用、大容量等特点,提供更可靠、高效的存储服务。

附图说明

图1为本发明结构框图;

图2为特征原文数据中ethernet和ip协议包含特征内容表图;

图3为特征原文数据中icmp、tcp和udp协议包含特征内容表图。

具体实施方式

相关术语解释:libpcap:一种用于捕获网络数据包的函数包,具有高性能、高稳定的特点,目前被市面上大多数捕获工具所采用;gopacket:一种驱动libpcap函数包,捕获并解析网络包数据的工具。具有高效率、低资源消耗等特点;kakfa:是一种具有优秀的性能、可靠性的分布式消息队列,使用生产者消费者模型,在本发明中用来打造高性能、高可靠的数据管道;flink:新一代真正意义上的流式处理引擎,具有优秀的性能与丰富的处理api;在本发明中用于切分特征以及提取统计特征;hdfs:一种分布式文件系统,能存储pb级以上的数据,具有优秀的可靠性和性能。在本发明中作为分布式数据库的底层存储支撑;hbase:一种列式分布式数据库,具有较好的写入性能与存储性能,采用列式稀疏存储,在本发明中用于存储最终的特征数据;avro:一种二进制序列化文件格式,具有高性能、低资源占用、低空间占用、高灵活性的特性,在本发明中用于数据管道前后的数据交换,节约网络资源。

下面结合附图对本发明做进一步的说明。

如图1所示,本发明所述的一种网络流特征的提取与存储方法,包括以下步骤:

s1:使用gopacket数据包工具驱动libpcap函数包,按网络的不同的层次的特性对网络数据进行数据特征提取,得到特征原文数据,并且进行落盘处理,生成本地数据包文件并存储。libpcap是目前unix以及linux平台下的基础网络数据捕获函数包,能够提供高性能的数据包捕获服务。本发明创新的使用gopacket数据包工具来驱动libpcap函数包,捕捉原始的网络数据包。捕获到的数据包包含了应用层、网络层、传输层、数据链路层等四层的数据内容。其中很多的数据内容是没有价值的,因此需要进行特征的再次提取。同时,将数据包进行落盘处理,生成本地pcap包文件,用于长时间存储保存,用于后续发现网络异常行为问题时方便进行数据回放或查找。

s2:使用avro二进制序列化的方式将特征原文数据序列化成特征二进制数据;avro二进制序列化格式,通过定义数据组装模式(schema),将特征原文数据序列化成二进制格式(bytes),进行发送。使用avro二进制序列化的方式具有存储空间占用小、序列化效率高等特性,能够有效的节约网络资源。同时,avro二进制格式自带的动态类型(dynamictyping)特性,使得在进行特征模式升级时,能够提供更好的兼容性,不需要进行多次编码修改,节省人力成本。

s3:将特征二进制数据写入到分布式消息队列构成的数据管道中,进行数据的缓存存储,形成缓存数据;数据管道层连接了数据收集层与实时计算层,具有承上启下的作用。数据管道为数据收集层所收集到的数据提供了一个缓冲通道以及统一的数据通道。在真实的场景中,往往会出现瞬间访问量过大、或者下游实时处理出现停顿的问题,这是数据管道的缓冲作用就尤为重要,能够在真实场景中保障数据传输的可靠性,避免数据的丢失,提升整个系统的鲁棒性。同时统一的数据管道利于数据流的管理,节省更多的人力成本。使用分布式消息队列(kafka)作为数据管道的基础,kafka是一款工业界非常流行的消息队列软件,能够同时支持多个生产者与消费者,保障数据传输的高效性,具备的数据分区复制(replica)功能,保障数据的可靠性。

s4:将缓存数据进行反序列化处理得到特征数据,运用基于flink流式处理引擎的窗口运算获取所述特征数据的统计特征数据;

s5:将所述特征数据和统计特征数据拼接成网络流特征,用列式稀疏存储的方式将网络流特征存储在分布式数据库hbase中。本发明使用hdfs(分布式文件系统)作为数据存储层的基础。hdfs是一种市面上常用的分布式文件系统,多用于大数据领域。其具备数据冗余备份、分片存储等功能,保障了数据存储的可靠性和高效性。

hbase集群采用master/slave架构,主要分为三种类型的角色:hmaster、hregionserver、zookeeper。hmaster节点管理hregionserver节点,并对其实现负载均衡。hmaster负责管理hregion,如hregion进行分裂时,为其分配新的hregion,在hregionserver失效或下线时将hregion进行迁移到其他的hregionserver。hmaster负责管理命名空间与表的元数据,并提供权限控制功能。hregionserver用于存放和管理hregion,hregion实际存放在hdfs中,由hregion进行管理。client在读写数据时,先从hmaster获取元数据,在根据数据的rowkey找到所在的hregionserver与hregion,然后进行数据的读写。zookeeper集群的作用是为hbase集群做协调工作,负责存放hbase集群的元数据以及整个集群的状态信息,同时也为hmaster的主从节点失败切换提供支持。hregion是hbase中的表的分布的最小单位。hregion按照rowkey进行水平划分,由于hregion中的rowkey是排序的,因此hregion中存放的数据是从stratkey到endkey之间的数据,因此可以根据rowkey区间快速定位一个数据所在的hregion。hregion由hmaster分配到对应的hregionserver中,有hregionserver负责hregion的管理。hregion中的数据实际存储于hdfs中,因此客户端对于hregion的读写实际上是读hdfs上的数据文件。另外,由于hdfs不支持文件的修改,对于hregion数据的写入实际上是重新写入一个数据块到原本的数据之后。

进一步的,运用基于flink流式处理引擎的窗口运算获取所述特征数据的统计特征数据,得到数量统计特征数据和时间统计特征数据,具体实现步骤为:

s4-1:建立时间窗口并设定时间阈值;

s4-2:对进入时间窗口的特征数据中的每一条数据时数据进行信息计算;

s4-3:到达时间窗口的时间阈值时,调用窗口计算,得出时间统计特征数据;

s4-4:建立数量窗口并设定数量时间阈值;

s4-5:对进入窗口的特征数据中的每一条数据时数据进行信息计算;

s4-6:到达时间数量时间阈值时,调用窗口计算,得出数量统计特征数据。

例如时间窗口设为10秒,数量窗口设为1000个数据包;时间阈值设定为10秒。以下为具体方式:

1.过去10秒内,与当前包具有相同目标的主机的数据包数;

2.过去10秒内,与当前包具有相同服务的主机的数据包数;

3.过去10秒内,与当前包具有相同目标主机的数据包的百分比;

4.过去10秒内,与当前包具有相同服务的主机的数据包的百分比;

5.过去10秒内,与当前包具有不同目标主机的数据包的百分比;

6.前1000个数据包中,与当前包具有相同目标的主机的数据包数;

7.前1000个数据包中,与当前包具有相同服务的主机的数据包数;

8.前1000个数据包中,与当前包具有相同目标主机的数据包的百分比;

9.前1000个数据包中,与当前包具有相同服务的主机的数据包的百分比;

10.前1000个数据包中,与当前包具有不同目标主机的数据包的百分比。

进一步的,特征原文数据的类型包括:特征原文数据至少49个特征,其中38个数据包各维度协议的报文头部数值特征,维度协议包括5种协议(ethernet、ip、icmp、tcp、udp),,剩余特征包括1个数据标记特征(用于标记数据的类型);10个统计特征。

例如tcp协议的报文头部数值特征包括源ip、目的ip、源端口、目的端口和源mac地址。5种协议的全部报文头部数值特征见图2和图3。

进一步的,步骤s1中特征原文数据提取的具体步骤为:

s1-1:将原始的网络数据包镜像汇聚,得到镜像网络流;

s1-2:捕获网络数据包:运用libpcap函数包处理镜像网络流;

s1-3:运用gopacket工具读取网络数据包,按照网络的不同的层次的特性,提取各个协议的报文头部各维度数值,既得到特征原文数据,并且进行落盘处理,生成本地数据包文件并存储。

进一步的,所述原始的网络数据包镜像汇聚,得到镜像数据是通过网络设备的span模块,将其他端口的网络流镜像到指定的的端口,获取整个网络的镜像网络流。

数据管道提供了提供数据的缓冲以及冗余备份服务。设计原因为:网络中的海量数据存在时间性,如某个时间段网络流量突然过大,或者下游流式处理不过来,因此一个可靠高效的缓存工具就显得尤为重要,可以避免数据的丢失。

libpcap是目前通用的一种网络数据捕获工具库,其他的工具大多使用libpcap进行网络数据包的捕获。gopacket是google公司开发提供的一个网络数据包捕获工具包。市面上也存在其他的网络数据包的捕获方法,gopacket是优选的一种。

进一步的,网络数据包的捕获步骤:

1.查找网络设备;2.打开网络设备;3.获得网络参数;4.编译过滤策略;5.设置过滤器;6.利用回调函数获取网络数据包;7.关闭网络设备。

最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1