一种基于SketchLearn的混合网络测量方法、装置及介质与流程

文档序号:22685303发布日期:2020-10-28 12:51阅读:158来源:国知局
一种基于SketchLearn的混合网络测量方法、装置及介质与流程

本发明涉及网络测量技术,具体涉及一种基于sketchlearn的混合网络测量方法、装置及介质。



背景技术:

网络测量在数据中心网络中起着重要的作用,尤其是重击者检测、流量频率估计、熵等。这些数据是重要的网络状态参数。随着网络带宽的快速发展,精确的测量方法(由于高内存和带宽利用率)不适合在高速网络中部署。sketch(草图)结构被提出并大量运用。sketch是基于散列的数据结构,通过设置散列函数,将具有相同散列值的键值数据存入相同的桶内,以减少空间开销。桶内的数据值作为测量结果,是真实值的近似。利用开辟二维地址空间,多重散列等技术减少散列冲突,提高测量结果的准确度。大多数sketch算法更多关注系统的吞吐量、准确性和通用性,但消耗更多的内存空间。sketchlearn是一种新颖的基于草图的测量框架,它通过学习资源的统计属性来消除冲突的流量成分,从而解决资源冲突。它的想法是利用自动统计推断来提取流量统计数据。该论文认为,这些作者取得了良好的结果。sketchlearn提供了最好的通用性,因为它支持大流检测、流频率估计、熵等等,但也消耗了最多的内存空间。因此,如何解决sketchlearn的上述问题,已成为一项亟待解决的关键技术问题。



技术实现要素:

本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于sketchlearn的混合网络测量方法、装置及介质,本发明有效的缓解了大流占总流量比重过大而导致的需要sketchlearn结构内存过大的弊端,在保持和提高网络测量精度的同时节省了大量内存,且能够提高由减少数据平面的内存而带来的统计学上样本减少导致的误差增大的问题。

为了解决上述技术问题,本发明采用的技术方案为:

一种基于sketchlearn的混合网络测量方法,包括:

1)接收数据包,通过包含m个阶段、每一个阶段包含n个计数块的hashpipe结构来对接收的数据包进行n个阶段的计数,且在完成n个阶段计数后流出;将hashpipe结构流出的数据包通过sketch结构采用sketchlearn算法逻辑进行计数;

2)根据hashpipe结构以及sketch结构中的计数值获得测量结果。

可选地,步骤1)中计数块中存储的内容为一对键值对<流密钥,sum>,其中流密钥为数据包的流密钥,sum表示计数值;m个阶段中第1阶段的计数的步骤包括:对当前数据包的流密钥进行哈希运算,得到在第1阶段映射的计数块位置;若该计数块位置没有记录,则将当前数据包记录到该计数块位置并设置计数值为1;若该计数块位置有记录,若记录的流密钥相同则为该计数块位置的计数值加1,若记录的流密钥不同则将当前数据包记录到该计数块位置并设置计数值为1、并将原数据包流出到下一个阶段;m个阶段中第2~m-1阶段中任意阶段i的计数的步骤包括:对当前数据包的流密钥进行哈希运算,得到在阶段i映射的计数块位置;若该计数块位置没有记录,则将当前数据包记录到该计数块位置;在该计数块位置有记录的情况下,若记录的流密钥相同则为该计数块位置的计数值加1;若记录的流密钥不同,则在当前数据包的计数值较大时将当前数据包记录到该计数块位置并将计数值加1、且将原数据包流出到下一个阶段;在当前数据包的计数值较小时将保持该计数块位置不变、直接将当前数据包流出到下一个阶段。

可选地,所述流密钥由数据包的源地址、目的地址、源端口、目的端口和协议构成。

可选地,所述sketch结构包括哈希桶bit1~bitm和总计数位哈希桶bit0共m+1个哈希桶,其中m为数据包的位长度,每一个哈希桶包含n个用来存储映射至该位置的计数值的位置;步骤1)中将hashpipe结构流出的数据包通过sketch结构采用sketchlearn算法逻辑进行计数的步骤包括:首先将hashpipe结构流出的数据包的流密钥进行哈希运算,得到在总计数位哈希桶bit0中映射的位置,将总计数位哈希桶bit0中映射的位置进行计数更新,设置更新指针i为1;然后针对数据包的第i位开始进行遍历直至数据包的的位长度m结束,每遍历到数据包的第i位若该数据包的第i位为1则将第i个哈希桶biti中相应的位置进行计数更新。

可选地,步骤2)的详细步骤包括:

2.1)获取hashpipe结构以及sketch结构中的记录信息;

2.2)将hashpipe结构中的记录信息排序后写入大流表,所述大流表的表项字段包括hashpipe结构中的记录信息中的流密钥和计数值作为重击者检测信息的主要部分;将sketch结构中的记录信息进行大流的抽取取得位级计数器的分布并记录,形成剩余sketch表,所述剩余sketch表的表项字段包括大流的流密钥和计数值,对剩余sketch表进行数据扩充和恢复后作为重击者检测信息的次要部分,从而得到完整的重击者检测信息。

可选地,步骤2.2)中将sketch结构中的记录信息进行大流的抽取步骤包括:将sketch结构的哈希桶bit1~bitm中所有的位置进行正态分布的拟合,确定影响每一位正态分布的位置;初始化抽取大流的流密钥,将不符合正态分布的流密钥位置设为1、将不影响正态分布的流密钥位置设为0、将不确定是否对正态分布造成了影响的位置设为“*”,将设置为“*”的位置分别设置为“0”和“1”,得到待处理的流密钥列表;对于待处理的流密钥列表中的每个待处理的流密钥,去除的值设为流密钥的位中影响正态分布的最小值,观察每个待处理的流密钥进行操作后的数值是否对正态分布造成了影响,选取造成影响更为小的一种方案,从而确定出要抽取的流的流密钥和大小,抽取出以确定的流密钥并在sketch结构的相应位置减去抽取的数量,完成对sketch结构进行大流抽取。

可选地,步骤2.2)中对剩余sketch表进行数据扩充和恢复的步骤包括:

s1)初始化一个新的sketch结构;

s2)对剩余sketch表的位级计数器进行正态分布的拟合;

s3)将影响正态分布的数据放入新的sketch结构的同样的位置中;

s4)将每一位中相同位置不为“0”的数据的位设置为“1”,其余位置设置为“0”,得到流密钥;通过哈希操作验证是否能够映射回同一位置,若是,则在新的sketch结构和剩余sketch表中剔除相应的计数器值并保留该流的信息至大流表,否则在新的sketch结构中剔除相应的计数器值,剩余sketch表中不做处理;

s5)判断新的sketch结构中是否全部为“0”,若是则判定数据扩充和恢复的操作完成,否则,跳转执行步骤s4)直至新的sketch结构中全部为“0”。

此外,本发明还提供一种基于sketchlearn的混合网络测量装置,包括微处理器和存储器,该微处理器被编程或配置以执行所述基于sketchlearn的混合网络测量方法的步骤。

此外,本发明还提供一种基于sketchlearn的混合网络测量装置,包括微处理器和存储器,该存储器中存储有被编程或配置以执行所述基于sketchlearn的混合网络测量方法的计算机程序。

此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述基于sketchlearn的混合网络测量方法的计算机程序。

和现有技术相比,本发明具有下述优点:

1、本发明针对sketchlearn结构的特性进行优化,在系统结构上规避了其结构和统计学规律互相作用产生的限制,我们在sketchlearn的数据平面的结构前增设了hashpipe结构,通过包含m个阶段、每一个阶段包含n个计数块的hashpipe结构来对接收的数据包进行n个阶段的计数,且在完成n个阶段计数后流出到sketch结构,在流量进入sketchlearn结构前进行一轮处理,将大流过滤后进行其余小流量的统计工作,这样有效的缓解了大流占总流量比重过大而导致的需要sketchlearn结构内存过大的弊端,在保持和提高网络测量精度的同时节省了大量内存,且能够提高由减少数据平面的内存而带来的统计学上样本减少导致的误差增大的问题。

2、本发明步骤2)根据hashpipe结构以及sketch结构中的计数值获得测量结果时,还可进一步在控制平面将原有的sketchlearn的控制平面进行改进,增加了数据扩充和数据恢复的操作,提高由减少数据平面的内存而带来的统计学上样本减少导致的误差增大的问题。

附图说明

图1为本发明实施例方法的基本原理示意图。

图2为本发明实施例中第1阶段的计数流程图。

图3为本发明实施例中第2~m-1阶段的计数流程图。

图4为本发明实施例中top-k部分的第1阶段在网络包到达时的示例。

图5为本发明实施例中top-k部分的第1阶段更新及阶段2映射示例。

图6为本发明实施例中top-k部分的第2阶段更新及阶段3映射示例。

图7为本发明实施例中top-k部分的第3阶段更新示例。

图8为本发明实施例中sketch部分更新操作流程。

图9为本发明实施例中sketchlearn结构中更新过程的简化示例。

图10为本发明实施例中控制平面的数据表示意图。

图11为本发明实施例中步骤2)的流程示意图。

图12为本发明实施例中四种方案的流量估计和重击者及内存大小对比。

图13为本发明实施例中本实施例方法和sketchlearn的高精度和高召回率对比。

图14为本发明实施例中不同内存大小下有限元的hh和are的精度和召回率对比。

图15为本发明实施例中四种方案的流量估计的误差对比。

图16为本发明实施例中四种方案的基数的误差对比。

图17为本发明实施例中四种方案的分布的误差对比。

图18为本发明实施例中四种方案的熵值的误差对比。

具体实施方式

如图1所示,本实施例基于sketchlearn的混合网络测量方法包括:

1)接收数据包,通过包含m个阶段、每一个阶段包含n个计数块的hashpipe结构来对接收的数据包进行n个阶段的计数,且在完成n个阶段计数后流出,即图1中的top-k部分,该部分用于提取流量的前k个大流的算法,可用于检测恶意流量攻击,提供重击者检测等,体积小,操作简单,但是无法获取全部流量的基本特征;将hashpipe结构流出的数据包通过sketch结构采用sketchlearn算法逻辑进行计数,即图1中的sketch部分;

2)根据hashpipe结构以及sketch结构中的计数值获得测量结果。

本实施例基于sketchlearn的混合网络测量方法可分为数据平面和控制平面的角度来进行描述,其中数据平面是指步骤1)的数据包处理的步骤,控制平面是指步骤2)根据hashpipe结构以及sketch结构中的计数值获得测量结果的步骤。下文将分别对数据平面和控制平面的设计进行详细的叙述。

一、数据平面

在数据平面上,本实施例设计了混合的sketch结构来收集网络流的信息,并通过top-k和sketch部分记录这些信息,其中top-k部分选用了hashpipe结构,sketch部分选用了sketchlearn结构。参见图1,作为一种可选的实施方式示意,本实施例中hashpipe结构包含6个阶段,每个阶段包含35个计数块。

本实施例中,步骤1)中计数块中存储的内容为一对键值对<流密钥,sum>,其中流密钥为数据包的流密钥,sum表示计数值(该流密钥的累计数量大小);

如图2所示,m个阶段中第1阶段的计数的步骤包括:对当前数据包的流密钥进行哈希运算,得到在第1阶段映射的计数块位置;若该计数块位置没有记录,则将当前数据包记录到该计数块位置并设置计数值为1;若该计数块位置有记录,若记录的流密钥相同则为该计数块位置的计数值加1,若记录的流密钥不同则将当前数据包记录到该计数块位置并设置计数值为1、并将原数据包流出到下一个阶段;

如图3所示,m个阶段中第2~m-1阶段中任意阶段i的计数的步骤包括:对当前数据包的流密钥进行哈希运算,得到在阶段i映射的计数块位置;若该计数块位置没有记录,则将当前数据包记录到该计数块位置;在该计数块位置有记录的情况下,若记录的流密钥相同则为该计数块位置的计数值加1;若记录的流密钥不同,则在当前数据包的计数值较大时将当前数据包记录到该计数块位置并将计数值加1、且将原数据包流出到下一个阶段;在当前数据包的计数值较小时将保持该计数块位置不变、直接将当前数据包流出到下一个阶段。

下面将以具体的的更新过程为例,对上述计数过程进行实例说明:数据包k进入top-k部分,准备开始阶段1的更新,如图4所示。将数据包k进行哈希,得到该键值对(k,1)将映射至第2个计数块,此时发现阶段1的第2个计数块已经被(b,4)占据,那么将(b,4)流入下一阶段,将(k,1)更新在第2个计数块中,如图5所示。键值对(b,4)进行哈希操作后,映射至阶段2的第1存储块,发现该块被(e,3)占据,比较大小后将(b,4)更新至该位置,将(e,3)流入下一阶段,如图6所示。键值对(e,3)进行哈希操作后,映射至阶段3的第3存储块,发现该块被(l,10)占据,比较大小后将(e,3)流入下一阶段,如图7所示,由于此例子只有3个阶段,则下一阶段流入sketch部分。经过这个过程,这一网络流中的突出的大流就留在了hashpipe结构中,这些流量汇聚成为本实施例的大流表,即重击者表。

本实施例中,流密钥由数据包的源地址、目的地址、源端口、目的端口和协议构成。当数据包进入系统时,数据包的五元组(源地址、目的地址、源端口、目的端口和协议)被解析并用作流的流密钥,大小为13字节。然后进入top-k部分,并开始hashpipe算法处理,该算法有多个阶段。当数据包进入阶段结构时,它将被累积和替换。当每个特定的流从hashpipe结构中排出时,它将进入sketch结构,并根据sketchlearn算法逻辑进行计数。

本实施例中,sketch结构包括哈希桶bit1~bitm和总计数位哈希桶bit0共m+1个哈希桶,其中m为数据包的位长度,每一个哈希桶包含n个用来存储映射至该位置的计数值的位置;作为一种可选的实施方式示意,本实施例中sketchlearn结构中包含104个桶,对应流密钥(13字节)的每一个字节(bit1~bit104)和一个总计数位(bit0),每一个桶有156个位置,用来存储映射至该位置的计数值。

如图8所示,步骤1)中将hashpipe结构流出的数据包通过sketch结构采用sketchlearn算法逻辑进行计数的步骤包括:首先将hashpipe结构流出的数据包的流密钥进行哈希运算,得到在总计数位哈希桶bit0中映射的位置,将总计数位哈希桶bit0中映射的位置进行计数更新,设置更新指针i为1;然后针对数据包的第i位开始进行遍历直至数据包的的位长度m结束,每遍历到数据包的第i位若该数据包的第i位为1则将第i个哈希桶biti中相应的位置进行计数更新。

为了简化说明,假定hashpipe结构流出的数据包的流密钥为4位,如图9所示,先对hashpipe结构流出的数据包的流密钥进行哈希操作,定位此流更新的位置在第2位和第4位,在level0对应的寄存器组中相应位置进行更新,此流密钥的第一位为0,则level1对应的寄存器组不进行更新操作,第二位为1,level2对应的寄存器组在相应位置进行哈希操作,直到4位流密钥全部进行判断和更新后,此流在sketch部分的更新过程结束。当所有流量全部通过后,该系统的数据平面统计工作完毕,将数据交到控制平面进行处理。

二、控制平面

在控制平面,本实施例通过对数据平面的传入数据进行处理,获得网络流中的heavyhitter检测、流量频率估计、熵等信息。图10为控制平面的数据示意图,其中重击者检测信息由hashpipe部分的输出信息(大流表)和sketchlearn的控制平面输出的大流信息(位级计数器分布)结合而成,其余信息由本实施例将sketchlearn的控制平面处理后的剩余的sketch结构中的数据处理而成(剩余sketch表),下面本实施例进行详细描述。

如图11所示,步骤2)的详细步骤包括:

2.1)获取hashpipe结构以及sketch结构中的记录信息;

2.2)将hashpipe结构中的记录信息排序后写入大流表,所述大流表的表项字段包括hashpipe结构中的记录信息中的流密钥和计数值作为重击者检测信息的主要部分;将sketch结构中的记录信息进行大流的抽取取得位级计数器的分布并记录,形成剩余sketch表,所述剩余sketch表的表项字段包括大流的流密钥和计数值,对剩余sketch表进行数据扩充和恢复后作为重击者检测信息的次要部分,从而得到完整的重击者检测信息。

本实施例取hashpipe结构中截留的大流信息并进行排序,作为重击者检测信息的主要部分,为了弥补hashpipe结构产生的误差,本实施例对sketchlearn结构中的数据进行抽取大流的处理。

本实施例中,步骤2.2)中将sketch结构中的记录信息进行大流的抽取步骤包括:将sketch结构的哈希桶bit1~bitm中所有的位置进行正态分布的拟合,确定影响每一位正态分布的位置;初始化抽取大流的流密钥,将不符合正态分布的流密钥位置设为1、将不影响正态分布的流密钥位置设为0、将不确定是否对正态分布造成了影响的位置设为“*”,将设置为“*”的位置分别设置为“0”和“1”,得到待处理的流密钥列表;对于待处理的流密钥列表中的每个待处理的流密钥,去除的值设为流密钥的位中影响正态分布的最小值,观察每个待处理的流密钥进行操作后的数值是否对正态分布造成了影响,选取造成影响更为小的一种方案,从而确定出要抽取的流的流密钥和大小,抽取出以确定的流密钥并在sketch结构的相应位置减去抽取的数量,完成对sketch结构进行大流抽取。

对于其余的流量频率估计、熵等信息,都需要单流估计的值作为基础,下面本实施例详细叙述对于剩余sketch结构(residualsketch)中的数据进行扩充和恢复的过程。由于本实施例缩小了sketchlearn中的内存,即每个桶中的位置变少了,本实施例收集的数据量变少后,作为统计算法中重要的样本量减少了,会造成误差,本实施例需要对数据进行保留分布规律的扩充,使得数据量增多以减少样本带来的误差。受限本实施例对于剩余sketch结构中的数据进行进一步的处理,使得其正态分布变得更加完美,以减少较大的小流的影响,这一步区别于上述的抽取大流操作。

本实施例中,步骤2.2)中对剩余sketch表进行数据扩充和恢复的步骤包括:

s1)初始化一个新的sketch结构;

s2)对剩余sketch表的位级计数器进行正态分布的拟合;

s3)将影响正态分布的数据放入新的sketch结构的同样的位置中;

s4)将每一位中相同位置不为“0”的数据的位设置为“1”,其余位置设置为“0”,得到流密钥;通过哈希操作验证是否能够映射回同一位置,若是,则在新的sketch结构和剩余sketch表中剔除相应的计数器值并保留该流的信息至大流表,否则在新的sketch结构中剔除相应的计数器值,剩余sketch表中不做处理;

s5)判断新的sketch结构中是否全部为“0”,若是则判定数据扩充和恢复的操作完成,否则,跳转执行步骤s4)直至新的sketch结构中全部为“0”。

为了对本实施例基于sketchlearn的混合网络测量方法进行验证,本实施例中在caida2018中使用了一个小时的数据包对系统进行评估。该数据包有20.55k个数据流,1563570347个数据包,1398437622398字节。该数据集类似于偏斜1.0的zipf分布。

一、本实施例中首先将本实施例方法(hybridsketch/混合sketch)与现有技术中的sketchvisor、elasticsketch和asketch在流量估计(fe)和重击者(hh)方面进行比较。图12显示混合sketch产生最低的相对误差。此外,值得注意的是,sketchvisor的流量估计(fe)的平均误差是在正常路径占用128千字节,而快速路径额外占用32千字节的条件下进行评估的,而elasticsketch使用0.2兆字节,asketch在四种解决方案中,流量估计(fe)是最差的,而混合sketch仅用64兆字节保持流量估计(fe)的最低误差。此外,就重击者(hh)的平均误差而言,sketchviosr由于其数据包冲突而具有最高的错误率。有效的top-k部分使混合sketch和asketch具有接近零的重击者(hh)的平均误差。因此,对于与本实施例的方法相似的三种解决方案,本实施例的解决方案获得最佳结果,因为它关注不同结构的内存使用和精度,允许它们以最小的空间来弥补彼此的缺点。此外,混合sketch可以支持熵和流量分布等其他应用。

二、本实施例将内存资源设置为64kb,并将hh和fe的精度和召回率与sketchlearn进行比较。在sketchlearn中,位置的大小为156。本实施例可以看到在hh检测和流量估计方面的显著改进。图13显示sketchlearn在位置的大小156的情况下,仅在64kb时实现了更差的性能。混合sketch在hh精度(precisionhh)方面提高了10倍;此外,hh的召回率(recallhh)为100%,因为top-k部分是为了提取大部分大流量而导入的。移除大流量后,流量估计的平均误差降至约7%,而sketchlearn的平均误差约为60%,而sketchlearn受剩余sketch中剩余大流量的影响。因此,本实施例的方法通过适当地组合不同的解决方案,在不分配额外存储器资源的情况下,大大提高了流量估计(fe)和重击者(hh)的精度。

三、本实施例用不同的内存大小来评估sketchlearn,并与混合草图进行比较。图14显示,当sketchlearn使用1.5mb时,混合sketch结构可以提供相同水平的精确度和使用64kb时对hh和fe的are(areoffe)时,实现了存储器大小项的24倍改进。图14在sketchlearn的不同内存大小下,有限元的hh和are的精度(precisionofhh)和召回率(recallofhh)。

四、本实施例还对比了混合sketch在没有引入数据扩充算法(hs-64kb)和引入后(hs-optimized-64kb)对于sketchlearn(sl-64kb)对基数,熵和分布的误差的提升程度,本实施例的数据扩充规模为10倍,所以还对比了混合sketch在没有引入数据扩充算法但是提高10倍内存(hs-640kb)下的效果。

图15显示了四种解决方案的流量估计的误差,在相同的内存条件下,hs比sl更有效,并且优化后的hs的64kb比hs-64kb表现出更好的性能,并实现了比hs-640kb只高了近1%的错误率,基本实现了优化功能。图16,图17和图18还显示了优化后的hs的64kb取得了比hs-64kb更好的结果,接近hs-640kb。本实施例发现hs-64kb比sl-64kb更有效,同时,伴随着在原始hybridsketch中10倍的内存改进(hs-640kb)中,它提供了30%-50%的提高。最佳系统(hs-optimized-64kb)得到了hs-640kb的大约80%的效果。基本上实现了与增加10倍内存的未优化的混合sketch(hs-640kb)的相似效果。

此外,本实施例还提供一种基于sketchlearn的混合网络测量装置,包括微处理器和存储器,该微处理器被编程或配置以执行前述基于sketchlearn的混合网络测量方法的步骤。

此外,本实施例还提供一种基于sketchlearn的混合网络测量装置,包括微处理器和存储器,该存储器中存储有被编程或配置以执行前述基于sketchlearn的混合网络测量方法的计算机程序。

此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述基于sketchlearn的混合网络测量方法的计算机程序。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1