CN115297056A - 一种基于fpga实现的掩码匹配方法及系统 - Google Patents
一种基于fpga实现的掩码匹配方法及系统 Download PDFInfo
- Publication number
- CN115297056A CN115297056A CN202211189913.3A CN202211189913A CN115297056A CN 115297056 A CN115297056 A CN 115297056A CN 202211189913 A CN202211189913 A CN 202211189913A CN 115297056 A CN115297056 A CN 115297056A
- Authority
- CN
- China
- Prior art keywords
- sub
- keywords
- configuration
- group
- groups
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了基于FPGA实现的掩码匹配方法,将掩码和配置关键字分别拆分为多组子掩码和多组子配置关键字,将子配置关键字和子掩码做掩码运算得到多组掩码后的子配置关键字;将掩码后的子配置关键字进行运算得到第一哈希值,将第一哈希值作为存储地址,得到存储有多组掩码后的子配置关键字的存储表;将报文中的关键字拆分为多组子关键字,将子关键字和子掩码做掩码运算得到掩码后的子关键字,将组掩码后的子关键字进行哈希运算得到多个第二哈希值;在存储表中查询得到第二哈希值所对应的存储地址,将对应的掩码后的子配置关键字与掩码后的子关键字进行比较,若一致时,判定该报文命中规则。通过该发明增加了访问控制列表的条目,能够实现降成本。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种基于FPGA实现的掩码匹配方法及系统。
背景技术
数据网络通信过程中对IP报文进行交换和路由时,需要对IP某段进行匹配或者某些单bit的模糊匹配查找,通过模糊查找可以实现少量的规则数据就能够满足实际的使用需求。在路由器等网络设备中,通过设置访问控制列表(Access Control List,访问控制列表)的控制规则,对每个到来的数据包,从数据包获取相关的信息,基于访问控制列表设置的规则,确定该数据包的下一步处理方式,比如丢弃、转发等。
传统路由器一般会使用硬件TCAM(Ternary Content Addressable Memory,三态内容寻址存储器)来实现。TCAM用于实现ACL功能和路由等功能。TCAM使用硬件芯片实现数据查找的方式,可以在一个时钟周期内对规则库的所有条目进行查找并在确定的时间周期后给出查找结果。TCAM中每个bit位可以设置为0、1、x三种状态,存储为x的bit位可以屏蔽查找,实现掩码匹配功能,使其既能进行精确匹配查找,又能进行模糊匹配查找。但是TCAM制造成本昂贵,能够存储的规则库大小有限,访问控制列表的条目较少,所以用TCAM实现ACL功能是相对昂贵的方案。
发明内容
本发明的目的在于提供一种基于FPGA实现的掩码匹配方法及系统,增加了访问控制列表的条目,并能够实现降成本。
为实现上述目的,本发明提供了一种基于FPGA实现的掩码匹配方法,所述方法包括:
获取用户配置的掩码和配置关键字,按照相同的拆分格式分别将所述掩码和配置关键字拆分为多组子掩码和多组子配置关键字;
将每一组子配置关键字和对应组的子掩码做掩码运算,得到多组掩码后的子配置关键字;
将每一组掩码后的子配置关键字进行哈希运算得到多个第一哈希值,将每一个第一哈希值作为存储地址,该组掩码后的子配置关键字存储到该存储地址对应的存储空间,以得到存储有多组掩码后的子配置关键字的存储表;
获取接收到的报文中的关键字,将所述关键字拆分为多组子关键字,将每一组子关键字和对应组的子掩码做掩码运算,得到对应的掩码后的子关键字,将每一组掩码后的子关键字进行哈希运算得到多个第二哈希值;
在所述存储表中查询得到每一个第二哈希值所对应的存储地址,将该存储地址对应的掩码后的子配置关键字与掩码后的子关键字进行比较,若所有组的掩码后的子关键字与对应的掩码后的子配置关键字均一致时,判定该报文命中规则。
优选的,所述配置关键字、掩码以及关键字,均包括源IP地址、目的IP地址、源端口、目的端口、IP协议号和协议版本。
优选的,所述按照拆分格式将所述配置关键字拆分为多组子配置关键字,拆分的步骤包括:
将源IP地址按照比特位从低位到高位的顺序依次进行分组,将源IP地址中M1个bit位作为一组源IP地址,将得到的各组源IP地址依次循环放入到对应的每一组子配置关键字中;
将目的地址按照比特位从高位到低位的顺序依次进行分组,将目的地址中M1个bit位作为一组目的IP地址,将得到的各组目的IP地址依次循环放入到对应的每一组子配置关键字中;
将源端口按照比特位从低位到高位的顺序依次进行分组,将源端口中M2个bit位作为一组源端口地址,将得到的各组源端口地址依次循环放入到对应的每一组子配置关键字中;
将目的端口按照从比特位从高位到低位的顺序依次进行分组,将目的端口中M2个bit位作为一组目的端口地址,将得到的各组目的端口地址依次循环放入到对应的每一组子配置关键字中。
优选的,所述拆分的步骤包括:
设置将配置关键字拆分为4组子配置关键字;
将源IP地址的第1个8 bit值放入到第一组子配置关键字中,将源IP地址的第2个8bit值放入到第二组子配置关键字中,将源IP地址的第3个8bit值放入到第三组子配置关键字中,将源IP地址的第4个8bit值放入到第四组子配置关键字中,将源IP地址的第5个8bit值放入到第一组子配置关键字中,依次类推,直至源IP地址的所有比特值均放入到对应组的子配置关键字中。
优选的,所述拆分的步骤包括:
将目的IP地址的第16个8 bit值放入到第一组子配置关键字中,将目的IP地址的第15个8 bit值放入到第二组子配置关键字中,将目的IP地址的第14个8bit值放入到第三组子配置关键字中,将目的IP地址的第13个8bit值放入到第四组子配置关键字中,将目的IP地址的第12个8bit值放入到第一组子配置关键字中,依次类推,直至目的IP地址的所有比特值均放入到对应组的子配置关键字中。
优选的,所述拆分的步骤包括:
将源端口的第1个4 bit值放入到第一组子配置关键字中,源端口的第2个4 bit值放入到第二组子配置关键字中,源端口的第3个4 bit值放入到第三组子配置关键字中,将源端口的第4个4 bit值放入到第四组子配置关键字中;
将目的端口的第4个4 bit值放入到第一组子配置关键字中,目的端口的第3个4bit值放入到第二组子配置关键字中,目的端口的第2个4 bit值放入到第三组子配置关键字中,目的端口的第1个4 bit值放入到第四组子配置关键字中。
优选的,所述拆分的步骤包括:
将IP协议号的第1个2bit值放入到第一组子配置关键字中,IP协议号的第2个2bit值放入到第二组子配置关键字中,IP协议号的第3个2bit值放入到第三组子配置关键字中,IP协议号的第4个2bit值放入到第四组子配置关键字中;
将协议版本均放入到4组子配置关键字中。
优选的,所述方法还包括:
若不同的掩码后的子配置关键字进行哈希运算后得到相同的第一哈希值时,将该第一哈希值作为存储地址,将不同的掩码后的子配置关键字分别依次存储到该存储地址,相同的存储地址存储N个不同的掩码后的子配置关键字。
优选的,所述判断报文命中规则的步骤包括:
将报文中的关键字拆分为4组子关键字,分别将4组子关键字和对应组的子掩码做掩码运算,得到对应4组掩码后的子关键字,将4组掩码后的子关键字进行哈希运算得到4个第二哈希值;
在存储表中查找与第一个第二哈希值相同的存储地址,获取该存储地址所存储的N个掩码后的子配置关键字,第一个第二哈希值对应的子关键字分别与N个掩码后的子配置关键字与进行一一匹配,若一致,则输出第一组命中标识;
以此类推,得到第二组命中标识、第三组命中标识以及第四组命中标识,若全部输出第一组命中标识、第二组命中标识、第三组命中标识以及第四组命中标识,则判定该报文命中规则。
为实现上述目的,本发明提供了一种基于FPGA实现的掩码匹配系统,所述系统包括:
第一拆分模块,用于获取用户配置的掩码和配置关键字,按照相同的拆分格式分别将所述掩码和配置关键字拆分为多组子掩码和多组子配置关键字;
运算模块,用于将每一组子配置关键字和对应组的子掩码做掩码运算,得到多组掩码后的子配置关键字;
存储模块,用于将每一组掩码后的子配置关键字进行哈希运算得到多个第一哈希值,将每一个第一哈希值作为存储地址,该组掩码后的子配置关键字存储到该存储地址对应的存储空间,以得到存储有多组掩码后的子配置关键字的存储表;
第二拆分模块,用于获取接收到的报文中的关键字,将所述关键字拆分为多组子关键字,将每一组子关键字和对应组的子掩码做掩码运算,得到对应的掩码后的子关键字,将每一组掩码后的子关键字进行哈希运算得到多个第二哈希值;
匹配模块,用于在所述存储表中查询得到每一个第二哈希值所对应的存储地址,将该存储地址对应的掩码后的子配置关键字与掩码后的子关键字进行比较,若所有组的掩码后的子关键字与对应的掩码后的子配置关键字均一致时,判定该报文命中规则。
本发明通过FPGA实现bit级掩码匹配的技术方案,能够实现访问控制列表的条目数量增多的功能;能够替代TCAM芯片,实现了降成本,同时能够减少硬件PCB布板的空间;基于该发明中的拆分方案,能够节省FPGA资源,能够支持更多的掩码类型。
附图说明
图1是根据本发明的一个实施例中的基于FPGA实现的掩码匹配方法的示意图。
图2是根据本发明的一个实施例中的关键字拆分示意图。
图3是根据本发明的一个实施例中基于FPGA实现的掩码匹配系统的系统框图。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述,但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
如图1所示的本发明一实施例中,本发明提供一种基于FPGA实现的掩码匹配方法,该方法包括:
S1、获取用户配置的掩码和关键字,按照相同的拆分格式分别将掩码和配置的关键字拆分为多组子掩码和多组子配置关键字;
S2、将每一组子配置关键字和对应组的子掩码做掩码运算,得到多组掩码后的子配置关键字;
S3、将每一组掩码后的子配置关键字进行哈希运算得到多个第一哈希值,将每一个第一哈希值作为存储地址,该组掩码后的子配置关键字存储到该存储地址对应的存储空间,以得到存储有多组掩码后的子配置关键字的存储表;
S4、获取接收到的报文中的关键字,将报文中的关键字拆分为多组子关键字,将每一组子关键字和对应组的子掩码做掩码运算,得到对应的掩码后的子关键字,将每一组掩码后的子关键字进行哈希运算得到多个第二哈希值;
S5、在存储表中查询得到每一个第二哈希值所对应的存储地址,将该存储地址对应的掩码后的子配置关键字与掩码后的子关键字进行比较,若所有组的掩码后的子关键字与对应的掩码后的子配置关键字均一致时,判定该报文命中规则。
在实际的使用过程中,IP的掩码配置种类一般为2~32种。一般掩码类型都是固定的某些种类,比如基于网段设置掩码等。因此,本发明基于掩码配置种类个数,通过FPGA实现基于bit级的掩码匹配。
获取用户配置的掩码和配置关键字,按照相同的拆分格式分别将掩码和配置关键字拆分为多组子掩码和多组子配置关键字。通过软件命令获取用户配置的掩码和配置的配置关键字。用户可根据需要和资源需求,可配置多种掩码类型和多种配置关键字。配置关键字包括源IP地址、目的IP地址、源端口、目的端口、IP协议号和协议版本。掩码包括源IP地址、目的IP地址、源端口、目的端口、IP协议号和协议版本。
将获取的掩码和配置关键字,按照相同的拆分格式分别进行拆分,得到多组子掩码和多组子配置关键字。作为本发明的一种实现方式,以配置的关键字为例进行说明拆分的格式。一般情况下使用掩码的是IP地址的低段位,并且IPV4使用的比较多,因此为了支持更多的掩码类型,将源IP地址按照比特位从低位到高位的顺序依次进行分组。将源IP地址按照比特位从低位到高位的顺序依次进行分组,将源IP地址中M1个bit位作为一组源IP地址,将得到的各组源IP地址依次循环放入到对应的每一组子配置关键字中;将目的地址按照比特位从高位到低位的顺序依次进行分组,将目的地址中M1个bit位作为一组目的IP地址,将得到的各组目的IP地址依次循环放入到对应的每一组子配置关键字中。作为一种实施例,设置将配置关键字拆分为4组子配置关键字。如图2所示的子配置关键字的分组示意图,配置关键字包括源IP地址Sip[127:0]、目的IP地址Dip[127:0]、源端口Sport[15:0]、目的端口Dport[15:0]、IP协议号Pro[7:0]和协议版本Ipver,共297个bit。对源IP地址Sip[127:0]进行拆分,源IP地址Sip[127:0]共128个bit,以8bit为一组进行拆分。将源IP地址的第1个8 bit值Sip[7:0]放入到第一组子配置关键字中,将源IP地址的第2个8 bit值Sip[15:8]放入到第二组子配置关键字中,将源IP地址的第3个8bit值Sip[23: 16]放入到第三组子配置关键字中,将源IP地址的第4个8bit值Sip[31: 24]放入到第四组子配置关键字中,将源IP地址的第5个8bit值Sip[39: 32]放入到第一组子配置关键字中,依次类推,将第16个8 bit值Sip[127: 120]放入到第四组子配置关键字中,直至源IP地址的所有比特值均放入到对应组的子配置关键字中。目的IP地址Dip[127:0]共128个bit,以8bit为一组进行拆分。目的IP地址的拆分方式和源IP地址的拆分方式相反,将目的IP地址按照比特位从高位到低位的顺序依次进行分组,将目的IP地址Dip[127:0]的第16个8 bit值Dip[127:120]放入到第一组子配置关键字中,将目的IP地址的第15个8 bit值Dip[119:112]放入到第二组子配置关键字中,将目的IP地址的第14个8bit值Dip[111:104]放入到第三组子配置关键字中,将目的IP地址的第13个8bit值Dip[103:96]放入到第四组子配置关键字中,将目的IP地址的第12个8bit值Dip[95:88]放入到第一组子配置关键字中,依次类推,将第1个8 bit值Dip[7:0]放入到第四组子配置关键字中,直至目的IP地址的所有比特值均放入到对应组的子配置关键字中。将源端口按照比特位从低位到高位的顺序依次进行分组,将源端口中M2个bit值作为一组源端口地址,将得到的各组源端口地址依次循环放入到对应的每一组子配置关键字中,将目的端口按照比特位从高位到低位的顺序依次进行分组,将目的端口中M2个bit值作为一组目的端口地址,将得到的各组目的端口地址依次循环放入到对应的每一组子配置关键字中。作为一种实施例,如图2所示的子配置关键字的分组示意图,源端口Sport[15:0]共16个bit,以4bit为一组进行拆分。将源端口Sport[15:0]的第1个4 bit值Sport[3:0]放入到第一组子配置关键字中,源端口的第2个4 bit值Sport[7:4]放入到第二组子配置关键字中,源端口的第3个4 bit值Sport[11:8]放入到第三组子配置关键字中,将源端口的第4个4 bit值Sport[15:12]放入到第四组子配置关键字中。同样的,目的端口Dport[15:0]共16个bit,以4bit为一组进行拆分。将目的端口的第4个4 bit值Dport[15:12]放入到第一组子配置关键字中,目的端口的第3个4 bit值Dport[11:8]放入到第二组子配置关键字中,目的端口的第2个4 bit值放入Dport[7:4]到第三组子配置关键字中,将目的端口的第1个4 bit值Dport[3:0]放入到第四组子配置关键字中。IP协议号Pro[7:0]共8个bit,以2it为一组进行拆分。将IP协议号的第1个2bit值Pro[1:0]放入到第一组子配置关键字中,IP协议号的第2个2bit值Pro[3:2]放入到第二组子配置关键字中,IP协议号的第3个2bit值Pro[5:4]放入到第三组子配置关键字中,IP协议号的第4个2bit值Pro[7:6]放入到第四组子配置关键字中。协议版本Ipver为1个bit,将1bit的协议版本Ipver均放入到4组子配置关键字中。
掩码包括源IP地址、目的IP地址、源端口、目的端口、IP协议号和协议版本,同样的,对掩码中的源IP地址按照配置关键字的源IP地址的拆分方式分别放入到4组子掩码中,掩码中的目的IP地址按照配置关键字的目的IP地址的拆分方式分别放入到4组子掩码中,掩码中的源端口按照配置关键字的源端口的拆分方式分别放入到4组子掩码中,掩码中的目的端口按照配置关键字的目的端口的拆分方式分别放入到4组子掩码中,掩码中的IP协议号按照配置关键字的IP协议号的拆分方式分别放入到4组子掩码中,掩码中的协议版本按照配置关键字的协议版本的拆分方式分别放入到4组子掩码中。
将每一组子配置关键字和对应组的子掩码做掩码运算,得到多组掩码后的子配置关键字。以上述实施例为例,将第一组子配置关键字与第一组子掩码进行掩码运算,掩掉对应的bit即为0,得到第一组掩码后的子配置关键字,将第二组子配置关键字与第二子掩码进行掩码运算得到第二组掩码后的子配置关键字,以此类推,得到4组掩码后的子配置关键字。
将每一组掩码后的子配置关键字进行哈希运算得到多个第一哈希值,将每一个第一哈希值作为存储地址,该组掩码后的子配置关键字存储到该存储地址对应的存储空间,以得到存储有多组掩码后的子配置关键字的存储表。以上述实施例为例进行说明,对第一组掩码后的子配置关键字进行哈希运算得到第一个第一哈希值,将该哈希值作为RAM的一个存储地址,在该存储地址写入第一组掩码后的子配置关键字,以存储到RAM中,4组掩码后的子配置关键字经过哈希运算后可得到对应的4个第一哈希值,即得到4个对应的RAM存储地址,将4组掩码后的子配置关键字分别写入RAM中对应的存储地址。基于该技术方案,可支持64种掩码类型,每一个存储地址所对应的存储空间可存储64K条表项。
若不同的掩码后的子配置关键字进行哈希运算后得到相同的第一哈希值,即存储地址一样,会导致存储地址冲突。因此,作为本发明的一种实现方式,若不同的掩码后的子配置关键字进行哈希运算后得到相同的第一哈希值时,将该第一哈希值作为存储地址,将不同的掩码后的子配置关键字分别依次存储到该存储地址,相同的存储地址存储N个不同的掩码后的子配置关键字。N可设置为8,即每一个存储地址可存储8个不同的掩码后的子配置关键字,可支持防8级存储地址冲突。
获取接收到的报文中的关键字,将报文中的关键字拆分为多组子关键字,将每一组子关键字和对应的子掩码做掩码运算,得到对应的掩码后的子关键字,将每一组掩码后的子关键字进行哈希运算得到多个第二哈希值。报文中的关键字包括源IP地址、目的IP地址、源端口、目的端口、IP协议号和协议版本。基于与配置关键字相同的拆分方法,将报文中的关键字拆分为多组子关键字。
在存储表中查询得到每一个第二哈希值所对应的存储地址,将该存储地址对应的子配置关键字与子关键字进行比较,若所有的子关键字与对应的子配置关键字一致时,判定该报文命中规则。以上述实施例进行说明,将报文中的关键字拆分为4组子关键字,分别将4组子关键字和对应组的子掩码做掩码运算,得到对应4组掩码后的子关键字,得到4个第二哈希值。在存储表中查找与第一个第二哈希值相同的存储地址,获取该存储地址所存储的子配置关键字,将存储的子配置关键字与第一个第二哈希值对应的子关键字进行匹配,若一致,则输出第一组命中标识,以此类推,得到第二组命中标识、第三组命中标识以及第四组命中标识,若全部输出第一组命中标识、第二组命中标识、第三组命中标识以及第四组命中标识,则判定该报文命中规则。
上述实施例中,相同的存储地址存储N个不同的掩码后的子配置关键字,因此在判定关键字匹配时,需要对N个子配置关键字进行全部匹配。在存储表中查找与第一个第二哈希值相同的存储地址,获取该存储地址所存储的N个掩码后的子配置关键字,第一个第二哈希值对应的子关键字分别与N个掩码后的子配置关键字与进行一一匹配,若一致,则输出第一组命中标识,以此类推,得到第二组命中标识、第三组命中标识以及第四组命中标识,若全部输出第一组命中标识、第二组命中标识、第三组命中标识以及第四组命中标识,则判定该报文命中规则,后续执行报文的动作。
如图3所示的本发明一实施例中,本发明提供一种基于FPGA实现的掩码匹配系统,该系统包括:
第一拆分模块30,用于获取用户配置的掩码和配置关键字,按照相同的拆分格式分别将所述掩码和配置关键字拆分为多组子掩码和多组子配置关键字;
运算模块31,用于将每一组子配置关键字和对应组的子掩码做掩码运算,得到多组掩码后的子配置关键字;
存储模块32,用于将每一组掩码后的子配置关键字进行哈希运算得到多个第一哈希值,将每一个第一哈希值作为存储地址,该组掩码后的子配置关键字存储到该存储地址对应的存储空间,以得到存储有多组掩码后的子配置关键字的存储表;
第二拆分模块33,用于获取接收到的报文中的关键字,将所述关键字拆分为多组子关键字,将每一组子关键字和对应组的子掩码做掩码运算,得到对应的掩码后的子关键字,将每一组掩码后的子关键字进行哈希运算得到多个第二哈希值;
匹配模块34,用于在所述存储表中查询得到每一个第二哈希值所对应的存储地址,将该存储地址对应的掩码后的子配置关键字与掩码后的子关键字进行比较,若所有组的掩码后的子关键字与对应的掩码后的子配置关键字均一致时,判定该报文命中规则。
尽管为示例目的,已经公开了本发明的优选实施方式,但是本领域的普通技术人员将意识到,在不脱离由所附的权利要求书公开的本发明的范围和精神的情况下,各种改进、增加以及取代是可能的。
Claims (10)
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地址的所有比特值均放入到对应组的子配置关键字中。
6.如权利要求4所述的基于FPGA实现的掩码匹配方法,其特征在于,所述拆分的步骤还包括:
将源端口的第1个4 bit值放入到第一组子配置关键字中,源端口的第2个4 bit值放入到第二组子配置关键字中,源端口的第3个4 bit值放入到第三组子配置关键字中,将源端口的第4个4 bit值放入到第四组子配置关键字中;
将目的端口的第4个4 bit值放入到第一组子配置关键字中,目的端口的第3个4 bit值放入到第二组子配置关键字中,目的端口的第2个4 bit值放入到第三组子配置关键字中,目的端口的第1个4 bit值放入到第四组子配置关键字中。
7.如权利要求4所述的基于FPGA实现的掩码匹配方法,其特征在于,所述拆分的步骤还包括:
将IP协议号的第1个2bit值放入到第一组子配置关键字中,IP协议号的第2个2bit值放入到第二组子配置关键字中,IP协议号的第3个2bit值放入到第三组子配置关键字中,IP协议号的第4个2bit值放入到第四组子配置关键字中;
将协议版本均放入到4组子配置关键字中。
8.如权利要求4所述的基于FPGA实现的掩码匹配方法,其特征在于,所述方法还包括;
若不同的掩码后的子配置关键字进行哈希运算后得到相同的第一哈希值时,将该第一哈希值作为存储地址,将不同的掩码后的子配置关键字分别依次存储到该存储地址,相同的存储地址存储N个不同的掩码后的子配置关键字。
9.如权利要求8所述的基于FPGA实现的掩码匹配方法,其特征在于,所述判断报文命中规则的步骤包括:
将报文中的关键字拆分为4组子关键字,分别将4组子关键字和对应组的子掩码做掩码运算,得到对应4组掩码后的子关键字,将4组掩码后的子关键字进行哈希运算得到4个第二哈希值;
在存储表中查找与第一个第二哈希值相同的存储地址,获取该存储地址所存储的N个掩码后的子配置关键字,第一个第二哈希值对应的子关键字分别与N个掩码后的子配置关键字与进行一一匹配,若一致,则输出第一组命中标识;
以此类推,得到第二组命中标识、第三组命中标识以及第四组命中标识,若全部输出第一组命中标识、第二组命中标识、第三组命中标识以及第四组命中标识,则判定该报文命中规则。
10.一种基于FPGA实现的掩码匹配系统,其特征在于,所述系统包括:
第一拆分模块,用于获取用户配置的掩码和配置关键字,按照相同的拆分格式分别将所述掩码和配置关键字拆分为多组子掩码和多组子配置关键字;
运算模块,用于将每一组子配置关键字和对应组的子掩码做掩码运算,得到多组掩码后的子配置关键字;
存储模块,用于将每一组掩码后的子配置关键字进行哈希运算得到多个第一哈希值,将每一个第一哈希值作为存储地址,该组掩码后的子配置关键字存储到该存储地址对应的存储空间,以得到存储有多组掩码后的子配置关键字的存储表;
第二拆分模块,用于获取接收到的报文中的关键字,将所述关键字拆分为多组子关键字,将每一组子关键字和对应组的子掩码做掩码运算,得到对应的掩码后的子关键字,将每一组掩码后的子关键字进行哈希运算得到多个第二哈希值;
匹配模块,用于在所述存储表中查询得到每一个第二哈希值所对应的存储地址,将该存储地址对应的掩码后的子配置关键字与掩码后的子关键字进行比较,若所有组的掩码后的子关键字与对应的掩码后的子配置关键字均一致时,判定该报文命中规则。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211189913.3A CN115297056B (zh) | 2022-09-28 | 2022-09-28 | 一种基于fpga实现的掩码匹配方法及系统 |
PCT/CN2023/122254 WO2024067746A1 (zh) | 2022-09-28 | 2023-09-27 | 一种基于fpga实现的掩码匹配方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211189913.3A CN115297056B (zh) | 2022-09-28 | 2022-09-28 | 一种基于fpga实现的掩码匹配方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115297056A true CN115297056A (zh) | 2022-11-04 |
CN115297056B CN115297056B (zh) | 2023-01-06 |
Family
ID=83833924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211189913.3A Active CN115297056B (zh) | 2022-09-28 | 2022-09-28 | 一种基于fpga实现的掩码匹配方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115297056B (zh) |
WO (1) | WO2024067746A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024067746A1 (zh) * | 2022-09-28 | 2024-04-04 | 杭州芯旗电子技术有限公司 | 一种基于fpga实现的掩码匹配方法及系统 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101651628A (zh) * | 2009-09-17 | 2010-02-17 | 杭州华三通信技术有限公司 | 一种三状态内容可寻址存储器实现方法及装置 |
CN102111331A (zh) * | 2010-12-17 | 2011-06-29 | 曙光信息产业(北京)有限公司 | 一种基于hash表实现的带掩码五元组规则的匹配方法 |
US20150019563A1 (en) * | 2013-07-09 | 2015-01-15 | Cisco Technology, Inc. | Label Masked Addressable Memory |
US20150124652A1 (en) * | 2013-11-05 | 2015-05-07 | Cisco Technology, Inc. | Weighted equal cost multipath routing |
CN104952484A (zh) * | 2014-03-31 | 2015-09-30 | 何少鹏 | 利用分组来实现三重内容可寻址存储器的方法及装置 |
CN105830406A (zh) * | 2013-12-18 | 2016-08-03 | 瑞典爱立信有限公司 | 用于支持软件定义网络中的灵活查找关键字的方法、设备和系统 |
CN107818151A (zh) * | 2017-10-24 | 2018-03-20 | 湖南恒茂高科股份有限公司 | 数据查找方法、装置、计算机设备和存储介质 |
US20190036821A1 (en) * | 2017-07-30 | 2019-01-31 | Mellanox Technologies Tlv Ltd. | Efficient caching of TCAM rules in RAM |
CN111343153A (zh) * | 2020-02-10 | 2020-06-26 | Oppo(重庆)智能科技有限公司 | 数据包检测方法、装置、服务器及存储介质 |
WO2020181740A1 (zh) * | 2018-12-29 | 2020-09-17 | 长沙理工大学 | 一种高性能的openflow虚拟流表查找方法 |
CN112152809A (zh) * | 2019-06-28 | 2020-12-29 | 英特尔公司 | 用于计算环境中经典和后量子数字签名方案的统一加速器 |
CN112667526A (zh) * | 2021-03-22 | 2021-04-16 | 芯启源(南京)半导体科技有限公司 | 一种访问控制列表电路实现方法及其电路 |
CN112769973A (zh) * | 2020-12-25 | 2021-05-07 | 清华大学 | 一种网络地址与网络地址转换规则的匹配方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286936B (zh) * | 2008-05-16 | 2010-10-27 | 成都市华为赛门铁克科技有限公司 | 数据报文的处理方法及装置 |
JP6762911B2 (ja) * | 2017-06-19 | 2020-09-30 | 日本電信電話株式会社 | パケット識別装置およびパケット識別方法 |
CN108875064B (zh) * | 2018-07-03 | 2021-07-06 | 湖南新实网络科技有限公司 | 基于FPGA的OpenFlow多维数据匹配查找方法 |
CN113660165A (zh) * | 2021-08-09 | 2021-11-16 | 国家计算机网络与信息安全管理中心 | 一种基于tcam的掩码规则匹配方法、电子设备和存储介质 |
CN115297056B (zh) * | 2022-09-28 | 2023-01-06 | 杭州芯旗电子技术有限公司 | 一种基于fpga实现的掩码匹配方法及系统 |
-
2022
- 2022-09-28 CN CN202211189913.3A patent/CN115297056B/zh active Active
-
2023
- 2023-09-27 WO PCT/CN2023/122254 patent/WO2024067746A1/zh unknown
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101651628A (zh) * | 2009-09-17 | 2010-02-17 | 杭州华三通信技术有限公司 | 一种三状态内容可寻址存储器实现方法及装置 |
CN102111331A (zh) * | 2010-12-17 | 2011-06-29 | 曙光信息产业(北京)有限公司 | 一种基于hash表实现的带掩码五元组规则的匹配方法 |
US20150019563A1 (en) * | 2013-07-09 | 2015-01-15 | Cisco Technology, Inc. | Label Masked Addressable Memory |
US20150124652A1 (en) * | 2013-11-05 | 2015-05-07 | Cisco Technology, Inc. | Weighted equal cost multipath routing |
CN105830406A (zh) * | 2013-12-18 | 2016-08-03 | 瑞典爱立信有限公司 | 用于支持软件定义网络中的灵活查找关键字的方法、设备和系统 |
CN104952484A (zh) * | 2014-03-31 | 2015-09-30 | 何少鹏 | 利用分组来实现三重内容可寻址存储器的方法及装置 |
US20190036821A1 (en) * | 2017-07-30 | 2019-01-31 | Mellanox Technologies Tlv Ltd. | Efficient caching of TCAM rules in RAM |
CN107818151A (zh) * | 2017-10-24 | 2018-03-20 | 湖南恒茂高科股份有限公司 | 数据查找方法、装置、计算机设备和存储介质 |
WO2020181740A1 (zh) * | 2018-12-29 | 2020-09-17 | 长沙理工大学 | 一种高性能的openflow虚拟流表查找方法 |
CN112152809A (zh) * | 2019-06-28 | 2020-12-29 | 英特尔公司 | 用于计算环境中经典和后量子数字签名方案的统一加速器 |
CN111343153A (zh) * | 2020-02-10 | 2020-06-26 | Oppo(重庆)智能科技有限公司 | 数据包检测方法、装置、服务器及存储介质 |
CN112769973A (zh) * | 2020-12-25 | 2021-05-07 | 清华大学 | 一种网络地址与网络地址转换规则的匹配方法 |
CN112667526A (zh) * | 2021-03-22 | 2021-04-16 | 芯启源(南京)半导体科技有限公司 | 一种访问控制列表电路实现方法及其电路 |
Non-Patent Citations (2)
Title |
---|
YOKO SOGABE: "A variable length hash method for faster short read mapping on FPGA", 《2015 25TH INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS (FPL)》 * |
姜腊林等: "基于MTF启发法的OpenFlow虚拟流表高效查找算法", 《小型微型计算机系统》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024067746A1 (zh) * | 2022-09-28 | 2024-04-04 | 杭州芯旗电子技术有限公司 | 一种基于fpga实现的掩码匹配方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2024067746A1 (zh) | 2024-04-04 |
CN115297056B (zh) | 2023-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9997245B1 (en) | Method and apparatus for TCAM based look-up | |
US7315547B2 (en) | Packet forwarding device | |
US7234019B1 (en) | Method and apparatus for implementing a search engine using an SRAM | |
JP4742167B2 (ja) | Camのキーサイズを超えるテーブルインデックスを用いてテーブルルックアップ動作を実行する方法 | |
US9159420B1 (en) | Method and apparatus for content addressable memory parallel lookup | |
CN109921995B (zh) | 一种配置地址表的方法、fpga和应用该fpga的网络设备 | |
CN112667526B (zh) | 一种访问控制列表电路实现方法及其电路 | |
US10771386B2 (en) | IP routing search | |
WO2021135491A1 (zh) | 流表的匹配方法及装置 | |
CN115297056B (zh) | 一种基于fpga实现的掩码匹配方法及系统 | |
US20040044868A1 (en) | Method and apparatus for high-speed longest prefix match of keys in a memory | |
CN107147581B (zh) | 路由表项的维护方法和装置 | |
CN103825824A (zh) | 一种报文处理方法及装置 | |
US7219187B1 (en) | Search parameter table in a content addressable memory | |
CN112187636B (zh) | Ecmp路由的存储方法及装置 | |
CN109039911B (zh) | 一种基于hash查找方式共享ram的方法及系统 | |
CN112818185A (zh) | 一种基于sram的最长前缀匹配硬件系统查找的方法 | |
US20080281789A1 (en) | Method and apparatus for implementing a search engine using an SRAM | |
CN108075979B (zh) | 实现最长掩码匹配的方法及系统 | |
US7746865B2 (en) | Maskable content addressable memory | |
JPH11102589A (ja) | 連想メモリモジュール | |
CN109194665A (zh) | 一种报文查找键值的生成方法及装置 | |
CN112667640B (zh) | 一种路由地址存储方法及装置 | |
US10476785B2 (en) | IP routing search | |
CN113660165A (zh) | 一种基于tcam的掩码规则匹配方法、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |