一种基于dpi自学习机制的http流量精细化识别方法

文档序号:10492019阅读:320来源:国知局
一种基于dpi自学习机制的http流量精细化识别方法
【专利摘要】本发明属于网络信息处理领域,尤其涉及一种基于DPI自学习机制的HTTP流量精细化识别方法。本发明包括如下步骤:流管理:IP+包长预识别;负载精确识别。为了更好地满足高速骨干网络的在线流量快速识别,本发明方法提出了{IP+包长}预识别机制,还采用了DPI技术对请求数据报文中的Host和URI域进行多模式串精确匹配,从而能够准确地对流量进行应用级分类。与已有的、基于单纯DPI的方法相比,本方法只需对数据流的前数个数据报文就能完成判断,具有更好的实时性和更好的流量识别准确性。
【专利说明】
-种基于DPI自学习机制的HTTP流量精细化识别方法
技术领域
[0001] 本发明属于网络信息处理领域,尤其设及一种基于DPI自学习机制的HTTP流量精 细化识别方法。
【背景技术】
[0002] 网络业务流量识别对网络内容监管和网络带宽的控制有着重要意义。从流量识别 概念提出至今,国内外众多研究学者提出各种识别技术方法。从最初的基于端口识别,到后 来基于主机行为,基于数据报文负载W及引入机器学习知识。主要从运四个角度去出发设 计和提出各种识别方法。
[0003] Moore和化pagiannak通过对IANA列表中的注册熟知端口号采用基于端口的识别, 运种方法算法实现简单但准确率较低,识别率低于70%。刘元励等人根据端口和关键字识 别联合机制,提出基于应用协议识别的入侵检测技术。Ts化Oi提出了一种基于"内容感知" 的应用层流量测试分析,识别率能够达到90%,但其中采用的ARCL是基于精确串匹配技术, 运种识别方法通过特征库去匹配准确性高,但需要有很好的模式匹配算法且还需要更新特 征库。2007年,ZhuLi利用支持向量机技术(SuppodVectorMachine, SVM)选择9种流特征作 为特征值然后对网络流量进行分类,准确率达到95 % W上。Erman等人采用K-means方法W 平均包长,流持续时间,和平均包长间隔作为特征对流量进行识别,准确率可W达到95%。 但是该方法大量的线下训练样本进行标记,且算法复杂,不太适用于线上实时分析的应用 场景。
[0004] 综上所述,目前关于流量识别的研究,主要是从协议大类的角度识别出发,且大多 是从仿真实验角度出发。而对于真实骨干网络环境的线上流量识别技术,尤其是对协议的 精细化识别还不多。
[0005] 本发明主要是基于DPI技术对目前80端口被大量复用情况下的HTTP流量的精细化 识别。

【发明内容】

[0006] 本发明的目的在于提供一种满足骨干高速网络中线上流量识别的实时性和准确 性的基于DPI自学习机制的HTTP流量精细化识别方法。
[0007] 本发明的目的是运样实现的:
[000引本发明包括如下步骤:
[0009] (1)流管理:
[0010] (2) IP+包长预识别;
[0011] (3)负载精确识别;
[0012] 所述的流管理包括:
[0013] 当底层网卡交付上来网络数据包之后,需要对其进行IP分片重组和TCP流重组,才 能将其交付到上层应用分析插件中;在流重组阶段,通过设计一个双重哈希表来解决四元 组哈希出现的哈希碰撞问题;并采用头节点插入和尾节点删除的办法来维护哈希表。
[0014] 所述的IP+包长预识别包括,
[0015] 对于完成TCP流重组之后交付上来的应用层数据和流信息,在根据HTTP请求方法 判断出数据流方向之后,提取服务端的IP和数据包长信息,与IP+包长缓冲区里面的IP进行 捜索对比,检测是否能够匹配上;通过包长特征进行确认;根据前期分析发现关于HTTP承载 的业务,加入包长特征去确认;如果能够匹配成功,则直接标记此流;否则,进行下一步的 DPI精确识别。
[0016] 所述的负载精确识别包括:
[0017]提取HTTP请求头部中册ST域、URI域的字段值W及请求方法,与特征库里面的模式 串集合进行多模式串匹配;如果匹配成功,则给此流进行标记,并实时更新IP+包长缓冲区 中信息;如果匹配失败,则标记此流为无法识别。
[0018] 本发明的有益效果在于:
[0019] 为了更好地满足高速骨干网络的在线流量快速识别,本发明方法提出了 UP+包 长}预识别机制,还采用了DPI技术对请求数据报文中的化St和URI域进行多模式串精确匹 配,从而能够准确地对流量进行应用级分类。与已有的、基于单纯DPI的方法相比,本方法只 需对数据流的前数个数据报文就能完成判断,具有更好的实时性和更好的流量识别准确 性。
【附图说明】
[0020] 图1是本发明的流管理哈希表结构;
[0021 ]图2是本发明的系统工作流程图;
[0022] 图3是本发明的{负载特征}识别模块流程图;
[0023] 图4是本发明特征库设计图;
[0024] 图5是本发明几种80端口应用业务识别率图;
[0025] 图6是本发明线上单包识别时间消耗图;
[0026] 图7是本发明系统吞吐情况图。
【具体实施方式】
[0027] 下面结合附图对本发明做进一步描述。
[0028] 本发明提供一种用于对HTTP承载业务的精细化识别方法。本方法主要是针对目前 协议识别精细化识别角度出发,针对目前网络流量中80端口被复用情况,给流量识别和网 络监管带来巨大挑战。本方法提出了一种基于DPI自学习机制的HTTP流量精细化识别方法。 本方法主要包括两个特征库,分别是UP+包长}特征库和{:协议负载特征库}。其中UP+包 长}特征库是对网络流量的预判断,如果能够在此特征库进行匹配,则直接输出匹配结果。 否则进入{:协议负载特征库},匹配成功输出匹配结果;否则标记为无法识别。并实时的对 {IP+包长}和{协议负载}特征库进行更新。
[0029] 本发明针对现有网络流量识别方法主要从网络协议大类识别出发、且大多在实验 仿真情况下提出各种识别方法,W及没有针对HTTP大类的精细化具体应用业务识别的不 足,提出了一种基于DPI自学习机制的HTTP流量精细化识别方法。本方法旨在解决对HTTP应 用业务的识别达到应用级分类,且满足骨干高速网络中线上流量识别的实时性和准确性。
[0030] 本发明的目的是提供一种基于DPI自学习机制的HTTP流量精细化识别方法。主要 包括W下几个的步骤;
[0031] A.流管理。
[0032] B. {IP+包长}预识别。
[0033] 0.{负载特征}识别。
[0034] 本发明的一种基于DPI自学习机制的HTTP流量精细化识别方法具体实施方法为:
[0035] (1)首先对网络中的数据包进行重组,其中包括IP分片重组和TCP流重组。运里用 至IjTCP^P协议找中的化Sh算法和流重组数据结构(步骤A)。
[0036] (2)对完成流重组的数据报文先进行UP+包长}识别(步骤B)。
[0037] (3)如果UP+包长}识别成功,直接输出流量识别结果,否则进行数据报文应用层 {负载特征}识别(步骤C)。
[0038] 所述步骤A的方法由下面几步完成:
[0039] Al.本方法采用双重链式存储解决TCP流重组中的冲突。针对每一条TCP流对其四 元组进行哈希hash(tuple4)之后,如果此节点未与已有数据流节点冲突,则直接进行数据 报文连接插入,且按照时间戳顺序进行链式插入;如果发现哈希冲突,即此节点已有别的数 据流节点占用,则进行头节点插入新的数据流节点信息。
[0040] A2.对于数据流节点的删除操作,我们根据哈希表节点是否溢出情况,进行尾节点 删除。
[0041 ] A3.采用异或移位的哈希算法具体如下。
[0042]
[0043] 其中 31口1(义)表示31口(义)的前1613;[1:,31口2(义)表示31口(义)的后1613;[1:,(11口1(义)表示 dip(x)的前16bit,dip2(x)表示dip(x)的后16bit,h,hl为16bit无符号整数,N表示哈希表 大小。出现的符号含义如下。
[0044] <<:左移运算
[0045] 〉>:右移运算
[0046] e:异或运算
[0047] % :取余运算
[004引所属步骤B的方法包括如下步骤:
[0049] BI.针对完成重组之后的数据报文,考虑到TCP通信交互过程中客户端和服务端方 向的实时交互性,本方法提取HTTP交互过程中客户端向服务端的第一个请求数据报文的服 务端IP,与UP+包长}特征库中的IP进行匹配。匹配成功则跳入步骤B2,否则进入步骤C。
[0050] B2.在IP匹配成功之后,本方法继续对其数据报文的长度进行确认。运是为了防止 一个服务端IP同时承载多个业务而出现误识别。引入包长确认机制是为了提高识别的准确 性。如果包长确认成功,则直接输出匹配结果,否则进入步骤C。
[0051] 步骤C的方法主要由W下几步完成:
[0052] Cl.提取负载部分HTTP请求头部中的化St域字符串,和URI字符串,构成文本串集 合 |L| ,L={ll,l2. . .In}。
[0053] C2.对提取的文本串集合与模式串集合|T|进行匹配,采用AC多模式匹配算法。如 果匹配成功,贝峭巧ljC3,并更新UP+包长}特征库。如果匹配失败,则标记为无法识别,并跳 至化3。
[0化4] C3.输出匹配结果。
[0055] 本发明的目的是提供一种基于DPI自学习机制的HTTP流量精细化识别方法。主要 包括W下=个步骤;
[0056] ①流管理。
[0057] ②{IP+包长}预识别。
[005引③{负载特征}识别。
[0059] 本发明的一种基于DPI自学习机制的HTTP流量精细化识别方法,其工作流程如图 2,具体实施方法为:
[0060] (1)对网络中的数据包先进行包重组,其中包括IP分片重组和TCP流重组。运里用 至IjTCP^P协议找中流重组采用的化Sh算法和流重组数据结构(步骤110)。
[0061] (2)对完成流重组的数据报文先进行UP+包长}识别(步骤120)。
[0062] (3)如果UP+包长}识别成功,直接输出识别结果,否则进行数据报文应用层{负载 特征}识别(步骤130)。
[0063] 1.步骤 110。
[0064] 本发明的目的还可W通过W下措施来达到。当从网卡上获取数据报文之后,先经 过步骤110,其详细实施过程如下。
[0065] All.首先判断此数据报文是否是IP分片数据报文,若是则进入步骤A12,否则直接 进入步骤Al 3。
[0066] A12.进行IP分片重组。具体实施步骤由W下9步。
[0067] Stepl.获得IP数据报。
[0068] Step2.根据IP数据报头部的源IP、目的IP和标识判断是否是新的数据报数据到 达,如果是,跳转到Step3;否则,跳转到Step6。
[0069] Step3.当前数据报为一个新的数据报,如果IP头部中标志字段的MF = O,跳转到 Step4,否则跳转到Step5。
[0070] Step4.若片偏移为0,则当前IP数据报是一个完整的数据报,IP分片重组完毕,结 束;若片偏移大于0,当前数据包为最后一个分片,缓存当前IP数据报,跳转到Stepl。
[0071] steps .若片偏移为0,当前IP数据报是一个分片包,并且是数据报中的第一个分 片,缓存当前分片,跳转到Stepl;若片偏移大于O,当前IP数据报是一个分片,并且不是数据 报中的第一个分片,也不是最后一个分片,缓存当前分片,跳转到Stepl。
[0072] steps.当前数据报不是一个新的数据报,如果IP头部中标志字段的MF = O,跳转到 Step7,否则跳转到StepS。
[0073] Step7 .若片偏移为0,说明是一个完整的数据包,矛盾,跳转到Stepl;若片偏移大 于0,当前数据包为最后一个分片,缓存当前分片,跳转到Step9。
[0074] steps.若片偏移为0,当前IP数据报是数据报中的第一个分片,缓存当前分片,跳 转到Step9;若片偏移大于0,则当前IP数据报是一个分片,并且不是数据报中的第一个分 片,也不是最后一个分片,缓存当前分片,跳转到Step9。
[0075] Step9.如果全部分片都已经缓存,执行分片重组,结束;否则跳转到Stepl。
[0076] A13.TCP流重组。具体实施步骤由如下9步。
[0077] Stepl.获得荷载TCP报文段的完整IP数据报。
[0078] Step2.解析TCP报文段首部,如果SYN字段为1,跳转至Step3;如果FIN字段为1,跳 转至Step4;如果RST字段为1,跳转至steps;如果荷载数据长度等于0,跳转至steps;否则, 跳转至Step7。
[0079] Step3.当前TCP报文段要建立TCP连接,根据TCP连接的四元组判断是否存在当前 连接的流信息,如果不存在,填加新的流信息,包括四元组、握手时间、已重组的最后一个字 节的序号和期望序号等,跳转至Stepl;否则,更新流信息中的握手时间,跳转至Stepl。
[0080] Step4.当前TCP报文段要关闭TCP连接,根据TCP连接的四元组判断是否存在当前 连接的流信息,如果存在,将未提交给应用层的数据提交给应用层,然后删除当前连接的流 信息,结束;如果不存在,发生错误,结束。
[0081 ] steps.当前TCP报文段要重置TCP连接,根据TCP连接的四元组判断是否存在当前 连接的流信息,如果存在,删除当前连接的流信息,结束;如果不存在,发生错误,结束。
[0082] steps.当前TCP报文段为单纯的确认TCP报文段,根据TCP连接的四元组判断是否 存在当前连接的流信息,如果存在,更新流信息中期望序号,跳转至Stepl;如果不存在,发 生错误,结束。
[0083] Step7.当前TCP报文段为荷载应用层数据的TCP报文段,根据TCP连接的四元组判 断是否存在当前连接的流信息,如果存在,跳转到steps;如果不存在,发生错误,结束。
[0084] steps.如果当前包的序号小于对应流信息的期望序号,则运个是一个重传包,跳 转到Stepl;如果当前包的序号大于对应流信息的期望序号,此数据包不能被重组,则缓存 数据包,跳转到St巧1;如果当前包的序号等于对应流信息的期望序号,跳转到St巧9。
[0085] Step9.那么就用当前TCP报文段重组TCP流,如果当前流存在已被缓存的TCP报文 段,那么就把所有能够被重组的TCP报文段重组,跳转到St巧1。
[0086] 对于TCP的流重组为了解决碰撞我们采用的数据结构为双重链式存储。针对每一 条TCP流我们对其四元组进行哈希hash(tuple4)之后,如果此节点尚无其他数据流节点,贝U 直接进行数据报文连接插入,且按照时间戳顺序进行链式插入;如果发现哈西冲突,即此节 点已有别的数据流节点占用,则进行头节点插入新的数据流节点信息。如图1。对于数据流 节点的删除操作,我们根据哈希表节点是否溢出情况,进行尾节点删除。具体采用异或移位 的哈希算法。
[0087]
[0088] 其中 sipi(x)表示 31口(义)的前1613;[1:,31口2(义)表示31口(义)的后1613;[1:,(11口1(义)表示 dip(x)的前16bit,dip2(x)表示dip(x)的后16bit,h,hl为16bit无符号整数,N表示哈希表 大小。<<:左移运算;〉>:右移运算;? :异或运算;%:取余运算。
[0089] 2.步骤 120。
[0090] 在完成TCP流重组时,若发现TCP数据报文的有效载荷大于0,则提取相应的TCP载 荷数据和TCP流信息交付到上层应用层插件分析,经由步骤120实施。具体步骤如下。
[0091] B21.程序初始化时,加载服务端IP缓存文件IP_cache. txt。
[0092] B22.对于完成重组之后交付上来的数据报文,考虑到TCP通信交互过程中客户端 和服务端方向的实时交互性,我们提取HTTP交互过程中客户端向服务端的第一个请求数据 报文的服务端IP,检测其是否与服务端IP缓存文件中的IP库匹配。若匹配成功则跳入步骤 B23,否则进入步骤130。
[0093] B23.在IP匹配成功之后,我们继续对其数据报文的长度进行确认。提取数据报文 有效载荷长度,并与对应的{IP+包长}特征库中的包长信息进行比对。如果包长比对确认成 功,则进入步骤B4,否则进入步骤130。
[0094] B4.输出匹配成功结果。
[0095] 3.步骤 130。
[0096] C31.程序启动初始化时,加载负载特征库文件化aLib.cfg。
[0097] C32.提取数据报文负载部分请求头部中的化St域字符串,和URI字符串,构成文本 串集合 |L|,L={h,b...ln}。
[009引C33 .对提取的文本串集合I L I与模式串集合I T I进行匹配,采用AC多模式匹配算 法,具体特征库设计如图4。如果匹配成功,贝峭巧ljC34。如果匹配失败,则标记为无法识别, 并跳到C35。
[0099] C34.标记此数据报文所属的具体应用类型,标记此数据流所属的具体应用类型。 并更新UP+包长}特征库信息。输出匹配成功结果,形成日志文件。匹配结束。
[0100] C35.标记此数据报文和此数据流为无法识别,输出匹配失败结果,形成日志文件, 匹配结束。
[0101] 具体实施流程图如图3。
【主权项】
1. 一种基于DPI自学习机制的HTTP流量精细化识别方法,其特征在于,包括如下步骤: (1) 流管理: (2) IP+包长预识别; (3) 负载精确识别; 所述的流管理包括: 当底层网卡交付上来网络数据包之后,需要对其进行IP分片重组和TCP流重组,才能将 其交付到上层应用分析插件中;在流重组阶段,通过设计一个双重哈希表来解决四元组哈 希出现的哈希碰撞问题;并采用头节点插入和尾节点删除的办法来维护哈希表。2. 根据权利要求1所述的一种基于DPI自学习机制的HTTP流量精细化识别方法,其特征 在于,所述的IP+包长预识别包括, 对于完成TCP流重组之后交付上来的应用层数据和流信息,在根据HTTP请求方法判断 出数据流方向之后,提取服务端的IP和数据包长信息,与IP+包长缓冲区里面的IP进行搜索 对比,检测是否能够匹配上;通过包长特征进行确认;根据前期分析发现关于HTTP承载的业 务,加入包长特征去确认;如果能够匹配成功,则直接标记此流;否则,进行下一步的DPI精 确识别。3. 根据权利要求1所述的一种基于DPI自学习机制的HTTP流量精细化识别方法,其特征 在于,所述的负载精确识别包括: 提取HTTP请求头部中HOST域、URI域的字段值以及请求方法,与特征库里面的模式串集 合进行多模式串匹配;如果匹配成功,则给此流进行标记,并实时更新IP+包长缓冲区中信 息;如果匹配失败,则标记此流为无法识别。
【文档编号】H04L12/26GK105847078SQ201610152742
【公开日】2016年8月10日
【申请日】2016年3月17日
【发明人】王巍, 杨武, 苘大鹏, 玄世昌, 刘坚
【申请人】哈尔滨工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1