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的优先级高,所以匹配规则三。
大体的算法就这样,查找不算复杂,但插入、删除节点时需要复杂的更新,且树的大小不好控制。不过还是有很多思想可以借鉴的。
- HiPAC算法简介
- HiPAC高性能规则匹配算法之查找过程
- HiPAC高性能规则匹配算法之查找过程
- 算法简介
- 算法简介
- 算法简介
- 算法-简介
- 算法简介
- 算法简介
- 算法简介
- 算法简介
- 算法简介
- 玩转高性能超猛防火墙nf-HiPAC
- 算法简介,算法重要性
- ipset高大上性能果断将nf-HiPac逼下课
- 可编译易用的模块化nf-HiPAC移植成功
- 可编译易用的模块化nf-HiPAC移植成功
- PrincetonUniversity-Coursera 算法:算法简介
- eclipse导出jar包无法运行,或者一闪而过的问题解决
- [Spark浅析][1]概念及简单集群搭建
- opencv中图像和轮廓的匹配Hu距
- Mac OS下Android Studio的Java not found问题
- 笔记:MapReduce Design Patterns
- HiPAC算法简介
- linux tar命令
- 使用 jfreechart 生成 曲线、柱状图、饼状图、分布图 展示到JSP
- MyISAM InnoDB 区别
- 工具——Source Insight常用设置
- How do I download a image from curl (https site)的方法
- python环境下使用sqlalchemy和mysql搭建数据库环境及编码
- 2015做更好的自己,不悔昨日,不畏将来,不负自己。
- keyboardType键盘和APP里有多少键盘的样式和UItextView和UitextField的一些知识