一种基于FPGA实现的掩码匹配方法及系统技术方案

技术编号:35498232 阅读:12 留言:0更新日期:2022-11-05 17:00
本发明专利技术公开了基于FPGA实现的掩码匹配方法,将掩码和配置关键字分别拆分为多组子掩码和多组子配置关键字,将子配置关键字和子掩码做掩码运算得到多组掩码后的子配置关键字;将掩码后的子配置关键字进行运算得到第一哈希值,将第一哈希值作为存储地址,得到存储有多组掩码后的子配置关键字的存储表;将报文中的关键字拆分为多组子关键字,将子关键字和子掩码做掩码运算得到掩码后的子关键字,将组掩码后的子关键字进行哈希运算得到多个第二哈希值;在存储表中查询得到第二哈希值所对应的存储地址,将对应的掩码后的子配置关键字与掩码后的子关键字进行比较,若一致时,判定该报文命中规则。通过该发明专利技术增加了访问控制列表的条目,能够实现降成本。能够实现降成本。能够实现降成本。

【技术实现步骤摘要】
一种基于FPGA实现的掩码匹配方法及系统


[0001]本专利技术涉及通信
,尤其涉及一种基于FPGA实现的掩码匹配方法及系统。

技术介绍

[0002]数据网络通信过程中对IP报文进行交换和路由时,需要对IP某段进行匹配或者某些单bit的模糊匹配查找,通过模糊查找可以实现少量的规则数据就能够满足实际的使用需求。在路由器等网络设备中,通过设置访问控制列表(Access Control List,访问控制列表)的控制规则,对每个到来的数据包,从数据包获取相关的信息,基于访问控制列表设置的规则,确定该数据包的下一步处理方式,比如丢弃、转发等。
[0003]传统路由器一般会使用硬件TCAM(Ternary Content Addressable Memory,三态内容寻址存储器)来实现。TCAM用于实现ACL功能和路由等功能。TCAM使用硬件芯片实现数据查找的方式,可以在一个时钟周期内对规则库的所有条目进行查找并在确定的时间周期后给出查找结果。TCAM中每个bit位可以设置为0、1、x三种状态,存储为x的bit位可以屏蔽查找,实现掩码匹配功能,使其既能进行精确匹配查找,又能进行模糊匹配查找。但是TCAM制造成本昂贵,能够存储的规则库大小有限,访问控制列表的条目较少,所以用TCAM实现ACL功能是相对昂贵的方案。

技术实现思路

[0004]本专利技术的目的在于提供一种基于FPGA实现的掩码匹配方法及系统,增加了访问控制列表的条目,并能够实现降成本。
[0005]为实现上述目的,本专利技术提供了一种基于FPGA实现的掩码匹配方法,所述方法包括:获取用户配置的掩码和配置关键字,按照相同的拆分格式分别将所述掩码和配置关键字拆分为多组子掩码和多组子配置关键字;将每一组子配置关键字和对应组的子掩码做掩码运算,得到多组掩码后的子配置关键字;将每一组掩码后的子配置关键字进行哈希运算得到多个第一哈希值,将每一个第一哈希值作为存储地址,该组掩码后的子配置关键字存储到该存储地址对应的存储空间,以得到存储有多组掩码后的子配置关键字的存储表;获取接收到的报文中的关键字,将所述关键字拆分为多组子关键字,将每一组子关键字和对应组的子掩码做掩码运算,得到对应的掩码后的子关键字,将每一组掩码后的子关键字进行哈希运算得到多个第二哈希值;在所述存储表中查询得到每一个第二哈希值所对应的存储地址,将该存储地址对应的掩码后的子配置关键字与掩码后的子关键字进行比较,若所有组的掩码后的子关键字与对应的掩码后的子配置关键字均一致时,判定该报文命中规则。
[0006]优选的,所述配置关键字、掩码以及关键字,均包括源IP地址、目的IP地址、源端
口、目的端口、IP协议号和协议版本。
[0007]优选的,所述按照拆分格式将所述配置关键字拆分为多组子配置关键字,拆分的步骤包括:将源IP地址按照比特位从低位到高位的顺序依次进行分组,将源IP地址中M1个bit位作为一组源IP地址,将得到的各组源IP地址依次循环放入到对应的每一组子配置关键字中;将目的地址按照比特位从高位到低位的顺序依次进行分组,将目的地址中M1个bit位作为一组目的IP地址,将得到的各组目的IP地址依次循环放入到对应的每一组子配置关键字中;将源端口按照比特位从低位到高位的顺序依次进行分组,将源端口中M2个bit位作为一组源端口地址,将得到的各组源端口地址依次循环放入到对应的每一组子配置关键字中;将目的端口按照从比特位从高位到低位的顺序依次进行分组,将目的端口中M2个bit位作为一组目的端口地址,将得到的各组目的端口地址依次循环放入到对应的每一组子配置关键字中。
[0008]优选的,所述拆分的步骤包括:设置将配置关键字拆分为4组子配置关键字;将源IP地址的第1个8 bit值放入到第一组子配置关键字中,将源IP地址的第2个8 bit值放入到第二组子配置关键字中,将源IP地址的第3个8bit值放入到第三组子配置关键字中,将源IP地址的第4个8bit值放入到第四组子配置关键字中,将源IP地址的第5个8bit值放入到第一组子配置关键字中,依次类推,直至源IP地址的所有比特值均放入到对应组的子配置关键字中。
[0009]优选的,所述拆分的步骤包括:将目的IP地址的第16个8 bit值放入到第一组子配置关键字中,将目的IP地址的第15个8 bit值放入到第二组子配置关键字中,将目的IP地址的第14个8bit值放入到第三组子配置关键字中,将目的IP地址的第13个8bit值放入到第四组子配置关键字中,将目的IP地址的第12个8bit值放入到第一组子配置关键字中,依次类推,直至目的IP地址的所有比特值均放入到对应组的子配置关键字中。
[0010]优选的,所述拆分的步骤包括:将源端口的第1个4 bit值放入到第一组子配置关键字中,源端口的第2个4 bit值放入到第二组子配置关键字中,源端口的第3个4 bit值放入到第三组子配置关键字中,将源端口的第4个4 bit值放入到第四组子配置关键字中;将目的端口的第4个4 bit值放入到第一组子配置关键字中,目的端口的第3个4 bit值放入到第二组子配置关键字中,目的端口的第2个4 bit值放入到第三组子配置关键字中,目的端口的第1个4 bit值放入到第四组子配置关键字中。
[0011]优选的,所述拆分的步骤包括:将IP协议号的第1个2bit值放入到第一组子配置关键字中,IP协议号的第2个2bit值放入到第二组子配置关键字中,IP协议号的第3个2bit值放入到第三组子配置关键字中,IP协议号的第4个2bit值放入到第四组子配置关键字中;
将协议版本均放入到4组子配置关键字中。
[0012]优选的,所述方法还包括:若不同的掩码后的子配置关键字进行哈希运算后得到相同的第一哈希值时,将该第一哈希值作为存储地址,将不同的掩码后的子配置关键字分别依次存储到该存储地址,相同的存储地址存储N个不同的掩码后的子配置关键字。
[0013]优选的,所述判断报文命中规则的步骤包括:将报文中的关键字拆分为4组子关键字,分别将4组子关键字和对应组的子掩码做掩码运算,得到对应4组掩码后的子关键字,将4组掩码后的子关键字进行哈希运算得到4个第二哈希值;在存储表中查找与第一个第二哈希值相同的存储地址,获取该存储地址所存储的N个掩码后的子配置关键字,第一个第二哈希值对应的子关键字分别与N个掩码后的子配置关键字与进行一一匹配,若一致,则输出第一组命中标识;以此类推,得到第二组命中标识、第三组命中标识以及第四组命中标识,若全部输出第一组命中标识、第二组命中标识、第三组命中标识以及第四组命中标识,则判定该报文命中规则。
[0014]为实现上述目的,本专利技术提供了一种基于FPGA实现的掩码匹配系统,所述系统包括:第一拆分模块,用于获取用户配置的掩码和配置关键字,按照相同的拆分格式分别将所述掩码和配置关键字拆分为多组子掩码和多组子配置关键字;运算模块,用于将每一组子配置关键字和对应组的子掩码做掩码运算,得到多组掩码后的子配置关键字;存储模块,用于将每一组掩码后的子配置本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA实现的掩码匹配方法,其特征在于,所述方法包括:获取用户配置的掩码和配置关键字,按照相同的拆分格式分别将所述掩码和配置关键字拆分为多组子掩码和多组子配置关键字;将每一组子配置关键字和对应组的子掩码做掩码运算,得到多组掩码后的子配置关键字;将每一组掩码后的子配置关键字进行哈希运算得到多个第一哈希值,将每一个第一哈希值作为存储地址,该组掩码后的子配置关键字存储到该存储地址对应的存储空间,以得到存储有多组掩码后的子配置关键字的存储表;获取接收到的报文中的关键字,将所述关键字拆分为多组子关键字,将每一组子关键字和对应组的子掩码做掩码运算,得到对应的掩码后的子关键字,将每一组掩码后的子关键字进行哈希运算得到多个第二哈希值;在所述存储表中查询得到每一个第二哈希值所对应的存储地址,将该存储地址对应的掩码后的子配置关键字与掩码后的子关键字进行比较,若所有组的掩码后的子关键字与对应的掩码后的子配置关键字均一致时,判定该报文命中规则。2.如权利要求1所述的基于FPGA实现的掩码匹配方法,其特征在于,所述配置关键字、掩码以及关键字,均包括源IP地址、目的IP地址、源端口、目的端口、IP协议号和协议版本。3.如权利要求2所述的基于FPGA实现的掩码匹配方法,其特征在于,所述按照拆分格式将所述配置关键字拆分为多组子配置关键字,拆分的步骤包括:将源IP地址按照比特位从低位到高位的顺序依次进行分组,将源IP地址中M1个bit位作为一组源IP地址,将得到的各组源IP地址依次循环放入到对应的每一组子配置关键字中;将目的地址按照比特位从高位到低位的顺序依次进行分组,将目的地址中M1个bit位作为一组目的IP地址,将得到的各组目的IP地址依次循环放入到对应的每一组子配置关键字中;将源端口按照比特位从低位到高位的顺序依次进行分组,将源端口中M2个bit位作为一组源端口地址,将得到的各组源端口地址依次循环放入到对应的每一组子配置关键字中;将目的端口按照从比特位从高位到低位的顺序依次进行分组,将目的端口中M2个bit位作为一组目的端口地址,将得到的各组目的端口地址依次循环放入到对应的每一组子配置关键字中。4.如权利要求3所述的基于FPGA实现的掩码匹配方法,其特征在于,所述拆分的步骤包括:设置将配置关键字拆分为4组子配置关键字;将源IP地址的第1个8 bit值放入到第一组子配置关键字中,将源IP地址的第2个8 bit值放入到第二组子配置关键字中,将源IP地址的第3个8bit值放入到第三组子配置关键字中,将源IP地址的第4个8bit值放入到第四组子配置关键字中,将源IP地址的第5个8bit值放入到第一组子配置关键字中,依次类推,直至源IP地址的所有比特值均放入到对应组的子配置关键字中。5.如权利要求4所述的基于FPGA实现的掩码匹配方法,其特征在于,所述拆分的步骤包
括:将目的IP地址的第16个8 bit值放入到第一组子配置关键字中,将目的IP地址的第15个8 bit值放入到第二组子配置关键字中,将目的IP地址的第14个8bit值放入到第三组子配置关键字中,将目的IP地址的第13个8bit值放入到第四组子配置关键字中,将目的IP地址的第12个8bit值放入到第一组子配置关键字中,依次类推,直至目的IP地址的所有比特值均放入到对应组...

【专利技术属性】
技术研发人员:邱建刚
申请(专利权)人:杭州芯旗电子技术有限公司
类型:发明
国别省市:

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

1