[发明专利]一种FPGA高效规则匹配方法及终端有效
申请号: | 201911249261.6 | 申请日: | 2019-12-09 |
公开(公告)号: | CN111107068B | 公开(公告)日: | 2021-03-09 |
发明(设计)人: | 肖相生;高渊;李占才;刘杨;赵丰 | 申请(专利权)人: | 江苏云涌电子科技股份有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 225300 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 fpga 高效 规则 匹配 方法 终端 | ||
本发明公开了一种FPGA高效规则匹配方法,用固定群延迟以线速过滤报文,给哈希冲突的关键字串加上一个数值,再进行一次哈希运算来解决哈希冲突问题,第一次哈希运算结果读出的数据当做数值C或0,与关键字串相加后再进行一次哈希运算,第二次哈希运算结果读出的数据就是匹配规则的索引地址,经过与匹配项对比,根据匹配结果丢弃报文缓存队列里不满足要求的报文,输出满足要求的报文,从而实现对报文的精确过滤输出。
技术领域
本发明涉及报文过滤技术领域,具体是一种FPGA高效规则匹配方法及其终端。
背景技术
以太网防火墙通过规则匹配来实现报文过滤,而规则匹配的实现方法决定了报文过滤的效率和报文群延迟。但是用规则匹配的关键字串进行哈希运算时,会有输入不同而哈希值相同的情况,称为哈希冲突。比如来自两个不同的报文经过哈希运算时,会得到相同的值,这样会错误的过滤掉不需要过滤的报文,因此,如何解决哈希冲突问题,是实现报文过滤的关键性技术问题。
发明内容
本发明的目的在于解决以上存在的技术问题,提供一种FPGA高效规则匹配方法。
为实现上述目的,本发明采用如下的技术方案:
一种FPGA高效规则匹配方法,包括以下步骤:
步骤1、解析报文
报文解析器解析来自以太网的报文,提取所述报文中的源MAC地址、目的MAC地址、源IP地址、目的IP地址、源端口号、目的端口号作为待匹配项信息,并把所述待匹配项信息输出给待匹配项缓存队列,把所述报文输出给报文缓存队列;
步骤2、输出用于哈希运算的关键字串和匹配项:
所述待匹配项缓存队列将关键字串输出给第一哈希运算器,用于哈希运算,并把所述待匹配项信息输出给匹配对比器;所述关键字串是所述待匹配项信息的一项匹配信息或多项匹配项信息的组合;
步骤3、第一次哈希运算:
所述第一哈希运算器对所述关键字串进行哈希运算,哈希结果作为地址输出给匹配项索引读取器;
步骤4、第一次读取匹配项索引RAM
所述匹配项索引读取器用所述步骤3的地址读取匹配项索引RAM,如果读出的数值ID 为1,
则:关键字串′=关键字串+字符串;
否则:关键字串′=关键字串+0;
并将所述关键字串′输出给第二哈希运算器;
步骤5、第二次哈希运算
所述第二哈希运算器对所述关键字串′进行哈希运算,哈希结果作为地址输出给所述匹配项索引读取器;
步骤6、第二次读取匹配项索引RAM
所述匹配项索引读取器用所述步骤5的地址读取匹配项索引RAM,获得匹配规则的读取地址,并输出给匹配项RAM;
步骤7、获取匹配项并发送给匹配项对比器
所述匹配项RAM通过所述步骤6的读取地址作为索引值读取所述匹配项RAM并获得匹配项,并将所述匹配项发送给所述匹配项对比器;
步骤8、对匹配项数据进行比较判断
所述匹配项对比器将所述步骤7发来的匹配项与所述步骤2待匹配项缓存队列发来的匹配项进行比较判断,并输出结果给所述报文缓存队列,所述结果为输出报文或丢弃报文;
步骤9、过滤输出
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江苏云涌电子科技股份有限公司,未经江苏云涌电子科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911249261.6/2.html,转载请声明来源钻瓜专利网。