CN116319551A - 一种基于fpga实现的高效网络流表设计方法 - Google Patents
一种基于fpga实现的高效网络流表设计方法 Download PDFInfo
- Publication number
- CN116319551A CN116319551A CN202310201880.8A CN202310201880A CN116319551A CN 116319551 A CN116319551 A CN 116319551A CN 202310201880 A CN202310201880 A CN 202310201880A CN 116319551 A CN116319551 A CN 116319551A
- Authority
- CN
- China
- Prior art keywords
- hash
- cam
- value
- key value
- hit
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000013461 design Methods 0.000 title description 6
- 230000006870 function Effects 0.000 claims abstract description 20
- 238000012986 modification Methods 0.000 claims abstract description 19
- 230000004048 modification Effects 0.000 claims abstract description 19
- 230000008569 process Effects 0.000 claims abstract description 14
- 238000012217 deletion Methods 0.000 claims abstract description 11
- 230000037430 deletion Effects 0.000 claims abstract description 11
- 238000012545 processing Methods 0.000 claims description 19
- 230000000694 effects Effects 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 3
- 238000006243 chemical reaction Methods 0.000 claims description 2
- 238000012856 packing Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 4
- 238000005265 energy consumption Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
-
- 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/54—Organization of routing tables
-
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于FPGA实现的高效网络流表设计方法,其包括构造以HASH表为主存储器、CAM表为辅存储器的HASH‑CAM流表;将获取到的KEY值拷贝为两份,第一份通过哈希算法计算后,将HASH值作为HASH表的访问地址,第二份直接进入CAM表;HASH表和CAM表分别并行进行表项访问,各自输出结果;将HASH表和CAM表的访问结果,通过裁决器进行判决,输出表项的访问结果;其中,对HASH‑CAM流表的访问,包括查找、新建修改、删除等功能。本发明基于高效哈希表与CAM表相结合,以大容量哈希表结合小容量CAM表的方法,构造以哈希表为主存储器、CAM表为辅存储器的联合存储结构体,来减小和处理哈希冲突。
Description
技术领域
本发明涉及网络数据处理技术领域,具体涉及一种基于FPGA实现的高效网络流表设计方法。
背景技术
在网络数据处理当中,流表占据着极为重要的位置,广泛应用于网络交换系统、终端处理系统以及网络运维系统。流表当中存储了所有流的处置方法,对于当前流,必须及时地查找其对应的处置方法,这就需要对流表进行快速地访问,关键在于根据当前流的特征,获取其在流表中的存储内容。对于同一流的认定在于相同的流特征,之后基于此流特征,计算该流在流表当中的位置索引,通过索引获取当前流的处置方法,按照处置方法进行后续的相关处理。
网络五元组(源IP地址、目的IP地址、传输层协议类型、源端口、目的端口)是比较公认的流特征,可以唯一的标识一个流。但是五元组的数据位宽过大,仅在IPv4协议下就有104位,无法直接作为索引使用,需要对其进行一定的压缩变换。哈希(HASH)流表作为一种广泛地使用的流表,依赖于哈希散列的操作简单、计算复杂度小、处理延时低等优点,在索引快速计算方面有着优越的性能。但哈希流表天然存在着哈希冲突的问题,即不同的五元组通过哈希变换,可能得到相同的索引。为了提供可靠的流表服务,发生的哈希冲突需要较高的资源能耗和成本代价去处理。
因此,如何减小哈希冲突的概率,以及如何处理出现的哈希冲突,是哈希方式的流表在设计当中必须要解决的问题。
发明内容
本发明的目的在于提供一种基于FPGA实现的高效网络流表设计方法,该方法基于高效哈希表与CAM表相结合,以及以大容量哈希表结合小容量CAM表的方式,构造以哈希表为主存储器、CAM表为辅存储器的联合存储结构体,来减小和处理哈希冲突。
为解决上述问题,本发明所采用的技术方案如下:
一种基于FPGA实现的高效网络流表设计方法,该方法包括以下步骤:构造以HASH表为主存储器、CAM表为辅存储器的HASH-CAM流表;将获取到的KEY值拷贝为两份,第一份通过哈希算法计算后,将HASH值作为HASH表的访问地址,第二份直接进入CAM表;HASH表和CAM表分别并行进行表项访问,各自输出结果;将HASH表和CAM表的访问结果,通过裁决器进行判决,输出表项的访问结果;其中,对HASH-CAM流表的访问,包括查找、新建修改、删除等功能。
根据本发明提供的一种基于FPGA实现的高效网络流表设计方法,在构造HASH-CAM流表时,还执行:在表项的新建时,优先使用HASH表进行存储,若发生冲突,则使用CAM表进行存储;在表项的查询时,并行对HASH表和CAM表进行同时匹配,若二者其一命中,则为匹配命中。
根据本发明提供的一种基于FPGA实现的高效网络流表设计方法,HASH-CAM流表当中的存储数据包括三类字段:KEY值、VALUE值、EN值;KEY值为五元组,用于流的匹配;VALUE值为处置方法,用于匹配后流的处理,为用户自定义项;EN值为当前表项的使用状态,用于流的有效验证和快速删除。
根据本发明提供的一种基于FPGA实现的高效网络流表设计方法,HASH表以FPGA内部的块状RAM为基本存储实体,按照HASH方法进行内容匹配;对于RAM访问地址的生成,需要将KEY值进行HASH运算,运算结果作为RAM的访问地址;对于HASH变换函数的选择,使用随机性好、便于FPGA实现的CRC序列。
根据本发明提供的一种基于FPGA实现的高效网络流表设计方法,对于M>1的多个表项,HASH表的比较流程包括:将KEY值附加于CRC序列,得出CRC值;根据HASH表的深度N,从CRC值选取相同的位宽,作为HASH表的读取地址;对于读出的表项,并行进行宽度M个比较操作;输出比较结果,在M个结果中,若有1个命中,即为HASH表命中;若M个未命中且至少1个空闲,即为HASH表空闲;若M个冲突,即为HASH表冲突。
根据本发明提供的一种基于FPGA实现的高效网络流表设计方法,CAM表以寄存器逻辑单元为基本存储实体,按照所有空间遍历的方法进行内容匹配;在使用时,需要对CAM覆盖的所有寄存器逻辑单元同时进行比较,对各个单元的比较结果进行仲裁,最终输出CAM的匹配结果。
根据本发明提供的一种基于FPGA实现的高效网络流表设计方法,CAM寄存器堆积的多级实现包括:在输入侧,将待匹配KEY值按照1-K的方式逐级扇出,使其到达每一个寄存器;在存储侧,对寄存器中存储的表项进行内容比较和空闲检测;在输出侧,将比较结果按照K-1的方式逐级汇聚,最终输出匹配结果、匹配的位置和空闲的位置。
根据本发明提供的一种基于FPGA实现的高效网络流表设计方法,HASH-CAM流表查找操作的处理包括:其输入为匹配KEY值,输出为命中结果和命中位置的VALUE值;其中,HASH表的读操作和CAM表的匹配操作可以并行执行,KEY值经过HASH计算后输出为HASH值,作为HASH表的读地址,读取其中存储的KEY值、VALUE值和EN值,若EN值有效且存储的KEY值与匹配的KEY值相同,则查找结果为HASH表命中;若HASH表未命中,需要查看CAM表的命中结果;若CAM表命中,则查找结果为命中,若CAM表未命中,则查找结果为未命中。
根据本发明提供的一种基于FPGA实现的高效网络流表设计方法,HASH-CAM流表新建修改操作的处理包括:其输入为匹配KEY值和VALUE值;其中,新建修改操作前需要执行查找操作,若查找结果为未命中时,执行的实际效果为新建,若查找结果为命中,说明该表项已经存在,执行的实际效果为修改;在新建过程中,若HASH表的EN值无效,则写入表项内容至HASH表,若HASH表的EN值有效,则说明发送冲突,此位置已经占有,则将表项内容写入CAM表当中。
根据本发明提供的一种基于FPGA实现的高效网络流表设计方法,HASH-CAM流表删除操作的处理包括:其输入为匹配KEY值;其中,删除操作前需要执行查找操作,查找结果为未命中时,说明该表项不存在,无需删除,若查找结果为命中,则将表项的EN值失效。
由此可见,相对于现有技术,本发明提供的HASH-CAM流表可以减小和处理哈希冲突,基于FPGA实现的HASH-CAM流表,在提供可靠的流表功能基础上,充分发挥FPGA并行计算的优势,有着实时性能高、资源能耗低、访问时延小的优点,可在FPGA系统时钟下进行流水工作,比较轻松的实现千万量级PPS(Packets Per Second,每秒吞吐包个数)的流表操作。
下面结合附图和具体实施方式对本发明作进一步详细说明。
附图说明
图1是本发明一种基于FPGA实现的高效网络流表设计方法实施例的流程图。
图2是本发明一种基于FPGA实现的高效网络流表设计方法实施例中关于HASH-CAM流表的访问流程原理图。
图3是本发明一种基于FPGA实现的高效网络流表设计方法实施例中关于HASH表的存储结构图。
图4是本发明一种基于FPGA实现的高效网络流表设计方法实施例中关于CAM表的存储结构图。
图5是本发明一种基于FPGA实现的高效网络流表设计方法实施例中关于HASH-CAM流表查找操作的处理流程图。
图6是本发明一种基于FPGA实现的高效网络流表设计方法实施例中关于HASH-CAM流表新建修改操作的处理流程图。
图7是本发明一种基于FPGA实现的高效网络流表设计方法实施例中关于HASH-CAM流表删除操作的处理流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1与图2,本发明提供一种基于FPGA实现的高效网络流表设计方法,其包括以下步骤:
步骤S1,构造以HASH表为主存储器、CAM表为辅存储器的HASH-CAM流表。
步骤S2,将获取到的KEY值拷贝为两份,第一份通过哈希算法计算后,将HASH值作为HASH表的访问地址,第二份直接进入CAM表。
步骤S3,HASH表和CAM表分别并行进行表项访问,各自输出结果。
步骤S4,将HASH表和CAM表的访问结果,通过裁决器进行判决,输出表项的访问结果。
其中,对HASH-CAM流表的访问,包括查找、新建修改、删除等功能,对于不同的功能,裁决器依据不同的标准,进行不同的裁决方法。
在本实施例中,在构造HASH-CAM流表时,还执行:
在表项的新建时,优先使用HASH表进行存储,若发生冲突,则使用CAM表进行存储;
在表项的查询时,并行对HASH表和CAM表进行同时匹配,若二者其一命中,则为匹配命中。
CAM(Content Addressable Memory,内容寻址存储器),一种特殊的存储器。CAM与RAM相对应,RAM是根据地址进行读写的存储单元,CAM是根据内容进行读写的存储单元。CAM存储器的每个存储单元都包含逻辑比较功能,所有存储单元可以同时和CAM接口上的比较数据进行比较,返回是否命中结果,如若命中则同时返回命中的地址。CAM可以以独立芯片的形态使用,但独立芯片往往价格昂贵且功耗大。本实施例提供的方法将在FPGA芯片内部实现CAM,无需任何额外的处理器和存储器,可降低系统复杂度,减小硬件成本,且降低功耗。
HASH方式的流表的特点为:表容量大,访问简单,能耗低,但无法处理冲突情况。HASH方式的流表的特点为:性能优越,无冲突表项,但其资源消耗大。HASH-CAM流表分别利用HASH方式与CAM方式的各自优点,补足其缺点。HASH-CAM流表的使用规则为:在表项的新建时,优先使用HASH表进行存储,若发生冲突,则使用CAM表进行存储;在表项的查询时,并行对HASH表和CAM表进行同时匹配,若二者其一命中,则为匹配命中。在FPGA当中,HASH部分的物理实现实体为内部RAM,其匹配方法为,以五元组的HASH值作为地址的方式访问RAM,读取RAM存储内容之后,对存储内容进行比较,判断是否命中。CAM部分的物理实现实体为寄存器逻辑单元,以五元组直接进行内容匹配的方式访问寄存器逻辑单元,直接输出命中结果。
在本实施例中,HASH-CAM流表当中的存储数据包括三类字段:流匹配内容(KEY值)、流处置方法(VALUE值)、流表项使能(EN值);
KEY值为五元组,用于流的匹配;
VALUE值为处置方法,用于匹配后流的处理,为用户自定义项,具体字段根据不同的应用需求而定,对于交换系统,一般为流的交换方法,包括转发丢弃修改策略、指定转发端口等信息,对于终端系统,一般为流的唯一标识号,该标识号将关联后续的流处理,对于运维系统,一般为流的统计量和管控措施,包括流量、活跃时间、黑白名单等等;
EN值为当前表项的使用状态,用于流的有效验证和快速删除。
具体的,同样存储一条表项,CAM表所消耗的资源为HASH表的几十倍,因此要在保证足够的冲突处理空间的前提下,尽量减少CAM表的容量,或者优化HASH表的存储策略,使其尽可能的减少哈希冲突概率。因此,HASH表的设计,关键在于选取优越的HASH变换函数和设定合理的HASH表容量参数。
在本实施例中,HASH表以FPGA内部的块状RAM为基本存储实体,按照HASH方法进行内容匹配。其重点之处在于,对于RAM访问地址的生成,无论是读还是写,需要将KEY值进行HASH运算,运算结果作为RAM的访问地址。对于HASH变换函数的选择,使用随机性好、便于FPGA实现的CRC序列(Cyclic Redundancy Check,循环冗余校验),具体为32级CRC多项式,其系数为(32 2623 22 16 12 11 10 8 7 5 4 2 1 0)。该CRC序列具有良好的随机性,可使得经过变换后的KEY值,较为均匀的分布,从而减小哈希冲突的概率。在FPGA内部可以使用32路并行CRC处理算法,仅需要使用异或运算,在同时钟周期即可直接计算出32位CRC值,大大减小运算复杂度和时延。由于32比特CRC值对应的寻址范围为4G,一般32比特不需要全部使用,可以根据流表的大小选出部分比特使用,由于CRC方法的随机性和一致性,各比特位在统计特性上并无差异,任意选取相应的位数使用,无特殊要求。
HASH表容量参数包含表的深度和宽度,深度即为RAM的地址位宽,宽度即为RAM的数据位宽。在容量相同的情况下,不同的深度与宽度组合也影响着哈希冲突的概率。深度对应的是不同CRC值,宽度对应的是同一CRC值的存储表项的个数,例如深度为N、宽度为M的HASH表,与深度为N/4、宽度为4M的HASH表,在存储容量上二者相同,但后者在数据空间分布上完全包含前者,在相同HASH运算的前提下,后者在物理空间组织上更加均匀,能更好的防止哈希冲突的产生。然而HASH表的宽度并不是越大越好,过大的宽度会导致表项的内容匹配难度大,物理上难以实现。因此HASH表宽度需要保持一个合理的范围,一般而言宽度的取值范围在M=4-8之间,可以兼顾性能和实现难度。HASH表的存储结构如图3所示。
在HASH表中,单个表项的操作分为读取、比较、写入。读取和写入操作,为一般RAM的读写。比较操作在读取的基础上,读出存储的KEY值和EN值,与输入的KEY值进行比较,比较操作的结果分三种:一为命中,即KEY值相等且EN值有效;二为空闲,即EN值无效;三为冲突,即KEY值不相等且EN值有效。
对于M>1的多个表项,HASH表的比较流程包括:
将KEY值附加于CRC序列,得出CRC值;
根据HASH表的深度N,从CRC值选取相同的位宽,作为HASH表的读取地址;
对于读出的表项,并行进行宽度M个比较操作;
输出比较结果,在M个结果中,若有1个命中,即为HASH表命中;若M个未命中且至少1个空闲,即为HASH表空闲;若M个冲突,即为HASH表冲突。
在本实施例中,CAM表以寄存器逻辑单元为基本存储实体,按照所有空间遍历的方法进行内容匹配。在使用时,需要对CAM覆盖的所有寄存器逻辑单元同时进行比较,对各个单元的比较结果进行仲裁,最终输出CAM的匹配结果。
因为需要空间遍历,FPGA中的CAM具体实现方法为寄存器堆积的方式,每个的存储单元都需要寄存器由充当,在数值比较时需要大量的分支判断来完成。CAM对于FPGA的资源使用量比较大,突出表现为对寄存器和逻辑门的需求,对布局布线的要求高,且需要级联实现,因此CAM的深度只能限制在一定范围,大容量的CAM在FPGA中无法实现。合理CAM空间深度范围为128-512,需要多级实现。在输入侧,将待匹配KEY值按照1-K的方式逐级扇出,使之到达每一个寄存器。在存储侧,对寄存器中存储的表项进行内容比较和空闲检测。在输出侧,将比较结果按照K-1的方式逐级汇聚,最终输出匹配结果、匹配的位置和空闲的位置。CAM表的存储结构如图4所示。
可见,CAM表与HASH表不同,CAM表的比较结果只有命中或者不命中,因为HASH表的索引地址和KEY值本身相关,若当前KEY值与先前KEY值的索引地址相同,则发生冲突,导致当前KEY值无法写入,该条表项也就无法存储,CAM的索引地址与KEY值完全不相关,比较时所有单元直接内容匹配,写入时表项非满则可保证成功。
对于整个HASH-CAM流表,需要对HASH表和CAM表在时钟节拍上做同步化处理。由于CAM表的多级实现,会产生比HASH表更多的时钟节拍时延,因此需要对HASH表做相应的时延延长,以等待CAM表返回的结果,之后在同一时钟节拍进行HASH表与CAM表结果的仲裁,作为表项的最终结果。HASH-CAM流表可工作在流水模块,此次操作等待无需等待上次的结果,因此在每个时钟周期都可以完成一次访问。
下面结合具体功能,叙述HASH-CAM流表在不同功能下,所需要的不同执行流程和裁决方法。对于流表提供的查找、新建修改、删除等三种功能,查找功能为最基本操作,新建修改和删除功能建立在查找功能的基础之上。新建修改功能包含两种情况,一是新建,即为新表项的内容建立,其操作为查找-查找未命中-新建VALUE值,二是修改,即为已有表项的内容更新,其操作为查找-查找命中-修改VALUE值,二者在操作流程上并无本质区别,只是针对不同的查找结果,对实际操作效果进行不同的命名。删除功能可分解为查找-查找命中-失效EN值。
如图5所示,图5为HASH-CAM流表查找操作的处理流程,HASH-CAM流表查找操作的处理包括:
其输入为匹配KEY值,输出为命中结果和命中位置的VALUE值;
其中,HASH表的读操作和CAM表的匹配操作可以并行执行,KEY值经过HASH计算后输出为HASH值,作为HASH表的读地址,读取其中存储的KEY值、VALUE值和EN值,若EN值有效且存储的KEY值与匹配的KEY值相同(即为HASH表命中),则查找结果为命中;
若HASH表未命中,需要查看CAM表的命中结果;
若CAM表命中,则查找结果为命中,若CAM表未命中,则查找结果为未命中。
如图6所示,图6为HASH-CAM流表新建修改操作的处理流程,HASH-CAM流表新建修改操作的处理包括:
其输入为匹配KEY值和VALUE值;
其中,新建修改操作前需要执行查找操作,若查找结果为未命中时,执行的实际效果为新建,若查找结果为命中,说明该表项已经存在,执行的实际效果为修改;
在新建过程中,若HASH表的EN值无效,则写入表项内容至HASH表,若HASH表的EN值有效,则说明发送冲突,此位置已经占有,则将表项内容写入CAM表当中。
如图7所示,图7为HASH-CAM流表删除操作的处理流程,HASH-CAM流表删除操作的处理包括:
其输入为匹配KEY值;
其中,删除操作前需要执行查找操作,查找结果为未命中时,说明该表项不存在,无需删除,若查找结果为命中,则将表项的EN值失效。
从中可以看出,查找操作为HASH-CAM流表的核心操作,流表访问就是要快速地得知KEY值是否存储在流表中,以及其存储的位置,之后便可对KEY值所在的存储单元进行读写,获取依据不同应用需求自定义的VALUE值。
综上所述,本发明提供的HASH-CAM流表可以减小和处理哈希冲突,基于FPGA实现的HASH-CAM流表,在提供可靠的流表功能基础上,充分发挥FPGA并行计算的优势,有着实时性能高、资源能耗低、访问时延小的优点,可在FPGA系统时钟下进行流水工作,比较轻松的实现千万量级PPS(Packets Per Second,每秒吞吐包个数)的流表操作。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。
Claims (10)
1.一种基于FPGA实现的高效网络流表设计方法,其特征在于,该方法包括以下步骤:
构造以HASH表为主存储器、CAM表为辅存储器的HASH-CAM流表;
将获取到的KEY值拷贝为两份,第一份通过哈希算法计算后,将HASH值作为HASH表的访问地址,第二份直接进入CAM表;
HASH表和CAM表分别并行进行表项访问,各自输出结果;
将HASH表和CAM表的访问结果,通过裁决器进行判决,输出表项的访问结果;
其中,对HASH-CAM流表的访问,包括查找、新建修改、删除等功能。
2.根据权利要求1所述的方法,其特征在于,在构造HASH-CAM流表时,还执行:
在表项的新建时,优先使用HASH表进行存储,若发生冲突,则使用CAM表进行存储;
在表项的查询时,并行对HASH表和CAM表进行同时匹配,若二者其一命中,则为匹配命中。
3.根据权利要求1所述的方法,其特征在于:
HASH-CAM流表当中的存储数据包括三类字段:KEY值、VALUE值、EN值;
KEY值为五元组,用于流的匹配;
VALUE值为处置方法,用于匹配后流的处理,为用户自定义项;
EN值为当前表项的使用状态,用于流的有效验证和快速删除。
4.根据权利要求1所述的方法,其特征在于:
HASH表以FPGA内部的块状RAM为基本存储实体,按照HASH方法进行内容匹配;
对于RAM访问地址的生成,需要将KEY值进行HASH运算,运算结果作为RAM的访问地址;
对于HASH变换函数的选择,使用随机性好、便于FPGA实现的CRC序列。
5.根据权利要求4所述的方法,其特征在于:
对于M>1的多个表项,HASH表的比较流程包括:
将KEY值附加于CRC序列,得出CRC值;
根据HASH表的深度N,从CRC值选取相同的位宽,作为HASH表的读取地址;
对于读出的表项,并行进行宽度M个比较操作;
输出比较结果,在M个结果中,若有1个命中,即为HASH表命中;若M个未命中且至少1个空闲,即为HASH表空闲;若M个冲突,即为HASH表冲突。
6.根据权利要求1所述的方法,其特征在于:
CAM表以寄存器逻辑单元为基本存储实体,按照所有空间遍历的方法进行内容匹配;
在使用时,需要对CAM覆盖的所有寄存器逻辑单元同时进行比较,对各个单元的比较结果进行仲裁,最终输出CAM的匹配结果。
7.根据权利要求6所述的方法,其特征在于:
CAM寄存器堆积的多级实现包括:
在输入侧,将待匹配KEY值按照1-K的方式逐级扇出,使其到达每一个寄存器;
在存储侧,对寄存器中存储的表项进行内容比较和空闲检测;
在输出侧,将比较结果按照K-1的方式逐级汇聚,最终输出匹配结果、匹配的位置和空闲的位置。
8.根据权利要求1至7任一项所述的方法,其特征在于:
HASH-CAM流表查找操作的处理包括:
其输入为匹配KEY值,输出为命中结果和命中位置的VALUE值;
其中,HASH表的读操作和CAM表的匹配操作可以并行执行,KEY值经过HASH计算后输出为HASH值,作为HASH表的读地址,读取其中存储的KEY值、VALUE值和EN值,若EN值有效且存储的KEY值与匹配的KEY值相同,则查找结果为HASH表命中;
若HASH表未命中,需要查看CAM表的命中结果;
若CAM表命中,则查找结果为命中,若CAM表未命中,则查找结果为未命中。
9.根据权利要求1至7任一项所述的方法,其特征在于:
HASH-CAM流表新建修改操作的处理包括:
其输入为匹配KEY值和VALUE值;
其中,新建修改操作前需要执行查找操作,若查找结果为未命中时,执行的实际效果为新建,若查找结果为命中,说明该表项已经存在,执行的实际效果为修改;
在新建过程中,若HASH表的EN值无效,则写入表项内容至HASH表,若HASH表的EN值有效,则说明发送冲突,此位置已经占有,则将表项内容写入CAM表当中。
10.根据权利要求1至7任一项所述的方法,其特征在于:
HASH-CAM流表删除操作的处理包括:
其输入为匹配KEY值;
其中,删除操作前需要执行查找操作,查找结果为未命中时,说明该表项不存在,无需删除,若查找结果为命中,则将表项的EN值失效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310201880.8A CN116319551A (zh) | 2023-03-03 | 2023-03-03 | 一种基于fpga实现的高效网络流表设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310201880.8A CN116319551A (zh) | 2023-03-03 | 2023-03-03 | 一种基于fpga实现的高效网络流表设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116319551A true CN116319551A (zh) | 2023-06-23 |
Family
ID=86821759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310201880.8A Pending CN116319551A (zh) | 2023-03-03 | 2023-03-03 | 一种基于fpga实现的高效网络流表设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116319551A (zh) |
-
2023
- 2023-03-03 CN CN202310201880.8A patent/CN116319551A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Li et al. | Packet forwarding in named data networking requirements and survey of solutions | |
US8780926B2 (en) | Updating prefix-compressed tries for IP route lookup | |
US6430527B1 (en) | Prefix search circuitry and method | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
US8335780B2 (en) | Scalable high speed relational processor for databases and networks | |
US10110492B2 (en) | Exact match lookup with variable key sizes | |
US7281085B1 (en) | Method and device for virtualization of multiple data sets on same associative memory | |
US6434144B1 (en) | Multi-level table lookup | |
CN100555248C (zh) | 带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器 | |
US6522632B1 (en) | Apparatus and method for efficient prefix search | |
US8880507B2 (en) | Longest prefix match using binary search tree | |
CN101309216B (zh) | 一种ip包分类方法和设备 | |
JP3823089B2 (ja) | 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 | |
US20050243827A1 (en) | Lookup engine | |
US20020138648A1 (en) | Hash compensation architecture and method for network address lookup | |
CN102377664A (zh) | 一种基于tcam的区域匹配装置和方法 | |
US20150121034A1 (en) | Systems and Methods for Implementing Low-Latency Lookup Circuits Using Multiple Hash Functions | |
US20110276737A1 (en) | Method and system for reordering the request queue of a hardware accelerator | |
CN101620623A (zh) | 内容可寻址存储器表项管理方法和装置 | |
CN106416151A (zh) | 用于分组处理的基于多表哈希查找 | |
Li et al. | Smart name lookup for NDN forwarding plane via neural networks | |
CN110324204B (zh) | 一种在fpga中实现的高速正则表达式匹配引擎及方法 | |
CN109800228B (zh) | 一种高效快速解决hash冲突的方法 | |
CN113392039B (zh) | 一种数据存储、查找方法及装置 | |
CN100414518C (zh) | 改进的虚拟地址变换方法及其装置 |
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 |