基于流式处理的TCP会话重组与统计数据提取方法与流程

文档序号:14953183发布日期:2018-07-17 23:00阅读:296来源:国知局
本发明涉及一种流式处理的tcp会话重组与统计数据的提取方法。
背景技术
:目前的会话数据提取工具往往依赖于开源工具libnids、netflow等,依靠传感器的计算资源和存储资源,容易达到计算瓶颈,缺乏可靠、冗余等机制,容错性较低,阻碍系统整体的性能、可靠性,最终导致更多的物理、人力资源的浪费。netflow等工具依赖于特殊的网络设备,不具有通用型,并且,libnids等工具在灵活性上的缺失难以满足定制输出的需求,为后续的数据处理带来更多的人力成本。在实际生产环境中,数据流的传输,往往采用原文的方式在数据管道中流转,处理灵活性低,造成了网络资源的浪费,容易达到网络瓶颈,进而从而引发整个系统的停滞。在其他的统计数据提取方法中,往往采用离线计算的方式,这种计算方法会造成较高的数据延迟,无法在第一时间交付数据,从而拖慢整个系统的速度。技术实现要素:针对现有技术中所存在的不足,本发明提供了一种基于流式处理的tcp会话重组与统计数据提取方法,能够有效的重组网络的tcp会话,并根据提取的会话数据挖掘出会话统计数据,为流量信息挖掘以及异常行为分析提供支持,提供高效、可靠的会话数据和会话统计数据计算服务。为实现上述目的,本发明采用了如下的技术方案:一种基于流式处理的tcp会话重组与统计数据的提取方法,包括以下步骤:(1)在数据收集层与数据存储层之间构建数据管道层及实时计算层、数据收集层收集网络数据包数据发送给数据管道层进行缓存,实时计算层用于从数据管道层中提取数据,进行处理,处理结果存入数据存储层;(2)、在数据管道层中搭建三台kafka分布式消息队列作为数据管道服务;(3)、在实时计算层中搭建三台flink流式处理引擎作为流式计算集群;(4)、实时计算层从数据管道中取出数据,进行反序列化成对象;该对象将作为流式计算过程中的数据元素,经过数据运算输出tcp会话数据与统计数据。相比于现有技术,本发明具有如下有益效果:能够有效的重组网络的tcp会话,并根据提取的会话数据挖掘出会话统计数据,为流量信息挖掘以及异常行为分析提供支持,提供高效、可靠的会话数据和会话统计数据计算服务;使用的基于流式分析的会话重组及统计数据提取技术能够负载网络大流量,保障系统的高效性、稳定性,提供灵活的处理方式,节省物理、人力成本;采用avro二进制序列化的方式进行数据特征流的传输,提供更灵活的数据流传输方式,节省网络资源,提高系统的整体性能。附图说明图1为本发明的系统框图。图2为本发明的数据流分区示意图图3为触发器计算流程图具体实施方式一种基于流式处理的tcp会话重组与统计数据的提取方法,包括以下步骤:(1)如图1所示,在数据收集层与数据存储层之间构建数据管道层及实时计算层、数据收集层收集网络数据包数据发送给数据管道层进行缓存,实时计算层用于从数据管道层中提取数据,进行处理,处理结果存入数据存储层;(2)、在数据管道层中搭建三台kafka分布式消息队列作为数据管道服务;(3)、在实时计算层中搭建三台flink流式处理引擎作为流式计算集群;其中一台为主节点,同时三台为次节点,流式处理任务运行时,主节点将任务自动分配给三台次节点运行;(4)、实时计算层从数据管道中取出数据,进行反序列化成对象;该对象将作为流式计算过程中的数据元素,经过数据运算输出tcp会话数据与统计数据。通过序列化成二进制数据,能够降低存储于网络传输的资源消耗。数据管道层中通过定义数据组装schema模式,将30余特征序列化成二进制格式bytes,进行发送;对于所收集到的网络原始数据包,抽取数据头部29个特征以schema模式进行序列化,该模式以json格式的方式定义,并在本地存储为avsc格式,通go-avro作为序列化工具,通过将go语言原生的map[string]interface{}结构转化成avro所定义的record数据对象,序列化成二进制格式。使用avro二进制序列化的方式具有存储空间占用小、序列化效率高等特性,能够有效的节约网络资源。同时,avro二进制格式自带的动态类型(dynamictyping)特性,使得在进行特征模式升级时,能够提供更好的兼容性,不需要进行多次编码修改,节省人力成本。经过实际测试,相对于原生的字符形式,使用avro作为序列化工具,所得的二进制数据相对于原生的字符数据,所占用的存储空间不到60%,通过序列化的方式,节省了40%以上的网络传输资源与物理存储资源。序列化后的数据将发送到由kafka分布式消息队列构成的消息管道中进行缓存。kafka是一款工业界非常流行的消息队列软件,能够同时支持多个生产者与消费者,保障数据传输的高效性,具备的数据分区复制(replica)功能,采用多个数据管道节点作为数据管道的基石,保障了数据传输的可靠性和高效性。实时计算层使用avro-tool工具按照定义好的schema文件avsc生成反序列化类tcp,该类主要用对数据管道中的序列化二进制数据进行反序列化操作,使用flink-kafka-connector工具,从kafka集群中读取出序列化二进制数据,并对数据进行反序列化操作,得到tcp数据对象;实时计算层是tcp会话重组和统计数据计算的层次,这层主要依靠高性能的流式计算引擎—flink提供计算能力,flink作为第四代大数据计算引擎,其主要的表现为flink对于流计算的支持,是目前真正意义上流式处理引擎,较好的实现了dataflow模型,flink把所有的任务都当做流来处理,可以支持本地快速迭代,支持batch运算以及dag运算。将tcp数据对象中的源ip、目的ip、源端口、目的端口定义成会话数据四元组,源ip+源端口与目的ip+目的端口位置调换的数据对象被认为属于同一次会话,将源ip与源端口以冒号连接组成字符串str1,将目的ip与目的端口以冒号连接组成字符串str2,并对str1与str2按照ascii编码进行排序,将较小的字符串放置在前,由此可得对于每一个会话唯一key值,该key值将作为一次会话的区分标准,同时也作为流分区的依据;如:数据对象a(srcip=192.168.0.100,srcport=25678,dstip=8.8.8.8,dstport=8080),经过计算得到的唯一key值为“8.8.8.8:8080192.168.0.100:25678”。唯一key的计算公式:str1=(ip1+port1)str2=(ip2+port2)flink同时运行多个并行流,每一个并行流都是一个分区,每一个并行流将用来存放一组会话,通过提取数据对象的四元组信息,获取唯一key值,该值用于流分区,分区后数据流将划分为一组一组的会话流;如图2所示,数据流在flink中流转,并按照四元组构成的唯一key值划分成了一个个的并行会话流。对数据流依据活动会话进行窗口分配,会话窗口之间互不重叠也不具有一个明确的开始和结束,会话窗口会在设定的时间内没有收到任何数据的条件下关闭,当经过一段时间并没有数据到达,引发会话窗口结束后,新的数据的到达将会引发建立新的会话窗口;会话窗口采用flink的会话窗口机制,根据tcp会话建立最长等待时间,建立相应最长等待时间长度的会话窗口,当任意一条并行流上的第一个数据到达,建立一个新的会话窗口,在会话窗口上随着数据的不断到达进行增量计算,并且在连续时间阈值到达前未收到任何数据的情况下结束该会话窗口,并输出计算结果,对于每一条并行流,都会随着时间推移不断会有新的会话窗口的新建与关闭,会话的结束依据数据间隔时间来判定,使用tcp会话建立最长等待时间127秒来进行判定;通过会话窗口触发器用于判断一个会话的开始、一个会话的结束以及调用;判断会话的开始的依据来源与tcp数据对象的三次握手,但是在捕获数据时,很可能连接已经开始进行了,因此如果发现数据的tcp报文携带数据的长度大于0,则认为该会话已经开始,判断会话的结束的依据来源与tcp的四次挥手,在一个四次挥手的过程中,会出现两个数据带有fin标志位。因此判断一个数据中是否带有fin标志来判断该会话是否即将结束。一旦出现fin标志位,将认为会话即将结束,并触发窗口计算,但可能出现该次会话检测到的是四次挥手的第二次fin标志位,因此在检测到fin标志时,需要判断会话窗口的长度,如果长度小于4,认为检测到了第二次fin标志,这段窗口数据将被抛弃。另外,需要判断是否出现了rst标志,当出现该标志位时,一般意味着一次会话的结束,因此一旦出现了rst标志位,也认为该会话将要结束。最后,如果127秒未收到新的数据,则关闭会话窗口,计算窗口结果。会话窗口触发器具有以下功能:1.每当一条数据到达时,进行会话窗口的累计计算,保证窗口的数量大小不断累积;2.判断会话的结束标志,如果会话将要结束,调用窗口处理函数;3.当会话窗口127秒未有新数据到达,出发窗口处理函数。如图3所示,触发器按照如下流程运作:收到第一条数据,新建会话窗口;每收到一条数据进行累计计算,扩大窗口数量值;判断窗口是否超时,超时时间为tcp的连接建立最长等待时间—127秒,如果超时则进行窗口计算,并结束窗口,否则进行下一步判断;判断是否出现fin标志位,如果出现则进行窗口计算,否则进行rst判断;判断是否出现rst标志位,如果出现则认为会话重置,将进行窗口计算,否则,则继续累计计算;采用窗口计算方法从会话的开始到会话的结束进行累计计算,计算出会话数据结果,根据其计算结果作为窗口计算的输出聚合到一条数据流中,由该数据流进行进一步的统计计算并得出最终的结果,算出的会话数据;采用flink的滑动窗口机制获取会话数据的统计,所得的会话统计数据和前计算的出的会话数据组合,所得的会话数据组合用于网络异常行为分析平台后续的分析的出数据集。窗口计算主要计算如下数据:1.区分内网ip与外网ip:根据ip保留段来判断是否这次会话中是否其中一个ip是内网ip,在两个ip中,第一个ip始终为内网ip,第二个ip为外网ip;注:(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16这三个网段属于私有地址)2.区分会话发起ip:在一次会话中,含有第一个syn标志位的数据的源ip地址(三次握手的发起者)将被认为该会话的发起ip地址;3.网络协议分析:在一次会话中,含有第一个syn标志位的数据的目的端口地址将被认为是该次会话的目的通信端口,将根据该端口来判断该次会话的类型,常见的端口与会话类型对应如下表:序号端口号协议类型120ftp-data221ftp322ssh423telnet525smtp637time780http一共约5761个端口与协议的对应关系,这里不再一一列举。4.ip1进出端口:一般情况下,ip1设置为内网ip,通过第二部分计算得出存在的内网ip设置为ip1,并将此次会话的ip1的出端口与入端口记录,保存为该次会话的ip1的出入端口。如果,一次会话中不存在内网ip,则根据ip排序,比较小的ip将作为ip1;5.会话传输统计:当确定ip1时,将累计计算会话中ip1所收到的数据总量以及发送的数据总量,该计算将对所有数据的长度进行累计计算,最终得出的结果的数据单位为字节;6.ip地域分析:对于一次会话,将通过查询ip地址查询系统,分析双方的ip地址位置(内网地址跳过查询),并进行标注;7.会话起始时间统计:一次会话的第一个数据的时间,将作为该次会话的开始时间,而最后一个包将作为该次会话的结束时间;8.长会话处理:对于一次较长的会话,如果进行长时间的计算,将会引发明显的延时问题,系统不能长时间的等待会话的结束,因此对于一次会话,设置一个时间阈值,如果会话超过时间阈值依然没有结束,将会提前进行一次结果的计算进行输出,保障整个系统的及时性,这个阈值一般设置为30秒;9.会话结束标记:会话结束标记主要用于区分恶意的攻击行为,如:rst攻击等。因此窗口计算标记出会话结束的原因,包括但不限于:fin、rst、超时。以上的计算结果,将作为窗口计算的输出聚合到一条数据流中,由该数据流进行进一步的统计计算并得出最终的结果。会话数据包括会话起始时间、会话应用协议类型、会话起始节点信息、会话数据总量数据统计、会话时间统计数据、会话数据时间统计信息。以网络流量统计特性作为数据属性的异常检测方法比基于数据分组头各维数值的检测方法更加高效,因此本发明针所计算出的会话数据,进一步提取会话统计数据。本发明使用flink的滑动窗口机制,获取会话数据的统计特性,具有高性能、低延迟、高容错等特性。本发明连续使用两个滑动窗口,分别是时间滑动窗口和数量滑动窗口,统计会话数据数量统计信息,以及时间滑动窗口,统计会话数据时间统计信息。主要获取的统计特征如下:1.过去10秒内,与当前会话具有相同目标的主机的会话数2.过去10秒内,与当前会话具有相同服务的主机的会话数3.过去10秒内,与当前会话具有相同目标主机的会话的百分比4.过去10秒内,与当前会话具有相同服务的主机的会话的百分比5.过去10秒内,与当前会话具有不同目标主机的会话的百分比6.前1000个会话中,与当前会话具有相同目标的主机的会话数7.前1000个会话中,与当前会话具有相同服务的主机的会话数8.前1000个会话中,与当前会话具有相同目标主机的会话的百分比9.前1000个会话中,与当前会话具有相同服务的主机的会话的百分比10.前1000个会话中,与当前会话具有不同目标主机的会话的百分比最后所得的会话统计数据和前计算的出的会话数据组合,最终得出一种完整、全面的数据集,用于网络异常行为分析平台后续的分析。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1