一种流量分析方法及系统与流程

文档序号:11156388阅读:1300来源:国知局
一种流量分析方法及系统与制造工艺
本发明涉及网络安全
技术领域
,具体涉及一种流量分析方法及系统。
背景技术
:目前全球因特网所采用的协议族是TCP/IP协议族。IP是TCP/IP协议族中网络层的协议,也是TCP/IP协议族的核心协议。目前IP协议的版本号是4(简称为IPv4),发展至今已经使用了30多年。IPv4的地址位数为32位,也就是最多有2的32次方的电脑可以联到Internet上,近十年来由于互联网的蓬勃发展,IP位址的需求量越来越大,使得IP位址的发放愈趋严格。随着互联网技术的飞速发展,各项新的应用和服务(例如视频点播,P2P下载等应用)层出不穷,使得网络流量日益增加,并且给网络带来许多安全隐患。同时,IPv4的地址短缺问题日益严重,阻碍了IP网络的发展。为了扩大地址空间,拟通过IPv6重新定义地址空间,IPv6是下一版本的互联网协议,也可以说是下一代互联网的协议。IPv6采用128位地址长度,几乎可以不受限制地提供地址。按保守方法估算IPv6实际可分配的地址,整个地球的每平方米面积上仍可分配1000多个地址。在IPv6的设计过程中除了一劳永逸地解决了地址短缺问题以外,还考虑了在IPv4中解决不好的其它问题,主要有端到端IP连接、服务质量(QoS)、安全性、多播、移动性、即插即用等。IPv6不仅解决了地址空间短缺问题,而且其内置了安全机制,提供给用户更高的服务质量。另外,基于SIIT的协议转换技术IVI可以解决IPv6网络与IPv4网络数据包的网络层翻译,其基本概念就是IPv4的一些地址通过IVI“盒子”映射到IPv6的网络里使用。从IPv6的地址空间中选一个子集与IPv4做基本的映射,通过这种映射规则,用户获得IPv6地址直接访问IPv6资源。在IPv4和IPv6都能访问的情况下,为避免网络视频、P2P下载等耗用带宽资源严重应用的使用,造成网络出口的拥堵,系统后台需要时刻监控各个子网中各个应用所占带宽,以对各个应用的带宽进行合理分配。技术实现要素:(一)要解决的技术问题本发明的目的在于,提供一种流量分析方法及系统,能够统计分析出子网中各个应用所占流量,从而为后续的流量分配提供依据。(二)技术方案本发明一方面提供一种流量分析方法,包括:S1,抓取子网中的数据包到用户空间;S2,在用户空间中对所述数据包进行解析,以获取该数据包所采用的协议;S3,将步骤S2中数据包的解析结果进行存储;S4,根据存储的解析结果,显示一时间段内流量在各个协议上的分布情况。进一步,步骤S1中,采用一环形缓存抓取子网中的数据包到用户空间,所述环形缓存具有一读取指针和写入指针,其中,采用写入指针将抓取的数据包写入该环形缓存中,采用读取指针将该环形缓存中的数据包读取到用户空间。进一步,步骤S2中,先判断所述数据包为IPv4数据包或IPv6数据包,然后再获取该IPv4数据包或IPv6数据包在IP上层所采用的协议。进一步,步骤S2中,根据所述数据包中IP首部的协议号字段,获取该数据包在传输层所采用的协议,根据所述数据包中端口号字段,获取该数据包在传输层在应用层上所采用的协议。进一步,步骤S3中,若当前存储的数据容量大于一阈值,则按时间顺序删除最早存储的数据,并将步骤S2中数据包的解析结果进行存储。本发明另一方面提供一种流量分析系统,包括:数据采集模块,用于抓取子网中的数据包到用户空间;协议分析模块,用于在用户空间中对所述数据包进行解析,以获取该数据包所采用的协议;存储模块,用于将数据包的解析结果进行存储;显示模块,用于根据存储的解析结果,显示一时间段内流量在各个协议上的分布情况。进一步,数据采集模块采用一环形缓存抓取子网中的数据包到用户空间,所述环形缓存具有一读取指针和写入指针,其中,采用所述写入指针将抓取的数据包写入该环形缓存中,采用所述读取指针将该环形缓存中的数据包读取到用户空间。进一步,协议分析模块先判断所述数据包为IPv4数据包或IPv6数据包,然后再获取该IPv4数据包或IPv6数据包在IP上层所采用的协议。进一步,协议分析模块根据所述数据包中IP首部的协议号字段,获取该数据包在传输层所采用的协议,根据所述数据包中端口号字段,获取该数据包在传输层在应用层上所采用的协议。进一步,存储模块若判断出当前存储的数据容量大于一阈值,则按时间顺序删除最早存储的数据,并将所述数据包的解析结果进行存储。(三)有益效果本发明具有以下优点:1、本发明通过对流量数据包中的应用层协议进行分析,从而得到网络中各个应用所占用的流量情况,从而为后续的流量分配提供依据。2、现有的数据包抓取过程中,从网卡抓取数据包到用户空间时,网卡驱动程序会产生一次中断,在大流量的情况下,操作系统将花费大量的时间用于中断处理,这显然降低抓取效率。本发明在数据包采集的过程中,采集环形缓存作为中间缓存来将数据包抓取到用户空间,环形缓存具有读取指针和写入指针,能同步地进行数据包抓取和写入,不会出现收包时网卡驱动程序中的情况。3、随着网络规模的逐渐扩大,流量信息会呈几何级增长,本发明在数据存储容量超过一定阈值时,将按照数据存入的顺序删除前期的流量记录,这样保证了数据库的承载能力以及性能。附图说明图1是本发明实施例提供的应用场景。图2是本发明实施例提供的流量分析方法的流程图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。图1是本发明实施例提供的应用场景,如图1所示,子网中各个分支机构客户端上安装多种软件,能产生多种协议的流量。客户端上产生的各种协议的流量通过相应的交换机转发至核心交换机中,核心交换机将子网中产生的所有流量上传中路由器,并有该路由器将流量转发至各种外网中(互联网Internet、教育网Cernet、教育网CernetII)。其中,核心交换机及路由器直接设有一个监控系统服务器,监控系统服务器上运行的是Linux操作系统,支持双栈协议,同时安装了流量分析系统,以执行本发明的流量分析方法。在本实施例中,子网中各个分支机构客户端所安装的应用可以是网络游戏、视频、电子邮件、网络电话等,其均采用不同的协议进行数据包传输,亦即本发明通过对数据包的协议进行分析,即可判断出各个应用所占用的流量。图2是本发明实施例提供的流量分析方法的流程图,针对上述各种应用,本实施例的流量分析方法包括:S1,采用一环形缓存抓取子网中的数据包到用户空间,环形缓存具有一读取指针和写入指针,其中,采用写入指针将抓取的数据包写入该环形缓存中,采用读取指针将该环形缓存中的数据包读取到用户空间。本步骤功能是实时抓捕网络数据包,获取数据链路层上的帧结构的数据包到用户空间。传统的数据包捕获方法大多都是基于Libpcap函数库,通过Libpcap提供的API接口直接与操作系统交互,来获得数据包。Libpcap数据包不能直接作为文本分析的对象,在文本分析前,需要将数据包组合在一起还原出应用层内容。传统的应用层内容还原经过两步,数据流还原和应用层内容提取,在获取到应用层内容后,经过文件格式解析,关键词抽取等步骤就可以实现关键信息的获取。这个过程中,数据包经历了从网卡到内核空间、从内核空间到用户空间的两次数据拷贝。这种方式操作简单,但在高速网络环境下抓包效率不高。针对传统数据包抓捕机制的不足,本实施例采用基于PF_RING套接字的抓捕方法,PF_RING原理是将网卡接受的数据包存储在一个环状缓存,其有两个接口:一个供网卡向其中写数据包,另一个为应用程序提供读取数据包的接口,读取数据包的接口通过mmap()函数实现。环形缓存实现步骤如下:创建PF_RING套接字时,同时创建环形缓存,环形缓存具有读取指针和写入指针。不同的套接字分配不同的环形缓存,套接字被绑定到网卡时,网卡一直处于只读模式,PF_RING套接字采用写入指针将网卡收到的数据被拷贝到环形缓存中。用户空间的应用程序通过打开PF_RING套接字描述符,获取其环形缓存的读指针,然后通过mmap()函数来访问PF_RING的环状缓存,应用程序读取数据包以后将移动缓存的读取指针。S2,在用户空间中对数据包进行解析,在本实施例中,对截获的数据包进行分层解析,按照TCP/IP体系结构可以分为数据链路层、网络层、传输层和应用层四个解析过程。通过逐层分析把链路上的比特流转化成可读格式的数据信息,从而可以得出链路层上的MAC地址、网络层上的IP地址(IPv4/IPv6)、传输层的服务类型(TCP/UDP)和各种类型的应用协议层以及其对应的端口号。针对当前应用层协议层出不穷的情况,采用传统的基于端口号进行协议判断已不能满足需求,本实施例在Linux下利用L7-flilter设计了基于模式匹配的协议分析方法。当前以太网都采用帧结构封装了其上层的协议,本实施例将基于TCP/IP体系结构进行分析,主要是区分链路层上层的协议类型。具体地,首先判断数据包为IPv4数据包或IPv6数据包,以判断IPv4和IPv6的流量情况。判断IPv4数据包或IPv6数据包是方式有多种,例如可以通过IP报文前4为的值进行判断,如果值是4,则表示该数据包为IPv4数据包,如果值是6,则表示该数据包为IPv6数据包。在判断完IPv4数据包或IPv6数据包后,再获取该IPv4数据包或IPv6数据包在传输层所采用的协议,在判断传输层所采用的协议时,主要关注“类型域”字段,即IP首部中的8位协议号,其部分协议对应协议号如下表所示:协议名ICMPIGMPTCPEGPIGPUDPOSPF字段值126891789所以,本实施例通过获取IP首部中的8位协议号,即可判断出该在传输层上所采用的协议。在判断完传输层上所采用的协议后,再对应用层协议进行判断,本实施例中,通过判断数据包中端口号判断应用层协议,其部分应用层协议对应的端口号如下表所示:应用层协议端口号FTP20/21HTTP80SMTP25POP3110所以,本实施例通过获取数据包中2位端口号字段的值,即可判断出该在应用层上所采用的协议。S3,将步骤S2中数据包的解析结果进行存储,本实施例将采集的数据包经过协议解析处理得出的信息,存储到数据库(Oracle)文件中。Oracle数据库引入了共享SQL和多线索服务器体系结构,这减少了Oracle的资源占用,并增强了Oracle的能力。在安全方面,提供了基于角色(ROLE)分工的安全保密管理。另外,本实施例在Oracle数据库设计方面考虑如下:1、采用数据库自动备份机制对采集到的数据信息进行备份,以确保安全。同时考虑到后期的流量监控系统的分布式部署,可能采用多个数据库备份机。2、为了统计相关信息,需要对经数据采集模块和网络协议分析模块后的流量进行存储。随着网络规模的逐渐扩大,流量信息会呈几何级增长,考虑到Oracle数据库的承载能力以及性能方面,一般情况下会设置一定阀值,当数据库文件超过一定大小时,将按照数据存入的顺序删除前期的流量记录。S4,根据存储的解析结果,显示一时间段内流量在各个协议上的分布情况。本实施例将采集到的数据信息进行分析和统计,通过用户友好的方式把结果显示给用户,便于用户对网络运行状况进行了解,以及对网络流量的趋势做出判断。本实施例采用了表格数据表示方法,表格给出了数据间的二维关系,能够准确反映出网络流量的具体分布,网络有哪些协议组成等信息。本实施例在执行上述方法以后,得到子网某一时段的流量分别情况,如下表所示:如上表所示,在网络层中,IPv4的流量要远大于IPv6的流量,用户可以适当将IPv4的流量转换为IPv6流量,以确保IPv4线路不会发生堵塞。另外,针对IPv4网络中不同的应用,用户可以将在线视频(采用RTSP协议)、网络语音电话(VoIP协议)的流量优先转换到网络情况较好IPv6线路,以保证这些实时通信应用能够正常运行,对于P2P这类的带宽占用较大的应用,用户也可以将其分流到其他网络情况较好IPv4线路或IPv6线路。综上所述,本发明采用PF_RING套接字配合环形缓存来抓取子网客户端中网卡中的数据包,然后对数据包进行网络层、传输层、应用层的协议分析,并进行高效存储,最后可将存储的协议分析结果展现给用户,以协助用户对各个应用的流量进行线路调整,保证了网络中各线路的正常运行。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1