一种BitMap高速模糊查找方法与流程

文档序号:19128760发布日期:2019-11-13 02:23阅读:642来源:国知局
一种BitMap高速模糊查找方法与流程

本发明涉及网络通信技术,特别涉及一种bitmap高速模糊查找方法。



背景技术:

在网络通信系统中经常涉及表项查找处理,传统的表项查找通常采用基于地址的查找方式,即按照地址的顺序逐个对表项进行查找,此方法查找方式不够灵活,而且效率不高。而内容模糊查找方式可以按照指定条件灵活的对表项进行配置,通过调整内容匹配的优先级,提高查找的效率和精确性。

在网络通信系统中经常涉及表项查找处理,传统的表项查找通常采用基于地址的查找方式,即按照地址的顺序逐个对表项进行查找,此方法查找方式不够灵活,而且效率不高。而内容模糊查找方式可以按照指定条件灵活的对表项进行配置,通过调整内容匹配的优先级,提高查找的效率和精确性,但现有的写表查表模式,占用大量逻辑资源,降低逻辑处理速率,且不易扩展。



技术实现要素:

本发明的目的在于提供给一种bitmap高速模糊查找方法,用于解决上述现有技术的问题。

本发明一种bitmap高速模糊查找方法,其中,包括:软件建立和下发规则表项:将需要五元组组合划分为avl树;每棵avl树按照精确匹配优先级最高,模糊匹配精度越高优先级越高的原则存储规则节点,块内和块间按照优先级线性排列;按优先级线性排列包括:建立bitmap查找表,五元组信息分割建立查找索引;更新bitmap时需根据掩码匹配多种组合;基于规则表项信息生成索引key,然后切分成多块子key;多块子key共用多种排列,对应到bitmap中的匹配状态信息;按照优先级排列下发到逻辑的规则表项;对ip网络报文的五元组根据索引key查表包括:将软件下发的规则表项,依次存入blockram中,一定容量的blockram逻辑标记为一个tab表,每个规则表项按照软件的bitmap表模式,以列为单位排列;根据软件下发的规则表项,设置tab地址深度和宽度,表项由每个子key可能的排列数,按照地址分块,对应地址与子key的值相同为当前子key匹配成功;逻辑按照软件下发的规则表项,在所有tab表写完成后,在查索引key,一个ip网络报文的五元组,在tab中,将索引key切分为多块子key,每块子key值作为地址读取tab表的数据,1为当前子key匹配,0为当前子key不匹配,按照子key优先级依次取出每块子key对应tab表的数据,并使用子key查找的结果进行与运算,计算之后,每个tab表得到1bit的计算结果,tab表共得到匹配对应值mkey,计算mkey对应表项的匹配情况。

根据本发明的bitmap高速模糊查找方法的一实施例,其中,在系统内存中建立表项,表项内容根据实际需要填写,表项内容称之为表项要素,表项要素的内部细化为五元组的多个组成元素;包括:avl树={规则1,规则2,规则3,…规则y},y个规则表项组成一棵avl树;规则n={元素an,元素bn,元素cn,元素dn,元素en},一个规则表项包含五个组成元素;软件下发表项到逻辑时,根据需要划分出x棵avl树,按照优先级线性排列规则表项,依次发送到逻辑。

根据本发明的bitmap高速模糊查找方法的一实施例,其中,五元组组合128bit信息分配包括:{目的ip(32bit),源ip(32bit),协议号(8bit),目的端口(16bit),源端口(16bit),自定义域(24bit)};avl树1存储的规则优先级最高,avl树32存储的规则优先级最低,4k条规则表按32*128分块存储。

根据本发明个的bitmap高速模糊查找方法的一实施例,其中,4k条规则按优先级线性排列包括:建立bitmap查找表,五元组128bit信息按4bit分割建立查找索引;软件下规则表时需同时更新对应的128*512bitmap表;基于规则表项信息生成128bit的索引key,然后切分成32块4bit子key;每个4bit子key有2^4=16种可能的排列,32块子key共用16*32=512种排列,对应到bitmap中512bit的匹配状态信息;128个规则表项就对应128*512=64kbit的匹配状态信息。

根据本发明个的bitmap高速模糊查找方法的一实施例,其中,128个规则表项对应128*512=64kbit的匹配状态信息,bitmap表共有32个,即按照优先级排列下发到逻辑的4k条规则表项。

根据本发明个的bitmap高速模糊查找方法的一实施例,其中,对ip网络报文的五元组的128bit的索引key,查表流程包括:首先逻辑将软件下发的4k=64*64条规则表项,依次存入64块36k的blockram中,36k的blockram逻辑标记为一个tab表,每个规则表项按照软件的bitmap表模式,以列为单位排列,每个tab表存64个规则表项;根据软件下发的规则表项为512bit,设置tab地址深度为512,宽度为64,512bit的表项由每个4bit子key有2^4=16种可能的排列,按照地址分出32块,对应地址与子key的值相同即为当前子key匹配成功。

根据本发明个的bitmap高速模糊查找方法的一实施例,其中,4k条规则表项在逻辑中的存储方式包括:逻辑按照软件下发的规则表项,在所有tab表写完成后,查索引key,一个ip网络报文的五元组为128bit的索引key,在64个tab中,将索引key切分为4bit的32块子key,每块子key值作为地址读取tab表的数据,64个表项对应子key在当前地址上的值,1为当前子key匹配,0为当前子key不匹配,按照子key优先级依次取出32块子key对应tab表的数据,并使用32块子key查找的结果进行与运算,计算之后,每个tab表得到1bit的计算结果,64个tab表共得到64bit的匹配对应值mkey,mkey的0bit到63bit分别对应0表项到63表项的匹配情况。

根据本发明个的bitmap高速模糊查找方法的一实施例,其中,mkey按照分段相或的方式,从优先级最高的表项位开始,低32bit先做或运算,如果值为0,即前32个表项不匹配,再从剩余32bit做或运算,如果值为0,说明当前mkey不匹配,如果值为1,再分割出16bit做上述操作,直到找到优先级最高的bit位,每个mkey同时得出匹配的bit位,再按照64个tab表的优先级送出优先级最高的bit位。

本发明改进了内容模糊查找方式的写表查表模式,节省逻辑资源,提高逻辑处理速率,同时以模块化方式多个例化扩展,资源可预估,方便快捷,降低了设计风险。

附图说明

图1为avl树的示意图;

图2所示为avl树按优先级排列顺序的示意图;

图3所示为4k条按优先级线性排列的规则表项图;

图4所示为128bit的索引key的示意图;

图5所示为按照优先级排列下发到逻辑的4k条规则表项图;

图6所示为4k条规则表项在逻辑中的存储方式图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

本发明bitmap高速模糊查找方法包括:软件在系统内存中建立表项,表项内容根据实际需要填写,表项内容称之为表项要素,表项要素的内部又可细化为多个组成元素,例如五元组(源ip、目的ip、源端口号、目的端口号、协议号),将表项的组成元素称之为{元素a,元素b,元素c,元素d,元素e},表项要素的位宽由构成它的元素决定,按照组成元素的数值不同,不同表项要素称之为{规则1、规则2、规则3、规则4},每个规则作为一个节点,按照优先级划分为需要的n种规则要素组合,每种规则要素组合标记为一棵avl树,规则要素组合个数设为y。

avl、规则、元素关系式如下:

avl={规则1,规则2,规则3,….规则y};//y个规则表项组成一棵avl树;

规则n={元素an,元素bn,元素cn,元素dn,元素en};//一个规则表项包含五个组成元素;

软件下发表项到逻辑时,根据需要划分出x棵avl树,按照优先级线性排列规则表项,依次发送到逻辑。

逻辑将软件下发的n条规则表项,按下发顺序依次存入blockram中,以减少逻辑分片片(slice)资源占用,提高逻辑处理速率,再根据索引key查找相匹配的规则表项,在模糊查找时,一个索引可能会匹配上多个掩码不同的规则表项,多个相匹配的表项按照下发规则表项时的优先级排列,逻辑输出优先级最高的规则表项索引。

1、软件建立和下发规则表项包括:

图1为avl树的示意图,如图1所示,在实际使用中,比如将需要关心的五元组组合划分为32棵avl树。

五元组组合128bit信息分配如下:

{目的ip(32bit),源ip(32bit),协议号(8bit),目的端口(16bit),源端口(16bit),自定义域(24bit)};

图2所示为avl树按优先级排列顺序的示意图,如图2所示,每棵avl树按照精确匹配优先级最高,模糊匹配精度越高优先级越高的原则存储规则节点,avl树1存储的规则优先级最高,avl树32存储的规则优先级最低,4k条规则表按32*128分块存储,块内和块间需严格按照优先级排列。

图3所示为4k条按优先级线性排列的规则表项图,如图3所示,4k条按优先级线性排列包括:

建立bitmap查找表,五元组128bit信息按4bit分割建立查找索引。

软件下规则表时需同时更新对应的128*512bitmap表。

更新bitmap时需根据掩码匹配多种组合,这样逻辑查表时不需要掩码信息。

图4所示为128bit的索引key的示意图,如图4所示,首先基于规则表项信息生成128bit的索引key,然后切分成32块4bit子key。

以上每个4bit子key有2^4=16种可能的排列,32块子key共用16*32=512种排列,对应到bitmap中512bit的匹配状态信息。

图5所示为按照优先级排列下发到逻辑的4k条规则表项图,128个规则表项就对应128*512=64kbit的匹配状态信息。如下,这样的bitmap表共有32个,即按照优先级排列下发到逻辑的4k条规则表项。

2、逻辑根据索引key查表

实际使用中,对ip网络报文的五元组(dip,sip,dport,sport,protocol),即128bit的索引key,查表流程如下:

首先逻辑将软件下发的4k=64*64条规则表项,依次存入64块36k的blockram中,36k的blockram逻辑标记为一个tab表,每个规则表项按照软件的bitmap表模式,以列为单位排列,每个tab表存64个规则表项,由于每个tab表在逻辑中占用一个36k的blockram资源,节省逻辑slice资源,提高逻辑处理速率,同时以模块化方式多个例化扩展,资源可预估,方便快捷,降低设计风险。

在一个tab表中有64个表项,根据软件下发的规则表项为512bit,设置tab地址深度为512,宽度为64,512bit的表项由每个4bit子key有2^4=16种可能的排列,按照地址分出32块,对应地址与子key的值相同即为当前子key匹配成功,比如:五元组的key1如果是4bit0001,则在地址1上五元组与数据为1的表项的低4bit匹配成功。

图6所示为4k条规则表项在逻辑中的存储方式图,如图6所示,

逻辑按照软件下发的规则表项,在所有tab表写完成后,即可在查索引key,一个ip网络报文的五元组,即128bit的索引key,在64个tab中,同时将索引key切分为4bit的32块子key,每块子key值作为地址读取tab表的数据,即64个表项对应子key在当前地址上的值,1为当前子key匹配,0为当前子key不匹配,按照子key优先级(可适配,默认地址由低到高优先级降低)依次取出32块子key对应tab表的数据,并使用32块子key查找的结果进行与运算,计算之后,每个tab表可以得到1bit的计算结果,64个tab表共得到64bit的匹配对应值mkey,mkey的0bit到63bit分别对应0表项到63表项的匹配情况。

每个64bit的mkey,按照分段相或的方式,从优先级最高的表项bit位开始,低32bit先做或运算,如果值为0,即前32个表项不匹配,再从剩余32bit做或运算,如果值为0,说明当前mkey不匹配,如果值为1,再分割出16bit做上述操作,直到找到优先级最高的bit位,每个mkey同时得出匹配的bit位,再按照64个tab表的优先级送出优先级最高的bit位,即第几个表项与索引key匹配。

本发明改进了内容模糊查找方式的写表查表模式,节省逻辑资源,提高逻辑处理速率,同时以模块化方式多个例化扩展,资源可预估,方便快捷,降低了设计风险。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1