HiPAC算法简介

来源:互联网 发布:淘宝整点 抢购技巧 编辑:程序博客网 时间:2024/05/29 18:37

HiPAC是一个高性能的报文分类算法,nf-HiPAC是其衍生出来的一个支持Linux内核框架包过滤模块,由用户态应用程序和内核态模块组成,用于代替iptable。这个算法其实出来挺早的,第一个版本支持linux2.4,最新的版本也可以支持2.6了。不过貌似应用不是很广泛,猜测原因是由于算法比较复杂维护困难。HiPAC和iptables对比起来,其优点主要在于分类规模很大时依然能够保持较好的性能。
网上能够找到的文章基本是这两篇,一篇是nf-HiPAC的简介,一篇是HiPAC算法的介绍,应该是一篇论文。由于文档不太好搜,我把文档粘上来。
H-HiPAC-04
nf-hipac-nfws2005

HiPAC的思路基本上是将报文分类抽象为多维的范围匹配问题,算法大概如下:

一维范围匹配:
假设每个分类规则有三个参数,我们规定如下四条规则。编号位1的规则优先级最高,编号为4的策略优先级最低。用几何图形表示四条规则中的第一个参数,如下图所示:黑色坐标轴最左边表示0,最右边表示无穷大,四条规则将坐标轴分为6个区域。上面有数字标识的横线表示规则和优先级,横线越低表示优先级越高。查找时只要判断第一个参数落在哪个范围内,就可以根据优先级一下子确定第一个条件满足哪一个或多个规则。

多维范围匹配:
对于多维范围匹配,可以在第一维的基础上按照上述规则对第二维参数进行转化。转化的规则基本就是,将第一维中有重复规则的区域,再次按照第二维参数进行划分,划分的方法和第一维相同。

查找的例子:
如下图所示,按照第一个参数40查找第一维,落在绿色小叉号表示的区间,其中1、2、3、4条规则都满足。继续按照第二维的参数进行查找,在第二维的图中,落入左侧区间,其中1、2、3、4规则都满足。继续按照第三维的参数进行查找,落入最左侧的区间,其中3、4规则满足条件。但由于3的优先级高,所以匹配规则三。

大体的算法就这样,查找不算复杂,但插入、删除节点时需要复杂的更新,且树的大小不好控制。不过还是有很多思想可以借鉴的。

0 0