[发明专利]一种基于hash表实现的带掩码五元组规则的匹配方法有效
申请号: | 201010611764.6 | 申请日: | 2010-12-17 |
公开(公告)号: | CN102111331A | 公开(公告)日: | 2011-06-29 |
发明(设计)人: | 刘朝辉;刘兴奎;张英文;李静;刘灿;李锋伟 | 申请(专利权)人: | 曙光信息产业(北京)有限公司 |
主分类号: | H04L12/56 | 分类号: | H04L12/56;H04L29/06 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 100084 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 hash 实现 掩码 五元组 规则 匹配 方法 | ||
技术领域
本发明涉及网络数据处理领域,具体涉及一种基于hash表实现的带掩码五元组规则的匹配方法。
背景技术
在网络报文分类系统中,很多系统是把报文的五元组(协议,源ip,目的ip,源端口,目的端口)作为分类的规则。五元组规则可能是精确的,要求每一项都要精确比对,比如一个规则的精确五元组(tcp,10.0.0.1,10.0.0.2,80,1234)指定了一个特定tcp连接,每个报文都要和它精确比对。五元组规则也可能包含掩码,被掩码掩掉的部分是不需要比对的,比如一个规则的带掩码的五元组(tcp,10.0.0.1,10.0.0.x,80,x)指定了一个网段10.0.0.x内所有的tcp连接,每个报文和该规则比对时,不需要考虑x的值。
一般对少量的带掩码规则,需要使用tcam芯片实现;对大量的精确规则,需要使用hash表实现。
在某些系统上,需要有大量的五元组规则,tcam芯片受限于容量大小,无法支持,必须采用hash表实现。但是,采用hash表结构存储五元组规则,当五元组规则带掩码时,需要把掩码规则扩展成精确规则,比如对包含掩码的一条规则,10.0.0.x的网段要扩展成10.0.0.0,10.0.0.1,…,10.0.0.255共256条精确规则,这会导致规则表容量迅速扩大,带来存储资源的巨大浪费。
在一般应用系统中,带掩码的五元组规则的掩码位置不是随机的,往往比较固定,也就是说掩码格式不多,比如在某真对局域网报文分类的系统中,只有ip的第四个字段会带掩码,也就是说,规则格式只有下列几种:
1.精确规则(protocol,sip1.sip2.sip3.sip4,dip1.dip2.dip3.dip4,sport,dport)
2.源ip网段掩码(protocol,sip1.sip2.sip3.x,dip1.dip2.dip3.dip4,sport,dport)
3.目的ip网段掩码(protocol,sip1.sip2.sip3.sip4,dip1.dip2.dip3.x,sport,dport)
4.源目ip网段掩码(protocol,sip1.sip2.sip3.x,dip1.dip2.dip3.x,sport,dport)
发明内容
本发明目的是提供一种方法解决hash表存储五元组规则是规则表过大的问题。
一种基于hash表实现的带掩码五元组规则的匹配方法,步骤如下:
A、依次读取每条掩码规则,修改掩码规则,将掩码屏蔽的字段设置为特定值,通过hash运算把新掩码规则存储到hash表中;
B、从输入报文中提取要比对的五元组;
C、将五元组输入掩码计算模块,对系统需要支持的每种掩码规则,分别计算出一个新的五元组;
D、依次循环,用每个计算出的新五元组查找hash表,若找到,则匹配该规则,若掩码计算模块计算出的所有的掩码五元组,都在hash表中找不到对应规则,则该报文不匹配任何规则。
本发明的一种优选技术方案在于:步骤A中掩码的屏蔽字段设置的特定值可以为0。
本发明的用计算资源代替存储资源完成系统功能,虽然增加了多次匹配的计算量,但是对目前的多核cpu或专用芯片来说,计算资源是足够的,用多余的计算资源避免稀缺的存储资源浪费,可以使整个系统达到应用要求。
附图说明
图1是本发明实现原理图
具体实施方式
本发明与一般使用hash表的方法不同,在创建hash表时,把带掩码的规则中掩掉的不关心字段设置为特定值(比如0),存入hash表。在根据hash表查找之前,增加了一个掩码计算模块,该模块对每一个从报文中提取出的要到hash表中比对规则的五元组,先按照系统预设的每种掩码格式修改五元组,再拿每个修改后的五元组到hash表中查找。
实现方法和过程如下:
(1)掩码规则存入hash表
依次读取每条掩码规则,修改掩码规则,把掩掉的不关心字段设置为预设置,通过hash运算把该规则存到hash表中。
(2)从输入报文中提取要比对的五元组
(3)计算掩码后的五元组
把报文五元组输入掩码计算模块,对系统需要支持的每种掩码规则格式,计算出一个新的五元组。
(4)查找hash表
依次循环,用每个计算出的掩码五元组查找hash表,如果找到,则该报文匹配上了该五元组规则,如果掩码计算模块计算出的所有的掩码五元组,都在hash表中找不到对应规则,则该报文不匹配任何规则。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于曙光信息产业(北京)有限公司,未经曙光信息产业(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010611764.6/2.html,转载请声明来源钻瓜专利网。