[发明专利]一种数据包的高效过滤方法有效
申请号: | 201310270424.5 | 申请日: | 2013-07-01 |
公开(公告)号: | CN103338155A | 公开(公告)日: | 2013-10-02 |
发明(设计)人: | 朱静轩;黄文实;孙林;孟彦 | 申请(专利权)人: | 安徽中新软件有限公司 |
主分类号: | H04L12/813 | 分类号: | H04L12/813 |
代理公司: | 安徽汇朴律师事务所 34116 | 代理人: | 胡敏 |
地址: | 230000 安徽省合肥市*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种数据包的高效过滤方法,该方法首先将所有过滤规则进行预处理,得到与CPU内核数量相同份数的各过滤字段类型过滤规则的过滤规则检索表和映射关系表,然后各CPU内核获取待处理数据包的各过滤字段信息,通过右移位操作和二分法查找,从而确定各过滤字段信息对应的过滤规则,然后对数据包中各过滤字段信息按照相应的过滤规则进行处理,从而完成数据包过滤。该方法能够快速准确地匹配过滤规则,大大提高了过滤速度和数据吞吐性能,提高了过滤数据包的效率。 | ||
搜索关键词: | 一种 数据包 高效 过滤 方法 | ||
【主权项】:
一种数据包的高效过滤方法,该方法由以下步骤组成:1)按以下步骤建立包含各过滤字段类型过滤规则的过滤规则检索表和映射关系表:1.1)首先,将所有过滤规则按过滤字段类型进行分类,并将属于同一种过滤字段类型的过滤规则写入一种过滤规则检索表中,然后将所有的过滤规则检索表复制出与处理数据包的CPU内核数量相同份数的拷贝并存储到内存中,并且每份拷贝均设有一与所述的CPU的一个内核对应的编号;1.2)然后,将每份拷贝中各过滤规则检索表中的过滤规则携带的过滤字段数据范围的端点值投影到数轴上表示,从数轴原点开始,将相邻的两个端点间的区间作为一个有效区间,从而得到各过滤字段类型的有效区间索引表,并按顺序对每个有效区间索引表中的各区间进行编号;1.3)将所述数轴上各过滤规则检索表中字段范围的最大值与数轴原点之间的长度用二进制表示,得到有效区间索引表的二进制长度值,然后将各有效区间索引表的长度值做右移位操作至结果为小于或等于256的十进制数,并以该十进制数作为元区间的个数将有效区间索引表的长度值等分为大小为2Y的元区间,再按每个元区间在所述数轴上的顺序把每个元区间用十进制数进行编号,得到各过滤字段类型的元区间索引表和各过滤字段类型对应的右移位操次数表;其中,所述的元区间大小2Y中的Y为所述右移位操次数;1.4)然后,以元区间索引表和有效区间索引表中元区间和有效区间在数轴上的对应关系,建立所述元区间索引表、有效区间索引表以及过滤规则之间的映射关系表;2)按以下步骤完成数据包的过滤操作:2.1)从待过滤的数据包中获取各过滤规则检索表所需的过滤字段数据;2.2)获取当前处理该数据包的CPU内核的编号,并根据该编号定位内存中处理该数据包所对应的过滤规则检索表的拷贝;2.3)将步骤2.1)中获取的过滤字段数据用二进制表示,并将所得到的二进制数值做右移位操作,再将移位操作的结果转换为十进制数,然后以该十进制数作为元区间编号,由所述的映射关系表中依次查找到对应的有效区间的范围、有效区间的编号和过滤规则进行过滤规则匹配;在上述查找过程中,如查找到对应的有效区间编号仅为一个,该有效区间编号对应的过滤规则即与该过滤字段匹配;若查找到对应的有效区间编号为多个,则先对查找到对应的有效区间的范围做二分法查找,直至有效区间的范围缩小到仅对应于一个有效区间编号时,该有效区间编号对应的过滤规则即与该过滤字段匹配;当一个过滤字段对应多条匹配的过滤规则时,则选择过滤规则检索表中过滤规则优先级高的规则作为与该过滤字段匹配的过滤规则;该步骤中所述的右移位操作次数与该过滤字段的类型在所述各过滤字段类型对应 的右移位操次数表中的右移位操次数相等;2.4)按各过滤字段类型的匹配优先级重复步骤2.3)完成待处理数据包中的所有过滤字段类型的过滤规则匹配后,CPU的各内核则对相应数据包拷贝进行过滤处理。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于安徽中新软件有限公司,未经安徽中新软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310270424.5/,转载请声明来源钻瓜专利网。