一种基于DPI和SVM技术的网络流量识别方法转让专利

申请号 : CN201210255162.0

文献号 : CN102739457B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈晶杜瑞颖裴凯

申请人 : 武汉大学

摘要 :

本发明提供一种基于DPI和SVM技术的网络流量识别系统及方法,其将DPI识别技术和SVM识别技术结合在一起,首先在网络上捕获数据包,提取常见特征后,将数据流通过DPI识别,然后在DPI识别过程中加入提取特征模块,最后将该特征和之前提取的常见特征整合一起作为SVM的特征输入对数据流进行分类。本发明特别适用于用于中小型局域网,将网络中流经的数据精细的呈现出来,方便网络管理员了解网络数据流的组成,提高网络管理的质量和效率。

权利要求 :

1.一种基于DPI和SVM技术的网络流量识别方法,其特征在于:包括以下步骤,步骤1、捕获模块从网络上获取数据包,并将数据包传送给分析模块;

步骤2、分析模块对数据包进行会话重组和特征提取,并将得到的数据流发送至训练模块和深度包检测DPI识别模块,将提取出的特征传送至支持向量机SVM分类模块;

步骤3、训练模块对获得的数据流进行训练,并将得到的特征发送给支持向量机SVM分类模块;

步骤4、深度包检测DPI识别模块将接收到的数据流通过特征匹配进行识别,并且在特征匹配的过程中再次对数据流进行特征提取,将提取的特征发送给支持向量机SVM分类模块,同时标识该数据流是否需要重新识别,如果是,则进入步骤5,否则将数据流发送至数据库,转步骤6;

步骤5、深度包检测DPI识别模块将需要重新识别的数据流发送给支持向量机SVM分类模块,支持向量机SVM分类模块根据其得到的特征对数据流进行分类,并将数据流发送至数据库,转步骤6;

步骤6、数据库将得到的数据流进行结果统计。

说明书 :

一种基于DPI和SVM技术的网络流量识别方法

技术领域

[0001] 本发明属于网络管理领域,特别涉及一种基于DPI和SVM技术的网络流量识别系统及方法。

背景技术

[0002] 网络流量识别技术是指通过获取基于IP协议承载的未知网络数据流量,采用特定的识别方法,分析出该网络流量中包含的成分,将网络上传输的数据流与具体的网络协议或者网络应用类型对应起来的技术;网络流量识别技术目前主要有基于网络端口的识别方法、基于数据包分析的识别方法以及基于数据流分析的识别方法三大类。
[0003] (1)基于端口的网络流量识别方法:基于端口的识别方法是将网络端口和相应的网络应用相对应,得到端口进而判别是哪一种应用协议。例如web应用的80端口,DNS(53),FTP(20,21),e-mail(25,110)等;基于端口识别的方法最大的优势在于识别的速度快,并且识别系统实现起来简单,端口的知识库组建和扩展都很容易;但是基于网络端口识别方法的局限性也越来越明显,因为随着网络应用不使用默认的端口实现,越来越多的使用动态分配的端口;而且许多应用或者恶意行为为了绕过防火墙,隐藏原本的端口;所以该方法准确率越来越低。
[0004] (2)基于数据包分析的识别方法:基于数据包分析识别方法准确率最高,并且速度快;使用最多的为深度包监测技术(DPI),是通过检查数据包有效载荷,通过匹配已知特征库确定是哪一个应用层的协议而得到结果;但是这种方法要求更多的资源(包括处理的时间和存储的空间),尤其是对加密的数据流无能为力,而且检测数据包应用层内容牵涉到隐私问题。
[0005] (3)基于数据流分析的识别方法:因为DPI等基于数据包有效载荷进行流量识别对于加密的数据流无能为力以及查看数据包内容在法律上牵涉到隐私的问题,基于数据流分析的识别方法在此环境之下被提出;基于数据流分析的识别方法是从宏观的角度,对数据流进行数据统计,包括单位时间数据流数目、数据流的位速率、流大小以及流的生存周期(数据流的开始和结束时间之差);基于数据流的识别方法,最常见的是将统计的特征用于机器学习进行识别;但是这种方法的准确度没有DPI技术高,对于流的统计有时候需要等待一条数据流结束,而且当发生丢包情况时,对识别的结果有一定的影响。

发明内容

[0006] 本发明要解决的技术问题在于,针对基于端口识别技术的准确率低,基于DPI的技术对数据加密的业务识别困难,基于机器学习的识别技术存在丢包的缺陷,提出了将DPI和SVM相结合的网络流量识别系统及方法。
[0007] 本发明解决其技术问题所采用的技术方案是:首先在网络上捕获数据包,提取常见特征后,将数据流通过DPI识别,然后在DPI识别过程中再进行提取特征,最后将该特征和之前提取的常见特征整合一起作为SVM的特征输入对数据流进行分类。
[0008] 本发明采用的技术方案如下:
[0009] 一种基于DPI和SVM技术的网络流量识别系统,包括捕获模块、分析模块、DPI识别模块、SVM分类模块、训练模块、特征库、数据库;分析模块分别与捕获模块、DPI识别模块、SVM分类模块、训练模块相连;DPI识别模块、训练模块分别与SVM分类模块相连;特征库与DPI识别模块相连;数据库分别与DPI识别模块和SVM分类模块相连。
[0010] 基于上述系统的网络流量识别方法,包括以下步骤,
[0011] 步骤1、捕获模块从网络上获取数据包,并将数据包传送给分析模块;
[0012] 步骤2、分析模块对数据包进行会话重组和特征提取,并将得到的数据流发送至训练模块和DPI识别模块,将提取出的特征传送至SVM分类模块;
[0013] 步骤3、训练模块对获得的数据流进行训练,并将得到的特征发送给SVM分类模块;
[0014] 步骤4、DPI识别模块将接收到的数据流通过特征匹配进行识别,并且在特征匹配的过程中再次对数据流进行特征提取,将提取的特征发送给SVM分类模块,同时标识该数据流是否需要重新识别,如果是,则进入步骤5,否则将数据流发送至数据库,转步骤6;
[0015] 步骤5、DPI识别模块将需要重新识别的数据流发送给SVM分类模块,SVM分类模块根据其得到的特征对数据流进行分类,并将数据流发送至数据库,转步骤6;
[0016] 步骤6、数据库将得到的数据流进行结果统计。
[0017] 首先捕获模块是通过网卡实时捕获网络流量的数据包,将满足条件的数据包作为分析模块的输入;分析模块主要包括会话重组和特征提取两个子模块,分析模块通过数据包安装数据流的定义完成数据流的重组以及该数据流常见特征的提取,然后将数据流和该数据流所包含的常见特征的集合输出之DPI识别模块;DPI识别模块中包括特征提取模块,其对接收到的数据流再次进行特征提取;最后将两次提取的特征整合在一起作为SVM分类模块的特征输入,对数据流进行分类,并将识别和分类结果传输至数据库进行结构统计。其中,训练模块的作用是对数据流集进行训练进而得到分类模型,并将分类模型发送给SVM分类模块供其分类使用;特征库是为DPI识别模块提供所需使用的特征,进而实现特征匹配,达到识别的目的;数据库的作用是集合识别和分类的结果,进而统计结果。
[0018] 与现有技术相比,本发明将DPI和SVM两种技术结合在一起,在DPI识别模块中加入了提取特征模块,并将该特征和之前提取的常见特征整合在一起作为SVM分类模块的特征输入,这种方法提高了系统的整体性能,从而提高网络流量识别系统的准确度;本发明特别适用于中小型局域网,其能够将网络中流经的数据精细的呈现出来,方便网络管理员了解网络数据流的组成,提高网络管理的质量和效率。

附图说明

[0019] 图1为实现本发明的系统结构框图;
[0020] 图2为本发明的流程图。

具体实施方式

[0021] 下面结合附图所示的实施例对本发明作进一步说明。
[0022] 如附图所示,本发明提供一种基于DPI和SVM技术的网络流量识别系统,包括捕获模块、分析模块、DPI识别模块、SVM分类模块、训练模块、特征库、数据库;分析模块分别与捕获模块、DPI识别模块、SVM分类模块、训练模块相连;DPI识别模块、训练模块分别与SVM分类模块相连;特征库与DPI识别模块相连;数据库分别与DPI识别模块和SVM分类模块相连。
[0023] 基于上述系统的网络流量识别方法,包括以下步骤,
[0024] 步骤1、捕获模块从网络上获取数据包,并将数据包传送给分析模块;
[0025] 步骤2、分析模块对数据包进行会话重组和特征提取,并将得到的数据流发送至训练模块和DPI识别模块,将提取出的特征传送至SVM分类模块;
[0026] 步骤3、训练模块对获得的数据流进行训练,并将得到的特征发送给SVM分类模块;
[0027] 步骤4、DPI识别模块将接收到的数据流通过特征匹配进行识别,并且在特征匹配的过程中再次对数据流进行特征提取,将提取的特征发送给SVM分类模块,同时标识该数据流是否需要重新识别,如果是,则进入步骤5,否则将数据流发送至数据库,转步骤6;
[0028] 步骤5、DPI识别模块将需要重新识别的数据流发送给SVM分类模块,SVM分类模块根据其得到的特征对数据流进行分类,并将数据流发送至数据库,转步骤6;
[0029] 步骤6、数据库将得到的数据流进行结果统计。
[0030] 捕获模块采用旁路监听的方式,通过交换机的镜像端口将通过交换机的所有数据包复制一份交给镜像端口,镜像端口连接的监控机就可以通过分析镜像端口传输过来的数据包了解该节点的网络情况,从而做出决策,可以根据IP地址、端口号、协议等设置条件,例如当只需要研究TCP连接的时候,可以设置协议为TCP,从而丢掉所有的UDP数据包;本实施例中采用Libpcap和PF_RING结合,可以提高抓包的效率,满足在千兆带宽上不出现丢包情况,所以需要部署本发明的主机安装Libpcap和PF_RING组件。
[0031] 分析模块是对接收到的数据包进行进一步的分析处理,分析模块包括会话重[0032] 组和特征提取两个模块通过TCP/IP网络体系结构的四层由下至上进行解包,得到数据流的五元组(源地址、源端口、目的地址、目的端口、协议)。
[0033] 会话重组模块主要是进行协议分析,从网络层得到IP地址和上层协议、从传输层得到端口号组成一个五元组,从而得到一个数据流的基本信息,在网络数据处理的时候,从一次会话的第一个数据就可以得到这个信息,而且五元组也是作为该数据流的关键字,后续达到的数据包根据这个关键字,采用数据包分类算法对该到达的数据进行分类,得到该数据包属于的数据流,常见的成熟应用的数据包分类算法有线性查找、分层树查找、网格树查找等算法。数据包重组过程中,一个关键的问题是一条数据流的结束判断,即如何判断某条数据流已经结束了,本发明采用以下三中方法进行判断数据流的结束:
[0034] (a)结束标志FIN
[0035] 在TCP连接过程中,一次会话以SYN标志开始,以FIN标志结束,所以当检测到FIN标志的时候认为该会话结束。
[0036] (b)截断处理
[0037] 当同一个数据流关键字(即源IP地址+源端口+目的IP地址+目的端口+传输层协议)相同时,某一个数据包在分类的时候该如何选择具体一个数据流是一个很难明确的问题。而且FIN数据包有时候会比其他数据晚到很长时间,有可能长达1分钟,这个时候某个关键字下面的多个数据流都处于等待状态,如果一个新的数据流也是此关键字,此时若只是简单的将到达的数据分类给最后一个数据流的话并不是完全正确的。例如常见的HTTP协议1.1支持长连接(keep alive),能够支持在一次连接中提交多次请求,如果两个请求到达,按照如上简单处理的话,所有的数据包将被分到第二个数据流,第一个数据流的有效有效载荷是0。
[0038] 本实施例中采用截断处理的方法:当一次连接中有多个数据流时,以响应报文的第一个数据包作为节点,如果后续数据流的第一个响应报文到达并且根据序列号和确认号找到该报文属于的数据流,后续报文都属于该数据流,直到一个新的响应报文节点到达。在HTTP协议中,一个响应报文是有很多标志的,例如响应报文的有效有效载荷中的第一行是HTTP/1.1 200 OK。
[0039] (c)超时处理
[0040] 超时处理是最常见的一种处理方式,像UDP协议是无连接,尽最大努力传输的不可靠协议,没有所谓的FIN标志,通过以上方法很难判断。还有一种常见的情况是,一次连接建立之后,或者一次会话进行一半的时候,由于网络故障或者服务器宕机导致余下的数据没有到达,在HTTP协议中的第一个响应报文没有到达,如果不作处理的话,这个数据流永远都是等待状态,得不到处理。所以本发明也采用超时处理的半分,时间定为一分钟,如果最后一个报文到达并且在接下来的一分钟之内都没有接收到任何相关联的数据包,则认为这次会话已经完成,数据流判断为已经结束。
[0041] 特征提取是在会话重组模块完成了重组之后进行的,因为如果会话重组没有完成的话,部分特征的提取就不能有效完成。表1列出了本发明的特征提取模块提取的部分特征,本实施例采用的这些特征是通过工具weka计算由DPI技术过程中得到的特征和其他常见特征的相关性,实施例最终采用的特征集合如表1所示,也作为SVM分类模块的输入。其中,最后一个特征alpahnum(有限长度字母出现个数)是在DPI识别过程中提取出的属性,其他为常见特征。
[0042] 为了使DPI识别模块能够提取更多有益信息,本发明对传统的DPI识别技术作了进一步的完善和改进。主要有如下两个方面:
[0043] (a)字符统计功能
[0044] DPI识别就是针对数据包内容进行一次扫描,即对字符串的扫描。通过对字符串的扫描最简单、最易实现的就是对字符的统计。为了实现起来不影响匹配效率,本发明采用空间换时间的策略,统计固定长度(例如,前100个字节)数据包内容中出现的不同字母个数,区分大小写,通过建立大小为52的字符数组对每一个字母进行统计,没出现数值为0。最后能够得到出现的不同字母,以及出现最多的字母和个数等。
[0045] (b)单词统计功能
[0046] 本实施例考虑到在模式匹配过程中,使用正则表达式表示特征以及使用确定的有限状态机(DFA)作为匹配引擎,DFA中执行过程中如果没有执行到终点则匹配失败,但是可能存在其他有意义的特征字。所以统计这些特征字,也就是确定的单词需要新的功能函数。通过引用匹配算法AC算法中使用的三个函数:goto函数、fail函数和output达到这一目的,即通过加入需要统计的单词并且按照AC函数添加标记达到统计结果。
[0047] 特征库是DPI识别过程中需要的特征库, DPI识别过程中需要首先将所有的特征库下载到识别系统中,然后将这些特征组织起来使得特征匹配的效率提高。本实施例采用的特征使用正则表达式(regular expression)进行表示,每一条应用使用一条特征进行表示。
[0048] 运用本发明对某一局域网进行检测,表1、表2、表3分别为在本实施例中得到的部分特征、数据和结果。
[0049] 表1 特征列表特征(缩写)描述
src_port 源端口
dst_port 目的端口
protocol 传输层协议
up_pkts 上传包个数
dw_pkts 下载包个数
up_pl_pkts 上次有效载荷的包个数
dw_pl_pkts 下载有效载荷的包个数
meanpktl 平均包长度
duration 流生存周期
alpahnum 有限长度字母出现个数
[0050] 表2 数据测试用例 持续时间 协议 数据包个数 字节数(MB) 流个数
正常网页访问 120分钟 DNS,HTTP 58859 21.7 1776
收发Email 30分钟 SMTP,POP3,NETBIOS 15029 13.6 22
连接FTP服务器下载、上传文件 10分钟 FTP 21305 17.6 25
QQ登录、聊天、语音聊天 30分钟 QQ,NBNS,HTTP,DNS 76055 43.2 1078迅雷 15分钟 P2P,HTTP,DNS 77376 62.1 1239
PPlive 30分钟 P2P,HTTP 239704 175.5 1417
Edonkey 30分钟 P2P,HTTP,DNS 113358 29.4 2955
HTTPS网页浏览 10分钟 HTTPS,SSL,HTTP,DNS 42945 24.4 1765
[0051] 表3 结果测试用例 总数 准确识别数 未识别数
HTTP 1776 1474 302
Edonkey 2955 742 2213
Email 22 11 11
Pplive 1417 458 959
QQ 1078 197 881
迅雷 1239 885 354
HTTPS 1765 1432 333
FTP 25 22 3