2021-4-10 | 互联网
1概述
随着互联网的快速发展,人们不断在互联网的数据采集和分析方面进行深入研究和系统开发,以期能向社会提供丰富的统计和决策分析信息,同时提高对互联网业务的控制和监管。国内外互联网数据采集分析方法主要分为3类,即采用SNMP协议、RMON协议或NetFlow技术采集数据。但是国内外同类产品在具体应用中都有一定的局限性[1]。考虑到应用的安全性,更希望能采用具有国内自主知识产权的产品。
本文对数据汇聚分发和采集分析进行了研究,开发了一套集数据汇聚、分发、采集和分析于一体的综合系统。
2互联网流量汇聚分发采集分析系统总体框架
本文系统主要用于提供复杂接入环境下多链路数据采集、互联网原始数据分发、综合数据发布、综合流量识别与分析等服务,系统的研制目标包括以下4个方面:
(1)多路接入环境下多条大容量链路数据进行汇聚,汇聚的接入链路包括光纤、电路2类,数据类型包括以太、ATM2种格式。
(2)对多条大容量链路数据进行分发,将多路汇聚后的数据向数据输出端若干组端口实时并行发送。数据分发的目的包括信息安全、国家安全、公共安全等。
(3)实时采集大容量多路原始数据,并生成网络数据会话流。
(4)基于应用协议进行数据识别及实时统计分析,为其他应用系统提供灵活的数据格式和分析结果。
3系统关键技术实现
本文系统的实现主要从数据汇聚分发和数据采集分析两方面进行关键技术研发。
3.1数据汇聚分发
数据汇聚分发的主要功能是在多路接入环境下将多条大容量链路的数据进行汇聚和分发。各链路数据进行汇聚分发时,系统数据输入端配置N个输入端口,数据输出端可以分不同组别进行分发。按照不同需求,系统输出可以分为4类:
(1)单/双端口万兆输出;(2)N个端口千兆输出;(3)M个端口千兆输出(M<N);(4)N个端口百兆输出。在研发中,基于H3CS9500系列核心交换机,联合杭州华三公司进行了二次定制开发,实现了数据的汇聚和分发系统,其关键技术包括:(1)利用虚拟管道使不同流量进入不同复制域虚拟管道是利用标签而衍生出来的,指汇聚分发的报文进入S9500后,S9500采用内部标签标识,利用标签技术对相应的报文增加不同的标签进行标识。对不同的输入端报文构建了不同的虚拟管道,不同输入端的报文可以不考虑其带有冲突的802.1q内容,从而为不同客户划定不同的复制域,这些复制域还同时具有防802.1q冲突的能力。
这里只需设置不同客户接入端口为虚拟管道入口,而各输出端口为各自的虚拟管道出口。在管道中,通过硬件底层下发访问控制列表(AccessControlList,ACL)规则,使流量只能从管道的入口进、管道的出口出,因此,不会出现环路风暴问题。
(2)以组播技术实现每个复制域内单播报文的多份复制IP组播报文在路由器、交换机的转发是一对多的转发,IP组播报文进入S9500后,直接进入硬件的组播交换引擎,查找组播硬件转发表,确定下一跳和出接口列表,并完成报文目的和源地址内容的修改,在组播引擎完成组播报文的多份复制后,从各个出接口送出。
3.2数据采集分析
在数据采集分析模块开发中,联合上海直真视通公司,实现该模块的关键技术包括:
(1)流量捕获
基于端口识别网络流量的传统方法已不适用于识别新型的、复杂互联网应用类型产生的流量,应用级流量采集与分析应采用数据包深度分析技术识别网络流量。本文系统采用了高性能网卡加Libpcap软件的方式捕获数据包。Libpcap是Unix/Linux平台下通用的数据包捕获函数包。捕获数据包时,Libpcap将网卡设置为混杂模式,在内核空间内复制网络驱动程序读取的数据包,再传递到用户空间。Libpcap捕获数据包需要二次内存复制,限制了其捕获性能,因此,采用了零拷贝和负荷平衡方法来改进Libpcap[2]。
(2)网络流生成
网络流生成是将链路上获取的原始数据包归并为网络流形式输出。网络流是对一个测量间隔内一些具有相同属性的数据包集合的抽象描述,可以定义为一个测量间隔内具有相同(源IP地址,目的IP地址,源端口,目的端口,协议类型)五元组的网络包集合,它是一种单向的、细粒度的流量聚合形式。
网络流生成过程如下:网络流生成器在内部维持当前活跃网络流的记录缓存结构,当捕获到新的原始数据包时,网络流生成器判断这个数据包是否属于当前活跃网络流,如果是,修改网络流相关信息;如果不是,创建新的网络流记录并设置网络流相关信息。
(3)网络流应用类型识别
本文系统的应用级流量采集与分析方法首先在网络流生成的同时,融合多种流量识别算法识别网络流的应用类型。
目前互联网上常见的协议和应用主要包括传统型(HTTP、研制了网络协议分析和识别系统TAS,其核心为iSIE互联网会话识别引擎。TAS由采集探针和协议分析引擎两部分组成,如图2所示。其中,采集探针负责采集宽带流量数据并进行预处理,将预处理结果提供给协议分析引擎;协议分析引擎能够接收一个或者多个探针的预处理数据,并对这些预处理数据进行综合分析,统计、识别协议类型,将分析结果存入数据库。
在具体实现时,将流量采集与分析分为多个阶段来实现,包括原始流量捕获、会话流生成、会话流存储、流量分析和信息呈现。其中的流量分析主要使用网络流应用类型识别和基于网络流关联识别应用类型的方式进行流量识别和实时统计。