确定发出最多数据流的主机的系统与方法

文档序号:7736381阅读:111来源:国知局
专利名称:确定发出最多数据流的主机的系统与方法
技术领域
本申请涉及确定高速网络上的发出最多数据流的主机的系统和方法。
背景技术
高效准确地识别在一定时段内传播最多数据流的主机(即,最大传播者),对管理 网络和研究应用层上的主机行为(从查出DDoS攻击、蠕虫传播、对等网络热点到瞬间拥塞) 是非常重要的。目前的现有技术还不能高效准确地以超高链路速度(例如10到40(ibpS) 识别发出最多数据流的主机。已经开展了很多用于网络管理、安全和增进对互联网及其发展的更好理解的业务 统计工作。数据流的大小分布和其发源地有助于网络配置服务和业务规划设计。发现含有 多个数据包的数据流对计费和核算是有用的。研究也显示数据流层通信模式可进一步揭示 每个主机的应用层行为。为了分辨主机是否是发出最多数据流的主机,根据在本领域的一个已知的方法, 总是需要测试主机的数据流数是否在门限之上。然而,很难固定这样的门限。即使固定了 门限,也将出现太多或太少的发出最多数据流的主机。对于多数情况,应该是仅仅对少数几 个发出最多数据流的主机及其准确数据流数更感兴趣。然而,现有技术未能准确地识别大 型网络中超高速链路上的发出最多数据流的主机,例如,ISP主干链路发生的在10(ibpS到 40(ibpS范围的速度,主机总数量大约几十万,并且总数据流约几百万。

发明内容
本申请旨在提出一种系统和方法来不仅可准确地识别发出最多数据流的主机,而 且可准确地估计发出最多数据流的主机的传播基数,即每个被识别的发出最多数据流的主 机的数据流数。根据一个实施方式,公开了一种确定多个主机中的发出最多数据流的主机的系 统,包括标识器,接收一定时段内来自所述多个主机的多个数据包,并包括差值确定单元,根据所接收的数据包确定每个主机的计数值与计数误差之间的差 值;以及识别单元,根据所确定的差值排列所述多个主机,以从中识别出第一组主机;以及估计器,从所述第一组主机中选择第二组主机作为所述发出最多数据流的主机。根据另一个实施方式,公开一种从多个主机中确定发出最多数据流的主机的方 法,包括
对一定时段中来自主机的多个包抽样;根据被抽样的包确定每一个主机的计数值和计数误差之间的差值;根据确定的差值排列所述多个主机,以从中识别出第一组主机;以及从所述第一组主机选择第二组主机作为发出最多数据流的主机。根据本发明的一个实施方式,可以运行在最高速度链路(即40Gpbs)上。可用非 常有限的存储器处理百万数据流和数十万主机,比如,只需700KB存储器就能满足8M数据 流和200K主机。在识别出的最大的20个传播者中,几乎没有错误,并且这些发出最多数据 流的主机的估计的数据流数的相对误差通常约为3 %,而且,数据流数量分布越不均勻,该 相对误差会更小。现有技术无法达到这样高效率和准确性。本方法易于由普通的硬件支持 实施,并高效率地提供非常准确的信息以有助于在超高速大型网络上的应用。


图1是示出根据本申请一个实施方式的确定发出最多数据流的主机的系统的框 图;图2是概要地示出如图1所示系统的标识器(identifier)的结构的框图;图3是概要地示出如图1所示系统的估计器的结构的框图;图4是概要地示出如图1所示系统的过滤器的结构的框图;图5是概要地示出具有用于如图1所示系统的数据结构的体系结构的系统框图, 其中,出于简明的目的省去了其中的一些单元;图6是概要地示出计算主机s最终数据流数的方法的流程图;图7是概要地示出调整主机s的数据流数的算法的流程图;以及图8是概要地示出根据本申请的一个实施方式的确定发出最多数据流的主机的 方法的流程图。
具体实施例方式以下将参照附图对本申请的实施方式进行详细描述。图1为用于确定高速网络上多个主机中的发出最多数据流的主机的系统1000包 括标识器10和估计器20。标识器10接收网络中的c台主机在一定时段内通过数据流发送的数据包,其中c 是主机的数量。主机和数据流的标识信息(即主机ID和流ID)可以由数据包头(header)中 字段的任意组合来限定,例如,IP地址、端口、协议和TCP标识。在一个具体实施方式
中,源 地址 s 被用作主机 ID,并且流 ID 由 5 元组(tiple) f = <srcIP, destIP, srcPort, destPort, proto>表示。本领域技术人员应该理解本发明并不限于此,数据包头的其他字段也可用于 分别表示主机ID和流ID。标识器10包括哈希表101、最小堆(min-heap) 102、计数单元103、差值确定单元 104、识别单元105和更新单元106。如图2所示,哈希表101中的节点的关键字是主机ID,并且哈希表101中的节点的 值是最小堆102中该节点对应的位置。最小堆102的每个节点都有三个字段,即主机ID、计 数值、和计数误差。在一个周期的开始,堆102中与计数值和计数误差相关的所有字段设置为零。对每一个到达的主机ID为s和流ID f的数据包,计数单元103通过哈希表101 检查当前s是否被标识器10计数,即,检查s是否作为关键字存在于哈希表101中。如果s存在于哈希表101中,则差值确定单元104通过以下等式计算主机ID为s 的主机的数据流数Ms:Ms = counts-errs1)然后,识别单元105确定Ms是否在估计的门限T2之上。通常,估计的门限T2可被 设置为一个小整数,例如2-5。如果Ms在估计的门限T2之上,则识别单元105确定具有Ms 的主机是潜在的超级传播者,在此之后识别单元105将更新命令发送到估计器20以执行更 新程序,这将在下文描述。在预计的测量周期的结束处,识别单元105根据所计算的数据流数以升序或降序 对数据流数在T2之上的所有主机进行排列。所排列的主机中的前业个或后业个主机被识 别为潜在的发出最多数据流的主机,其中k是整数。虽然理论上k可以选自从1至主机的 总数,但当涉及网络管理和安全时,这里只考虑k是一个小数值常数的情况,例如10或20。如图2所示,标识器10还配置有用以更新哈希表101和堆102的更新单元106,这 将在下文进行描述。估计器20用于从由标识器10确定的前业个潜在的发出最多数据流的主机中选 择前k个主机。估计器20包括第一计数器201,第一计数器201配置有w X η个计数单元(η列,每 列有w个计数单元),例如,每个计数单元分别由5位表示。如图3所示,除第一计数器201以外,估计器20还包括第一选择单元202、估计单 元203、第一确定单元204、第一调整单元205、第二调整单元206、第二确定单元207、第二选 择单元208和更新单元209。更新单元209用于对第一计数器201更新。首先参照图6描述对具有单元201-208的主机s的数据流数进行估计的方法,稍 后描述更新单元的更新方法。参见图6,在步骤S601中,对于主机ID为s的主机,第一选择单元202基于ID s 从第一计数器201中选择1列对应的计数单元。在该具体实施方式
中,出于说明的目的,选 择三列(即,1 = 3)计数单元。如图5中所示,第一选择单元202配置有1个计算单元。不同的计算单元可使用 不同的哈希函数(这些哈希函数可计算例如32位哈希结果),并且每个计算单元利用哈希 函数以根据下述等式从第一计数器201中选择一列计数单元。column, = Iii(S)其中 i = 1 至Ij 12)其中,column,表示所选择的计数单元的列,输入参数是主机ID S。在步骤S602中,通过下述等式,估计单元203从同一级别中被选中的三列(Mhl (s) [i],Mh2(s) [i]和Mh3(s) [i])中选择最小一列作为估算的计数值Ms[i] = min(Mhl(s) [i],Mh2(s) [i],Mh3(s) [i])其中 i = 1 到 w 3)在步骤S603中,例如,估计单元203通过以下等式估计数据流Ms,Ms = QwXw2X ( Σ hpi"])—1,其中 i = 1 到w 4)其中aw表示偏移修正参数。例如,如在2007年6月的算法分析国际会议(International Conference on Analysis of Algorithms ;AofA' 07)上 P.弗拉若莱 (P. Flajolet)等人在“对一种近优选的基数估计算法的分析(Hyperloglog=The analysis of a near-optimal cardinality estimation algorithm),,中所提出的,aw 的值可以近 似为0. 72134。在步骤S604中,第一确定单元204确定估计的数值Ms是否小于例如2. 5w, 其中w是在第一计数单元201中每个列中的在计数单元的数量。如果第一确定单元204确 定估计的数值Ms小于2. 5w,则第一调整单元205使用图7所示的算法调整Ms,这将在下文 进行描述。否则,Ms不需要调整。如图7所示,在步骤S6041中,第一调整单元205通过下述等式将Mhl(s) [i]、Mh2fe) [i]、Mh3(s)[i]转换为 3 个位图 B1、B2、B3 Bk[i] = 0,如果 Mhk(s) [i] = 0 ;Bk[i] = 1,其他,其中 土 = 1至1」《 5)在步骤S6042 中,设置 B4 = (Bi 或 B2),B5 = (Bi 或 B3),B6 = (B2 或 B3),B7 = (Bi或B2或B; )。然后在步骤S6043中,第一调整单元205将Bl B7中的空位算作El E7,然后在步骤S6044中确定是否El E7 > 0。如果El E7 > 0,则第一调整单元205 在步骤S6045中按以下规则调整数字Ms。Ms = mMg) + Hf2) + Mg) - Hfi) - h(g) - ln(g) + ln(^)) 6)返回到图6,在步骤S605中,第二调整单元206进一步将调整值1/r XTjf加至已 调整的数据流数Ms,其中r是流量采样率。然后在步骤S606中,第二确定单元207确定已调整的数值Ms是否比另一门限2w/ r小。然后,第二选择单元208基于确定的结果选择s的数据流数,并将具有最大数据 流数的前k个主机输出为发出最多数据流的主机。特别地,在已调整的数据流数Ms比2w/ r小的情况下,在步骤S607中将Ms确定为s的数据流数;否则,在步骤S608中,将差值 counts-errs用作s的数据流数。再参见图1,系统100进一步包括过滤器30,过滤器30对在一定时期内来自网络 中主机的数据流中的数据包进行采样,并且为每一个被采样的数据包提供一个数据流数增 量用以更新标识器10。如图4所示,过滤器30配置有抽样单元301、确定单元302和过滤 单元303。抽样单元301对到达的包抽样,并根据下述等式基于流ID f计算Vf的值Vf = h (f) 7)其中,h()是均勻哈希函数,可以计算例如32位的哈希结果。数组FWm位被分布在过滤单元303中。在采样之初,数组的所有位被设置为零。确定单元302确定所计算的Vf是否比预定的抽样门限T1小。如果是,那么这个包 被抽样,然后过滤单元30检查F[Vf]。如果F[Vf] =0,则设置F[Vf] = 1,并且向标识器10 发送一个更新命令,以执行更新程序,其中,该更新命令中包括一个增量值。这将在下面描 述。特别地,如果过滤单元303中的数组F的空位数是e,那么增量值应该是m/e。以下将分别描述更新标识器10和估计器20的方法。1.更新标识器10的方法
在该实施方式中,更新标识器10的方法可以使用任何已知的前k元素方法,例如, 迈特瓦利(Metwally)在2006年提出的节省空间算法(Space-Saving algorithm)。特别 地,提出主机s的增量值应该是m/e,然后如果s在表101中,则更新单元106操作以将堆 102中的s的计数值增加m/e ;或者找出最小堆102中具有最小计数值Coimtmin的键值^lin, 将最小堆102中的对应的err值设置为Coimtmin,把Coimtmin增加m/e,用s替换最小堆102 中的ID ^lin,并且用与s相对应的新节点替换在哈希表101中与^lin对应的节点。2.更新估计器20的方法当标识器10的识别单元103确定Ms高于估计门限T2时,估计器20中的更新单元 209选择第一选择单元202中的三个计算单元Mhl(^Mh2fe)和Mh3fe),并设Mhi(s) [Vf] =max(Mhi(s) [Vf], P (Vf)),其中P (h(f))是Vf的二进制形式的最左边的1的位置。以下,参照图8描述从多个主机中确定发出最多数据流的主机的方法2000。在步骤S801中,例如,利用过滤单元30对在一定间隔时间中来自多个主机的多个 数据包抽样,以及如上所述地更新估计器20。在步骤S802中,根据每个被抽样的数据包确 定每个主机的计数值和计数误差之间的差值。在步骤S803中,根据确定的差值排列所有主 机,以识别在所排列主机中的前^(top-2k)个主机。在步骤S804中,从前业主机中挑选 前k(top-k)个主机作为发出最多数据流的主机,该步骤如图6所示,并且在这里省去其详 细描述。以上公开的系统1000可以由软件、硬件、固件和任何组合实施。方法2000可以例 如由系统1000执行。在系统1000由软件实施的情况下,参数可以被选择为m = 223,w = 256,η = 1000和c= 1000,这大约需要700KB存储器,可以安装在高速内存中,例如SRAM。另外,因为标识器10配置有最小堆102,它需要至多21ogc的存储器以更新堆102 的计数值。当c = 1000时,这个值是20,因此它可使用1/16的数据流采样率,从而平均需 要少于2次的存储操作,并且可以由SRAM处理40(ibpS的数据流。为处理极端情况,当数据 流突发并且数据流采样选择持续流时,可用小的缓存器临时保存更新信息。而且,发明人针对多种数据(包括合成数据和真实数据流数据)进行了试验。关 于识别发出最多数据流的主机几乎没有错误,估计数据流数的相对误差通常少于3%,并且 数据流数量分布越不均勻,相对误差越小。我们处理的最大数据流数是8M,主机的最大数量 是200K,并且存储消耗至多是700KB。本发明不限于上述的实施方式。本领域技术人员根据本申请的技术方案获得的其 他实施方式也应该落入本发明要求保护的范围内。
权利要求
1.一种确定多个主机中发出最多数据流的主机的系统,包括 标识器,接收一定时段内来自所述多个主机的多个数据包,并包括差值确定单元,根据所接收的数据包确定每个主机的计数值与计数误差之间的差值;以及识别单元,根据所确定的差值排列所述多个主机,以从中识别出第一组主机;以及 估计器,从所述第一组主机中选择第二组主机作为所述发出最多数据流的主机。
2.如权利要求1所述系统,其中,所述标识器进一步包括计数单元,对所接收的数据包计数,以得到所述计数值和所述计数误差。
3.如权利要求1所述系统,其中,所述计数值和所述计数误差被分布在所述标识器的 最小堆中。
4.如权利要求1所述系统,其中,所述估计器进一步包括 第一计数器001),配置有多个计数单元;第一选择单元002),从所述多个计数单元中选择至少一个计数单元; 估计单元O03),从所述至少一个计数单元中选择最小的一个计数单元,以估计所述第 二组主机中每一个主机的数据流数;以及第二选择单元O08),根据估计的数据流数选择所述第二组主机。
5.如权利要求4所述系统,其中,所述估计器进一步包括第一确定单元(204)和第一调 整单元(205),其中,所述第一确定单元(204)确定估计的数据流数是否比第一预定门限小,如果所 述估计的数据流比第一预定门限小,则所述第一调整单元(205)调整所述估计的数据流数。
6.如权利要求4所述系统,其中,所述估计器进一步包括第二调整单元006),使用预定规则进一步调整已调整的数据流数;并且 其中,所述第二选择单元(208)根据所述已调整的数据流数来选择所述第二组主机。
7.如权利要求6所述系统,其中,所述预定规则使得所述第二调整单元(206)将调整值 增加到所述已调整的数据流数,其中所述调整值与所述系统的采样率相关。
8.如权利要求6所述系统,其中,所述第二选择单元(208)按照以下规则根据所述已调 整的数据流数选择所述第二组主机如果由所述第二调整单元(206)调整的所述已调整的数据流数比第二预定门限小,则 将由所述第二调整单元(206)调整的数据流数确定为最终的数据流数;其中,所述第二门 限与所述多个计数单元以及所述系统的采样率相关;否则, 将所述差值确定为最终的数据流数;以及 选择具有最大的最终数据流数的主机作为所述第二组主机。
9.如权利要求1述系统,进一步包括过滤器,确定来自主机的由多个数据包构成的数据流中的第一数据包,以确定所述时段。
10.如权利要求9所述系统,其中,所述过滤器进一步确定是否更新所述标识器;以及 所述标识器进一步包括堆,保持所述多个数据包中每一个数据包的信息;以及更新单元,根据所述过滤器的确定结果更新所述信息。
11.如权利要求4所述系统,其中,所述估计器进一步包括用于更新所述计数单元的更新单元。
12.—种从多个主机中确定发出最多数据流的主机的方法,包括 对一定时段中来自主机的多个数据包抽样;根据被抽样的数据包确定每一个主机的计数值和计数误差之间的差值; 根据确定的差值排列所述多个主机,以从中识别出第一组主机;以及 从所述第一组主机选择第二组主机作为发出最多数据流的主机。
13.如权利要求12所述方法,其中,所述从所述第一组主机选择第二组主机作为发出 最多数据流的主机的步骤进一步包括计算所述第一组主机中每一主机的数据流数;根据所计算的数据流数排列所述第一组主机;以及从所排列的主机中选择至少一个主机作为发出最多数据流的主机。
14.如权利要求13所述方法,其中,所述计算所述第一组主机中每一主机的数据流数 的步骤进一步包括估计所述第一组主机中的每一个主机的数据流数;如果所估计的数据流数比第一预定值小,则调整估计的数据流数;如果已调整的数据流数比第二预定值小,则将已调整的数据流数确定为数据流数;或者如果已调整的数据流数大于或者等于所述第二预定值,则将所述差值确定为数据流
全文摘要
公开了在高速网络中确定发出最多数据流的主机的系统和方法。所述方法可包括对一定时段中来自主机的多个数据包抽样;根据被抽样的数据包确定每一个主机的计数值和计数误差之间的差值;根据确定的差值排列所述多个主机,以从中识别出第一组主机;以及从所述第一组主机选择第二组主机作为发出最多数据流的主机。
文档编号H04L12/24GK102150394SQ200980135731
公开日2011年8月10日 申请日期2009年9月10日 优先权日2008年9月30日
发明者施新刚, 邱达民 申请人:香港中文大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1