互联网流量分级分类方法 技术领域 :
本发明涉及互联网流量分类技术领域, 具体讲是一种互联网流量分级分类方法。 背景技术 :
互联网流量的精确分类与识别是网络流量工程、 网络管理与安全监测、 网络设计 与规划等网络行为的前提和基础。 高效、 准确、 实时地识别出互联网流量对于分析网络发展 趋势、 提供服务质量 (QoS) 保证、 实现动态访问控制和路由决策、 进行合法有效的网络管理 和控制、 检测网络异常行为与提高网络安全性等都有很重要的现实意义, 同时为互联网的 进一步发展提供自适应能力。
目前, 互联网流量分类方法主要有以下几种 :
基于端口的流量识别方法, 这种分类方法操作简单、 效率高、 能实现早期检测, 但 不能识别大量出现的动态端口和伪装端口的应用。特别是, 新一代的对等网络 (P2P) 应用 综合了很多防火墙旁路策略, 如动态端口分配和中继节点来避免被检测或过滤, 端口匹配 法识别能力有限, 只能产生不精确的应用分类结果。
深度数据包检测法 (DPI), 易于理解、 维护简单、 分类精度高、 具有细粒度分类应用 能力, 但识别开销大、 DPI 特征库更新工作量大、 对应用层载荷加密的流量识别能力有限、 对 新应用适应性差、 在各监测点的灵活部署能力差。
流量特征分析法, 不依赖于端口与应用层载荷、 具有发现新流量特征的能力, 但需 要大量离线分析, 甚至要涉及多个流, 占用较多的内存, 大部分方法的识别精度相对不高, 适用于粗粒度流量识别。
基于机器学习的流统计特性识别法, 可扩展性好、 能识别加密数据流、 无监督或半 监督学习还能智能地发现未知应用流量, 采用的分类器可扩展性和灵活性好、 且无需经常 更新, 但流量类别细分能力不足、 标签流获取困难。
由于近年来网络技术的发展, 网络应用越来越丰富, 网络内容种类层出不穷, 特别 是对等网络技术的发展, 使得网络用户规模、 应用类型和流量均呈爆发式增长。同时, 互联 网流量日趋复杂、 动态、 多变 ; 而且越来越多的 P2P 应用以及恶意网络行为采用动态端口、 伪装端口、 应用层加密、 分组填充等多种规避手段来逃避法律责任和躲避监测。目前, 仅依 赖于单个分类方法几乎不可能达到互联网流量分类的高效、 准确、 智能、 实时地识别互联网 流量, 并能覆盖所有网络应用, 具有较好的可扩展性, 即识别出未知流量和加密流量, 并具 有好的灵活性以适用于各个网络监测点的要求。 发明内容 :
本发明要解决的技术问题是, 克服现有的技术缺陷, 提供一种能够智能、 精确、 实 时、 有效地识别网络流量, 具有好的完整性和可扩展性, 能够满足不同应用目标和分类粒度 的互联网流量分类需求的互联网流量分级分类方法。
本发明的技术解决方案是, 提供一种互联网流量分级分类方法, 它包括以下步骤: A、 粗粒度分类 : 采用基于机器学习的流统计特性法快速分类网络流量, 把网络流 量分成不同特征的应用类别类, 粗粒度分类区分出的流量若需要使用, 就直接输出, 若需要 进一步分类, 则进入下一步。
B、 细粒度分类 : 在粗粒度分类区分出的应用类别类中进行再一次分类, 步骤如 下:
1、 采用端口匹配识别法进行分类, 输出已分类的流量,
2、 将上步完成后剩下的未分类流量, 根据 DPI 流量特征标签库执行 DPI 分析识别 法, 分离出各应用流量, 并输出,
3、 对于上步完成后剩下的加密和未知流量, 采用半监督机器学习算法分离并输出 加密流量, 余下的标识为未知的网络应用流量,
4、 对标识为未知的网络应用流量, 按分组长度执行基于最长公共子序列的应用层 特征标签自动提取,
5、 将上步中自动提取的新特征标签经确认补充到 DPI 特征标签库, 输出已确认应 用类型并添加标记的该未知应用流量。实现 DPI 特征的自动、 智能更新与维护。
所述步骤 4 中, 按分组长度执行基于最长公共子序列的应用层特征标签自动提取 的提取方法步骤如下 :
(1) 目标应用流量按五元组聚集成流, 并置入流池, 所述五元分别为源地址、 目标 地址、 源端口、 目标端口、 传输层协议 ;
(2) 对流池中的目标应用流量根据 { 流持续时间, 流的总字节数, 分组到达时间间 隔最大值, 分组净荷长度最小值 } 所构成的向量采用 k-means 聚类网络应用流, 去除噪声 流;
(3) 对同一网络应用流的平均分组长度用 X-Means 算法聚类, 然后分别在聚类的 样本流中各自提取应用层特征 ;
(4) 确定每流有效检测分组数 Npacket 及分组净荷要检查的字节数 Nbyte, 然后截取 应用流中的相应净荷信息组装成字符串, 在预处理得到的 k 个字符串中求取最长公共子序 列;
(5) 执行基于最长公共子序列的应用层特征提取算法得到应用层特征标签。
所述步骤 (5) 中基于最长公共子序列的应用层特征提取算法包括以下步骤 :
a、 在目标应用的流池中任取两个流, 根据分组长度分别在净荷长度相近的分组中 提取最长公共子序列 S_L 和 S_S 作为候选特征, 记为 str1 ;
b、 在流池中任取一个新流, 求新流与 str1 的最长公共子序列, 记为新的候选特征 str2 ;
c、 重复 b 步, 直到前后两次得到的候选特征 str1 和 str2 相同或者流池中的流已 被取完为止 ;
d、 把当前的候选特征 str2 作为最终的应用层特征输出 ;
e、 网络应用特征唯一化 : 剔除与其它应用协议相同的特征。
本发明从满足应用需求、 提高分类性能、 以及与当前网络流量识别与监管产品的 融合角度出发, 提出了基于机器学习和深度数据包检测 / 端口 (DPI/Port) 的互联网流量分
级智能分类方法。 其中, 粗粒度分类仅通过分析流的前几个分组的统计特性, 采用快速有效 的基于机器学习的流统计特性法, 实现精确实时的网络流量粗粒度分类 ; 而细粒度分类是 在各自的应用大类内采用 DPI 特征标签自动更新的 DPI 分析识别法, 辅以半监督学习算法 实现精细粒度的应用流量分类。具有以下优点 :
第一、 网络流量分类的实际需求和最终目标是实现在高速链路上高容量流量的实 时、 准确识别与处理, 本发明采用分级分类系统先进行一次粗粒度分类, 再在各自的应用类 别中进行细粒度分类, 能够充分减少分类复杂度, 主要体现在以下几点 :
(1) 基于流统计特性的机器学习分类适用于快速精确的粗粒度分类, 能达到高速 链路上路由设备的粗粒度分类要求。
(2) 通常根据网络流量分类需求, 对等网络业务与常规业务是在不同的粗粒度类 别域内, 常规流量中去除了伪装端口的对等网络流, 可通过简单的端口映射来识别, 有利于 高容量流量和有限计算资源的骨干网流量识别。
(3) 分级分类系统在复杂的 DPI 识别之前, 已由流量特征识别模块执行粗粒度的 业务分类, 并由端口映射模块实现已知固定端口业务的识别, 通过端口映射法可分离不少 网络应用流量, 这样, 未分类的业务流量及业务种类已大大减少, 使得计算复杂度相对较大 的 DPI 技术所需要处理的应用流量锐减。同时, 各应用大类把 DPI 特征库分割成子集进行 匹配, DPI 分类只需在本类内进行, 从而减少了深层数据包匹配与检测的工作量, 而且提供 了并行处理的可能。
(4) 以流为单位, 并且可以采用流的部分分组信息进行处理, 减少了网络流量分类 处理的工作量。
因此本发明互联网流量分级分类方法能够充分减少分类复杂度, 为高速处理提供 可能。
第二、 分类精度高。 当需要粗粒度网络流量分类时, 基于机器学习的流统计特性法 能达到较高的分类和识别精度, 即使仅利用流的部分信息 ; 当需要细粒度分类网络流量时, 在粗粒度分类的基础上主要采用精确度很高的改进 DPI 分类识别法以及 DPI 自动特征提取 技术, 能实现高精度的网络应用分类, 目前的网络监测设备也能达到 98%的 DPI 识别精度, 在 DPI 自动特征提取和特征库自动更新与维护的支持下, 可维持、 甚至超越现有的识别能 力。
第三、 分类完整性和可扩展性, 本发明所述分类方法能够检测各种包含复杂应用 的网络流量, 检测出新出现的应用和升级应用, 以及加密应用流量。通过流统计特性和 DPI 分类识别方法过滤出未知 / 加密应用, 再通过半监督学习方法识别出未知流量和加密流 量, 分类具有完整性和可扩展性。
总之, 这种互联网流量分级分类方法能够智能、 精确、 实时、 有效地识别网络流量, 具有好的完整性和可扩展性, 能够满足不同应用目标和分类粒度的互联网流量分类的需 求。 附图说明 :
附图 1 是本发明互联网流量分级分类方法的流程图 ;
附图 2 是本发明互联网流量分级分类方法中基于机器学习的流统计特性法的流程图 ;
附图 3 为基于最长公共子序列的应用层特征提取方法流程图 ; 附图 4 为 DPI 特征库识别及更新示意图。具体实施方式 :
下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图 1 所示, 本发明提供一种互联网流量分级分类方法, 它包括以下步骤 :
A、 粗粒度分类 : 采用基于机器学习的流统计特性法快速分类网络流量, 把网络流 量分成不同特征的应用类别类, 粗粒度分类区分出的流量若需要使用, 就直接输出, 若需要 进一步分类, 则进入下一步 ;
第一级是粗粒度分类, 采用基于机器学习的流统计特性法分类网络流量。由于协 议和应用的载荷特征和使用的协议端口可以更改, 但却很难更改协议和业务流量的特征, 根据流量的行为特征和流的统计特征不仅可以识别已知的网络业务, 而且可以识别未知 / 加密的同类的网络业务。 因此, 流量特征分析法比较适合于业务的粗粒度分类, 能快速地把 网络流量分为不同特征的几大应用类别。由于粗粒度分类较易获取精确的应用大类标签 流, 而且决策树算法具有很好的综合分类性能, 所以采用分类开销较小决策树算法如 C4.5 或 REPTree ; 当粗粒度分类的大类中存在未知的粗粒度应用类型, 或者标签流不易获取时, 则采用基于 K-Means 的半监督学习方法。 粗粒度分类过程如图 2 所示 : 系统抓包获取网络业务分组, 按五元组 ( 即源地址、 目的地址、 源端口、 目的端口和传输层协议 ) 分流, 提取相应的分组头部信息, 计算流统计 特征值并置入流统计特性数据库。按分类性能要求抽样选取一定的样本数, 形成训练测试 集。 为了去除特征属性的冗余和相关, 先执行特征选择, 然后在所得到的最优特征子集上选 用合适的机器学习 (Machine Learning, ML) 算法进行训练, 最后输出 ML 分类模型。在分类 阶段, 同样抓取网络流量并分流, 根据选定的最优特征子集统计相应的流特征值, 由 ML 分 类模型对测试集或该网络流量统计数据进行分类粗粒度分类结果可直接输出用于流量监 测和控制等网络运行和管理 ; 若需要进一步分离各个应用流量, 如用于基于应用的区分服 务和计费, 以及网络应用流量建模与容量规划等, 则把粗粒度分类结果输入到第二级分类 模块, 即采用深度数据包检测 / 端口 (DPI/Port) 并辅以机器学习的方法进行细粒度分类。
由于上述基于机器学习的流统计特性法为现有技术, 故不详述。
B、 细粒度分类 : 在粗粒度分类区分出的应用类别类中进行再一次分类, 步骤如 下:
1、 采用端口匹配识别法进行分类, 输出已分类的流量,
2、 将上步完成后剩下的未分类流量, 根据 DPI 流量特征标签库执行 DPI 分析识别 法, 分离出各应用流量, 并输出, DPI 分析识别法为已知的分类方法。
3、 对于上步完成后剩下的加密和未知流量, 采用半监督机器学习算法分离并输出 加密流量, 余下的标识为未知的网络应用流量,
4、 对标识为未知的网络应用流量, 按分组长度执行基于最长公共子序列 (LCSS, Longest Common SubSequence) 的应用层特征标签自动提取, 如图 3 所示, 步骤如下 :
(1) 目标应用流量按五元组聚集成流, 并置入流池, 所述五元分别为源地址、 目标
地址、 源端口、 目标端口、 传输层协议 ;
(2) 对流池中的目标应用流量根据 { 流持续时间, 流的总字节数, 分组到达时间间 隔最大值, 分组净荷长度最小值 } 所构成的向量采用 k-means 聚类网络应用流, 去除噪声 流;
(3) 对同一网络应用流的平均分组长度用 X-Means 算法聚类, 然后分别在聚类的 样本流中各自提取应用层特征 ; 由于不同分组长度的同一网络应用流量的流量特征和用途 ( 如信令流量、 下载流量 ) 不同, 其净荷特征也存在差异, 通常用于连接握手的前几个分组, 如登录状态, 所传输的数据与真正的下载数据相比要少得多, 小的握手分组与大的下载分 组不太可能产生公共的特征标签。所以, 对同一网络应用流的平均分组长度用 X-Means 算 法聚类, 然后分别在聚类的样本流中各自提取应用层特征 ;
(4) 确定每流有效检测分组数 Npacket 及分组净荷要检查的字节数 Nbyte, 然后截取 应用流中的相应净荷信息组装成字符串, 在预处理得到的 k 个字符串中求取最长公共子序 列; 网络应用流特征提取的预处理主要是根据应用层特征字符串通常出现在流的起始几个 分组, 并且主要分布在分组的前几个字节的特点, 为了减少计算复杂度、 实现快速特征提取 和提高特征匹配速度, 通过协议分析研究确定每流有效检测分组数 Npacket 及分组净荷要检 查的字节数 Nbyte, 然后截取应用流中的相应净荷信息组装成字符串, 在预处理得到的 k 个字 符串中求取最长公共子序列, 而不是对流的每个分组进行操作或者整流的净荷字符串进行 操作。这样, 不仅降低了网络应用特征提取的复杂度, 还可以在 DPI 网络流量识别中减少模 式匹配工作量。
(5) 执行基于最长公共子序列的应用层特征提取算法得到应用层特征标签, 包括 以下步骤 :
a、 在目标应用的流池中任取两个流, 根据分组长度分别在净荷长度相近的分组中 提取最长公共子序列 S_L 和 S_S 作为候选特征, 记为 str1 ;
b、 在流池中任取一个新流, 求新流与 str1 的最长公共子序列, 记为新的候选特征 str2 ;
c、 重复 b 步, 直到前后两次得到的候选特征 str1 和 str2 相同或者流池中的流已 被取完为止 ;
d、 把当前的候选特征 str2 作为最终的应用层特征输出 ;
e、 网络应用特征唯一化 : 剔除与其它应用协议相同的特征。
5、 将上步中自动提取的新特征标签经确认补充到 DPI 特征标签库, 输出已确认应 用类型并添加标记的该未知应用流量 ( 如图 4)。
对于高速网络, 由于对分组处理速度有较高的要求, 可直接以 “未知流量” 标记输 出该未知流, 并启动自动特征提取, 更新 DPI 特征库, 以有效识别该网络应用的后续流量。 DPI 特征库可用于流量识别时的 DPI 方法, 只要流量特征匹配到该应用 DPI 特征集中的其中 之一即可判断为该应用。