高速网络业务流分类方法

文档序号:7611431阅读:138来源:国知局
专利名称:高速网络业务流分类方法
技术领域
本发明涉及计算机网络流量监测分析技术领域,特别是一种高速网络业务流分类方法。
背景技术
网络流量监测是分析网络承载流量、了解业务性能、定位网络瓶颈的重要手段之一。随着网络应用不断发展,网络带宽的增加以及高带宽、高服务质量需求的实时业务的出现,基于SNMP(Simple Network ManagementProtocol)实现的链路级流量监测已越来越不能满足需要。基于使用情况的网络计费、服务质量监测、攻击/入侵检测、网络流量建模等越来越多的应用和网络管理迫切需要基于业务流(Flow)的流量监测。目前基于流的流量监测主要集中在流大小(包个数)分布、特大流(elephant)的监测等,而基于流的精确监测方法相对较少,尤其针对高速链路更是面临挑战。
基于业务流的流量监测方法通常首先捕获网络数据包,根据业务流规则定义分析数据包头部信息;在已有的流记录表中查找匹配的流记录,如查找成功则更新匹配的流记录,否则在流记录表中增加新的流记录。同时流监测方法还必须定期或根据流会话控制协议判断业务流是否结束,统计结束流记录信息或把结束流记录传回采集中心保存。对于10Gbps的以太网链路,即使流采用最大包(1518Bytes)封装业务,需要线速监测业务流的流量,每个数据包的处理延迟不能超过1.2us,否则将产生丢包。高性能流监测不仅仅需要高性能的分析处理器,还需要高速业务流监测方法。设计高速业务流监测方法的关键点包括高速数据包捕获、高速流分类、高速流记录老化更新、高速结果回收,其中最关键的是高速业务流分类方法。
业务流分类方法根据流规则是否预先建立可以分为有源流分类方法与无源流分类方法。有源流分类方法有初始规则库,方法根据规则库建立流分类数据结构,规则库的改变需要人为干预。无源流分类方法没有任何初始规则库,通过分析网络流量的特征根据指定字段自动创建规则并对数据包进行分类的方法。无源流分类方法和一般的包分类方法有很大的相似性,如都包含一个规则库(只是流分类方法的规则库是指流记录库),需要在规则库中查找匹配的规则,需规则库的更新等。但由于其目的不同,在方法的要求上也有所不同。当前的包分类研究主要应用在IP路由查找、4层交换、数据包过滤等方面,这些包分类技术的前提大都是有一个初始的规则库,其更新频率相对较小,因此大都侧重于查找效率;而无源流分类方法没有初始规则库,分类规则主要是数据包的某些字段,典型的为5元组,源、目的IP地址,源、目的端口和协议,只有这些字段的值都完全相同的数据包才属于同一个业务流。无源流分类方法根据业务流规则定义中规定的字段查找匹配的流记录,查找成功则更新,不成功则增加新的流记录。因此庞大的规则数(流记录数)、频繁的记录更新、大量存储空间的要求都高效无源业务流分类方法的设计带来了巨大的挑战。
业务流分类技术是实现基于流的流量监测的基础,其研究主要集中在传统的包分类技术上。包分类是路由器需完成最基本的功能,最早的包分类主要是IP分类,用于寻找目的主机的路由。随着网络用户对网络需求的不断提高,ISP(Internet Service Provider)纷纷开始提供增值服务,为不同应用提供不同的服务质量,因此路由器开始具有接入控制、资源预留、公平排队等功能。仅依靠原有的IP分类技术已不能满足要求,因此开始出现多维(多字段)包分类技术。多维包分类技术也广泛应用于防火墙和入侵监测系统。
评价包分类方法优劣的准则包括如下几个方面查找速度;低存储需求;支持的规则数目;快速更新;对多维匹配的支持程度;规则格式的灵活性等。在实际工程中,往往综合考虑内存大小、查询速度要求、规则更新速度,设计适合的方法。文献[11]中还对几种包分类方法进行了性能分析,主要考虑了三种评测指标,查找时间更新时间和存储需求。
无源流分类方法是一种特殊的包分类方法,和包分类方法有很大相似性。方法没有初始规则库,其规则库的建立是在规则查找过程中创建。该方法适合于对网络链路流量进行业务流分类、统计分析,分析网络流量特征。方法首先根据数据包的信息在流记录库中查找匹配的流记录,如果查找成功则更新流记录,否则作为新的流记录(规则)插入到流记录库中。因此无源流分类方法必须支持庞大的规则数目,存储空间的需求相对较大。无源流分类方法除了没有初始规则库,其规则格式和现有的包分类方法也有较大不同。包分类方法大都支持的是前缀匹配和范围匹配,而用于流量监测的无源流分类方法主要侧重精确匹配。

发明内容
本发明的目的在于提供一种高速网络业务流分类方法。
本发明是一种高速网络业务流分类方法,是一种无源业务流分类方法,该方法的关键在于,其适合于没有初始规则库的基于业务流的分类,具体内容叙述如下1)业务流分类定义定义1业务流规则由多个字段组成,RF={FD1,FD2,...,FDd},每个字段由偏移和长度表示。
定义2流分类器每个流分类器包括N个规则C={R1,R2,...,RN}每个规则对应一个Flow,N表示基于流的监测分析系统能够支持的并发流数目。每个规则对应业务流定义中规定的各个字段的值Ri={F1i,F2i,...,Fdi},]]>其中d表示字段数。
定义3业务流分类当数据包p到达时,可以从p中根据业务流规则定义解析出d个字段的值,P={f1,f2,...fd},如存在分类器中的规则Ri满足任意1<j<d,FJi=fj,]]>则认为数据包p属于Ri对应的业务流,并更新Ri对应的流记录信息;否则认为p属于新的业务流,并把P={f1,f2,...fd}作为新的规则插入到流分类器C中。
2)无源业务流分类方法及数据结构本发明的关键技术在于方法采用三阶段查找方法,第一阶段采用Hash方法,尽量分散流记录的分布;第二阶段提供两种方式,一种是线性链表,另一种是查找树;最后一个阶段是线性查找。第一阶段Hash表的大小为255*255。方法关键在于Hash函数的选择,即Hash索引值的计算方法。
无源业务流分类方法,第一阶段采用了一种通过网络数据包的源IP地址和目的IP地址的最后一个字节计算Hash索引值并在Hash链表中查找,如果数据包为出境则采用的Hash计算方法为公式(1)。
无源业务流分类方法,第二阶段提供两种方式数据结构,线性链表或者Trie结构;并根据结构的不同提供两种第二阶段查找方法,即线性查找或者二分查找。
对于一条被监测链路,链路两端分别对应一组用户群或者服务器群,根据IPv4地址分配原则,IPv4地址的最后一个字节分布最广泛也最分散,根据此特点,设计Hash函数如下。对于一条被监测链路,选择一端为内部,另一端为外部,因此流量可以被划分为出境和入境。如果捕获的数据包为出境流量,则选择数据包的源IP地址的最后1个字节作为低8位,目的IP地址的最后一个字节为高8位组合而成的一个16位hash索引值,如公式(1)。
Hash_index=(src_ip4)<<8+(dst_ip4)(1)其中src_ip4,dst_ip4分别表示源、目的IP地址的最后一个字节。
反之如果为入境流量则把数据表的目的IP地址的最后一个字节作为低8位,源IP地址的最后一个字节作为高8位组成hash索引值。如公式(2)。
Hash_index=(dst_ip4)<<8+(src_ip4)(2)第二阶段可选用线性链表方式,每个Hash表项指向一个IP地址对结点链表,即所有Hash索引值相同的IP地址对结点形成一个线性链表。每个IP地址对结点则包含一个Flow记录链表,这些Flow记录具有相同的IP地址对。其数据结构如图1所示。
第二阶段也可使用查找树,则Hash表项指向的是一个由IP地址对结点组成的树。树结构为有序三叉树,树中结点进行排序的关键值T_key通过如下方法构造。对于出境数据包,用源IP地址的倒数第二个字节构造T_key的1~4字节和9~12字节,目的IP地址的倒数第二个字节作为后8位构构造T_key的5~8字节和13~16字节,如公式(3)。
T_key=(src_ip3&0x0f)<<12+(dst_ip3&0x0f)<<8+(3)(src_ip3&0xf0)+(dst_ip3&0xf0)>>4如果为入境数据包,则用目的IP地址的倒数第二个字节构造T_key的1~4字节和9~12字节,源IP地址的倒数第二个字节作为后8位构造T_key的5~8字节和13~16字节,如公式(4)。
T_key=(dst_ip3&0x0f)<<12+(src_ip3&0x0f)<<8+(4)(dst_ip3&0xf0)+(src_ip3&0xf0)>>4T_Key较大的结点作为右子结点,较小的为左结点,相等的作为中间结点。任何一个IPPair结点的左右子结点是一个子树,而中间结点则串成一个线性链表。其数据结构如图2。
3)高速网络业务流分类方法高速网络业务流分类方法包括四个部分查找流记录、插入/更新IPPair结点,插入/更新流记录结点,流记录老化与信息统计。由于方法针对基于业务流的流量监测设计,查找与更新同时并存,即如果查找成功则更新流记录信息,否则插入新的流记录结点。该方法不需要初始规则库,可以根据网络中的流量以及流规则定义自动识别并统计网络中的业务流信息,其中查找与更新的部分伪码如图3所示。其中如果分类方法的第二阶段采用线性表,则查找链表是是顺序查找,每次插入新的IPPair结点均插入在相应Hash表指向链表的第一个结点,新的流记录信息也插入在相应IPPair结点指向的流记录链表的第一个结点;若第二阶段采用的是Trie结构,则在查找到一个IPPair结点后首先计算T_Key,并根据T_Key大小决定在IPPair结点的左子树、右子树或者中间子树中继续查找知道查到T_Key相同结点。该方法在一种基于网络处理器的板卡上实现并做了相关实验,实验结果显示单个数据包查找不成功后插入新流记录和查找成功并更新流记录信息的平均处理时间分别为1.8μs和1.3μs。图4为数据包的总分析时间,流分析时间和第二阶段的链表长度的关系图,实验结果显示流分析过程,特别是流链表查找,是流量监测分析主要耗时过程,提高流分析速度将提高流量监测分析的吞吐量;插入流链表记录的流分析过程,数据包处理耗时大于已建立链表流分析过程,数据包平均处理时间较已建链表大0.5μs。


图1是无源业务流分类方法数据结构,第二阶段采用线性表结构示意图。
图2是无源业务流分类方法数据结构,第二阶段采用Tire结构示意图。
图3是无源业务流分类方法-查找与更新部分伪码图。
图4是数据包总分析时间、流分析时间和第二阶段链表长度的关系图。
图5是高速网络业务流分类方法流程图。
具体实施例方式
图1无源业务流分类方法数据结构示意图,第二阶段采用线性表结构。线性表结构实现简单,更新(增加或者删除)方便,并且方法中采用的插入新的流记录的方式为每次插入到队列头部,最新的流总是最先被处理,符合网络流量特征。
图2无源业务流分类方法数据结构示意图,第二阶段采用Tire结构。Trie结构根据所设计的键值计算方法,利用键值的大小构造三叉树,大小分列两边相等键值的则列在中间,该方法比较适合第一阶段的Hash链表长度较长的情况,虽然构造比线性表复杂,但其查找速度理论上相对较快。
图3无源业务流分类方法_查找与更新部分伪码。该图说明了高速业务流分类方法的基本实现步骤。
图4数据包总分析时间、流分析时间和第二阶段链表长度的关系图。由图可知流分析过程,特别是流链表查找,是流量监测分析主要耗时过程,提高流分析速度将提高流量监测分析的吞吐量;插入流链表记录的流分析过程,数据包处理耗时大于已建立链表流分析过程,数据包平均处理时间较已建链表大0.5μs。
图5是高速网络业务流分类方法流程图,其步骤如下首先网络收到数据包后根据源、目的IP地址计算Hash表索引值,并根据索引值在Hash表对应结点所指的链表或树中查找对应的IPPair结点,如果查找成功则在查找到的IPPair结点指向的流记录链表中查找相应的流记录结点,如果查找成功则更新流记录否则创建新的流记录结点;否则如果查找IPPair结点不成功则创建新的IPPair结点以及新的流记录结点。
具体步骤为步骤S1,根据数据包的源、目的IP地址计算Hash索引值;步骤S2,在索引值指定的Hash表结点所指的链表中查找相应的IPPair结点;步骤S3,如果查找成功,则已查找成功的IPPair结点所指的流记录结点中查找相应的流记录,否则转步骤S6;步骤S4,如果查找流记录成功则更新流记录信息,一次查找结束,否则转S6;步骤S5,创建新的IPPair结点并插入到相应Hash表结点指向的链表中;步骤S6,创建新的流记录结点并插入到IPPair结点指向的流记录链表中,一次查找结束。
权利要求
1.高速网络业务流分类方法,其特征在于,是一种无源业务流分类方法,适合于没有初始规则库的基于业务流的分类。
2.根据权利要求1所述的高速网络业务流分类方法,其特征在于,方法分为三个阶段实现,第一阶段采用Hash方法,尽量分散流记录的分布;第二阶段提供两种方式,一种是线性链表,另一种是查找树;最后一个阶段是线性查找。
3.根据权利要求2所述的高速网络业务流分类方法,其特征在于,第一阶段采用了一种通过网络数据包的源IP地址和目的IP地址的最后一个字节计算Hash索引值并在Hash链表中查找,如果数据包为出境则采用的Hash计算方法为Hash_index=(src_ip4)<<8+(dst_ip4)(1)如果数据包为入境数据包则采用的Hash方法为Hash_index=(dst_ip4)<<8+(src_ip4)(2)其中src_ip4,dst_ip4分别表示源、目的IP地址的最后一个字节。
4.根据权利要求3所述的网络业务流监测方法,其特征在于,无源业务流分类方法,第二阶段提供两种方式数据结构,线性链表或者Trie结构;并根据结构的不同提供两种第二阶段查找方法,即线性查找或者二分查找。
5.根据权利要求2或4所述的高速网络业务流分类方法,其特征在于,如果第二阶段采用Trie结构,则通过源IP地址和目的IP地址的倒数第二个字节计算创建Tire结构的键值,如果数据包为出境则采用的键值计算方法为T_key=(src_ip3&0x0f)<<12+(dst_ip3&0x0f)<<8+ (3)(src_ip3&0xf0)+(dst_ip3&0xf0)>>4如果数据包为入境则采用的键值计算方法为T_key=(dst_ip3&0x0f)<<12+(src_ip3&0x0f)<<8+ (4)(dst_ip3&0xf0)+(src_ip3&0xf0)>>4
6.一种高速网络业务流分类方法,其步骤如下首先网络收到数据包后根据源、目的IP地址计算Hash表索引值,并根据索引值在Hash表对应结点所指的链表或树中查找对应的IPPair结点,如果查找成功则在查找到的IPPair结点指向的流记录链表中查找相应的流记录结点,如果查找成功则更新流记录否则创建新的流记录结点;否则如果查找IPPair结点不成功则创建新的IPPair结点以及新的流记录结点。
7.根据权利要求6的高速网络业务流分类方法,具体步骤为步骤S1,根据数据包的源、目的IP地址计算Hash索引值;步骤S2,在索引值指定的Hash表结点所指的链表中查找相应的IPPair结点;步骤S3,如果查找成功,则已查找成功的IPPair结点所指的流记录结点中查找相应的流记录,否则转步骤S6;步骤S4,如果查找流记录成功则更新流记录信息,一次查找结束,否则转S6;步骤S5,创建新的IPPair结点并插入到相应Hash表结点指向的链表中;步骤S6,创建新的流记录结点并插入到IPPair结点指向的流记录链表中,一次查找结束。
全文摘要
本发明涉及计算机网络流量监测分析技术领域,特别是一种高速网络业务流分类方法。该方法特别针对基于业务流的网络流量监测与分析,适合没有初始规则库的业务流监测需要,可以根据业务流定义规则以及实际网络流量自动探测新的业务流,并对业务流进行分类、更新与老化。方法采用三阶段查找方法,第一阶段采用Hash方法,尽量分散流记录的分布;第二阶段提供两种方式避免哈希冲突,一种是线性链表,另一种是查找树;最后一个阶段是线性查找与记录更新。实验结果显示单个数据包查找不成功后插入新流记录和查找成功并更新流记录信息的平均处理时间分别为1.8μs和1.3μs。
文档编号H04L29/02GK1633111SQ200510004248
公开日2005年6月29日 申请日期2005年1月14日 优先权日2005年1月14日
发明者杨建华, 谢高岗, 张广兴, 李忠诚 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1