网络流存储方法

文档序号:7980978阅读:198来源:国知局
网络流存储方法
【专利摘要】本发明提供了一种网络流存储方法,包括步骤:S1.初始化Client表和Server表;S2.查找捕获到的新进数据包在流表中对应的网络流;S3.更新Client表和Sever表。本发明的方法通过快速地将属于同一个节点的网络流聚合在一起,能够帮助流量分类系统深度挖掘网络流之间的关系,应对新型应用层协议带来的挑战,可以为高速网络中高性能流量分类系统、内容监控系统的设计和实现提供技术支持。
【专利说明】网络流存储方法
【技术领域】
[0001]本发明属于网络技术中流量分类【技术领域】,尤其涉及一种新的网络流存储方法。【背景技术】
[0002]由于网络技术和网络带宽的发展迅速,网络中的数据流量也成倍增加,在高速骨干网络上,数据流量已经达到每秒钟Gbit、甚至IOGbit以上。不断增大的网络流量对流量分类提出了新的挑战:传统的基于数据包的流量分类系统的效率已难以满足高速骨干网监测的需要。在高速宽带网络环境下,网络数据高速无穷到达,且不间断,呈现海量数据特点,并且本地无法进行存储。因此,依靠数据包捕获-数据包还原-模式匹配的传统的流量分类系统效率无法满足需要。此外,随着网络环境的日益复杂,越来越多的应用层协议采用加密协议加密数据包载荷。在这种情况下,寻找数据包载荷关键的难度越来越大,最终导致基于数据包的流量分类技术严重失效。
[0003]不同于基于数据包的流量分类技术,基于网络流的流量分类技术着眼于网络流。传统上把网络流定义为具有相同五元组(〈源地址,目的地址,源端口,目的端口,协议 >)的数据包的集合。作为一种数据交换方式,网络流从一个微观层面上反映了主机行为和主机之间相互通信的细节。
[0004]基于网络流的流量分类技术的假设前提是不同协议会有其特有的网络流统计特性,并以此来分类不同协议产生的流量。由于该技术引入了大量的统计信息作为基本参考因素,所以它不可避免地将机器学习的方法结合到了识别中,期望取得更好的流量分类性能。机器学习方法于2004年被引入到流量分类技术中,根据流量具有的统计特性对流量进行分类。例如,网络流持续时间的分布特性,流空闲时间,包间隔时间,包长度等信息,对于流量分类来说,是特有的信息。它们都可以作为判别式的特征被机器学习模型利用进行流量分类。
[0005]为了提取网络流统计特征,需要建立一个提取和存储网络流的数据结构,并按照网络流的规范,从背景流量中提取并存储网络流信息。目前,几乎所有的基于网络流的流量分类系统都使用流表来提取和存储网络流。流表采用了一种Hash表加链表的结构在确定背景流量中每一个数据包所属的网络流,并对其进行存储。当一个数据包被捕获后,流量分类系统会利用该数据包的五元组计算一个Hash值,并利用该Hash值寻找Hash表中是否存在该数据包对应网络流的信息。如果不存在,则以该数据包为所属网络流的第一个到达数据包,为其建立一条网络流记录。利用Hash表存储网络流,冲突不可避免。因此,当冲突发生时,系统会为冲突的网络流建立一个链表挂载在Hash表的对应项。利用这种流表,基于网络流的流量分类系统能够准确地对应每个数据包所属的网络流,并且高效地提取单个网络流的统计特征。
[0006]随着网络技术的不断发展,新型应用层协议层出不穷。为了提高网络利用率,并且对抗流量分类系统,许多新兴应用层协议会同时启用多个网络流完成一个通信任务。其中,每个网络流仅负责任务的一部分。P2P协议是该新兴应用层协议的一个典型例子。为了更好、更快地实现文件共享,许多P2P协议会将一个文件分割成多个块,并且利用多个网络流同时分享该文件;另一个典型的例子是交互式协议,该协议在运行过程中需要和服务器进行交互。为了提高效率,多数交互式协议都会将不同的交互内容存放至不同的服务器,而客户端则会同时利用多个网络流实现信息的快速交互。这种新型的应用层协议对基于网络流的流量分类系统提出了新的挑战:首先,该协议同时使用多个网络流完成同一个通信任务,使得从单一网络流中提取并利用的知识减少,影响了分类系统的识别性能;其次,目前的基于网络流的流量分类系统着眼于单一网络流,很难将该协议所产生的所有网络流进行分类。
[0007]为了解决上述问题,应对新型应用层协议带来的挑战,越来越多的基于网络流的流量分类技术开始利用多网络流特征。这种新型的网络流特征试图从多网络流角度出发,寻找多个网络流之间的关系特征,以实现P2P、交互式协议流量的准确、完备的分类。然而,目前的流表结构却难以提取多网络流关系特征:流表使用一种扁平的结构存储网络流,网络流均匀地分布在Hash表中。具有相同Hash值的网络流可能并不存在任何关系,而属于同一协议的网络流的Hash值可能不同,因此我们很难判断网络流之间的关系。
[0008]从多网络流角度出发,寻找多个网络流之间的关系,提取多网络流之间的关系特征,能够帮助基于网络流的流量分类系统实现P2P、交互式协议等新型协议流量的准确、完备分类。然而,目前的流表结构着眼于单一网络流,使用一种扁平的结构存储网络流,很难提取多个网络流之间的关系特征。

【发明内容】

[0009](一)要解决的技术问题
[0010]本发明所要解决的技术问题是:如何提供一种新的网络流提取和存储方法,能够快速有效地提取多网络流之间的关系特征,以帮助流量分类系统更好地应对新型应用层协议带来的挑战。
[0011](二)技术方案
[0012]为了解决上述问题,本发明提供了一种网络流存储方法,包括步骤:S1.初始化Client表和Server表;S2.查找捕获到的新进数据包在流表中对应的网络流;S3.更新Client 表和 Sever 表。
[0013]优选地,步骤SI包括:S1.1为Client初始化一个大小为η。的Hash表;S1.2为Sever初始化一个大小为ns的Hash表。
[0014]优选地,为Client初始化的Hash表是一个大小为η。的顺序表,每一个表项都用于存储一个客户端发起的多个网络流。
[0015]优选地,为Server初始化的Hash表是一个大小为ns的顺序表,每一个表项都用于存储一个服务器接收的多个网络流。
[0016]优选地,步骤S2包括:S2.1捕获一个新进数据包;S2.2计算数据包正向五元组(〈源地址,目的地址,源端口,目的端口,协议 >)的Hash值hi ;S2.3利用Hash值hi查找流表中是否存在对应的网络流,若存在,则标记当前数据包的方向是从客户端到服务器,并执行步骤S3,若不存在,则执行步骤S2.3 ;S2.4计算数据包反向五元组(〈目的地址,源地址,目的端口,源端口,协议 >)的Hash值h2 ;S2.5利用Hash值h2查找流表中是否存在对应的网络流,若存在,则标记当前数据包的方向是从服务器到客户端,并执行步骤S3,若不存在,则执行步骤S2.5;S2.6利用Hash值hi为该数据包创建一个网络流记录,并则标记当前数据包的方向是从客户端到服务器的网络流的第一个数据包,执行步骤S3。
[0017]优选地,步骤S3包括:S3.1计算客户端IP地址的Hash值h3和服务器IP地址的Hash值h4 ;S3.2判断数据包是否是该网络流的第一个数据包,若是,则执行步骤S3.3,若不是,则执行步骤S3.4 ;S3.3在Client表和Server表中增加新网络流信息;S3.4使用数据包更新Client表和Server表中对应项;S3.5返回执行步骤S2。
[0018]优选地,步骤S3.3包括:S3.31利用Hash值h3在Client表查找是否存在该客户端的信息,若不存在,则为该客户端在Client表中创建对应的记录;S3.32利用Hash值h4在Server表查找是否存在该服务器的信息,若不存在,则为该服务器在Server表中创建对应的记录。
[0019]优选地,在创建客户端记录时,若h3对应的表项已经被其他客户端占用,则使用链表将客户端信息挂载到h3对应的表项后。
[0020]优选地,在创建服务器记录时,若h4对应的表项已经被其他服务器占用,则使用链表将服务器信息挂载到h4对应的表项后。
[0021]优选地,步骤S3.4包括:S3.41判断数据包是否是该网络流的第一个数据包,若是,则执行步骤S3.42,若不是,则执行步骤S3.43 ;S3.42在Client表和Sever表的对应项中增加网络流信息;S3.43利用数据包更新Client表和Server表的对相应中的网络流信
肩、O
[0022](三)有益效果
[0023]本发明的方法在现有流表的基础之上,增加两个Hash表用于存储客户端和服务器节点的发送和接收的网络流。数据包被捕获后,首先查找其在流表中对应的网络流,然后利用网络流和数据包提供的信息更新两个Hash表。该方法通过快速地将属于同一个节点的网络流聚合在一起,能够帮助流量分类系统深度挖掘网络流之间的关系,应对新型应用层协议带来的挑战,可以为高速网络中高性能流量分类系统、内容监控系统的设计和实现提供技术支持。
【专利附图】

【附图说明】
[0024]下面参照附图并结合实例来进一步描述本发明。其中:
[0025]图1为根据本发明实施例的网络流存储方法的主要步骤流程图。
[0026]图2为根据本发明实施例的网络流存储方法的具体实施步骤流程图。
[0027]图3为根据本发明实施例的Client表和Server表更新示意图。
【具体实施方式】
[0028]下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0029]目前的流表结构着眼于单一网络流,使用一种扁平的结构存储网络流,很难提取多个网络流之间的关系特征,使得基于网络流的流量分类系统难以应对新型应用层协议带来的挑战。针对这一问题,本发明提出了一种新的网络流存储方法。该方法在现有流表的基础之上,增加两个Hash表用于存储客户端和服务器节点的发送和接收的网络流。数据包被捕获后,首先查找其在流表中对应的网络流,然后利用网络流和数据包提供的信息更新两个Hash表。通过快速地将属于同一个节点的网络流聚合在一起,该方法能够帮助流量分类系统深度挖掘网络流之间的关系,应对新型应用层协议带来的挑战。
[0030]如图1-图3所示,根据本发明提供的一种新的网络流存储方法,其包括以下步骤:
[0031]SI 初始化 Client 表和 Server 表;
[0032]其中,步骤SI进一步包括:
[0033]S1.1为Client初始化一个大小为nc (例如:4096)的Hash表;
[0034]其中,在步骤S1.1中,
[0035]为Client初始化的Hash表是一个大小为nc的顺序表,每一个表项都用于存储一个客户端发起的多个网络流;
[0036]其中,在步骤S1.2中,
[0037]为Server初始化的Hash表是一个大小为ns的顺序表,每一个表项都用于存储一个服务器接收的多个网络流;
[0038]其中,步骤SI前还包括建立用于存储网络流信息的所述流表的步骤。
[0039]S1.2为Sever初始化一个大小为ns (例如:4096)的Hash表;
[0040]S2查找捕获到的新进数据包在流表中对应的网络流;
[0041]其中,步骤S2进一步包括:
[0042]S2.1捕获一个新进数据包;
[0043]其中,在步骤S2.1中,
[0044]捕获的数据包包括TCP协议和UDP协议数据包。
[0045]S2.2计算数据包正向五元组(〈源地址,目的地址,源端口,目的端口,协议 >)的Hash 值 hi ;
[0046]S2.3利用Hash值hi查找流表中是否存在对应的网络流,若存在,则标记当前数据包的方向是从客户端到服务器,并执行步骤S3,若不存在,则执行步骤S2.3 ;
[0047]S2.4计算数据包反向五元组(〈目的地址,源地址,目的端口,源端口,协议 >)的Hash 值 h2 ;
[0048]S2.5利用Hash值h2查找流表中是否存在对应的网络流,若存在,则标记当前数据包的方向是从服务器到客户端,并执行步骤S3,若不存在,则执行步骤S2.5 ;
[0049]S2.6利用Hash值hi为该数据包创建一个网络流记录,并则标记当前数据包的方向是从客户端到服务器的网络流的第一个数据包,执行步骤S3 ;
[0050]S3 更新 Client 表和 Sever 表;
[0051]如图2所示,被捕获的数据包首先用于更新流表,更新后流表中的网络流信息则用来更新Client表和Server表;
[0052]其中,步骤S3进一步包括:
[0053]S3.1计算客户端IP地址的Hash值h3和服务器IP地址的Hash值h4;
[0054]S3.2判断数据包是否是该网络流的第一个数据包,若是,则执行步骤S3.3,若不是,则执行步骤S3.4 ;[0055]S3.3在Client表和Server表中增加新网络流信息;
[0056]其中,步骤S3.3进一步包括:
[0057]S3.31利用Hash值h3在Client表查找是否存在该客户端的信息,若不存在,则为该客户端在Client表中创建对应的记录;
[0058]其中,在步骤S3.31中,
[0059]在创建客户端记录时,若h3对应的表项已经被其他客户端占用,则使用链表将客户端信息挂载到h3对应的表项后;
[0060]S3.32利用Hash值h4在Server表查找是否存在该服务器的信息,若不存在,则为该服务器在Server表中创建对应的记录;
[0061]其中,在步骤S3.32中,
[0062]在创建服务器记录时,若h4对应的表项已经被其他服务器占用,则使用链表将服务器信息挂载到h4对应的表项后;
[0063]S3.4使用数据包更新Client表和Server表中对应项;
[0064]其中,步骤S3.4进一步包括:
[0065]S3.41判断数据包是否是该网络流的第一个数据包,若是,则执行步骤S3.42,若不是,则执行步骤S3.43;
[0066]S3.42在Client表和Sever表的对应项中增加网络流信息;
[0067]S3.43利用数据包更新Client表和Server表的对相应中的网络流信息;
[0068]S3.5返回执行步骤S2。
[0069]本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
【权利要求】
1.一种网络流存储方法,其特征在于,包括步骤: 51. 初始化Client表和Server表; 52.查找捕获到的新进数据包在流表中对应的网络流; 53.更新Client表和Sever表。
2.如权利要求1所述的方法,其特征在于,步骤SI包括: S1.1为Client初始化一个大小为η。的Hash表; 51.2为Sever初始化一个大小为ns的Hash表。
3.如权利要求1或2所述的方法,其特征在于: 为Client初始化的Hash表是一个大小为η。的顺序表,每一个表项都用于存储一个客户端发起的多个网络流。
4.如权利要求1或2所述的方法,其特征在于: 为Server初始化的Hash表是一个大小为ns的顺序表,每一个表项都用于存储一个服务器接收的多个网络流。
5.如权利要求1所述的方法,其特征在于,步骤S2包括: 52.1捕获一个新进数据包; S2.2计算数据包正向五元组(〈源地址,目的地址,源端口,目的端口,协议 >)的Hash值hi ; S2.3利用Hash值hi查找流表中是否存在对应的网络流,若存在,则标记当前数据包的方向是从客户端到服务器,并执行步骤S3,若不存在,则执行步骤S2.3 ; S2.4计算数据包反向五元组(〈目的地址,源地址,目的端口,源端口,协议 >)的Hash值h2 ; S2.5利用Hash值h2查找流表中是否存在对应的网络流,若存在,则标记当前数据包的方向是从服务器到客户端,并执行步骤S3,若不存在,则执行步骤S2.5 ; 52.6利用Hash值hi为该数据包创建一个网络流记录,并则标记当前数据包的方向是从客户端到服务器的网络流的第一个数据包,执行步骤S3。
6.如权利要求1所述的方法,其特征在于,步骤S3包括: 53.1计算客户端IP地址的Hash值h3和服务器IP地址的Hash值h4; S3.2判断数据包是否是该网络流的第一个数据包,若是,则执行步骤S3.3,若不是,则执行步骤S3.4 ; S3.3在Client表和Server表中增加新网络流信息; S3.4使用数据包更新Client表和Server表中对应项; S3.5返回执行步骤S2。
7.如权利要求6所述的方法,其特征在于,步骤S3.3包括: S3.31利用Hash值h3在Client表查找是否存在该客户端的信息,若不存在,则为该客户端在Client表中创建对应的记录; S3.32利用Hash值h4在Server表查找是否存在该服务器的信息,若不存在,则为该服务器在Server表中创建对应的记录。
8.如权利要求6或7所述的方法,其特征在于: 在创建客户端记录时,若h3对应的表项已经被其他客户端占用,则使用链表将客户端信息挂载到h3对应的表项后。
9.如权利要求6或7所述的方法,其特征在于: 在创建服务器记录时,若h4对应的表项已经被其他服务器占用,则使用链表将服务器信息挂载到h4对应的表项后。
10.如权利要求6所述的方法,其特征在于,步骤S3.4包括: S3.41判断数据包是否是该网络流的第一个数据包,若是,则执行步骤S3.42,若不是,则执行步骤S3.43 ; S3.42在Client表和Sever表的对应项中增加网络流信息; S3.43利用数据包更新Cl·ient表和Server表的对相应中的网络流信息。
【文档编号】H04L12/26GK103546307SQ201210246855
【公开日】2014年1月29日 申请日期:2012年7月16日 优先权日:2012年7月16日
【发明者】薛一波, 王大伟 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1