1、基于 CountingBloomFilter 的流抽样算法研究 翟金凤 孙立博 鲁凯 林学勇 秦文虎 东南大学仪器科学与工程学院 南京市计量监督检测院 摘 要: 为了适应高速的网络环境, 实现对网络流量的准确测量, 提出了一种将Counting Bloom Filter 结构与基于报文的流抽样技术相结合的网络流等概率抽样算法, 该算法利用 4 位的 Counter 向量识别是否有新流出现, 通过实时调整抽样频率弥补新流判定的错误率, 实现对网络流的等概率抽样, 获取较真实的网络流分布情况, 提高空间和时间的利用率, 且具有可扩展性。实验结果表明, 所提出的算法测量结果能较准确地反映网络流的真实
2、信息, 可以满足当前复杂多变的高速网络环境下的流量测量需求。关键词: 高速网络; 流抽样; 计数型布隆过滤器; 等概率抽样; 哈希函数; Counter 向量; 作者简介:翟金凤 (1995-) , 女, 硕士生, 主研方向:虚拟现实;作者简介:孙立博, 副教授、博士;作者简介:鲁凯, 工程师, 学士;作者简介:林学勇, 高级工程师, 学士;作者简介:秦文虎, 教授、博士;收稿日期::基金:南京市计量院科技项目“网络公正性检测方法研究”的资助Research on flow sampling algorithm based on Counting Bloom FilterZhai Jin-fe
3、ng Sun Li-bo Lu Kai Lin Xue-yong Qin Wen-hu School of Instrument Science and Engineering, Southeast University; Nanjing Metrology Supervision and Inspection Institute; Abstract: In order to adapt to the high-speed network environment and realize the accurate measurement of network traffic, a network
4、 algorithm of flow equal probability sampling based on the combination of Counting Bloom Filter and packet-based flow sampling technique is proposed. It identifies whether there is a new flow by the 4-bit Counter vector, and realizes the equal probability sampling of the network flow by adjusting th
5、e sampling frequency constantly to compensate for the error rate of the new flow judgement. It is extensible and can obtain network flow distribution more accurately, improving the utilization rate of space and time. Experimental results also indicate that the algorithm can reflect the real network
6、flow information more accurately, meet traffic measurement needs under the current complex and volatile high-speed network environment.Keyword: high-speed network; flow sampling; Counting Bloom Filter; equal probability sampling; hash functions; Counter vector; Received: :0 概述网络流量测量是掌握网络运行状况和行为特征的一种
7、基本方法, 已被广泛应用于安全检测、运营管理和流量工程等领域。新一代互联网的规模更大、速率更快, 对系统计算和存储资源提出了更高的要求1, 增加了传统的对流经链路的所有数据包进行捕获和测量的难度。因此, 需要在流量测量中引进一些必要的测量策略, 保证既能对数据量进行缩减的同时, 又能保留流量数据的特征信息。抽样技术作为一种可扩展的数据缩减技术2, 已被众多大规模网络引进到实际的网络流量测量中, 在有效的保留了原始流量行为细节的同时, 提高了系统处理效率和资源利用率。抽样测量已成为网络流量测量领域的重要研究方向之一。然而, 当前网络的高速发展使得网络的异构性和复杂性在不断加强, 与之矛盾的却是系
8、统处理分析和存储资源的缺乏, 导致基本的抽样方法已难以满足实际测量的需求。为突破网络高速发展对抽样测量造成的不便, 同时保证测量具备一定的高效性和准确性, 以及系统资源具备一定的可控性, 考虑在测量中引入其他的一些关键技术。目前, 应用比较广泛的关键技术主要有哈希算法、超时策略和概要数据结构3, 继而衍生出了诸如流抽样、抽样与哈希结合的测量以及基于 Bloom Filter 的抽样测量等4。尤其是 Bloom Filter 凭借其简便易实现、资源利用率高以及处理速度快等优点, 吸引了众多研究学者的关注, 如何将其与抽样技术高效地结合起来成为了近年来网络流量测量领域的热点论题5。Duffield
9、 和 Grossglauser6首先将哈希函数引进抽样测量中。Shijin Kong等人7使用 Time-Out Bloom Filter 来缓解对长流的抽样偏差, 提高对短流的抽样概率, 该方法与随机抽样相比, 能够在相同的抽样率下记录并识别出更多的短流, 但是因为未考虑具体的流信息, 存在一定的应用限制。王宜青等提出一种基于 Dynamic Count Filter 的公平抽样算法8, 可以较高效地获取全面的流信息, 但 Dynamic Count Filter 存在误判率, 使得算法仍存在一定的测量误差。王少龙等9基于改进型 Bloom filter 数据结构提出一种简单实用的流抽样算法
10、, 通过调整抽样频率实现对网络流的等概率抽样, 其中改进型 Bloom filter 设置三层位向量, 通过对两层位向量的判定结果取交集实现对新流的识别, 但该算法在三层位向量交替使用时, 会将已识别的某些流再次判断为新流, 导致某些网络流的重复抽样。本文将基于报文的流抽样技术和 Bloom Filter 两者的优势相结合, 提出了一种基于 Counting Bloom Filter 的流抽样算法, 实现了对网络流的等概率抽样, 保证了对短流数据的抽样, 缩减数据量的同时又能保留较真实的流信息, 避免重复抽样, 且具有可扩展性, 适应于当前的高速网络环境。1 流量抽样测量技术1.1 基于报文的
11、流抽样报文抽样不考虑报文之间的相关性, 相对平等地对组成网络流量的报文进行抽样。常用的报文抽样方法主要有系统抽样、随机抽样和分层抽样三种。然而, 组成网络流量的报文并非独立的, 它们是为了实现特定的行为应用而产生的, 彼此间有着一定的相关性, 流则是反映这种相关性的一种途径。基于报文的抽样忽略了报文之间的相关性, 不能体现更高层面的信息, 从而无法实现掌控和提升网络性能的需求10。为此, 当前的网络研究中衍生出基于报文的流抽样测量, 即先对报文实施抽样, 再对具有相同特征的报文实施流归并操作。这样可以方便在研究时将属于特定流的分组综合起来分析, 大大缩减了需要处理的数据量, 同时将部分重要特征
12、信息保留下来, 具有一定程度的可扩展性, 更适合于当前的高速网络环境。基于报文的流抽样的普遍实现策略是在测量设备中, 为抽中的流维护一块存储空间, 先按某种频率对报文实施随机抽取, 再按报文的特征信息归并成不同的流, 并以流的形式存储在开辟的缓存中, 构成抽中的流集合。对于链路上传输的每一报文, 都将其与抽中的流集合中的属性信息作比对, 假设其与某条流的属性相匹配 (比如具有相同的源 IP 地址、目的 IP 地址、源端口、目的端口和协议类型) , 则该报文被抽中, 更新与该报文具有相同属性的相关流信息;假设其与集合中任何流的属性都不匹配, 则该报文将被丢弃。对网络流进行测量和分析, 有助于了解
13、网络的流量行为细节, 且能很大程度上释放系统存储资源。1.2 Bloom Filter 技术1.2.1 标准 Bloom FilterBloom Filter 是概要数据结构中最具代表性的一种结构, 是由 Howard Bloom于 1970 年提出的二进制向量数据结构11, 凭借着简便易实现、资源利用率高以及处理速度快等优点, 在高速网络流量测量中发挥着巨大作用。其使用长为m 的位向量 V 表示含有 n 个元素的集合 S=S1, S2, (43) , Sn。初始化时Bloom Filter 为空, 位向量全部设为 0, 同时需要定义 k 个相互独立的具有分布均匀特性的哈希函数 12, 且其值
14、域均为1, m, 计算每个元素 的哈希值 h1 (si) , h2 (si) , L, hk (si) , 将位向量 V 中对应于哈希映射的 k 个位置设 1, 原理如图 1 所示。图 1 标准 Bloom filter 原理图 下载原图Bloom Filter 与其他数据结构相比, 可以充分利用有限的存储资源, 有效提高数据查询和处理的速率, 且可以表示全集。但是 Bloom Filter 的最大的缺点就是存在一定的误判率。由 Bloom Filter 算法可以看出, 哈希映射过程中可能会将位向量中的某一位重复置 1, 这会使得在判断一个元素是否属于某个集合时, 存在一定的概率将不属于这个集
15、合的元素误判为属于这个集合, 我们定义这样的误差概率为误判率13。下面对误判率的大小进行分析估计。为简化分析模型, 假设各哈希函数是完全随机的且 knm。在该算法中, 当集合 S=S1, S2, L, Sn中的 n 个元素经过哈希对应到位向量中后, 这个位向量中某位还是 0 的概率为:其中, 1 /m 表示某一位被哈希映射为 1 的概率, (1-1 /m) 表示为 0 的概率。则误判率为:1.2.2 Counting Bloom Filter标准 Bloom Filter 仅支持对元素的插入和查询操作, 当对静态集合进行表示时, 能够呈现出较好的工作性能, 但是当要表示的集合经常变动时, 就会
16、产生一定的误差, 因为它不支持删除操作。由于 Bloom Filter 存在的误判率及不能用来表示动态集合, 诸多研究人员对Bloom Filter 提出了新的改进。目前 Bloom Filter 的经典改进结构主要有:Counting Bloom Filter (CBF) , Compressed Bloom Filter, Spectral Bloom Filter 和 Dynamic Count Filter 等, Counting Bloom Filter 是具有代表性的改进结构之一。Li Fan 等于 2000 年提出了 Counting Bloom Filter 改进结构, 解决了
17、标准Bloom Filter 无法删除元素的问题14。对于标准 Bloom Filter, 当要从集合中删除元素时, 并不能简单地将对应位置 0, 而 Counting Bloom Filter 则将标准 Bloom Filter 位向量的每一位扩展为一个小的 Counter (计数器) , 初值为 0。将元素插入操作扩展为给对应的 k 个 Counter 值分别加 1, 元素查找操作则是检验对应的 k 个 Counter 值是否为非零, 对元素执行删除操作时则将对应的 k 个 Counter 值分别减 1, 原理如图 2 所示。图 2 Counting Bloom Filter 原理图 下载
18、原图且相关研究表明, 若为 Counting Bloom Filter 中的每个计数器分配 4 位, 则当计数器值到达 16 时就溢出, 这个概率为:其中, m 为 Counter 向量的大小, 也即向量空间的大小。此时的溢出率已经微乎其微了, 可以满足大部分应用程序的需求。当然, 使用 Counting Bloom Filter 时也可以从实际需求的角度出发为 Counter 分配合适的位数。2 基于 CBF 的流抽样算法2.1 算法描述如图 3 所示, 基于 Counting Bloom Filter 的流抽样算法, 由 Counting Bloom Filter 模块、误差吸收模块和随机
19、抽样模块组成。Counting Bloom Filter 模块用于判定到来的数据分组所属网络流是否是新流;由于 Counting Bloom Filter 同样存在误判率, 误差吸收模块就用来记录当前到达的流数量, 同时根据抽样过程中产生的误差概率调整抽样频率;随机抽样模块则以调整后的抽样频率对经 Counting Bloom Filter 认定的新流进行抽样, 从而实现对网络流的等概率随机抽样, 且可以有效反映网络流的真实分布情况, 具有较高的测量精度。图 3 基于 CBF 的流抽样算法的结构图 下载原图算法的设计流程图如图 4 所示, 具体实现步骤如下所示:(1) 对 Counting B
20、loom Filter 结构的参数进行合理配置, 为 Counting Bloom Filter 结构中的每个 Counter 分配 4 位, 对哈希函数个数和向量空间大小进行合理设置;(2) 当一个分组到达时, 先解析其流标识, 计算其流标识的 k 个哈希函数值, 若 Counting Bloom Filter 结构中对应的 k 个 Counter 值均大于或等于 1, 则判定为没有新流到达, 否则判定为有新流到达;(3) 如果到来的数据分组被判定为新流, 先将该流插入到 Counting Bloom Filter 中, 对应的 k 个 Counter 值分别加 1, 流计数器加 1, 再根
21、据已插入的流个数按照公式 (2) 计算误差概率 P, 误差概率即为 Counting Bloom Filter的误判率, 式中 n 为已插入的网络流个数, 继而调整抽样频率为 (f 是整个算法的抽样频率) , 确保对任意新流的抽样频率都等于 f, 最后随机抽样模块以调整后的抽样频率对新流实施随机抽样, 完成抽样后继续处理下一分组, 重复步骤 (2) 继续循环;(4) 如果判定为没有新流到达, 则继续处理下一分组, 重复步骤 (2) 继续循环。因为 Counting Bloom Filter 存在误差概率 P, 即一个新流被成功识别出的概率为 1-P, 所以当 Counting Bloom Fi
22、lter 识别出一个新流时, 如果将随机抽样模块的抽样频率调整为 , 就能够确保对任意新流的抽样频率都等于 f, 即 , 进而满足对网络流实施等概率随机抽样的要求。图 4 基于 CBF 的流抽样算法的设计流程图 下载原图2.2 哈希函数个数和向量空间大小的选择在使用 Counting Bloom Filter 进行流抽样测量时, 还有一个比较重要的问题, 如何根据网络情况确定合适的哈希函数个数和向量空间的大小, 这对算法的效果有着很大影响。使用较少的哈希函数时, 会造成较大的误判率;使用较多的哈希函数时, 则会引起计算复杂度的上升, 以及向量空间的消耗加大;而对于向量空间大小的选择来说, 向量
23、空间较大会浪费较多的存储资源, 向量空间较小则会导致误判率的增加10。研究表明15, 当哈希函数个数 k= (ln 2) (m n) (m 为向量空间的大小, n为所表示集合元素的个数) 时, Counting Bloom Filter 可以获得最小的错误率;假设在规定错误率不能大于 E 的前提下, 为保证 Counter 向量里至少一半为0, 向量空间的大小 m 应该满足条件:mnlog 2 (1 /E) log2e, 大概就是nlog2 (1 /E) 的 1.44 倍。误判率在 m /n 固定时与 k 的关系如图 5 所示 (图中 m/ n 取 32) , 由此可以观察到, 误判率会伴随着
24、哈希函数个数的增加, 呈现出先减小后增大的变化趋势;尤其是当 k 大于 10 时, 误判率变化缓慢, 且哈希函数达到一定数量后, 反倒会使得计算复杂度和误判率增大。图 6 分别作出了 k=4, 8, 16, 32 时的误判率随m /n 的变化曲线图。如图可以得出以下结论: (1) 误判率与 m /n 成反比, 因此, 对于给定的 n, m 取得越大, 测量中产生的误判率就越小; (2) k=8, 16, 32 时, 三条误判率变化曲线比较接近, 意味着当哈希函数达到一定数量后, 继续增加 k 对误判率的影响极其微小。所以要根据实际情况对误判率与计算复杂度16进行权衡, 从而选取恰当的 k, m
25、 值。图 5 误判率随 k 的变化图 下载原图图 6 误判率随 m/ n 的变化曲线 下载原图3 实验仿真与分析3.1 实验数据仿真实验中使用的流量数据来自互联网数据分析合作组织 (CAIDA) 公开提供的真实被动测量数据 Traces, Trace1 为 2011 年 2 月 17 日在 chicago 采集得到的数据, Trace2 为 2012 年 6 月 21 日在 sanjose 采集得到的数据, 数据详情如表1 所示。实验平台为 Visual Studio 2013 和 MATLAB R2014b, 由于硬件性能限制, 选取两组 Traces 数据的前 110 个数据分组进行仿真实
26、验。表 1 Trace1 和 Trace2 流量数据信息 下载原表 3.2 实验分析使用报文头部中的源 IP 地址和目的 IP 地址作为网络流的流标识, 为 Counting Bloom Filter 结构中的每个 Counter 分配 4 位, 向量的长度即 Counter 向量的大小设为实际流总数的 20 倍, 先后使用 3 个和 10 个哈希函数进行实验仿真比较。图 7 和图 8 分别为使用 Trace1 和 Trace2 数据时, 基于 Counting Bloom Filter 的流抽样算法使用 3 个和 10 个哈希函数的测量值与流量数据真实值的比较图。图 7 Trace1 流数量
27、测量比较图 下载原图图 8 Trace2 流数量测量比较图 下载原图可以看出, 本文提出的网络流等概率抽样算法得到的流数量与真实值接近, 测量精度较高。误判率的存在会导致部分新流数据不被识别, 从而使得 Counting Bloom Filter 模块识别出的新流数量小于实际流数量, 引起测量误差。但是, 接下来的随机抽样模块将会以实时调整抽样频率的形式吸收此误差, 从而降低对最终测量结果的影响。从图 7 和图 8 中也可以明显地看出算法中哈希函数个数设为 10 时的测量精度要明显高于哈希函数个数设为 3 时, 这与 3.2 小节中得出的 Counting Bloom Filter 的误判率在
28、一定范围内会随哈希函数个数的增加而减小的结论相一致。由于当哈希函数个数大于 10 时, 误判率变化缓慢, 且哈希函数达到一定数量后, 反倒会使得计算复杂度和误判率增大, 所以本算法在实际应用中应尽量选择 10个左右的哈希函数。定义测量误差为 , 其中, n为通过算法测量出的网络流数量值, n 为网络流数量的真实值, 选取每一千个数据分组作为记录点。图 9 和图 10 分别显示了该算法对 Trace1 和 Trace2 流量数据进行实验仿真时的测量误差。图 9 Trace1 测量误差图 下载原图图 1 0 Trace2 测量误差图 下载原图可以看出, 算法中哈希函数个数设为 10 时有效的提高了
29、对网络新流的识别率, 测量误差要显著低于设为 3 时, 测量结果较为准确, 所以哈希函数个数要尽可能的设为 10 左右, 且算法的测量误差都呈现先上升后趋于平稳的趋势, 控制在一定的误差范围内, 可以满足一定精度下的网络流等概率抽样, 有效获得网络流的真实分布情况, 节省系统的处理和存储资源, 适用于当前的高速网络环境。4 结束语本文顺应网络的高速发展, 对网络流量抽样测量算法进行了一定研究。重点对基于报文的流抽样技术以及 Bloom Filter 技术进行了探究, 将 Counting Bloom Filter 结构和流抽样技术相结合, 充分利用两者的优势, 提出了一种网络流等概率抽样算法。
30、为 Counting Bloom Filter 结构中的每个 Counter 分配4 位避免溢出现象, 通过 4 位的 Counter 向量识别是否有新流出现, 并借助后续的随机抽样模块以实时调整抽样频率的形式吸收由 Counting Bloom Filter的误判率引起的测量误差, 最终实现对网络流的等概率抽样, 满足高速网络环境下对数据量缩减的需求, 同时保留较真实的流分布情况。通过仿真实验分析证明, 该算法测量所得结果趋近于网络流真实值, 可以有效获得网络流的真实分布情况, 测量精度较高, 且具有可扩展性, 能够适应于当前的高速网络环境。参考文献1林明方.高速网络流量测量中抽样技术的研究
31、J.硅谷, 2010, (10) :86+169. 2王铌.基于抽样和哈希技术的网络流量测量算法研究D.吉林大学, 2012. 3Duffield N, Lund C, Thorup M.Flow sampling under hard resource constraintsC/Joint International Conference on Measurement and Modeling of Computer Systems.ACM, 2004:85-96. 4李雪梅, 王洪源.网络流量抽样测量技术综述J.科技信息, 2011, (09) :61+117. 5周爱平, 程光, 郭晓军
32、.高速网络流量测量方法J.软件学报, 2014, (01) :135-153. 6Duffield N G, Grossglauser M.Trajectory sampling for direct traffic observationC/ACM, 2000:271-282. 7Kong S, He T, Shao X, et al.Time-out bloom filter:A new sampling method for recording more flowsC/International Conference on Information Networking.Springer,
33、 Berlin, Heidelberg, 2006:590-599. 8王宜青, 陈庶樵, 张震.基于动态计数型过滤器的网络流公平抽样机制J.计算机应用与软件, 2014, (11) :139-142. 9王少龙, 张毅卜, 徐敏, 陈珍, 夏靖波.基于改进型 Bloom Filter 的网络流抽样算法J.电子设计工程, 2015, (24) :122-125. 10孟金凤, 高仲合.基于 DCBF 的流抽样测量算法J.计算机工程与应用, 2015, (17) :92-95+162. 11张震, 汪斌强, 张风雨, 梁宁宁.基于 LRU-BF 策略的网络流量测量算法J.通信学报, 2013, (01) :111-120. 12张淋淋.网络流量测量中的抽样算法研究D.曲阜师范大学, 2015. 13Storn R, Price K.Differential evolution-a simple and efficient heuristic for global optimization over continuous spacesJ.Journal of global optimization, 1997, 11 (4) :341-359.