基于d_LeftCounterBloomFilter的深度包检测_蒋昱城
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于d-Left Counter Bloom Filter的深度包检测*
蒋昱城周健
合肥工业大学计算机与信息学院,合肥 23009
摘要:Bloom filter是目前比较广泛应用于深度包检测(DPI)的一种字符串模式匹配算法,CBF (Counter Bloom filter)在BF的基础上增加了删除功能,dlCBF(d-Left Counter Bloom Filter)是CBF 的进一步的改进算法,本文将其应用于DPI系统,分析表明该方法在存储空间占用、误检率控制和处理hash冲突等方面均较CBF算法有着长足的进步。
关键词:深度包检测 布隆过滤 计数布隆过滤 哈希 误检率
1 引言
随着网络上恶意攻击的种类的增加,诸如防火墙和IDS系统等网络安全设备需要一个更有效的工具来侦查这些攻击。
随着高速网络以每年两倍的速度增加,基于包监控的软件越发的难以跟得上网速的发展。
本文介绍了一种基于d-Left Counter Bloom Filter的深度包检测技术。
它可以在不改变网络的吞吐量的条件下检测数据流中的字符串。
d-Left Counter Bloom Filter是Bloom Filter算法的一种改进算法。
Bloom filter 本身是一个数据结构,它依靠对字符串的每个字符计算多重的哈希函数来存储这组字符串。
查询过程也许会出现误检率但决不出现漏检率。
这个数据结构的一个重要特性就是运算的时间跟字符串的数目无关。
而且,Bloom filter对每个字符串的存储量的需求跟其本身的长度也无关。
d-Left Counter Bloom Filter在继承了bloom filter的所有优点的同时最小化了其不足之处,较好的解决了删除元素和存储空间占用、误检率控制和处理hash冲突方面的问题。
2 Bloom filter 介绍及过滤引擎原理
Bloom filter的基本原理[1]是:对大小为n的规则集中每一个字符串X,利用k个hash函数,计算出k 个hash值,值域为[0,m−1];对每一个值,将对应的m个bit长度数组的对应位置设为1,如果已经是1,就不再处理。
查询时,对字符串也用相同的k个hash函数hash出k个值,检查对应的m位的相应k位是否全为1,若有一位为0,则该字符串肯定不属于规则集;若全为1,则以一定的误判率f判定该字符串属于规则集。
如图1所示,x1,x2为规则集中的字符串,而散列函数的个数为3个。
x1和x2利用散列函数生成的各自的签名,每个签名由3个散列值组成,然后将散列值作为索引在数组对应的位置设为1。
y1,y2为查询的字符串。
查询时,利用相同的散列函数得到y1和y2各自的签名,每个签名由3个散列值组成;然后,通过查看数组中对应的位置是否为1来判断是否命中。
如图1所示,可判定y1肯定不属于规则集,而y2由一定误判率判定属于规则集。
*作者简介:蒋昱城(1981-), 男, 安徽阜阳人, 硕士研究生, 研究方向: 网络安全; 周健(1960-), 男, 江苏常熟人, 副教授, 研
究方向: 网络安全复杂网络.
在文献[2]中,通过数学分析得到了误判率(false positive rate)的公式:
f=(1-e-nk/m)k
求导计算可知:当k=(m/n)ln2k时,有
fmin=(1/2)k
图1 Bloom filter 原理
文献[3]提出了Bloom filter引擎(图2)。
该引擎由一组针对特征字串长度由Lmin到Lmax的Bloom filter 组成,在图2中,Lmin为3字节,Lmax为W字节。
被检字符串每次移动一个字节,所有Bloom filter并行工作。
如果同时有几个Bloom filter匹配,则按照最长字符串优先(LSF)的原则,首先把L 值最大的字符串送分析器检查,然后,依次检查所有命中的字符串。
Bloom filter在字符串过滤应用中,其搜索时间基本上与规则集合的大小没有关系,所以能达到很高的性能。
然而,因为每个特征字符串的长度都需要一个Bloom filter来处理,Bloom filtered的个数随着最大特征串长度的增长而增长。
图2 Bloom filter引擎
3 d-Left Counter Bloom Filter原理及构造
从上述的分析可知,标准的bloom filter是一个简单的数据结构,只支持插入和查找两种操作而不支持删除操作。
因此有人在标准bloom filter的基础上提出了Counter Bloom Filter[4]这一改良算法,它将标准Bloom Filter位数组的每一位扩展为一个小的计数器(Counter),在插入元素时给对应的k(k为哈希函数个数)个Counter的值分别加1,删除元素时给对应的k个Counter的值分别减1。
Counting Bloom Filter 通过占用4倍的存储空间[4]的代价,给Bloom Filter增加了删除操作。
由于存储空间的增大,使CBF丧失了BF原本简便快捷的特点。
为更好地节约存储空间和处理哈希冲突,文献[5]在 Counter Bloom Filter的基础上进一步提出了一种改进算法——d-Left Counter Bloom Filter。
d-Left Counter Bloom Filter的提出来源于d-Left hashing,d-left hashing中的d是多个的意思,先简化这个问题分析2-left hashing。
2-left hashing指的是将一个哈希表分成长度相等的两半,分别叫做T1和T2,然后给T1和T2分别配备一个哈希函数:h1和h2。
在存储一个新的key时,同时用两个哈希函数进行计算,得出两个地址h1[key]和h2[key]。
这时需要检查T1中的h1[key]位置和T2中的h2[key]位置,哪一个位置已经存储的(有碰撞的)key比较多,然后将新key存储在负载少的位置。
如果两边一样多,比如两个位置都为空或者都存储了一个key,就把新key存储在左边的T1子表中,2-left也由此而来。
在查找一个key时,必须进行两次hash,同时查找两个位置。
而d-left hashing只是对2-left hashing的扩展。
2-left hashing固定了子表的个数是2,d-left hashing更加灵活,子表的个数是一个变量d,同时也意味着哈希函数的个数是d。
在d-left hashing中,整个哈希表被分成d个从左到右依次相邻的子表,每个子表对应一个相互独立的哈希函数。
在加入新key时,这个key 被d个哈希函数同时计算,产生d个相互独立的位置,然后将key加入到负载最轻的位置(bucket)中。
如果负载最轻的位置有多个,就把key加入到最左边的负载最轻的子表中。
同样地,如果要查找一个key,需要同时查找d个位置。
d-left CBF的具体构造过程是:首先使用一个d-left哈希表,表中每个bucket可以容纳若干个(固定数量的)cell,每个cell的位数固定,包括一个fingerprint和一个用以处理碰撞的counter。
在d-left哈希表的d个子表中,每个子表都要处理碰撞。
在某一个子表出现碰撞时,即发现已经有同样的fingerprint被存储到同一位置,这时只需把counter的值加1即可。
然后应用d-left hashing,生成d个存储地址,再把它的hash value分成d+1段:高位的d段作为d个存储地址,每个子表对应一个;剩下的低位部分作为fingerprint。
在进行key的添加操作时,先对其作一次hash,得到d个存储位置和一个fingerprint,然后判断d个位置中的负载情况,并在负载最轻的几个位置中选择最左边的插入。
如果选择的位置已经存储了相同的fingerprint,就把那个cell的counter加1。
在进行key的删除操作时,同样地作一次hash,然后在d个存储位置查找相应的fingerprint,如果找到就将这个cell置空或者将相应的counter减1。
4 理论分析
现在将d-left counting bloom filter与标准的counting bloom filter作一个比较。
假设要表示的集合有m 个元素,构造d-left counting bloom filter的各个参数如下:
(1)d-left哈希表包含4个子表;
(2)每个子表包含m/24个bucket,使得bucket的平均负载是6个元素;
(3)子表中每个bucket可以容纳8个cell,8个就能以很高的概率保证不会溢出;
(4)cell中每个counter包含2位,给fingerprint设置全0表示一个空的状态,这样才能用2位counter 容纳4个相同的fingerprint。
用r位表示fingerprint,则误检率(false positive)的概率就是24*2-r。
此时两个fingerprint完全相同的概率为(1/2)r,由于d-left hashing使查找时可以有4个选择(有4个子表),每个选择对应一个bucket,而一个bucket平均负载是6,因此需乘以24。
整个d-left counting bloom filter所需的所有位数为4m(r+2)/3。
其中r+2表示一个cell的位数,m是集合元素个数,一个bucket能容纳8个cell,而平均负载是6个,因而乘以4/3就得到全部的位数。
假设对于m个元素的集合,counting bloom filter使用cm个counter,每个counter使用4位,哈希函数的个数k使用最优值cln2,得到false positive的概率为(2-ln2)c,总共使用4cm位。
若设c = (r+2)/3,则两种方法使用的位数相同,这时比较一下false positive的概率会发现在r ≥ 7时:
(2-ln2)(r+2)/3 > 24 · 2-r
而且使用的位数越多,两个false positive概率的差距就越大。
当r = 14时,c = 16/3,虽然两个结构使
用的位数相同,但counting bloom filter比d-left counting bloom filter的false positive概率大了100倍以上。
再换个角度分析下在false positive概率相同的情况下两者占用空间的情况。
假设标准的counting bloom filter使用9个4位的counter(每个元素36位),6个独立的哈希函数,得到的false positive概率为0。
01327。
d-left counting bloom filter使用11位的fingerprint(每个元素52/3位),得到的false positive概率为0。
01172。
我们计算一下,52/3÷36= 0。
48,也就是说,d-left counting bloom filter只使用了counting bloom filter不到一半的空间,就得到了比counting bloom filter更低的错误率。
5 结束语
本文提出了一种基于d-left counting bloom filter的DPI检测方法,并分析得出了它相对于标准的counting bloom filter在存储空间和误检率的控制上有较大的进步的结论。
参考文献
[1] B. Bloom. Space/time tradeoffs in in hash coding with allowable errors[J]. Communications of the ACM,
13(7): 422-426, 1970.
[2]Jacob Honoroff . An Examination of Bloom Filters and their Applications[J]..
[3]S. Dharmapurikar, P. Kri shnamurthy, T. Sproull, and J. Lockwood. Deep Packet Inspection using Parallel
Bloom Filters[J].. In IEEE Hot Interconnects 12, 2003.
[4]Fan L.Cao P, Almeida J.Broder A. Summary cache: a scalable. wide—area web cache sharing protoco1[J]..
IEEE /ACM transactions 2008, 8(3).
[5]Bonomi , Mitzenmacher , Panigrahy , Singh , Varghese. An Improved Construction for Counting Bloom
Filter[J]..
A DPI Technology Based on d-left Counter Bloom Filter
Jiang Yu-cheng Zhou Jian
School of Computer &Information, Hefei University of Technology, Hefei, 230009
Abstract: Bloom filter is widely used in Deep Packet Inspection (DPI) of a string pattern matching algorithm. CBF (Counter Bloom filter) add the function to the BF . dlCBF (d-Left Counter Bloom Filter) is a further improved algorithm of CBF . We used it in DPI system, analysis shows that the method compared with the CBF in areas such as storage space occupied, false positive rate control and deal with hash conflict has made a great progress.
Keywords: DPI; bloom Filter; counter bloom filter; hash; false positive rate。