互联网流量流向分析

互联网流量流向分析

 

随着宽带互联网应用的普及,互联网用户数量在不断增加,各个领域的应用也在逐步深入,网络规模持续扩展,网络流量高速增长。尤其是P2P技术产生以来,互联网网络流量激增,对网络的处理能力提出了更高的要求。同时,要合理、有效地疏导流量,必须对网络流量进行科学、细致的分析,通过流量分析可以有效地总结出网内、网外流量比例,各区域用户产生的流量大小,进而对用户使用习惯、各类应用带宽消耗情况等进行分析,从而可以对不同区域用户使用习惯、网内资源建设方向等进行有效的指导。不仅要依据数据的目的地址去疏导流量,还要明晰流量的来源和成分,区分流量类型,以精确地计算成本,合理分配IP地址数量和流量占用带宽,使流量管理更加规范。   Netflow技术最早由Cisco公司研发,首先被用于网络设备对数据交换进行加速,并可同步实现对高速转发的IP数据流进行测量和统计。经过多年的技术演进,Netflow对流经网络设备的IP数据流进行测量和统计的功能更加成熟,并成为当今互联网领域公认的最主要的IP/MPLS流量分析、统计和计费行业标准。Netflow技术能对IP/MPLS网络的通信流量进行详细的行为模式分析和计量,并提供网络运行的详细统计数据。   通过对某电信运营商的网络进行改造,引入互联网流量分析系统,以互联网流量数据为分析对象,实现以下功能:(1)精确判断流量归属地;(2)精确统计流量类型;(3)精确区分流量成分;(4)以天为单位,对某一天的流量及以天为周期单位的时间段产生的流量进行查询。   1流量分析系统设计   由于Netflow仅能宏观地对网络流量进行分析和监控,无法满足精细化管理的要求。鉴于此,需要建立网络流量分析系统。   首先在省级主干路中引入流控设备,对全省网络流量进行控制。通过建立一台Linux服务器(CMserver),在流控设备中将流量镜像至此服务器的数据库中,便可采集到全网的流量明细,进而通过存储过程将各种需要分析的数据进行聚合成表,便可对全网流量进行实时监控分析。   本系统包括4个功能模块,分别是数据采集模块、接口程序模块、数据库模块、页面呈现模块。   1.1数据采集模块   要实现对流量源和目的地的分析,首先要进行流量采集并存储,采集的数据中要包含数据包的源地址、目的地址、数据包发送时间等信息。本系统采用NetflowV9版本进行数据采集,需要对Netflow协议、待采集的路由器端口和数据采集存储服务器等进行配置。   由于需要分析的路由器端口数据量很大,而且分析目的主要为各方向流量数据比例,综合考虑数据处理量和数据准确性之后,将采集周期定为5分钟,采样比例定为1000:1,此时每5分钟Netflow数据流约有30万~40万条,存储Netflow数据流的文件大小约20~30MB。   在采集数据的端口选择方面,既要采集所有流量数据,保证数据的完整性;又要避免数据重复采集,以保证数据的准确性。按照上述条件,选择省级主干中路由器上行端口为流量采集端口,通过该端口既可以采集所有互联网用户访问Internet的流量数据,又不会发生流量数据重复采集情况。   为分析路由器端口的网络流量数据,必须将从路由器中送出的Netflow数据收集并存储,以便进一步的处理,所以需要配置Netflow采集存储服务器。具体配置为2.4GHz四核CPU、2G内存,使用Linux系统,并安装CiscoNetflowCollector(NFC)采集软件。   1.2接口程序模块   经过采集,每5分钟会输出一个格式为XML的文件,文件数据分3部分:数据头、模板部分、数据部分。NetflowV9的数据格式可以自定义,根据分析需要,定义数据模板主要包括我们关心的13个字段,分别为:源地址、目的地址、源端口号、目的端口号、入接口、出接口、协议、服务类型、流数量、报文数、字节数、开始时间、结束时间。每个字段使用“|”分开。   选用C++程序语言进行数据的分析及入库。程序语言完成的主要功能为按照字段定义进行数据分列,并按要求建立数据表,然后将分析后的数据导入数据库中。原始数据每天自动生成一个文件夹,文件夹中每5分钟生成一个数据文件,为了达到自动读取数据的功能,采用“日期+时间”循环来自动读取数据文件。   读取数据文件对每行按照不同字段分列。由于每个数据文件的数据头部分完全相同,而且不包含所要分析的数据信息,所以可以把数据头部分跳过,然后根据每行数据的“|”将每个字段的数据进行分列。   再根据各字段数据分析的需要,转换成相应的数据类型,并与数据库连接写入数据库中。   1.3数据库模块   作为基于Netflow流量的分析系统,数据库成为系统的基础及核心,一切功能模块及数据采集均需建立在数据库中,从性能、成本、易用性、可靠性等方面综合考虑,选用MySQL作为本系统的数据库。   首先是基本表的设计。在程序操作数据表时,读写的性能受数据表字段所占字节数的影响,数据表字段所占字节数越大,则需要更长的读写操作时间,字段所占字节数越小,则其读写操作的性能将会有所提高。因此,设计数据库字段的属性对整个系统的性能至关重要。在分析程序对数据按照规则条件进行匹配后,将更新数据表中IP地址等相应的归属信息,但在数据的进一步汇总中,如果汇总程序按照IP地址归属信息进行数据分组汇总,则需要读取归属信息的全部字节数,这对于系统整体汇总而言,其运行效率仍会受到影响。本着读取最少字节数以提升系统工作效率的原则,需要将归属信息代码化,汇总程序仅需要根据归属信息代码作为分组条件即可。   根据Netflow的原始数据量,如果对其进行一一匹配对应,则无法在5分钟内完成相应的数据归属、流量分析等操作。为了提高数据库效率,最直接的方法就是先进行关键字段的聚合,然后进行相应的递归聚合,最后将分析数据进行匹配分析,这样可以有效地减少原始数据的运算量,尤其在磁盘I/O有限的条件下,性能提升更明显。#p#分页标题#e#   在数据递归聚合后,虽然数据量已经有了极大的压缩,但数据库运算仍然十分缓慢,因此在各级数据表中,对需进行运算的字段进行索引配置。索引是用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。由索引带来的效率提升则是非常明显的,如同看书时按照目录查询章节一样迅速。在本系统中,由于要从目的IP地址中分析出该IP的分公司归属,这对于运营商庞大的不连续的IP地址段数据表来说,其哈希运算将会带来极大的系统符合,其运算效率也将随着两张数据表记录的增长而成倍的增长。通过对比测试,在没有配置索引的情况下,其数据运算的时间大约为20分钟,而索引可以将此工作缩短至1分半钟左右,这恰好可以完成数据在5分钟内的运算操作。   1.4页面呈现模块   在对数据进行分析处理后,利用Eclipse+JSP+Tomcat平台,将结果以网页形式展现出来,并实现多种查询功2结束语在研究互联网技术和相关协议的基础上,通过对互联网流量数据的分析处理,运用C++,MySQL,Eclipse,JSP和Tomcat+Java等工具,实现了互联网流量分析系统的设计,解决了互联网流量分析管理过于宏观的问题。   在互联网规模不断扩展和应用领域不断增加的趋势下,互联网流量的迅猛增长,使得流量成分越来越复杂,而过于宏观的流量分析技术已经不能满足电信运营上的管理要求,只有通过可靠、有效的网络业务流量监测,并对互联网络以及网络所承载的流量进行细致的统计,准确及时的流量流向分析,才能挖掘出网络资源潜力,以达到控制网络互联成本,为企业的网络规划、优化调整和业务发展提供有力的依据。