负载自适应的网络数据流流量测量方法

文档序号:7859592阅读:251来源:国知局
专利名称:负载自适应的网络数据流流量测量方法
技术领域
本发明是一种具有良好负载适应性的数据流流量测量方法,属于计算机网络技术领域。
背景技术
计费管理、业务控制、网络异常检测以及网络安全监测等网络管理工作要求对网络流量进行统计和分析。随着网络数据率的飞速提升,若直接对原始的网络流量进行逐包的分析处理,又因其代价极高而不易实施;而数据流级的网络流量在所包含的信息量和所需处理的数据量之间达到了良好平衡。数据流指的是一组具有相同流标识,并且相邻两者 的到达时间间隔不超过某一上限的一组数据包的集合。不同的应用可以定义不同的流标识,一般采用熟知的五元组(〈源IP地址,目的IP地址,协议类型,源端口号,目的端口号>)作为流标识。对各条数据流的流标识、到达时间、结束时间以及流量大小等信息进行记录,这一过程称为流测量。当前,流测量已经被CiSC0、Juniper等主流的网络设备制造商 所支持;IETF专门成立了 IPFIX工作组,进行流测量相关标准的制定。如何准确测量各条数据流的流量,这是流测量的难点。在高速骨干网链路中,由于报文到达间隔极短,且并发数据流的数目巨大,完全准确的测量各条数据流的流量,其代价极高。相对而言,近似测量则具有更好的性能代价比。近似测量的结果存在一定的误差。在实现测量算法时,通常根据最大负载为测量算法分配存储资源。然而,对实测网络流量的分析结果表明,流量负载在不同的测量周期内的变化较大,并且在大部分时间内,负载均小于最大值。现有的近似测量算法,主要有计数型布鲁姆过滤器[I] (Counting Bloom Filter,CBF)和 d-left 计数型布鲁姆过滤器[2] (d-left Counting Bloom Filter, dlCBF),对于负载适应性问题缺乏考虑,当实际负载小于最大值时,均不能够充分利用已分配资源,尽可能的降低测量误差。参考文献[1]L. Fan, P. Cao, J. Almeida, and A. Z. Broder. Summary Cache : a ScalableWide-area Web Cache Sharing Protocol [J]. IEEE/ACM Transactions onNetworking, 2000, 8(3):281-293.[2] A. Pagh, R. Pagh, and S. Rao. An Optimal Bloom Filter Replacement [C].In:Proc. of the Sixteenth Annual ACM-SIAM Workshop on Discrete Algorithms, Maryland, 2005, 823-829.

发明内容
技术问题针对现有的数据流流量的近似测量方法负载适应性差的问题,本发明给出了一种具有良好负载适应性的负载自适应的网络数据流流量测量方法。在满负载时,本方法的测量误差和现有方法一致;在非满负载状态下,本方法可以充分利用已分配资源,有效的降低测量误差。
技术方案现有的数据流流量的近似测量方法主要是基于CBF和dlCBF实现。已有的研究成果表明,dlCBF的空间效率优于CBF。在dlCBF中,测量误差的大小主要取决于元素指纹的长短。dlCBF采用固定长度的元素指纹,因而dlCBF的测量误差对于网络流量负载不敏感。本发明给出了一种元素指纹折半收缩的d-left计数型布鲁姆过滤器(Binary-Shrinking d-left Counting Bloom Filter,BSdlCBF)。在满负载时,BSdlCBF 的测量误差和dlCBF —致;在轻负载时,BSdlCBF能充分利用存储空间,扩大元素指纹的长度,从而比dlCBF能更有效的降低测量误差。本发明的负载自适应的网络数据流流量测量方法包括存储区组织、流量值更新和流量值查询这三个步骤;存储区组织的方法是将整个存储区划分为若干个等长的块,每块又划分为若干个等长的桶,每个桶设置一个桶负载计数器,桶中存放有若干条数据流的流指纹和流量计数器; 流量值更新的方法是在测量周期开始时,将所有的桶负载计数器、流指纹和流量计数器初始化为O ;然后,每到达一个数据包,根据其流标识,计算其流指纹,进行指纹匹配,若匹配成功,则将相应的流量计数器增加1,若匹配失败,则将该数据流插入到存储区中,并将该数据流所插入的桶的桶负载计数器增加I;流量值查询的方法是根据待查询的数据流的流标识,计算其流指纹,进行指纹匹配,得到相应的流量计数器的值,通过存储区组织、流量值更新和流量值查询这三个步骤,完成数据流的流量测量过程。计算流指纹通过哈希函数实现,哈希函数的输入为数据流的流标识,输出为流指纹;输出流指纹的长度为每个桶中所能够存放的最长流指纹的长度。将数据流插入到存储区中的具体步骤是如下首先,根据该数据流的流标识,计算其流指纹;然后,假设存储区划分为d个块,则通过d次哈希运算,分别在每个块中选择一个桶,并从中选择一个负载最轻的桶作为插入该数据流的目标桶;接着,根据目标桶的负载情况,为新插入的数据流分配指纹空间,若桶负载为a,桶的最大指纹空间为b比特,则为新插入的数据流分配指纹空间为b/(a+l)比特;最后,设置该数据流的流量计数器为I ;其中a、b、d均为正整数。指纹匹配的具体步骤是如下首先,根据该数据流的流标识,计算其流指纹;然后,假设存储区划分为d个块,则通过d次哈希运算,确定该数据流可能插入的所有d个桶;接着,依次在各个桶中查找流指纹,判断是否存在和当前数据流指纹匹配的流指纹,若有,则匹配成功,否则,则匹配失败。在桶中查找流指纹的具体步骤如下首先,根据桶负载情况,确定合适的指纹匹配长度,若桶负载为a,桶的最大指纹空间为b,则取待查找的流指纹的前b/a比特作为比对字段;然后,将待查找的流指纹的比对字段和桶中的流指纹进行逐个比对,若发现一致的,则查找成功。有益效果与现有的测量方法相比,在满负载时,本发明所提出的方法的测量误差和现有方法一致;但是,在轻负载时,本发明所提出的方法的测量误差明显低于现有方法。图I为负载率分别为2. 5/3,2/3,1. 5/3以及1/3时,dlCBF和BSdlCBF的测量错误概率的比较结果。图2为采用真实网络流量数据时,dlCBF和BSdlCBF的测量错误概率的比较结果。所采用的流量数据的各个周期内数据流的数目如图3所示。由图I和图2可见,在满负载时,dlCBF和BSdlCBF的测量错误概率较为接近;但是,随着负载率的下降,BSdlCBF的测量错误概率的下降速度明显快于dlCBF。在轻负载时,BSdlCBF的测量错误概率比dlCBF低数个数量级。可见,与现有的流量测量方法相比,本发明所提出的流量测量方法在负载适应性方面具有明显的优势。


图I、不同负载率下,dlCBF和BSdlCBF的测量错误概率比较,图2、采用真实网络流量时dlCBF和BSdlCBF的测量错误概率比较,图3、真实网络流量中各个测量周期内数据流的数目,图4、dlCBF的结构示意图,
图5、不同桶负载下,BSdlCBF和dlCBF的桶空间利用情况对比,图6、BSdlCBF的查询过程,图7、BSdlCBF的更新过程。
具体实施例方式下面分别从BSdlCBF的组成结构、流量更新过程和流量查询过程这三个方面,详细说明本发明所提出的流量测量方法的具体实施方式
。I) BSdlCBF的组成结构为了说明BSdlCBF的组成结构,首先对dlCBF的结构作一描述。dlCBF是在d-left哈希表的基础上进行设计的。d-left哈希表将存储区等分为d个块,每块又划分为若干个相同容量的桶。不妨将各个块看作桶向量(Bucket Vector),从左向右,依次记作BV1, BV2, - ,BVdo例如,图4中的d-left哈希表的存储区划分为4个块,每块5个桶,每桶深度为4。当插入元素e时,由d个独立的哈希函数计算元素e在各个块中的桶地址,分别记作 hi (e),h2 (e),…,hd(e)。然后,将 e 插入到 BV1 Qi1 (e)),BV2Qi2 (e)),···, BVd(hd(e))中负载最轻的那个桶中。如果存在多个负载最轻的桶,则选择最左边那个。例如,图4中,将元素e插入到桶BV1 [4]中。遵循上述选择策略,可使得各个桶的负载较为平均,从而各个桶在平均负载的基础上,再增加一个较小的额外桶空间,即可保证桶的溢出概率极低,因而获得较高的空间效率。采用d-left哈希函数构建dlCBF时,在每个桶单元中存放数据流的指纹和流量计数器,如图4所示。每到达一个报文P时,首先取得其流标识f,计算其流指纹,并将其指纹与桶BV1 Qll (f)),BV2 (h2 (f) ),···,BVd (hd(f))中已有指纹进行匹配。如果匹配上,则将相应的桶单元的流量计数器增加1,若有多个桶单元同时匹配上,则随机选择一个单元,将其流量计数器增加I ;如果没有匹配上,则按照上文说明的d-left哈希函数的插入选择策略,将数据流f插入到BV1 Qi1 (f)),BV2 (h2 (f) ),···,BVd (hd (f))中负载最轻的、最左边的桶中去,并将其流量计数器设为I。数据流指纹的长度影响着dlCBF的查询错误概率,指纹长度越长,则出现错误匹配的概率越低。BSdlCBF和dlCBF类似,同样基于d-left哈希表进行设计。与dlCBF不同的是,BSdlCBF采用变长的流指纹。当负载较轻时,BSdlCBF采用较长的流指纹;随着负载率的增力口,元素指纹的长度逐渐缩短。为了实现的方便,BSdlCBF中元素指纹采用折半收缩的策略,如图5所示。需要指出的是,在BSdlCBF中,插入到各个桶中的数据流指纹和流量计数器的起始位置和dlCBF不同。BSdlCBF中,每个桶均设置有负载计数器,以记录当前已经插入到桶中的数据流的数目。2)流量查询过程BSdlCBF查询操作的处理流程如图6所示。首先,对于所到达的数据包P,提取其流标识F ;然后,对流标识F作d个并行的哈希运算,得到可能存放有F的流量计数的d个桶的桶地址A1 Ad,同时,还需进行一次哈希运算,以根据流标识F计算流指纹fp ;随后,读取桶单元B(A1) B(Ad)的内容以及其桶负载计数,并将fp与桶B(A1) B(Ad)中的流指纹进行匹配。若匹配命中,则返回对应的流量计数C(F);若匹配没有命中,则返回O。设单位指纹长度为I比特,桶深为b,要求b恰好为2的正整数次幂。对于每条数据流f,BSdlCBF生成b个I比特的元素指纹Ff [I :b]。设在查询时,桶负载为i,则在进行数据流指纹匹配时,只需取Ff [I :b]的前L(i)个单位指纹Ff[l:L(i)]作为匹配对象。L(i)
由下列式子计算获得
权利要求
1.一种负载自适应的网络数据流流量测量方法,其特征在于该方法包括存储区组织、流量值更新和流量值查询这三个步骤; 存储区组织的方法是将整个存储区划分为若干个等长的块,每块又划分为若干个等长的桶,每个桶设置一个桶负载计数器,桶中存放有若干条数据流的流指纹和流量计数器; 流量值更新的方法是在测量周期开始时,将所有的桶负载计数器、流指纹和流量计数器初始化为O ;然后,每到达一个数据包,根据其流标识,计算其流指纹,进行指纹匹配,若匹配成功,则将相应的流量计数器增加1,若匹配失败,则将该数据流插入到存储区中,并将该数据流所插入的桶的桶负载计数器增加I; 流量值查询的方法是根据待查询的数据流的流标识,计算其流指纹,进行指纹匹配,得到相应的流量计数器的值,通过存储区组织、流量值更新和流量值查询这三个步骤,完成数据流的流量测量过程。
2.按照权利要求I所述的负载自适应的网络数据流流量测量方法,其特征在于计算流指纹通过哈希函数实现,哈希函数的输入为数据流的流标识,输出为流指纹;输出流指纹的长度为每个桶中所能够存放的最长流指纹的长度。
3.按照权利要求I或2所述的负载自适应的网络数据流流量测量方法,其特征在于将数据流插入到存储区中的具体步骤是如下首先,根据该数据流的流标识,计算其流指纹;然后,假设存储区划分为d个块,则通过d次哈希运算,分别在每个块中选择一个桶,并从中选择一个负载最轻的桶作为插入该数据流的目标桶;接着,根据目标桶的负载情况,为新插入的数据流分配指纹空间,若桶负载为a,桶的最大指纹空间为b比特,则为新插入的数据流分配指纹空间为b/(a+l)比特;最后,设置该数据流的流量计数器为I;其中a、b、d均为正整数。
4.按照权利要求1、2所述的负载自适应的网络数据流流量测量方法,其特征在于指纹匹配的具体步骤是如下首先,根据该数据流的流标识,计算其流指纹;然后,假设存储区划分为d个块,则通过d次哈希运算,确定该数据流可能插入的所有d个桶;接着,依次在各个桶中查找流指纹,判断是否存在和当前数据流指纹匹配的流指纹,若有,则匹配成功,否贝U,则匹配失败。
5.根据按照权利要求4所述的负载自适应的网络数据流流量测量方法,其特征在于在桶中查找流指纹的具体步骤如下首先,根据桶负载情况,确定合适的指纹匹配长度,若桶负载为a,桶的最大指纹空间为b,则取待查找的流指纹的前b/a比特作为比对字段;然后,将待查找的流指纹的比对字段和桶中的流指纹进行逐个比对,若发现一致的,则查找成功。
全文摘要
本发明公开了一种负载自适应的网络数据流流量测量方法,该方法包括存储区组织的方法将整个存储区划分为若干个等长的块,每块又划分为若干个等长的桶,每个桶设置一个桶负载计数器,桶中存放有若干条数据流的流指纹和流量计数器;流量值更新的方法在测量周期开始时,将所有的桶负载计数器、流指纹和流量计数器初始化为0;然后,每到达一个数据包,根据其流标识,计算其流指纹,进行指纹匹配;流量值查询的方法根据待查询的数据流的流标识,计算其流指纹,进行指纹匹配,得到相应的流量计数器的值,通过这三个步骤,完成数据流的流量测量过程,其新颖之处是采用了动态的数据流指纹收缩机制,在负载较轻时,尽可能扩大数据流指纹的长度,从而降低测量误差。
文档编号H04L12/26GK102833134SQ201210323629
公开日2012年12月19日 申请日期2012年9月4日 优先权日2012年9月4日
发明者张进, 黄清杉, 赵文栋, 吴泽民, 彭来献, 田畅 申请人:中国人民解放军理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1