本发明涉及计算机网络技术领域,特别涉及一种高速网络大象流精确测量方法及架构。
背景技术:
随着网络终端的不断增多和网络应用的日益丰富,网络链路带宽和网络流量持续增长,这给网络流量测量在计算和存储资源受限的情况下带来了巨大的挑战。因此,需要采取一些可行的措施,既能够对网络流量数据进行缩减,又能够保留网络流量数据的特征信息。根据网络流量测量的应用需求,数据缩减技术主要分为抽样和数据流两种。利用抽样技术只对部分有代表性的网络流量数据进行采集处理,虽然降低了资源开销,但却存在较大的误差;利用数据流技术对所有网络流量数据进行处理,有效地减少存储资源的需求,同时保持一定的准确性。精确测量大象流是一项极为关键的网络测量任务,其在拥塞控制、流量工程和异常检测中有着广泛的应用。目前,大象流测量主要采用sketch等数据结构,但由于存在哈希冲突,常常使得老鼠流误判成大象流,严重影响大象流测量的准确率。因此,如何准确测量大象流成为了网络测量领域中亟待解决的一个关键问题。
sketch是基于哈希的数据结构,通过设置哈希函数,将具有相同哈希值的键值数据存入相同的哈希桶内,以减少空间开销。哈希桶内的数据值作为测量结果,是真实值的近似估计。sketch通过牺牲一定的准确性来达到较小的空间消耗和极快的常数级处理时间,从而使得其能很好地适应庞大的网络流量,以达到测量流大小的目的。通常利用开辟二维地址空间,多重哈希等技术减少哈希冲突,从而提高测量结果的准确度。如附图1所示,最小计数sketch(count-minsketch,cmsketch)是一种典型的sketch。cmsketch由d个数组组成,每个数组有w个计数器和一个对应的独立的哈希函数。在插入元素时,对于每个计数器数组,用对应的哈希函数将元素映射到该数组中的一个计数器,然后将这个计数器值加1。而查询时,对每个数组分别询问,得到每个数组中该元素对应的计数器的值,最终输出这些值中的最小值。
目前,弹性sketch(elasticsketch)是一种高效的网络测量方案,能够较好地测量网络中的大象流。如附图2所示,其架构由两部分组成:大流部分(heavypart)和小流部分(lightpart)。大流部分使用哈希数组记录流的相关信息,每个哈希桶中存有:流关键字(fid),正票(vote ),标志位(flag),反票(vote-)。流关键字唯一标识网络中的一条流,可从数据包的五元组中提取;正票指属于该流的数据包数量,即流大小;反票指映射至同一个哈希桶的其他数据包的数量;标志位表示小流部分是否含有此流。小流部分使用cmsketch统计从大流部分踢除的小流。
给定一个流关键字为f的数据包,通过哈希函数将其映射至哈希桶中。假设哈希桶中记录的流信息为(f',vote ,flag1,vote-),如果f=f',则将正票数加1;反之,将反票数加1,并根据反票数与正票数的比值来决定是否踢出f'。具体来说,有3种情况:
(1)当哈希桶为空时,将(f,1,f,0)插入(图2中f5),f表示小流部分无此流,插入结束。
(2)当f=f'时,将正票数加1(图2中f1),插入结束。
(3)当f≠f'时,将反票数加1(图2中f8),若此时反票数与正票数的比值小于阈值λ,将f插入cmsketch(相应计数器值加1);反之,则先将f'从哈希桶中踢出至cmsketch(相应计数器值加上正票数),再将(f,1,t,0)插入哈希桶中(图2中f9)。这里标志位设置为t,是因为f在插入大流部分之前有少部分可能插入了小流部分。
查询大流部分即可知晓大象流的信息,具体有两种情况:(1)标志位为f,其流大小为正票数;(2)标志位为t,其流大小为正票数与cmsketch中相应计数器值相加。
目前,该方案还存在着以下缺陷:
该方案采用哈希数组记录网络中每条流的流量信息,并使用投票机制遴选出正票数较多的大象流。然而,由于哈希数组容量有限,流量统计存在冲突,多条老鼠流可能与一条大象流共用一个计数单元,使得该计数单元中反票数过大,从而导致该大象流被踢除。
该方案利用哈希映射方法将网络流信息存储到多个哈希桶中,每个哈希桶存储多条流信息。当多条大象流映射至同一个哈希桶时,由于该哈希桶的容量有限,无法存储所有的大象流,从而降低了大象流测量的准确率。同时,由于大象流在哈希桶中的分布往往不均衡,导致某些哈希桶存储的大象流极少甚至没有,从而浪费了存储资源。
技术实现要素:
本发明的目的在于至少解决现有技术中存在的技术问题之一,提供一种高速网络大象流精确测量方法及架构,首先设置基于sketch的过滤器,能够对数据包中的老鼠流进行过滤,以降低后续的计算和空间开销,提高后续大象流测量的准确率;然后设置基于cuckoo哈希的提取器,能够降低大象流被踢除的概率,既节省了存储资源又提高了大象流测量的准确率。
本发明提供了一种高速网络大象流精确测量方法及架构;
根据本发明实施例的一种高速网络大象流精确测量方法,包括以下步骤:
s100、接收网络数据包,解析首部重要字段并提取流关键字;
s200、设置基于sketch的过滤器,计算所述网络数据包在所述过滤器中的映射位置,若映射位置对应的计数器值不小于过滤阈值,进入步骤s300;
s300、设置基于cuckoo哈希的提取器,在所述提取器中设置有投票流信息,所述投票流信息包括连接签名值、正票数和反票数,将所述网络数据包输送至所述提取器中,根据哈希函数和所述投票流信息对大象流进行测量和替换。
根据本发明实施例的一种高速网络大象流精确测量方法,至少具有如下技术效果:
相较于现有技术,本方法首先设置基于sketch的过滤器,能够对数据包中的老鼠流进行过滤,以降低后续的计算和空间开销,也能够降低多条老鼠流发生哈希冲突被误判成大象流的概率,提高后续大象流测量的准确率;然后设置基于cuckoo哈希的提取器,在该提取器的哈希桶的每个槽中设置有投票流信息,根据哈希函数和投票流信息对大象流进行测量和替换,能够降低大象流被踢除的概率,既节省了存储资源又提高了大象流测量的准确率。
根据本发明的一些实施例,还包括:
若所述映射位置对应的计数器值小于所述过滤阈值,所述计数器值加1,结束测量。
根据本发明的一些实施例,所述过滤器为cusketch过滤器。
根据本发明的一些实施例,所述根据哈希函数和所述投票流信息对大象流进行测量和替换,进一步包括:
s310、对大象流进行测量:
s311、根据哈希函数计算所述网络数据包映射的两个哈希桶位置;
s312、在第一个哈希桶中判断以下情况:若第一个哈希桶有空槽时,则将连接签名值、正票数和反票数写入空槽,结束测量;若数据流已存在于第一个哈希桶中时,则将槽中的正票数加1,结束测量;若数据流不存在于第一个哈希桶中且第一个哈希桶中没有空槽时,将所有槽中的反票数均加1,进入步骤s313;
s313、在第二个哈希桶中判断以下情况:若第二个哈希桶有空槽时,则将连接签名值、正票数和反票数写入空槽,结束测量;若数据流已存在于第二个哈希桶中时,则将槽中的正票数加1,结束测量;若数据流不存在于第二个哈希桶中且第二个哈希桶中没有空槽时,将所有槽中的反票数均加1,进入步骤s320;
s320、对大象流进行替换:
s321、生成待替换缓存项item1,根据哈希函数计算所述网络数据包映射的两个哈希桶位置;
s322、在两个哈希桶中,计算所有反票数与正票数的比值value,找出最大的比值valuemax、以及valuemax对应的哈希桶位置和槽位置;
s323、判断valuemax是否达到替换阈值,若达到,则将item1中信息插入valuemax的对应槽中,结束替换;若未达到,则将valuemax的对应槽中信息写入临时项item2中,并将item1中信息插入valuemax的对应槽中,进入步骤s324;
s324、计算另一个哈希桶,若哈希桶未满,则将item2中信息写入哈希桶中,结束替换;若哈希桶已满,则将item2赋值给item1,进入步骤s325;
s325、将踢除次数n加1,若n小于最大踢除次数,则跳转至步骤s322;若n不小于最大踢除次数,则删除缓存项item1,结束替换。
根据本发明的一些实施例,还包括:
s330、对数据流进行查询:
s331、接收到要查询的数据包,提取流关键字并生成连接签名值,根据哈希函数计算数据包映射的两个哈希桶位置,遍历第一个哈希桶中的所有槽并匹配连接签名值,若匹配成功,则返回正票数并标记为大象流,结束查询;若匹配失败,则进入步骤s332;
s332、遍历第二个哈希桶中的所有槽并匹配连接签名值,若匹配成功,则返回正票数并标记为大象流,结束查询;若匹配失败,则在所述过滤器中找出最小计数器值并标记为老鼠流,结束查询。
根据本发明实施例的一种高速网络大象流精确测量架构,所述架构用于执行上述的一种高速网络大象流精确测量方法,包括:老鼠流过滤层以及大象流测量层,所述老鼠流过滤层为基于sketch的过滤器,所述过滤器中设置有过滤阈值,所述过滤器用于根据流关键字计算网络数据包的映射位置,并将映射位置对应的计数器值不小于过滤阈值的数据流踢除;所述大象流测量层为基于cuckoo哈希的提取器,所述提取器中设置有投票流信息,所述投票流信息包括连接签名值、正票数和反票数,所述提取器用于根据哈希函数和所述投票流信息对大象流进行测量和替换。
根据本发明实施例的一种高速网络大象流精确测量架构,至少具有如下技术效果:
相较于现有技术,本架构为双层架构,在老鼠流过滤层中设置过滤阈值,能够对数据包中的老鼠流进行过滤,以降低后续的计算和空间开销,也能够降低多条老鼠流发生哈希冲突被误判成大象流的概率,提高后续大象流测量的准确率;在大象流测量层哈希桶的每个槽中设置投票流信息,根据哈希函数和投票流信息对大象流进行测量和替换,能够降低大象流被踢除的概率,既节省了存储资源又提高了大象流测量的准确率。
根据本发明的一些实施例,所述过滤器为cusketch过滤器。
本公开实施例所实现的更多特点和优势,将在具体实施方式或实践中给出。
附图说明
下面结合附图和实施例对本发明进一步地说明;
图1为本发明现有技术提供的cmsketch数据结构的示意图;
图2为本发明现有技术提供的弹性sketch架构的示意图;
图3为本发明实施例提供的一种高速网络大象流精确测量架构的示意图;
图4为本发明实施例提供的第一层架构的示意图;
图5为本发明实施例提供的第二层架构的示意图;
图6为本发明实施例提供的一种高速网络大象流精确测量方法的流程示意图;
图7为图6中步骤s300的进一步流程示意图;
图8为图7中步骤s310的进一步流程示意图;
图9为图7中步骤s320的进一步流程示意图;
图10为图7中步骤s330的进一步流程示意图;
图11为本发明实施例提供的一种高速网络大象流精确测量方法的大象流测量过程示意图;
图12为本发明实施例提供的一种高速网络大象流精确测量方法的流替换过程示意图;
图13为本发明实施例提供的一种高速网络大象流精确测量方法的流查询过程示意图。
具体实施方式
下面将结合附图,对本公开实施例的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。需要说明的是,在不冲突的情况下,本公开实施例及实施例中的特征可以相互组合。另外,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本公开的每个技术特征和整体技术方案,但其不能理解为对本公开保护范围的限制。
架构实施例:
参照图3至图5,本发明的一个实施例,提供了一种高速网络大象流精确测量架构,大象流精确测量架构为双层架构;
第一层架构为基于cusketch(又称保守更新sketch,即cmsketch的改进,在每次插入时,只更新最小的计数器值)过滤器的老鼠流过滤层,用于通过设置过滤阈值对老鼠流进行过滤;当然的,过滤器也可以为常用的cmsketch的过滤器,但是当网络流过多时,可能存在有多个流哈希至同一个桶,此时cm对应所有计数器更新(此时更新的是带来误差的),而cusketch每次仅更新最小的计数器值,所带来的误差更小,所以这里优选cusketch过滤器;在图3中,计数器值用value表示,value也代表着存储的数据包个数;在图4中,第一层架构具有w个计数器,d个数组,在流插入过程中,仅更新最小的计数器值valuemin,能够大幅度减小查询误差。
第二层架构为基于cuckoo哈希提取器的大象流测量层,每个哈希桶中包括四个槽,每个槽中均存储有投票流信息,所述投票流信息包括连接签名值sig、正票数vote 和反票数vote-;其中,由该投票流信息能够建立一种“循环踢除”机制,踢除的元素由其反票数vote-与正票数vote 的比值决定,被踢除的元素继续寻找下一个备用位置,直至找到空位置或者达到预设的最大替换次数;例如在图5中,每个元素有两个候选哈希桶,元素x通过两个哈希函数h1(x)和h2(x)确定,在查找的过程中,检查两个哈希桶,以查看其中一个是否包含此元素,如果元素的两个候选哈希桶中有一个是空的,则将其插入到那个空闲哈希桶中,插入完成;如果两个哈希桶中都存有元素,则随机选择一个哈希桶,删除现有的元素(这里为“a”),并将这个元素“a”重新插入到它自己的备用哈希桶位置或者直到达到最大替换次数。不同于传统的cuckoo哈希,本实施例中的第二层架构中的每个哈希桶中设置有四个槽(槽的数量可以进行设定),在每个槽中存储的流信息为连接签名值sig、正票数vote 和反票数vote-,由该投票流信息能够建立一种“循环踢除”机制,能够降低大象流被踢除的概率,既节省了存储资源又提高了大象流测量的准确率。
方法实施例:
参照图6至图10,本发明的一个实施例,提供了一种高速网络大象流精确测量方法,包括以下步骤:
s100、接收网络数据包,解析首部重要字段并提取流关键字;
这里,用fid表示流关键字;
s200、设置基于sketch的过滤器,计算网络数据包在过滤器中的映射位置,若映射位置对应的计数器值不小于过滤阈值,进入步骤s300;
在本步骤中,参考上述架构实施例,这里优选过滤器为cusketch过滤器,具体流程如下:
首先,通过d(设第一层架构中数组个数为d)个不同的哈希函数hashi(fid)分别计算数据包的映射位置,遍历d个位置找出最小计数器值countmin;然后,判断countmin与过滤阈值的大小(即判断数据包个数确定是否达到过滤要求),若countmin不小于过滤阈值,则进入步骤s300;若countmin小于过滤阈值,则countmin加1,结束操作;
s300、设置基于cuckoo哈希的提取器,在提取器中设置有投票流信息,投票流信息包括连接签名值、正票数和反票数,将网络数据包输送至提取器中,根据哈希函数和投票流信息对大象流进行测量和替换。
具体流程如下:
s310、对大象流进行测量:
s311、根据哈希函数计算网络数据包映射的两个哈希桶位置;
在本步骤中,哈希函数将根据流关键字fid计算网络数据包被映射的哈希桶位置;
s312、在第一个哈希桶中判断以下情况:(1)若第一个哈希桶有空槽时,则将连接签名值sig、正票数vote 和反票数vote-写入空槽,结束测量;(2)若数据流已存在于第一个哈希桶中时,则将槽中的正票数vote 加1,结束测量;(3)若数据流不存在于第一个哈希桶中且第一个哈希桶中没有空槽时,将所有槽中的反票数vote-均加1,进入步骤s313;
s313、在第二个哈希桶中判断以下情况:(1)若第二个哈希桶有空槽时,则将连接签名值sig、正票数vote 和反票数vote-写入空槽,结束测量;(2)若数据流已存在于第二个哈希桶中时,则将槽中的正票数vote 加1,结束测量;(3)若数据流不存在于第二个哈希桶中且第二个哈希桶中没有空槽时,将所有槽中的反票数vote-均加1,进入步骤s320;
s320、对大象流进行替换:
s321、生成待替换缓存项item1,根据哈希函数计算网络数据包映射的两个哈希桶位置;
这里,映射的两个哈希桶位置与步骤s311的两个哈希桶位置是一致的。
s322、在两个哈希桶中,计算所有反票数vote-与正票数vote 的比值value,找出最大的比值valuemax、以及valuemax对应的哈希桶位置和槽位置;
s323、判断valuemax是否达到替换阈值,若达到,则将item1中信息插入valuemax的对应槽中,结束替换;若未达到,则将valuemax的对应槽中信息写入临时项item2中,并将item1中信息插入valuemax的对应槽中,进入步骤s324;
s324、计算另一个哈希桶,若哈希桶未满,则将item2中信息写入哈希桶中,结束替换;若哈希桶已满,则将item2赋值给item1,进入步骤s325;
s325、将踢除次数n加1,若n小于最大踢除次数,则跳转至步骤s322;若n不小于最大踢除次数,则删除缓存项item1,结束替换。
在步骤s300中,每条流对应两个候选哈希桶,并存入其中任意一个哈希桶的空槽中,当两个哈希桶已满时,则将其中的一条流移至其另一候选哈希桶中,并通过哈希函数和投票流信息建立起“循环踢除”机制提供一个空槽,以保存新插入的大象流。这样使得每次尽可能踢除老鼠流,而使大象流保存在哈希桶中,从而降低了大象流被踢除的概率,既节省了存储资源提高了大象流测量的准确率。
在本实施例中,首先通过在基于cusketch过滤器设置过滤阈值能够对数据包中的老鼠流进行过滤,以降低后续的计算和空间开销,也能够降低多条老鼠流发生哈希冲突被误判成大象流的概率,提高后续大象流测量的准确率;然后通过在设置基于cuckoo哈希的提取器,在该提取器的哈希桶的每个槽中设置有投票流信息,根据哈希函数和投票流信息对大象流进行测量和替换,能够降低大象流被踢除的概率,既节省了存储资源又提高了大象流测量的准确率。
需要说明的是,本方法实施例与上述架构实施例基于相同的发明构思。
优选的,还包括步骤:
s330、对数据流进行查询:
s331、接收到要查询的数据包,提取流关键字并生成连接签名值,根据哈希函数计算数据包映射的两个哈希桶位置,遍历第一个哈希桶中的所有槽并匹配连接签名值,若匹配成功,则返回正票数并标记为大象流,结束查询;若匹配失败,则进入步骤s332;
s332、遍历第二个哈希桶中的所有槽并匹配连接签名值,若匹配成功,则返回正票数并标记为大象流,结束查询;若匹配失败,则在过滤器中找出最小计数器值并标记为老鼠流,结束查询。
参照图11至图13,为了本领域技术人员的理解,对方法实施例进行进一步的解释:包括大象流测量过程、流替换过程、以及流查询过程。
如图11,大象流测量过程:
当收到某个网络数据包p时,解析数据包首部重要字段,提取流关键字fid;
在第一层架构中,首先,通过d(设第一层架构中数组个数为d)个不同的哈希函数hashi(fid)分别计算其映射位置,遍历d个位置找出最小计数器值countmin;然后,通过数据包个数确定是否达到过滤要求,若countmin小于过滤阈值,则countmin加1,结束操作;若countmin不小于过滤阈值,则将数据包送入第二层架构中;
第二层架构中,首先,利用哈希函数将流关键字fid生成连接签名值sig,通过哈希函数计算数据包映射的哈希桶位置(index=hash1(fid));
然后,(1)当哈希桶中有空槽时(bucket[index][i].sig==0),将连接签名值sig、正票数vote 和反票数vote-(sig,vote ,vote-)插入空槽,插入结束;(2)当数据流已存在于哈希桶中时(bucket[index][i].sig==sig),将槽中的正票数(bucket[index][i].vote )加1,插入结束;(3)当数据流不存在于哈希桶中且哈希桶中没有空槽时,将所有槽中的反票数(bucket[index][i].vote-)均加1;
最后,判断是否存在备用哈希桶,若存在,则计算备用哈希桶位置(index=hash2(sig)⊕index1),重复上述(1)(2)(3);若不存在,则新建待替换缓存项item1,进入流替换过程。
如图12,流替换过程:
首先,输入item1的流关键字fid和连接签名值sig,计算两个候选哈希桶位置index1和index2;
其次,分别取出两个候选哈希桶中所有的正票数与反票数,再分别计算出反票数与正票数的比值,找出最大的比值valuemax、并记录其哈希桶位置index以及槽位置i;
然后,判断valuemax是否达到替换阈值,若达到,则将item1中信息写入哈希桶(bucket[index][i]),结束操作;反之,先将哈希桶(bucket[index][i])信息存入临时项item2,再将item1中信息插入哈希桶(bucket[index][i]);
再然后,计算item2的备用哈希桶(index=hash2(item2.sig)⊕index),若备用哈希桶未满,则将item2中信息写入备用哈希桶(bucket[index][i])中,结束操作;反之,则将item2赋值给item1;
最后,将踢除次数n加1,若n小于最大踢除次数,重复上述过程;若n不小于最大踢除次数,则删除缓存项item1,结束操作。
如图13,流查询过程:
当给出一个要查询的数据包时,首先,提取其关键字fid,然后生成连接签名值sig;其次,通过哈希函数确定数据包被映射的哈希桶位置(index1=hash1(fid)),遍历哈希桶的所有槽,若签名值匹配成功,则返回正票数并标记为大象流,查询结束;否则,通过计算确定其备用哈希桶的位置(index2=hash2(sig)⊕index1),同理,若签名值匹配成功,则返回正票数标记为大象流,查询结束;否则,去第一层架构中查询,通过d个不同的哈希函数hashi(fid)分别计算其映射位置,遍历d个位置找出最小计数器值countmin,并标记其为老鼠流,查询结束。
需要说明的是,本方法实施例与上述架构实施例基于相同的发明构思。
本实施例提供了一种高速网络大象流精确测量方法,包括:大象流测量过程、流替换过程、以及流查询过程。首先,通过本方法第一层架构,能够过滤网络中大量的老鼠流,以降低计算和空间开销,同时,过滤方案大大降低多条老鼠流发生哈希冲突被误判成大象流的概率,提高了后续大象流测量的准确率。然后,针对大象流在哈希桶中分布不均匀的问题,本方法第二层架构中,哈希桶的每个槽中设置投票流信息,根据哈希函数和投票流信息对大象流进行测量和替换,能够降低大象流被踢除的概率,既节省了存储资源又提高了大象流测量的准确率。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所述技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
1.一种高速网络大象流精确测量方法,其特征在于,包括以下步骤:
s100、接收网络数据包,解析首部重要字段并提取流关键字;
s200、设置基于sketch的过滤器,计算所述网络数据包在所述过滤器中的映射位置,若映射位置对应的计数器值不小于过滤阈值,进入步骤s300;
s300、设置基于cuckoo哈希的提取器,在所述提取器中设置有投票流信息,所述投票流信息包括连接签名值、正票数和反票数,将所述网络数据包输送至所述提取器中,根据哈希函数和所述投票流信息对大象流进行测量和替换。
2.根据权利要求1所述的一种高速网络大象流精确测量方法,其特征在于,还包括:
若所述映射位置对应的计数器值小于所述过滤阈值,所述计数器值加1,结束测量。
3.根据权利要求1所述的一种高速网络大象流精确测量方法,其特征在于,所述过滤器为cusketch过滤器。
4.根据权利要求3所述的一种高速网络大象流精确测量方法,其特征在于,所述根据哈希函数和所述投票流信息对大象流进行测量和替换,进一步包括:
s310、对大象流进行测量:
s311、根据哈希函数计算所述网络数据包映射的两个哈希桶位置;
s312、在第一个哈希桶中判断以下情况:若第一个哈希桶有空槽时,则将连接签名值、正票数和反票数写入空槽,结束测量;若数据流已存在于第一个哈希桶中时,则将槽中的正票数加1,结束测量;若数据流不存在于第一个哈希桶中且第一个哈希桶中没有空槽时,将所有槽中的反票数均加1,进入步骤s313;
s313、在第二个哈希桶中判断以下情况:若第二个哈希桶有空槽时,则将连接签名值、正票数和反票数写入空槽,结束测量;若数据流已存在于第二个哈希桶中时,则将槽中的正票数加1,结束测量;若数据流不存在于第二个哈希桶中且第二个哈希桶中没有空槽时,将所有槽中的反票数均加1,进入步骤s320;
s320、对大象流进行替换:
s321、生成待替换缓存项item1,根据哈希函数计算所述网络数据包映射的两个哈希桶位置;
s322、在两个哈希桶中,计算所有反票数与正票数的比值value,找出最大的比值valuemax、以及valuemax对应的哈希桶位置和槽位置;
s323、判断valuemax是否达到替换阈值,若达到,则将item1中信息插入valuemax的对应槽中,结束替换;若未达到,则将valuemax的对应槽中信息写入临时项item2中,并将item1中信息插入valuemax的对应槽中,进入步骤s324;
s324、计算另一个哈希桶,若哈希桶未满,则将item2中信息写入哈希桶中,结束替换;若哈希桶已满,则将item2赋值给item1,进入步骤s325;
s325、将踢除次数n加1,若n小于最大踢除次数,则跳转至步骤s322;若n不小于最大踢除次数,则删除缓存项item1,结束替换。
5.根据权利要求4所述的一种高速网络大象流精确测量方法,其特征在于,还包括:
s330、对数据流进行查询:
s331、接收到要查询的数据包,提取流关键字并生成连接签名值,根据哈希函数计算数据包映射的两个哈希桶位置,遍历第一个哈希桶中的所有槽并匹配连接签名值,若匹配成功,则返回正票数并标记为大象流,结束查询;若匹配失败,则进入步骤s332;
s332、遍历第二个哈希桶中的所有槽并匹配连接签名值,若匹配成功,则返回正票数并标记为大象流,结束查询;若匹配失败,则在所述过滤器中找出最小计数器值并标记为老鼠流,结束查询。
6.一种高速网络大象流精确测量架构,其特征在于,所述架构用于执行权利要求1至5任一项所述的一种高速网络大象流精确测量方法,包括:老鼠流过滤层以及大象流测量层,所述老鼠流过滤层为基于sketch的过滤器,所述过滤器中设置有过滤阈值,所述过滤器用于根据流关键字计算网络数据包的映射位置,并将映射位置对应的计数器值不小于过滤阈值的数据流踢除;所述大象流测量层为基于cuckoo哈希的提取器,所述提取器中设置有投票流信息,所述投票流信息包括连接签名值、正票数和反票数,所述提取器用于根据哈希函数和所述投票流信息对大象流进行测量和替换。
7.根据权利要求6所述的一种高速网络大象流精确测量架构,其特征在于,所述过滤器为cusketch过滤器。
技术总结