APP下载

基于CUDA的大规模通信网络日志数据分析

2016-02-06陈志坤孙宁伟

网络安全技术与应用 2016年9期
关键词:IP地址直方图日志

◆王 璐 赵 瑜 陈志坤 孙宁伟

(中国人民解放军91655部队 北京 100036)

基于CUDA的大规模通信网络日志数据分析

◆王 璐 赵 瑜 陈志坤 孙宁伟

(中国人民解放军91655部队 北京 100036)

体系作战能力的发挥依靠军事通信网络物联的作战实体,而全面细致高效的日志分析是作战实体安全可靠运行的重要保障。本文针对日志分析过程中计算任务量大、分析效率低、开发周期长的问题,设计并实现了一套基于CUDA的大规模军事通信网络日志数据并行分析框架。单节点在处理日志数据分析的效率与传统CPU串行分析相比,可达到15~20倍的加速比。

大数据;GPU;并行处理;日志分析

0 引言

未来信息化战争是基于信息系统的体系作战,作战实体不会孤立地存在和发挥作用,而是将所有预警探测单元、独立的武器平台、不同层次的军事信息系统以网络的形式“物联”,并融合为一个密切联系和影响的作战体系。在体系与体系、整体与整体的对抗中,战争决策将高度依赖于海、陆、空、天战场IT基础设施和军事信息系统的稳定、可靠、高效运行,任何问题的发生都可能引起连锁效应,波及战争全局。

各级各类军事信息系统、网络设备、计算存储单元、传感器、通信链路等每天会产生大量的网络日志和事件,作战体系中各实体和网络的运行性能、故障和安全隐患都蕴藏在这些数据中,因此有效的网络日志数据采集分析是体系作战能力发挥的可靠保障。

本文针对军事通信网络日志数据分析处理过程中计算任务量大、分析效率低、开发周期长等问题,将统计分析等任务与MapReduce模型相结合,设计并实现了一套基于CUDA(Compute Unified Device Architecture,通用并行计算架构)的网络日志数据并行分析框架。单节点在处理日志数据分析的效率与传统的串行分析相比,可达到15~20倍的加速比。与MapReduce框架相比,可显著减少代码量。

1 军事通信日志数据分析挑战

军事通信网络日志,主要包含有线/无线网络设备日志(路由交换设备、安全设备)、链路性能监测日志(丢包率、误码率、时延)、流量日志、网络接入设备运行日志、军事信息系统运行日志等。日志记录的内容通常是时间戳、监测对象ID、监测对象子项、监测维度、监测指标和监测指标值的集合。

原有通信网络日志数据分析,主要依靠关系型数据库,为实现数据高速检索,往往会对一段时间前的日志数据进行降低时间精度的合并处理。另一方面,面对不断扩建改造的通信网络和日益增多的网络接入实体,日志数据量成爆炸式增长态势,传统的网络日志数据存储、处理、挖掘技术已无力应对,难于针对故障定位、全网运行态势等需求提供长时间段内、快速、全方位、细粒度的日志数据分析。

军事通信网络日志充分体现了大数据的四个特性:海量的规模、数据结构和数据源的复杂多样、数据的高速产生、数据的真实性和低价值密度。日志分析往往是商业智能的基础,而日益增长的日志信息条目使得大规模数据处理平台的出现成为必然。MapReduce处理数据的有效性为日志分析提供了可靠的后盾。现有主流方法还会采用Flume、Kafka、Storm或Spark Streaming、HDFS组合的方式解决大规模日志数据分析问题。但在复杂的战场条件下,一方面难于占用宝贵的网络带宽将海量实时的日志数据统一回传至中心分析,另一方面在局部战场环境或舰艇等作战平台也难于搭建基于Hadoop或Spark的大规模数据处理平台。

2 关键技术

2.1 MapReduce

MapReduce是一种利用底层分布式计算环境对大规模数据集(大于1TB)进行并行处理的计算模式[1]。它包括Map和Reduce两个基本处理过程。其中Map过程就是将以“键值对”形式的数据记录通过特定转换方法以另一种键值对形式输出。而Reduce过程就是将Map输出的一组键值对进行合并,即将同样主键下的不同数值合并到一个列表中,对传入的中间结果列表数据进行某种整理或进一步的处理,并产生某种形式的最终输出结果。目前业界比较通用的MapReduce计算框架是Hadoop。

2.2 CUDA

GPU(Graphic Processing Unit,图形处理器)为密集型、高度并行化计算而设计,从图1可以看出从2006年之后,GPU的计算性能开始逐渐超越CPU。而2010年后,革命性的Fermi架构引入了大规模并行硬件,使得GPU的计算性能数倍于CPU的计算性能[2,3]。

图1 CPU和GPU峰值计算速度对比图[3]

随着计算架构的变化,计算机问题的求解模型已经从串行单线程向大规模并行计算转变。尽管GPU上的大规模并行硬件非常适合这些问题,但需要开发者学习复杂的图形处理器操作原语。

CUDA是NVIDIA公司2007年推出的用以简化GPGPU(General Purpose GPU,即通用计算图形处理器)加速的开发工具。通过CUDA,可以将GPU高速并行处理能力用于通用计算领域,并大幅度提高程序运算速度。CUDA的出现为大规模军事通信网络日志数据的并行处理提供了新的途径,为基于单设备单节点海量日志的管理和分析创造了条件。

3 基于CUDA的网络日志数据分析

3.1 网络日志数采集及预处理

军事通信网络日志是由网络设备、军事信息系统、传感器等产生,包含战场网络环境最重要的信息且数量巨大。为了便于后期分析,采集存储前在配置文件中按照不同日志源、不同时间段等定义数据分目录分文件存储规则及命名规则,并定义不同类型日志的数据结构。

单个日志分析节点收集周边区域网络日志数据到在缓冲区对数据进行去重操作,并按照已定义结构、存储规则及命名规则对数据进行清洗和切割,最后存储到节点本地磁盘中。

3.2 基于CUDA的并行计算基础框架

利用基于CUDA实现类MapReduce设计模式的并行计算基础框架,而在执行计算任务时,实现的技术细节隐藏在框架中,基本流程如图2所示。

图2 基于CUDA的并行计算框架基本流程

日志数据通过Scatter操作采用按时间段划分、数据量取余的方式划分为多个数据块发到GPU不同内核上,然后根据分析任务需要通过Filter操作进行过滤。每个处理核心通过Map操作为数据添加ID,Sort操作将ID排序,使用Scatter操作将数据分发到不同GPU内核上,然后Reduce操作将同ID的数据进行累加等操作。最后将各个核的处理结果通过Gather操作收集起来,作为输出结果存储回文件系统。

(1)Scatter/Gather操作流程

框架通过Scatter/Gather操作将海量日志数据分段与合并、主内存与显卡内存之间的数据拷贝传输过程透明化,只需设置时间粒度和处理核的个数,即可将输入数据划分为多组块(块数目等于线程数),并分配到显卡内存上进行多核并行分析处理。

Scatter将数据输出到非连续的存储器地址内,Gather则从非连续的存储器地址内读取数据。在CUDA的架构中,每个ALU(Arithmetic and Logical Unit,算数逻辑单元)可以看作是一个处理核,通过Scatter& Gather操作,多个ALU间可以共享存储器,实现对任意地址数据的读写操作。

(2)Filter操作

Filter 操作根据设定分析任务的生成过滤规则,按照时间戳、监测对象ID、监测对象子项、监测维度、监测指标和监测指标值区间对日志数据流进行多核协同并行过滤。

(3)Map操作

Map操作对每条数据增加一个ID值,ID值由用户自定义或框架函数自动生成。函数将需要统计的日志对象ID和指标项拼接成id。如统计某日志对象ID某指标项的平均值,即可将日志对象ID与指标项拼接成为ID。

(4)Reduce操作

Reduce操作对相同ID的指标值进行累加等计算。在框架中,Reduce采用生成直方图的方式,根据id对数据进行统计规约,CUDA SDK中默认提供了直方图生成算法。

(5)Sort操作

直方图生成算法的并行化,其难点在于如何减少数据分布不规则所产生的写冲突,因此在建立直方图前对数据进行预排序,可有效加速直方图的构造。Sort操作按照一定规则,对数据的ID进行排序操作,便于Reduce进行规约处理。考虑到GPU的并行性,典型的GPU排序算法是基数排序,本框架中采用负载平衡的并行基数排序方法。

3.3 基于CUDA的网络日志并行分析

网络监测对象KPI数据提取是日志数据分析的重要需求。下面将部署在某区域外联出入口的流量监测设备记录的流量日志作为安全监测的数据源,以网络KPI数据提取为例,介绍如何使用基于CUDA的并行计算基础框架实现网络日志分析。

设计基本网络KPI指标为:每天总流量、平均流量、最大/最小流量、进/出流量、各IP地址流量值、曾出现过的IP地址集合等。某天所有IP地址每小时流量值计算实现步骤描述如下:

(1)流量日志数据读取:根据配置文件日志结构、存储及命名规则,按内存最大处理能力分批次抽取某天网络流量日志数据文件,以小时为时间间隔分组至缓冲区。

(2)流量日志数据过滤:在缓冲区由GPU不同内核从日志数据文件中过滤出待统计时间段内的数据集。

(3)流量日志数据编号:通过Map操作对数据集记录进行编号,转换为{ id,<时间戳,包类型,包序号,源IP地址,源端口,目的IP地址,目的端口,包长度,…> }。

(4)流量分组加合:按照时间段、包类型、源地址、源端口、目的地址、目的端口,建立倒排索引。以按源地址进行统计为例,具体流程为:

①使用 Reduce 操作,按照源IP地址建立直方图,即对数据按源地址进行分组;

②使用Sort操作,对每个新建的分组的数据记录,按照 id 进行排序,默认为升序;

③使用 Prefix Sum(数组前缀和)的改进算法,计算id与前一id的差值,用于构造倒排表。

对于源数据过多,无法在一次直方图计算中完成的,先按照IP地址取余,进行一次分组后再计算。反复进行上述过程,直到直方图上的一条数据即为一个IP地址。

(5)分析结果存储:从GPU中读取处理完成的数据,并保存到磁盘上;倒排的数据按Scatter操作设定的时间间隔进行分组存储。

4 实验结果与分析

4.1 实验环境构建

表1 实验平台硬件配置参数表

本实验通过搭建基于CUDA军事通信网络日志数据分析平台来验证方法的有效性。实验环境硬件平台为ASUS ESC 2000 G2工作站1台,其配置参数如表1所示。

整个系统使用NVIDIA提供的Nsight Eclipse Edition[4]在Ubuntu 12.04 x64系统下开发,开发使用的CUDA版本为7.0。

4.2 GPU与CPU计算性能对比实验

实验以网络流量日志分析问题为例,选取不同数据量级的日志信息,采用单CPU计算、MySQL数据库查询、CPU和GPU组合计算3种方式,在聚类统计排序、去重查找2种应用场景下的计算性能。

(1)实验数据

网络流量日志数据记录为源IP地址、源端口号、目的IP地址、目的端口号、协议、数据包大小、数据包特征的集合。测试的3组日志数据记录条数分别为2130万、13460万、52240万。

(2)性能对比

实验1计算任务为IP地址流量按分钟聚类统计后排序,性能结果如表2、图3所示。

猜你喜欢

IP地址直方图日志
符合差分隐私的流数据统计直方图发布
一名老党员的工作日志
扶贫日志
铁路远动系统几种组网方式IP地址的申请和设置
用直方图控制画面影调
雅皮的心情日志
IP地址切换器(IPCFG)
游学日志
基于SNMP的IP地址管理系统开发与应用
中考频数分布直方图题型展示