以大数据流式技术实现网络数据包的分析方法及系统的制作方法_3

文档序号:9618584阅读:来源:国知局
123]将TCP报文头信息中的报文序号seq、确认号ack、源IP、目的IP以字符串形式组成特征字符串,其中,源IP表示TCP/IP协议中发送方IP,目的IP表示TCP/IP协议中接收方IP ;
[0124]步骤B:统计相同的特征字符串的数量,将所述相同的特征字符串的数量作为TCP重传报文数量;
[0125]所述延时指标分析步骤,包括如下步骤:
[0126]步骤1:将数据流按时间T为时间间隔进行分片;
[0127]步骤2:通过Spark Streaming实时计算框架的滑动窗口操作将分片得到的连续数据作为一次计算处理的数据转换成时间T的DStream数据集;
[0128]步骤3:将时间T的DStream数据集进行map转换得到报文集合map,然后将报文集合map进行一次groupByKey操作,产生key值唯一的报文集合map ;其中,key表示报文集合map中的键;
[0129]步骤4:将从key值唯一的报文集合map中提取出的报文数量大于2的报文集合map,组成一个新报文集合map ;
[0130]步骤5:对所述新报文集合map进行遍历,计算出所述新报文集合map中的值之间的时间间隔,即:
[0131]m
[0132]Tb=T3_T2,
[0133]Tc= T3-T1;
[0134]其中,1;表示应用延时时间值,Tb表示客户端延时时间值,T。表示网络延时时间值,!\表示第一次握手报文时间戳,T 2表示第二次握手报文时间戳,T 3表示第三次握手报文时间戳;
[0135]步骤6:将时间T内的所有Ta、Tb、T。分别计算出平均值和最大值作为网络延时指标。
[0136]优选地,在报文集合map中:
[0137]客户端发送的SYN = 1、ACK = 0的握手报文的key的计算公式为:
[0138]key =源IP+源端口 +目的IP+目的端口 +报文序号seq ;
[0139]服务端回复的SYN = 1,ACK = 1的确认报文的key的计算公式为:
[0140]key =目的IP+目的端口 +源IP+源端口 + (报文确认号ack_l);
[0141]其他报文的key的计算公式为:
[0142]key =源IP+源端口 +目的IP+目的端口 +(报文序号seq_l)。
[0143]下面对以大数据流式技术实现网络数据包的分析方法进行更为具体的说明。
[0144]重传指标分析主要根据TCP报文头信息中的报文序号seq、确认号ack、源IP、目的IP标志位信息计算统计。所述重传指标分析步骤,包括如下步骤:
[0145]步骤A:得到各个TCP报文的特征字符串,具体为:将TCP报文头信息中的报文序号seq、确认号ack、源IP、目的IP以字符串形式组成特征字符串,即构成“报文序号seq+确认号ack+源IP+目的IP”的字符串。其中,seq表示报文序号,ack表示确认号,源IP表示TCP/IP协议中发送方IP,目的IP表示TCP/IP协议中接收方IP ;
[0146]步骤B:统计相同的特征字符串的数量,将所述相同的特征字符串的数量作为TCP重传报文数量。
[0147]延时指标分析主要根据TCP三次握手的时间戳计算,TCP三次握手过程如下:
[0148]第一次握手:客户端向服务器发起TCP连接请求,发送一个标识为SYN = 1、ACK =0的握手报文,该报文的报文序号seq = X ;
[0149]其中,SYN表示TCP/IP建立连接时使用的握手标识位,SYN的值为1表示SYN标识位等于1 ;ACK表示确认标识位,ACK的值为0表示确认标识位等于0 ;x为正整数,seq表示报文序号;
[0150]第二次握手:服务器接收到客户端发送的标识为SYN = 1、ACK = 0的握手报文后,回复一个标识为SYN = 1,ACK = 1,ack = x+1的确认报文,该确认报文的报文序号seq =y、确认号 ack = x+1 ;
[0151]其中,ACK的值为1表示确认标志位等于1 ;y为正整数,ack表示报文的确认号;
[0152]第三次握手:客户端收到服务端的确认号为ack = x+1的确认报文后,给服务器返回标识为ACK = 1的最后一条确认报文,该最后一条确认报文的确认号ack = y+1 ;
[0153]根据三次握手的步骤过程和报文的SYN、ACK、seq、ack等报文标识和规则,延时指标分析步骤(Spark算法),包括如下步骤:
[0154]步骤1:将数据流按时间T为时间间隔(例如时间T可以为一分钟)进行分片,即在初始化StreamingContext时,指定时间间隔参数(例如指定为1秒);其中,StreamingContext 表不 Spark 中 Streaming 上下文类型;
[0155]步骤2:通过Spark Streaming实时计算框架的滑动窗口操作将分片得到的连续数据(例如一分钟的连续数据)作为一次计算处理的数据转换成时间T的DStream数据集;以时间T为一分钟为例,在进行Window操作时的滑动窗口的宽度为60秒,窗口移动步长为1秒;其中,DStream是指Spark中一种数据类型,DStream数据集是指DStream数据的集合;
[0156]步骤3:将一分钟的DStream数据集进行map转换,客户端发送的SYN = 1、ACK =0的报文的key =源IP+源端口 +目的IP+目的端口 +seq,服务端回复的SYN = 1,ACK =1的确认报文的key =目的IP+目的端口 +源IP+源端口 + (ack-Ι),其他报文的key =源IP+源端口 +目的IP+目的端口 + (seq-ι),然后将map进行一次groupByKey操作,产生key唯一值的报文集合map ;其中,map是指报文集合,map转换是Spark中的一种操作,key表示map中键/值数据的键,源IP表示TCP/IP协议中发送方IP,目的IP表示TCP/IP协议中接收方IP,groupByKey是Spark中的一种操作函数;
[0157]步骤4:将步骤3得到的报文集合map过滤出报文数量大于2的map,即把存在三次握手的报文过滤出来,组成一个新map ;
[0158]步骤5:对步骤4得到的新map进行遍历,计算出新map (即三报文包)中的值之间的时间间隔,即:
[0159]m
[0160]Tb= Τ 3_Τ2,
[0161]Tc= Τ3-Τ1;
[0162]其中,1;表示应用延时时间值,Tb表示客户端延时时间值,T。表示网络延时时间值,!\表示第一次握手报文时间戳,T 2表示第二次握手报文时间戳,T 3表示第三次握手报文时间戳;
[0163]步骤6:将一分钟内的所有Ta Tb T。(应用延时、客户端延时、网络延时)分别计算出平均值和最大值,即网络延时指标。
[0164]下面对本发明进行更为具体的说明。
[0165]在所述以大数据流式技术实现网络数据包的分析系统的一个【具体实施方式】中,系统整体结构如图1所示,在交换机100的端口设置SPAN,然后该端口连接探针20,探针20采用高速网卡,只做采集网络数据报文用。其中,SPAN表示为一种交换机的端口镜像技术;
[0166]采集器30根据配置的参数将网络数据报文按需求过滤出来,送入中心处理模块(中心处理模块包括包处理模块40和SOCKET接口 50)。
[0167]包处理模块40分三个线程处理,一个线程存储入库,一个线程将网络数据报文的数据包压入发送队列,一个线程做简单流量处理。
[0168]SOCKET接口 50将报文发送到连接到该接口的Spark Streaming。该接口根据配置端口监听,每个探针有自己一个不同的端口,所以一个探针一个监听端口。
[0169]存储模块70采用大数据HBASE集群数据库,存储原始报文和网络指标。
[0170]SOCKET接口 50使用SOCKET (TCP/IP协议调用接口)将原始报文头信息发送到Spark Streaming, Spark Streaming采用流技术连续接收报文信息,这些报文被送入spark计算模块60,该模块采用滑动窗口模式处理接收到的报文,滑动窗口的宽度是1分钟,就隔每一分钟计算这一分钟内所有数据包的网络指标值,网络指标值计算完成后,直接存储入库HBASE。每分钟不一定都存在网络指标值,所以指标值是不连续的离散数据。
[0171]进一步具体地,spark计算模块60所执行的延时算法如图2所示,
[0172]步骤S201,初始化StreamingContext,Streaming上下文的时间参数1秒,然后获取指定IP和端口的DStream持续数据流。其中,Streaming表示流式数据处理;
[0173]步骤S202,窗口以60秒的时间宽度作滑动操作,窗口的滑动步长1秒,DStream的flatMap操作可以将持续数据流转换成Record记录。其中,flatMap表示Spark中一种操作函数,Record表示Spark中的一种记录集;
[0174]步骤S203,一分钟的窗口操作后进行Κ/V的map转换,产生key时需要对Record记录根据TCP三次握手规则进行处理。其中,Κ/V表示key/value(键/值)结对数据;
[0175]步骤S20
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1