一种基于TCAM实现多命中的方法技术

技术编号:23445862 阅读:41 留言:0更新日期:2020-02-28 20:02
本发明专利技术公开了一种基于TCAM实现多命中的方法。该方法控制TCAM的逻辑在基于FPGA的硬件平台上实现,通过利用TCAM中的uda字段,即在TCAM对当前key搜索命中后,会将该key对应规则rule的uda字段与命中结果一并返回,而FPGA内部逻辑在收到TCAM返回的响应结果后会对uda字段进行分析,以决定如何对当前命中的包进行复制。该方法通过利用TCAM中的uda字段,只需对当前包进行一次TCAM查询,无需将包缓存后查询多次,从而加快了搜索速度,提高了搜索性能。本发明专利技术提出的方法在数据匹配搜索技术领域有广泛的应用价值。

A method of multi hit based on TCAM

【技术实现步骤摘要】
一种基于TCAM实现多命中的方法
本专利技术涉及数据包搜索匹配
,尤其涉及一种基于TCAM实现多命中的方法,用于实现基于TCAM进行搜索匹配时数据包的多命中问题。
技术介绍
在数据包搜索匹配
,由于TCAM具有规则存储条数多、搜索匹配速度快的优点而被广泛采用。例如,博通公司生产的TCAM芯片NLA12000可存储按160b计算的规则达52万条,且搜索匹配速度达20亿次每秒。在利用TCAM实现数据搜索匹配的方案中,一个技术难点就是多命中问题,即当前的数据包可能命中TCAM数据库database中的多条规则。但由于TCAM的优先级匹配特性,即在数据包命中优先级最高亦即存储在数据库中地址低的规则后,后面的规则即便也会命中当前包,TCAM也不会再去进行搜索匹配。所以,在使用TCAM作为数据搜索匹配方案时,如何解决多命中问题便显得尤其重要。在论文“AlgorithmsforAdvancedPacketClassificationwithTernaryCAMs”中提到如何利用TCAM实现数据搜索的多命中,其思想是,将数据包进行缓存,然后从数据包中提取key后发送到TCAM进行搜索匹配,比如匹配到地址为m的规则,接下来将地址为m的规则禁掉,将先前的key再次发送到TCAM进行搜索匹配,由于地址为m的规则已经禁掉,所以TCAM不会再命中地址m的规则,而是继续向后查找,比如又匹配到地址为n的规则,这样的过程一直反复到在将key送到TCAM后,TCAM返回未命中的结果而结束。在多次查询结束后,最后的动作是要将TCAM中先前禁掉的规则重新使能,以便不对接下来的包搜索产生影响。上述论文通过反复查询多次并配合禁掉已经命中的规则的方法,从而实现了基于TCAM的多命中。但从该论文实现的方法中可以看到,此方法需要搜索匹配多次,从而降低了搜索性能,即单位时间搜索匹配包的数量变少。所以,一种好的基于TCAM实现多命中的方法在数据搜索匹配
起到了至关重要的作用。
技术实现思路
本专利技术的目的就是要解决上述技术中存在的问题,提供一种基于TCAM实现的查找速度快、搜索性能高的多命中方案,即一种基于TCAM实现多命中的方法。本专利技术采取的技术方案是:一种基于TCAM实现多命中的方法,该方法控制TCAM的逻辑在基于FPGA的硬件平台上实现,其特征在于,步骤如下:1)、收到的数据包pkg分别送到key_extract模块与pkg_filter模块,其中,key_extract模块负责从数据包中提取待搜索的key,通常该key为数据包中的IP五元组;pkg_filter模块会将收到的数据包进行缓存,因为此时还未对当前包进行搜索,并不知道如何对当前包进行处理,即是否舍弃;2)、key_extract模块将从数据包中提取的key送至TCAM,TCAM会将此key与在数据库database中事先存储的规则rule进行对比,如果key值与rule值相等,则表明当前待搜索的数据包中有关心的信息存在,从而TCAM返回命中的结果;TCAM中的uda字段,是用户可自定义的字段,与每一条规则一一对应,即当TCAM返回命中结果的同时,会将事先定义好的uda字段一并返回,其核心就在于此,通过利用TCAM中用户可自定义的uda字段,来告知FPGA内部逻辑在当前包命中后该如何去做;3)、规定uda字段中包含两个字,一个字为rule_id表示规则的ID号,一个字为multi_match表示当前包实则命中了多条规则;pkg_filter模块接收TCAM返回的响应结果,并根据响应结果决定如何对先前缓存的数据包进行处理,如若TCAM返回未命中的结果,pkg_filter模块会将缓存的数据包丢掉;如若TCAM返回了命中的结果,pkg_filter会根据uda字段中的multi_match字将包复制多份,即产生多个命中结果;复制多份的原则是,multi_match字中的每个位表示有另外一条规则也会命中,故pkg_filter模块根据multi_match中的各个比特位是否为1决定rule_id加多少,比如,TCAM返回的uda={rule_id=255,multi_match=’b0000_0000_1111_1111},那么pkg_filter在读到multi_match中最低8个位为1时,便会将命中的包复制8份,并分别赋以255+0、255+1、255+2、255+3、255+4、255+5、255+6、255+7的不同ID号给新复制的8个包,用以标识有8条不同的规则实则都命中了当前包。本专利技术所产生的有益效果是:在基于TCAM实现多命中的方案中,通过利用TCAM中的uda字段,只需对当前包进行一次TCAM查询,无需将包缓存后查询多次,一方面由于无需对数据包进行缓存,故节省了FPGA内的存储资源,另一方面对当前包只需搜索一次,故提高了系统搜索性能。本专利技术提供的方法在数据搜索匹配
有广泛的应用价值。附图说明图1为本专利技术基于TCAM实现多命中方法的原理图。具体实施方式以下结合附图对本专利技术做进一步说明:图1示意了本专利技术基于TCAM实现多命中方法的原理图,现从数据流的角度结合图示对本专利技术提出的方法做详细叙述。收到的数据包pkg分别流入key_extract模块与pkg_filter模块;其中,key_extract模块负责从数据包中提取待搜索的key,通常该key为数据包中的IP五元组;pkg_filter模块会将收到的数据包进行缓存,因为此时还未对当前包进行搜索,并不知道如何对当前包进行处理,即是否舍弃。图中的TCAM是专用于数据搜索匹配的芯片,其内部的database即数据库存储区域用于存储事先设定的规则rule,TCAM芯片本身并不规定rule的格式,可按照项目应用场景的不同自行定义rule格式,通常在网络分流
中,都选定数据包中的IP五元组字段作为关心的rule信息;与每一条规则一一对应的为uda,即用户可自定义的字段,其用法是,在TCAM芯片搜索匹配命中后,比如命中了在数据库database中的地址为m的规则,那么TCAM在返回命中信息的同时,会将该地址为m规则对应的uda信息一并返回,需要强调的是,uda字段是用户自定义的,且与每一条规则一一对应。key_extract模块将从数据包中提取的key送至TCAM,TCAM会将此key与在数据库database中事先存储的规则rule进行对比,如果key值与rule值相等,则表明当前待搜索的数据包中有关心的信息存在,从而TCAM返回命中的结果,与此同时带回相应的uda值。规定uda字段中包含两个字,一个字为rule_id表示规则的ID号,一个字为multi_match表示当前包实则命中了多条规则。pkg_filter模块接收TCAM返回的响应结果,并根据响应结果决定如何对先前缓存的数据包进行处理。如若TCAM返回未命中的结果,pkg_filter模块会将缓存的数据包丢掉;如若TCAM返回了命中的结果,pkg_filter会根据uda字段中的本文档来自技高网
...

【技术保护点】
1.一种基于TCAM实现多命中的方法,该方法控制TCAM的逻辑在基于FPGA的硬件平台上实现,其特征在于,步骤如下:/n1)、收到的数据包pkg分别送到key_extract模块与pkg_filter模块,其中,key_extract模块负责从数据包中提取待搜索的key,通常该key为数据包中的IP五元组;pkg_filter模块会将收到的数据包进行缓存,因为此时还未对当前包进行搜索,并不知道如何对当前包进行处理,即是否舍弃;/n2)、key_extract模块将从数据包中提取的key送至TCAM,TCAM会将此key与在数据库database中事先存储的规则rule进行对比,如果key值与rule值相等,则表明当前待搜索的数据包中有关心的信息存在,从而TCAM返回命中的结果;/nTCAM中的uda字段,是用户可自定义的字段,与每一条规则一一对应,即当TCAM返回命中结果的同时,会将事先定义好的uda字段一并返回,其核心就在于此,通过利用TCAM中用户可自定义的uda字段,来告知FPGA内部逻辑在当前包命中后该如何去做;/n3)、规定uda字段中包含两个字,一个字为rule_id表示规则的ID号,一个字为multi_match表示当前包实则命中了多条规则;pkg_filter模块接收TCAM返回的响应结果,并根据响应结果决定如何对先前缓存的数据包进行处理,如若TCAM返回未命中的结果,pkg_filter模块会将缓存的数据包丢掉;如若TCAM返回了命中的结果,pkg_filter会根据uda字段中的multi_match字将包复制多份,即产生多个命中结果;复制多份的原则是,multi_match字中的每个位表示有另外一条规则也会命中,故pkg_filter模块根据multi_match中的各个比特位是否为1决定rule_id加多少,比如,TCAM返回的uda={rule_id=255,multi_match =’b0000_0000_1111_1111},那么pkg_filter在读到multi_match中最低8个位为1时,便会将命中的包复制8份,并分别赋以255+0、255+1、255+2、255+3、255+4、255+5、255+6、255+7的不同ID号给新复制的8个包,用以标识有8条不同的规则实则都命中了当前包。/n...

【技术特征摘要】
1.一种基于TCAM实现多命中的方法,该方法控制TCAM的逻辑在基于FPGA的硬件平台上实现,其特征在于,步骤如下:
1)、收到的数据包pkg分别送到key_extract模块与pkg_filter模块,其中,key_extract模块负责从数据包中提取待搜索的key,通常该key为数据包中的IP五元组;pkg_filter模块会将收到的数据包进行缓存,因为此时还未对当前包进行搜索,并不知道如何对当前包进行处理,即是否舍弃;
2)、key_extract模块将从数据包中提取的key送至TCAM,TCAM会将此key与在数据库database中事先存储的规则rule进行对比,如果key值与rule值相等,则表明当前待搜索的数据包中有关心的信息存在,从而TCAM返回命中的结果;
TCAM中的uda字段,是用户可自定义的字段,与每一条规则一一对应,即当TCAM返回命中结果的同时,会将事先定义好的uda字段一并返回,其核心就在于此,通过利用TCAM中用户可自定义的uda字段,来告知FPGA内部逻辑在当前包命中后该如何去做;
3)、规定uda字段中包含两个字...

【专利技术属性】
技术研发人员:贾朋朋刘凤新陈伟峰李灵侠
申请(专利权)人:天津光电通信技术有限公司
类型:发明
国别省市:天津;12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1