CN102882798A - 面向骨干网流量分析的统计计数方法 - Google Patents
面向骨干网流量分析的统计计数方法 Download PDFInfo
- Publication number
- CN102882798A CN102882798A CN2012103235936A CN201210323593A CN102882798A CN 102882798 A CN102882798 A CN 102882798A CN 2012103235936 A CN2012103235936 A CN 2012103235936A CN 201210323593 A CN201210323593 A CN 201210323593A CN 102882798 A CN102882798 A CN 102882798A
- Authority
- CN
- China
- Prior art keywords
- counter
- sub
- stepchild
- vector
- straton
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向骨干网流量分析的统计计数方法,其新颖之处在于对计数器向量进行分层,除第一层外,其他各层子计数器向量采用多级哈希表的形式进行组织,从而获得了良好的空间效率和时间效率。与现有的主动式统计计数器BRICK相比,DALCA的空间效率与其接近,但是时间效率明显优于BRICK。执行查询操作时,DALCA的访存带宽需求不到BRICK的1/8;执行更新操作时,DALCA的访存带宽需求不到BRICK的1/4。此外,DALCA的实现方式比BRICK更为灵活。
Description
技术领域
本发明是一种面向骨干网流量分析的统计计数方法,属于计算机网络技术领域。
背景技术
网络流量分析和流量管理需要统计计数器的支持。随着链路数据率的飞速提升,在高速骨干网中,统计计数器的设计面临着极大的挑战:一方面,所需要的计数器的数目巨大;另一方面,所允许的更新和查询时间极短。以骨干网数据流的流量测量为例,已有的研究结果表明,在高速骨干网链路中,并发数据流的数目通常达到百万条数量级,为了进行逐流的流量统计,所需的计数器的数目至少应与数据流的数目一致;如果每条数据流需要多个统计项,则所需的计数器数目更为庞大。另一方面,在骨干网链路中,报文的到达时间间隔极短,例如,在OC-768链路中,假设最短报文长度为64字节,则链路满负载时,报文到达间隔最小为12.8ns。这就需要统计计数器能够在极短的时间内完成更新和查询。通过上述分析可见,面向高速骨干网链路的统计计数器必须采用容量大且速度快的存储器来实现。但是,存储器的容量和速度是一对相互矛盾的性能指标,容量大的存储器,如DRAM,其速度相对较慢;而速度快的存储器,如SRAM,其容量相对较小。如何实现大容量的高速统计计数器,这是骨干网流量分析及管理中所面临的一个难点问题。
已有的研究成果主要从两个不同的角度来处理大容量高速统计计数器设计这一难题。第一类方法是进行近似计数,而非准确计数。近似计数可以减小计数器的位宽,从而降低总的空间需求,使得整个统计计数器可以用高速存储器实现。第二类方法假设计数器仅仅需要支持在线更新,而不需要支持在线查询。这样,通过对计数值进行在线压缩,或者采用SRAM+DRAM的混和存储结构,以减小对高速存储器空间的需求。不支持在线查询的计数器也称作被动式计数器(passive counters);与之相对,支持在线查询的计数器称作主动式计数器(active counters)。显然,理想的统计计数器需要既能够支持准确计数,也能够支持在线查询。现有的准确计数的主动式统计计数器仅仅只有BRICK[1]。在典型的网络流量参数条件下,与原始的计数器向量相比, BRICK可以将空间效率提升一倍,且几乎不会产生计数误差。这里“几乎”的含义是产生计数误差的概率足够小,在实际应用中可以忽略不计。与近似计数的或者被动式的统计计数器相比,准确计数的主动式统计计数器显然更具价值。但是,BRICK的缺点在于其时间效率较低;此外,BRICK需要基于64位硬件平台进行实现,且需要特定的处理器指令的支持,实现方式不够灵活。
参考文献
[1]Nan Hua,Jun(Jim)Xu,Bill Lin,and Haiquan(Chuck)Zhao.BRICK:A Novel Exact Active Statistics Counter Architecture.IEEE/ACM TRANSACTIONS ON NETWORKING,VOL.19,NO.3,JUNE 2011.
发明内容
技术问题:本发明提出了一种面向骨干网流量分析的统计计数方法,涉及一种支持准确计数器的主动式统计计数器—DALCA(Direct Addressing Layered Counter Array)。DALCA的空间效率和现有的主动式统计计数器BRICK接近,但时间效率明显优于BRICK;此外,DALCA的实现方式较BRICK更为灵活。
技术方案:DALCA对原始的计数器向量进行分层,将之拆分成多层子计数器向量。计数值的高位存放在高层子计数器向量中,低位存放在低层子计数器向量中。随着层次的提高,一层中所包含的子计数器的数目也逐步减少。正是基于这一原理,与原始的不分层的计数器向量相比,DALCA可以有效降低整个计数器向量所需的存储空间。除第一层子计数器向量外,其他各层子计数器向量采用多级哈希表的形式进行组织。更新过程中,若第i层中的子计数器溢出,则向第i+1层中的子计数器进位,并将其后继子计数器在多级哈希表中的块地址存储下来;在需要访问该后继子计数器时,通过读取事先存储的块地址,再经过一次哈希运算,即可直接寻址到该子计数器。查询时,将分布在多个层中的子计数器“串联”起来,以获得完整的计数值。
本发明的面向骨干网流量分析的统计计数方法包括计数器向量的组织,计数器的更新以及计数器的查询这三个步骤;
计数器向量的组织:计数器向量由多层子计数器向量构成,各层子计数器向量的长度随着层数的提高而递减,计数值的高位存放在高层的子计数器向量中,计数值的低位存放在低层的子计数器向量中;除最低层子计数器向量外,其他各层子计数器向量采用多级哈希表进行组织,除最高层子计数器向量外,其他各层子计数器向量中, 每个子计数器均设置有1比特的溢出标志位;
计数器的更新:对计数器进行更新时,从最低层的子计数器开始;若某个子计数器在更新之后发生溢出,则根据其溢出标志位进行判断,若溢出标志位为1,则查找其后继子计数器,并向其后继子计数器进位,若溢出标志位为0,则为其分配后继子计数器,并向后继子计数器进位;
计数器的查询:对计数器进行查询时,首先从最低层的子计数器开始,若低层子计数器的溢出标志为1,则查找其后继子计数器,并且将其后继子计数器的值也累加到查询结果中,如此循环,直至查询到某个子计数器,发现其溢出标志为0,或者查询到最高层子计数器为止。
为子计数器分配后继子计数器的方法如下:假设需要为子计数器a分配后继子计数器,首先,通过多次哈希运算,在存放高层子计数器向量的多级哈希表中,找到第一个空的子计数器b;然后,将空的子计数器b在多级哈希表中的块地址存储在子计数器a中,并且将子计数器a的溢出标志位设置为1;完成上述两个步骤后,该空的子计数器b即为分配给子计数器a的后继子计数器。
查找子计数器的后继子计数器的方法如下:首先,读取存储在子计数器a中的、子计数器a的后继子计数器在多级哈希表中的块地址;然后,根据块地址,经过一次哈希运算,即可在相应的块中寻址到子计数器a的后继子计数器。
有益效果:与现有的主动式统计计数器BRICK相比,DALCA的空间效率与其接近,但是时间效率明显优于BRICK。采用真实的骨干网流量数据的实验结果表明,执行查询操作时,DALCA的访存带宽需求不到BRICK的1/8,如图1所示;执行更新操作时,DALCA的访存带宽需求不到BRICK的1/4,如图2所示。此外,DALCA无需基于64位硬件平台实现,实现方式比BRICK更为灵活。
附图说明
图1、DALCA和BRICK查询操作的时间效率比较,
图2、DALCA和BRICK更新操作的时间效率比较,
图3、DALCA的结构示意图,
图4、DALCA的参数设定结果。
具体实施方式
下面分别从DALCA的结构设计、参数设定、更新操作过程和查询操作过程这四个方面,对本发明的具体实施方式进行说明。
1)DALCA的结构设计
假设计数器的总数目为N;计数周期内总的更新次数,或者说,所有计数器的计数值之和为M。将计数器向量划分为L层,第i层子计数向量记做Ci,Ci中的子计数器个数为Ni(N1=N)。第1层到第L-1层中的各个子计数器均拥有1比特的溢出标志。第i层子计数器向量对应的溢出标志向量记做Oi。在计数周期开始时将溢出标志初始化为0;如果某个子计数器在计数过程中发生了溢出,则将其溢出标志置为1。为简化设计,我们假设各层子计数器的位宽相等,均为W比特;第L层子计数器向量因为无需溢出标志,故其位宽设置为W+1比特。
从第2层开始到第L层,子计数器向量组织成多级哈希表(Multilevel Hash Table)的形式。将子计数器向量Ci(2≤i≤L)划分为长度相等的d个块(不妨设d为2的正整数次幂),每块长度为 第i层子计数器的第j个块记作 的块地址为j-1。若Ci中的某个子计数器Ci[x]计数溢出时,需向Ci+1中的子计数器Ci+1[y]进位,则称Ci+1[y]为Ci[x]的后继子计数器。当Ci[x]首次溢出时,依次查询 并将第一个非空的子计数器,假设是 作为Ci[x]的后继子计数器。 是一组哈希函数,用于计算Ci中子计数器的后继子计数器在Ci+1中所有可能的地址。 若Ci[x]首次溢出时,发现 均不为空,则在第i层的溢出列表中为Ci[x]分配后继子计数器,溢出列表的结构下文将详细说明。在确定了后继子计数器的具体位置后,需要将后继子计数器的块地址(即,p-1)存入Ci[x]的高log2(d)比特中。这样,下次访问Ci[x]的后继子计数器时,根据块地址p-1和相应的哈希函数 就可直接寻址到Ci[x]的后继子计数器 DALCA名字中的“DA”(Direct Addressing)的含义正源于此。通过上文的描述可见,Ci[x]一旦发生溢出,其有效的计数位宽为W-log2(d)比特;此时,Ci[x]的高log2(d)比特用于存放其后继子计数器的块地址。
第1层至第L-1层的子计数器向量设置有溢出列表,分别记做T1,T2,...,TL-1。溢出列表的查表关键字为发生溢出的子计数器的地址,表项值为发生溢出的子计数器及其所有后继子计数器的计数值。表项关键字的位宽为 比特,表项值的位宽为 比特。如果需要将某个子计数器放入溢出列表时,发现溢出列表已满,则称此计数器更新失败。DALCA的设计目标是设置T1,T2,...,TL-1的长度之和小于门限值TOV=32,并且在此前提下,保证各级子计数器发生更新失败的概率均小于门限值Pf=10-10。在实际应用中,如此低的更新失败概率基本可以忽略不计。因为溢出列表的总容量很小,因此,在软件实现时,可以将溢出列表放置在处理器内部的寄存器中,从而实现非常快速的查找。
图3给出了DALCA的结构示意图,为突出主题,图3中略去了溢出列表。图3中,计数器向量中共有8个计数器,划分为3层,即N=8,L=3。第1、2、3层子计数器向量的长度分别为8、4、2。为方便表述,对第i层中的子计数器,按照图3中自上而下的顺序开始编址,记作Ci[0],Ci[1],...。第2层和第3层子计数器向量划分为两个长度相等的块,即d=2。第1层子计数器向量采用哈希函数 和 对后继子计数器进行进位寻址;第2层子计数器向量采用哈希函数 和 对后继子计数器进行进位寻址。以图3中子计数器C1[0]为例,当其首次溢出时,首先访问 发现其不为空;然后,访问 发现其为空。于是,确定C1[0]的后继子计数器为 并且将 的块地址1存入C1[0]的高1比特中。图3中,带箭头的直线表示哈希函数;其中实线表示某一子计数器和其后继子计数器之间的最终映射关系。
2)DALCA的参数设定
本发明中,设定哈希表级数d=8,哈希表负载率r=0.65。在N=220,M=224这一典型流量特性参数下,设定子计数器位宽W=7,设定子计数器级数为L=5。在上述d、r、W和L取值下,第2层至第5层子计数器的数目分别是217、213、29和25个;第1层至第4层的溢出列表长度分别为15、6、3和2。此溢出列表长度已经可以保证各层子计数器向量更新失败的概率均小于Pf=10-10。参数设定的详细结果见图4。
3)更新操作的详细流程
DALCA的更新算法的描述如下。算法输入为待更新的计数器的地址i(i∈[0,N-1]),输出为空。算法的基本流程是从第1层子计数器C1[i]开始更新,若C1[i] 在更新完之后发生了溢出,则继续更新C1[i]的后继子计数器,如此迭代,直至更新完某个子计数器之后没有发生溢出为止。假设变量j表示当前所更新到的子计数器向量的层数,变量a为当前层中待更新的子计数器的地址。当更新Cj[a]时,首先判断Cj[a]及其后继子计数器是否在第j层的溢出列表Tj中,若是,则更新Tj(a)并退出循环。若Cj[a]不在Tj中,则更新Cj[a]。若更新之后没有发生溢出,则退出循环;否则,进入溢出处理流程。需要指出的是,判断Cj[a]是否溢出应当结合Oj[a]进行,若Oj[a]=0,则Cj[a]的有效计数位宽为W比特;若Oj[a]=1,则Cj[a]的有效计数位宽为W-log2d比特。在溢出处理流程中,首先判断Cj[a]是否是首次溢出。若Cj[a]不是首次溢出,则计算Cj[a]的后继子计数器的地址,更新地址指针a,继续迭代过程;若Cj[a]是首次溢出,则进行首次溢出处理流程。当Cj[a]首次溢出时,首先尝试为Cj[a]在第j+1层中分配后继子计数器。若能够成功的在Cj+1中为Cj[a]分配后继子计数器,则存储后继子计数器的块地址,计算后继子计数器的地址,并更新后继子计数器;若无法为Cj[a]在第j+1层分配后继子计数器,则将Cj[a]连同其后继子计数器一起放入第j层的溢出列表中,并更新Tj(a)。
4)查询操作的详细流程
DALCA的查询算法描述如下。算法输入为待查询的计数器地址i(i∈[0,N-1]),输出为计数值C[i]。由于计数值C[i]可能由位于多个层中的子计数器组合而成,因此,查询算法的基本流程就是按照从低层到高层的顺序,将这些子计数器依次读取并“串联”起来,从而获得完整的计数值C[i]。假设变量j表示当前查询到第j层,a为该层中待查询的子计数器的地址,b为前j-1层中C[i]的各个子计数器的有效计数位宽之和。在查询到第j层中的子计数器Cj[a]时,首先判断Cj[a]是否在第j层的溢出列表Tj中,若是,则将Tj(a)的值移位累加到C[i]中并退出循环;否则,判断子计数器Cj[a]是否发生了溢出。若Cj[a]没有发生溢出,则将Cj[a]的值移位累加到C[i]中并退出循环;若Cj[a]已经溢出,则取得Cj[a]的有效计数值,移位累加到C[i]中,并更新地址指针a和有效计数位宽之和b,继续迭代过程。
Claims (3)
1.一种面向骨干网流量分析的统计计数方法,其特征在于该方法包括计数器向量的组织,计数器的更新以及计数器的查询这三个步骤;
计数器向量的组织:计数器向量由多层子计数器向量构成,各层子计数器向量的长度随着层数的提高而递减,计数值的高位存放在高层的子计数器向量中,计数值的低位存放在低层的子计数器向量中;除最低层子计数器向量外,其他各层子计数器向量采用多级哈希表进行组织,除最高层子计数器向量外,其他各层子计数器向量中,每个子计数器均设置有1比特的溢出标志位;
计数器的更新:对计数器进行更新时,从最低层的子计数器开始;若某个子计数器在更新之后发生溢出,则根据其溢出标志位进行判断,若溢出标志位为1,则查找其后继子计数器,并向其后继子计数器进位,若溢出标志位为0,则为其分配后继子计数器,并向后继子计数器进位;
计数器的查询:对计数器进行查询时,首先从最低层的子计数器开始,若低层子计数器的溢出标志为1,则查找其后继子计数器,并且将其后继子计数器的值也累加到查询结果中,如此循环,直至查询到某个子计数器,发现其溢出标志为0,或者查询到最高层子计数器为止。
2.按照权利要求1所述的面向骨干网流量分析的统计计数方法,其特征在于为子计数器分配后继子计数器的方法如下:假设需要为子计数器a分配后继子计数器,首先,通过多次哈希运算,在存放高层子计数器向量的多级哈希表中,找到第一个空的子计数器b;然后,将空的子计数器b在多级哈希表中的块地址存储在子计数器a中,并且将子计数器a的溢出标志位设置为1;完成上述两个步骤后,该空的子计数器b即为分配给子计数器a的后继子计数器。
3.按照权利要求1或2所述的面向骨干网流量分析的统计计数方法,其特征在于查找子计数器的后继子计数器的方法如下:首先,读取存储在子计数器a中的、子计数器a的后继子计数器在多级哈希表中的块地址;然后,根据块地址,经过一次哈希运算,即可在相应的块中寻址到子计数器a的后继子计数器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210323593.6A CN102882798B (zh) | 2012-09-04 | 2012-09-04 | 面向骨干网流量分析的统计计数方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210323593.6A CN102882798B (zh) | 2012-09-04 | 2012-09-04 | 面向骨干网流量分析的统计计数方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102882798A true CN102882798A (zh) | 2013-01-16 |
CN102882798B CN102882798B (zh) | 2015-05-20 |
Family
ID=47483948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210323593.6A Expired - Fee Related CN102882798B (zh) | 2012-09-04 | 2012-09-04 | 面向骨干网流量分析的统计计数方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102882798B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219110A (zh) * | 2014-09-25 | 2014-12-17 | 中国人民解放军信息工程大学 | 一种数据包抽样方法及装置 |
CN108304409A (zh) * | 2017-01-13 | 2018-07-20 | 北京大学 | 一种基于进位的Sketch数据结构的数据频度估计方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1741526A (zh) * | 2005-09-05 | 2006-03-01 | 北京启明星辰信息技术有限公司 | 网络异常流量的检测方法及系统 |
CN101267349A (zh) * | 2008-04-29 | 2008-09-17 | 杭州华三通信技术有限公司 | 网络流量分析方法和设备 |
CN101459560A (zh) * | 2009-01-09 | 2009-06-17 | 中国人民解放军信息工程大学 | 长流的识别方法、数据流量的测量方法及其设备 |
-
2012
- 2012-09-04 CN CN201210323593.6A patent/CN102882798B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1741526A (zh) * | 2005-09-05 | 2006-03-01 | 北京启明星辰信息技术有限公司 | 网络异常流量的检测方法及系统 |
CN101267349A (zh) * | 2008-04-29 | 2008-09-17 | 杭州华三通信技术有限公司 | 网络流量分析方法和设备 |
CN101459560A (zh) * | 2009-01-09 | 2009-06-17 | 中国人民解放军信息工程大学 | 长流的识别方法、数据流量的测量方法及其设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219110A (zh) * | 2014-09-25 | 2014-12-17 | 中国人民解放军信息工程大学 | 一种数据包抽样方法及装置 |
CN104219110B (zh) * | 2014-09-25 | 2017-12-12 | 中国人民解放军信息工程大学 | 一种数据包抽样方法及装置 |
CN108304409A (zh) * | 2017-01-13 | 2018-07-20 | 北京大学 | 一种基于进位的Sketch数据结构的数据频度估计方法 |
CN108304409B (zh) * | 2017-01-13 | 2021-11-16 | 北京大学 | 一种基于进位的Sketch数据结构的数据频度估计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102882798B (zh) | 2015-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102968503B (zh) | 数据库系统的数据处理方法以及数据库系统 | |
Šikšnys et al. | Aggregating and disaggregating flexibility objects | |
CN103577440B (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
US9563658B2 (en) | Hardware implementation of the aggregation/group by operation: hash-table method | |
CN103345514B (zh) | 大数据环境下的流式数据处理方法 | |
CN103942343B (zh) | 一种面向哈希连接的数据存储优化方法 | |
CN104731799B (zh) | 内存数据库管理装置 | |
CN109471905B (zh) | 一种支持时间范围和属性范围复合查询的区块链索引方法 | |
CN101594319B (zh) | 表项查找方法和装置 | |
CN110147372A (zh) | 一种面向htap的分布式数据库智能混合存储方法 | |
CN103838770A (zh) | 一种数据逻辑分区的方法和系统 | |
CN106326475A (zh) | 一种高效的静态哈希表实现方法及系统 | |
CN105808358B (zh) | 一种用于众核系统的数据相关性线程分组映射方法 | |
CN102629269A (zh) | 一种嵌入式数据库的检索及存储方法 | |
Awad et al. | Dynamic graphs on the GPU | |
CN107193898A (zh) | 基于分级复用的日志数据流的查询共享方法和系统 | |
CN101650730A (zh) | 数据流中带权值频繁项挖掘方法和系统 | |
Liroz-Gistau et al. | Dynamic workload-based partitioning for large-scale databases | |
CN103838680B (zh) | 一种数据缓存方法和装置 | |
CN101277252A (zh) | 多分支Trie树的遍历方法 | |
CN105359142A (zh) | 哈希连接方法、装置和数据库管理系统 | |
CN109165006A (zh) | Softmax函数的设计优化及硬件实现方法及系统 | |
CN102882798B (zh) | 面向骨干网流量分析的统计计数方法 | |
CN100367203C (zh) | 一种字符串引用方法 | |
CN107294855B (zh) | 一种高性能计算网络下的tcp查找优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150520 Termination date: 20150904 |
|
EXPY | Termination of patent right or utility model |