CN117914784A - 并行查表装置、方法、设备及计算机可读存储介质 - Google Patents
并行查表装置、方法、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN117914784A CN117914784A CN202211263496.2A CN202211263496A CN117914784A CN 117914784 A CN117914784 A CN 117914784A CN 202211263496 A CN202211263496 A CN 202211263496A CN 117914784 A CN117914784 A CN 117914784A
- Authority
- CN
- China
- Prior art keywords
- index
- matching
- look
- parallel
- address
- 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 48
- 238000012545 processing Methods 0.000 claims description 27
- 238000003780 insertion Methods 0.000 claims description 9
- 230000037431 insertion Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 230000002093 peripheral effect Effects 0.000 claims description 6
- 238000013461 design Methods 0.000 abstract description 8
- 230000007246 mechanism Effects 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 239000000284 extract Substances 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
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/748—Address table lookup; Address filtering using longest matching prefix
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种并行查表装置、方法、设备及计算机可读存储介质,属于集成电路技术领域。本申请实施例提供的并行查表装置包括:多组索引表模块、第一交织器、共享资源池模块和第二交织器。与现有技术相比,本申请实施例克服了大容量路由表最长前缀匹配模块的设计困难,解决了随着同一张路由表的访问端口增加而带来的资源开销呈倍数增大的问题。本申请实施例提供的并行查表装置结合了当前多路并行查表需求,提供了分级查找与匹配机制、多通道共享表项存储资源的机制,减少了多路并行查表需求下实现最长前缀匹配查表的存储资源开销。
Description
技术领域
本申请实施例涉及集成电路技术领域,尤其涉及并行查表装置、方法、设备及计算机可读存储介质。
背景技术
LPM(Long Prefix Match,最长前缀匹配)技术是路由器按照IP地址进行路由转发的核心技术,在很大程度上决定了路由器产品的性能,因此选择合适且高效的LPM算法,是提升路由器产品竞争力的关键因素。
目前,在实际应用中,LPM算法多采用硬件实现方式,随着网络带宽和网络节点数的急剧增长,转发性能的高要求以及存储器的主频限制共同促使芯片趋向于采用并行架构并发地进行多个报文处理。由此,带来了单周期内对同一张路由表进行多次或多端口访问的需求,通过内部的并发处理提高芯片的流量带宽。
对于这种应用场景,现有的硬件实现类型的LPM算法往往只能通过复制表项资源的方式来成倍的扩张资源开销,以应对多路并行查表的需求,这会导致电路及存储资源开销成倍地增长。
发明内容
本申请实施例的主要目的在于提供一种并行查表装置、方法、设备及计算机可读存储介质,旨在减少多路并行查表需求下实现最长前缀匹配查表的存储资源开销。
为实现上述目的,本申请实施例提供一种并行查表装置,所述并行查表装置包括:
多组索引表模块,各所述索引表模块分别与不同的预设输入通道相连,所述索引表模块用于接收来自所述预设输入通道的键值并根据所述键值生成查表请求;
第一交织器,所述第一交织器与各所述索引表模块相连,所述第一交织器用于接收来自各所述索引表模块的查表请求并分发所述查表请求;
共享资源池模块,所述共享资源池模块与所述第一交织器相连,所述共享资源池模块用于接收来自所述第一交织器的所述查表请求并根据所述查表请求和预设规则匹配表生成匹配结果;
第二交织器,所述第二交织器与所述共享资源池模块以及多个预设输出通道相连,所述第二交织器用于接收来自所述共享资源池模块的匹配结果并将所述匹配结果反馈至与所述预设输入通道对应的预设输出通道。
此外,为实现上述目的,本申请实施例还提供一种并行查表方法,应用于上述并行查表装置,所述并行查表方法包括:
插入预设规则以生成预设规则匹配表;
根据来自预设输入通道的键值生成查表请求;
根据所述查表请求和所述预设规则匹配表将所述键值与所述预设规则进行匹配以得到匹配结果;
将所述匹配结果反馈至与所述预设输入通道对应的预设输出通道。
在一些实施例中,所述插入预设规则的步骤,包括:
对预设规则进行掩码散列处理并与所述索引表进行逐级匹配;
若匹配成功,且与所述预设规则匹配的直接表地址的对应行存在空位,则将所述预设规则插入所述直接表地址的对应行;
若匹配成功,且与所述预设规则匹配的直接表地址的对应行不存在空位,则重新构建索引规则;
若匹配失败,则根据所述直接表内是否存在空余索引位置和空余直接表行地址确定所述预设规则的插入方式。
此外,为实现上述目的,本申请实施例还提供一种并行查表设备,所述并行查表设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的并行查表方法。
此外,为实现上述目的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的并行查表方法。
本申请实施例提出一种并行查表装置、方法、设备及计算机可读存储介质,该并行查表装置包括:多组索引表模块,各所述索引表模块分别与不同的预设输入通道相连,所述索引表模块用于接收来自所述预设输入通道的键值并根据所述键值生成查表请求;第一交织器,所述第一交织器与各所述索引表模块相连,所述第一交织器用于接收来自各所述索引表模块的查表请求并分发所述查表请求;共享资源池模块,所述共享资源池模块与所述第一交织器相连,所述共享资源池模块用于接收来自所述第一交织器的所述查表请求并根据所述查表请求和预设规则匹配表生成匹配结果;第二交织器,所述第二交织器与所述共享资源池模块以及多个预设输出通道相连,所述第二交织器用于接收来自所述共享资源池模块的匹配结果并将所述匹配结果反馈至与所述预设输入通道对应的预设输出通道。
与现有技术相比,本申请实施例克服了大容量路由表最长前缀匹配模块的设计困难,解决了随着同一张路由表的访问端口增加而带来的资源开销呈倍数增大的问题。本申请实施例提供的并行查表装置结合了当前多路并行查表需求,提供了分级查找与匹配机制、多通道共享表项存储资源的机制,减少了多路并行查表需求下实现最长前缀匹配查表的存储资源开销。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一部分,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的一种并行查表装置的结构示意图;
图2为本申请一实施例提供的一种并行查表装置的应用场景示意图
图3为本申请一实施例提供的一种并行查表装置的细化结构示意图;
图4为本申请一实施例提供的一种并行查表装置涉及的索引表行格式示意图;
图5为本申请一实施例提供的一种并行查表装置涉及的索引匹配规则示意图;
图6为本申请一实施例提供的一种并行查表方法的流程示意图;
图7为本申请一实施例提供的一种并行查表方法涉及的规则插入流程示意图;
图8为本申请一实施例提供的一种并行查表设备的硬件结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请实施例。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请实施例的描述。
需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
还应当理解,在本申请实施例说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请实施例的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
路由查找与分组转发主要通过查找路由表,确定转发的“下一跳”信息,存储“下一跳”信息的路由表也称为转发信息表(Forward Information Base,FIB)。由于当今网络使用无分类域间路由(Classless Inter Domain Routing,CIDR)的地址结构,同一张路由表中往往存在多个可能与到来报文的IP地址相匹配的前缀。为了更高效的进行路由转发,找到最优的转发路径,路由器需要根据路由表找到找到具有最长前缀的匹配结果。这种在前缀组成的路由表中找到最常匹配的方法,即最长前缀匹配(Long Prefix Match,LPM)技术。LPM技术是路由器按照IP地址进行路由转发的核心技术,在很大程度上决定了路由器产品的性能,因此选择合适且高效的LPM算法,是提升路由器产品竞争力的关键因素。
现有的LPM算法,按应用环境划分,可以分为软件实现和硬件实现两种类型。但是对于核心网、承载网、数据中心等高频高带宽的网络应用场景,需要配置高端的路由和交换芯片或设备,软件实现的LPM算法性能往往无法达到实际需求,因此实际应用中多采用硬件实现方式。在硬件实现最长前缀匹配的方法中,兼顾资源开销和转发效率的方法主要以哈希表和TCAM为主,大容量路由表所需的芯片资源开销占比较大,需要不断地探索性价比更高的技术方法以降低研发成本。同时,随着网络带宽和网络节点数的急剧增长,转发性能的高要求以及存储器的主频限制共同促使芯片趋向于采用并行架构并发地进行多个报文处理。由此,带来了单周期内对同一张路由表进行多次或多端口访问的需求,通过内部的并发处理提高芯片的流量带宽。
对于这种应用场景,现有的硬件实现类型的LPM算法往往只能通过复制表项资源的方式来成倍的扩张资源开销,以应对多路并行查表的需求,这会导致电路及存储资源开销成倍地增长。
基于此,本申请实施例提供了一种并行查表装置、方法、设备及计算机可读存储介质,该并行查表装置包括:多组索引表模块,各所述索引表模块分别与不同的预设输入通道相连,所述索引表模块用于接收来自所述预设输入通道的键值并根据所述键值生成查表请求;第一交织器,所述第一交织器与各所述索引表模块相连,所述第一交织器用于接收来自各所述索引表模块的查表请求并分发所述查表请求;共享资源池模块,所述共享资源池模块与所述第一交织器相连,所述共享资源池模块用于接收来自所述第一交织器的所述查表请求并根据所述查表请求和预设规则匹配表生成匹配结果;第二交织器,所述第二交织器与所述共享资源池模块以及多个预设输出通道相连,所述第二交织器用于接收来自所述共享资源池模块的匹配结果并将所述匹配结果反馈至与所述预设输入通道对应的预设输出通道。与现有技术相比,本申请实施例克服了大容量路由表最长前缀匹配模块的设计困难,解决了随着同一张路由表的访问端口增加而带来的资源开销呈倍数增大的问题。本申请实施例提供的并行查表装置结合了当前多路并行查表需求,提供了分级查找与匹配机制、多通道共享表项存储资源的机制,减少了多路并行查表需求下实现最长前缀匹配查表的存储资源开销。
本申请实施例提供的并行查表装置、方法、设备及计算机可读存储介质,具体通过如下实施例进行说明,首先描述本申请实施例中的并行查表装置。
本申请实施例提供一种并行查表装置,参照图1,图1为本申请一实施例提供的一种并行查表装置的结构示意图,如图1所示,本实施例提供的并行查表装置包括多组索引表模块10、第一交织器20、共享资源池模块30和第二交织器40。
多组索引表模块10,各所述索引表模块10分别与不同的预设输入通道相连,所述索引表模块10用于接收来自所述预设输入通道的键值并根据所述键值生成查表请求;
第一交织器20,所述第一交织器20与各所述索引表模块10相连,所述第一交织器20用于接收来自各所述索引表模块10的查表请求并分发所述查表请求;
共享资源池模块30,所述共享资源池模块30与所述第一交织器20相连,所述共享资源池模块30用于接收来自所述第一交织器20的所述查表请求并根据所述查表请求和预设规则匹配表生成匹配结果;
第二交织器40,所述第二交织器40与所述共享资源池模块30以及多个预设输出通道相连,所述第二交织器40用于接收来自所述共享资源池模块30的匹配结果并将所述匹配结果反馈至与所述预设输入通道对应的预设输出通道。
需要说明的是,本实施例提供的并行查表装置可以应用于大规模集成电路,用于实现LPM查表功能,在芯片设计阶段将本实施例提供的各模块功能进行实现并作为整体嵌入各类大型芯片中,即可提供多路并行执行LPM查表的功能,查表过程中无需软件配合。
预设输入通道对应图1中各索引表模块10左侧输入端的通道1、通道2至通道n,预设输出通道对应图1中第二交织器40右侧输出端的通道1、通道2至通道n,相应地,本实施例中索引表模块10的数量也为n,在并行查表装置的硬件电路构建完成后,在使用前还需要先通过软件将预设规则加载至该装置中形成预设的LPM表,该LPM表中包含许多预设规则以及与之对应的匹配结果,当基于键值生成的查表请求与某一条预设规则匹配时,则将对应的匹配结果反馈至相应的预设输出通道,由此,该并行查表装置即可支持多路并行查表的访问需求。
图2为本实施例提供的一种应用场景示意图,如图2所示,本实施例提供的并行查表装置连接了多个报文处理单元,可以供多个报文处理单元同时查找LPM表项,并各自返回查表结果,每个报文处理单元将报文进行报文头提取,进而提取对应于LPM表格式的键值,然后将键值送至并行查表装置执行查询功能(即报文处理单元1、报文处理单元2至报文处理单元n通过不同的预设输入通道向并行查表装置发送键值1、键值2至键值n);并行查表装置将查询到的结果送回给报文处理单元,结果信息可用于报文处理单元对报文做出正确的处理(即并行查表装置在基于这些键值进行规则匹配后,将结果1、结果2至结果n通过与不同的预设输入通道对应的预设输出通道发送给报文处理单元1、报文处理单元2至报文处理单元n)。
为了便于理解,本实施例对键值提取、LPM查表的基本原理进行以下说明:键值提取一般在报文头内进行,根据协议及用户配置的路由表信息,确定需要查表的若干字段,将这些字段进行拼接,即可得到待查表的键值;以IPv4(Internet Protocol version 4,网际协议版本4)的路由表为例,表项内的前缀规则主要由两部分组成:VPN(Virtual PrivateNetwork,虚拟专用网络)id(Identity document,唯一编码)信息和IP地址(InternetProtocol Address,互联网协议地址)信息;因此,我们需要根据当前报文的上下行属性,判断当前需要提取源IP地址还是目的IP地址,提取后与VPN id字段一起组成最终需要进行LPM查表的键值;而LPM表实际上就是许许多多的前缀规则组成的表,如表1所示,表1给出了一个由4个前缀规则组成的LPM表的示例,表项宽度为32b,表中的*表示该规则不关心对应位置报文比特的取值;此时,若用于查表的键值为0x1234 5678,则其查询结果会同时命中编号为1和2的两条规则,但是根据最长前缀匹配的原则,规则2的前缀长度为24b,而规则1的前缀长度只有16b,因此最终匹配结果为规则2对应的结果B。
表1
编号 | 前缀规则(十六进制表示) | 结果 |
1 | 0x1234**** | A |
2 | 0x1234 56** | B |
3 | 0x1000**** | C |
4 | 0x2000**** | D |
在一些可行的实施例中,所述索引表模块10,包括:
多级索引表,各所述索引表级联;
索引外围电路,所述索引外围电路与各所述索引表、所述预设输入通道以及所述第一交织器20相连。
在一些可行的实施例中,所述索引表,包括:前级索引表和末级索引表;所述索引外围电路,包括:
掩码散列模块,所述掩码散列模块的输入端与所述预设输入通道相连,所述掩码散列模块的输出端与所述前级索引表相连;
匹配模块,所述匹配模块包括中间匹配模块和末级匹配模块,各所述索引表两两之间通过所述中间匹配模块相连,所述末级匹配模块的输入端与所述末级索引表的输出端相连,所述末级匹配模块的输出端与所述第一交织器20相连。
示例性地,参照图3,图3为本申请一实施例提供的一种并行查表装置的细化结构示意图,在图3提供的示例中,索引表模块10对应索引表1至索引表n,各索引表模块10中均包括多级级联的索引表RAM(Random Access Memory,随机存取存储器),本实施例中以二级级联为例(并不代表本实施例只能支持二级级联,三级、四级至n级均属于与本实施例相同的发明构思),则一级索引表RAM对应前级索引表,二级索引表RAM对应末级索引表,以索引表1为例,索引外围电路包括设置在通道1和一级索引表RAM之间的掩码散列模块,用于对送入的键值执行预设的掩码处理,然后通过预设的哈希函数得到散列后的地址信息,索引外围电路还包括设置在一级索引表RAM与二级索引表RAM之间的中间匹配模块和设置在二级索引表RAM和第一交织器20之间的末级匹配模块,中间匹配模块用于读取一级索引表RAM对应行数据,对数据进行解析然后判断是否需要访问二级索引表RAM,若需要访问则生成二级索引表地址,若不需要访问则生成直接表地址,并将直接表地址直接沿二级索引表RAM及末级匹配模块所在的信道输出至第二交织器,在此种直接表地址已经生成不需要进行下一级索引的情况下,二级索引表RAM及末级匹配模块不会处理中间匹配模块的输出信息而是直接将其传递至第一交织器20中;由于本实施例以二级级联为例,故而当逐级索引到二级索引表RAM时已经没有下一级索引表了,故而末级匹配模块的作用是读取二级索引表RAM对应行数据,对数据进行解析然后生成直接表地址。
为便于理解,本实施例提供了如图4所示的索引表行格式示意图,由图4可知,一级索引表RAM的行存储内容可以分为3个部分:
1)选择用于匹配判断的比特位置pos 0,pos 1,pos 2;
2)已有的索引id号以及该id下的存储信息id 0,num 0,next_ptr 0,...,id 7,num 7,next_ptr 7;
3)直接表的基地址base_addr。
其中,第二部分索引id号为插入的规则或者待查表的键值使用第一部分确定的若干个比特位置挑选出的若干个比特拼接而成的id索引,每个id号对应的信息包括当前id下使用的直接表行数量(对应num)、当前id的下一级索引表的地址(对应next_ptr),其中,前者用于计算偏移地址,后者用于记录指向下一级索引表行位置的地址,下一级索引表地址可能为无效值,无效时则表示可直接按照“基地址+偏移地址”的方式访问直接表。特别的,在本实施例中,由于只有两级索引表,因此当无需访问第二级索引表时,id下的直接表行数量必然为1。
二级索引表RAM的行格式相较于一级索引表RAM的行格式,取消了第三部分存储直接表的基地址,也取消了每个id号内的直接表行数量和下一跳信息。这是因为本实施例中的二级索引表RAM已经是最后一级索引表,因此不需要存储下一跳索引表地址信息,指向的直接表行数量也固定设置为1。
为便于理解,本实施例还提供了如图5所示的索引匹配规则示意图,在图5中以一级索引表RAM进行阐释,基于pos 0,pos 1,pos 2选择了3个位置,键值key在对应位置的比特值分别为“1”、“0”、“1”(key中的X表示不关心具体数值),按顺序拼接后可以得到一个二进制表示的索引值101(b)=5。本实施例中暂假设id的编号和id的数值是相等的(实际实施时可以不相等),故由该索引值找到id5对应的存储信息,如果id5的num5(id5对应的直接表行数量)大于1,则表示需要访问下一级索引表,那么需要获取next_ptr5记录的地址,访问下一级索引表,进行进一步的索引匹配;如果id5的num5不大于1,则表示当前索引直接指向直接表(此处不大于1表示当前索引直接指向直接表实际上对应的是num5等于1的情形;若num5为0,则视为未命中直接表地址,默认直接跳出),此时直接表的地址计算公式为:
在一些可行的实施例中,所述共享资源池模块30,包括:
多组共享直接表,各所述共享直接表与所述第一交织器20相连;
匹配及仲裁模块,所述匹配及仲裁模块与所述共享直接表以及所述第二交织器40相连。
同样可参照图3,本实施例中,设置于索引表模块10和共享资源池模块30之间的第一交织器20用于判断多个通道产生的直接表地址之间是否有冲突,在无冲突的情况下,直接按目的地址进行查表请求的分发;有冲突的情况下,需要对冲突的请求进行缓存后依次分发,将其余无冲突的请求直接分发。共享资源池模块30包括多组共享直接表RAM以及对应的匹配及仲裁模块,在图3所示的示例中,包括共享直接表RAM 1、共享直接表RAM 2至共享直接表RAM m,需要说明的是,一般情况下,共享直接表RAM的数量m会大于索引表模块10以及预设输入通道和预设输出通道的数量n,直接表每行存储的规则数量,可以根据表项宽度、直接表RAM位宽、样本容量等多种因素进行定制化设计,通常可以存储个位数数量的规则,这样可以兼顾到匹配和仲裁逻辑电路的复杂度,以及索引表与直接表之间的比例关系,索引表越小,资源随并行查找通道数的递增系数就越低;各共享直接表RAM在获取到查表请求后,会取出直接表对应行地址的数据,该位置存放的为若干个完整的前缀信息,匹配及仲裁模块将这些前缀信息与送入的键值进行精确匹配,得到最长前缀匹配结果,当插入的规则或者待查表的键值经过索引表的匹配后,唯一命中直接表的某一行地址时,取出直接表的对应行,与待匹配的规则或键值逐一进行精确比较,得到的命中结果按照前缀长度进行最长前缀仲裁,如果设计中加入了额外的TCAM(Ternary Content Addressable Memory,三态内容寻址存储器)或者算法类TCAM,则还需要再次进行仲裁,各匹配及仲裁模块的逻辑电路设计是一致的,都能通过解析直接表单行数据,还原多个LPM规则,然后对键值和规则进行逐一精确匹配,得到匹配结果,在多个匹配结果之间进行仲裁,输出优先级最高的规则对应的结果信息,所有的匹配及仲裁模块并不需要全部工作,只有被n个通道选中的至多n个共享直接表RAM及对应的匹配及仲裁模块需要工作。
本实施例中,索引表模块10与共享资源池模块30为级联关系,主要通过交织器及直接表地址信息将二者关联起来。共享资源池模块30中的多块共享直接表RAM可采用统一编址的方式实现,每个预设输入通道对应的索引表模块10产生唯一的直接表地址,由第一交织器20进行交织分发,送至共享资源池模块30的不同共享直接表RAM入口,多个共享直接表RAM的最长前缀匹配结果经过第二交织器40返回给不同的与预设输入通道对应的预设输出通道。
此外,本申请实施例还提供一种并行查表方法,参照图6,图6为本申请一实施例提供的一种并行查表方法的流程示意图,该并行查表方法可以应用于包括上述并行查表装置的并行查表设备,如图6所示,本实施例提供的并行查表方法包括步骤S10至S40。
步骤S10,插入预设规则以生成预设规则匹配表;
步骤S20,根据来自预设输入通道的键值生成查表请求;
步骤S30,根据查表请求和预设规则匹配表将键值与预设规则进行匹配以得到匹配结果;
步骤S40,将匹配结果反馈至与预设输入通道对应的预设输出通道。
应理解的是,本实施例提供的并行查表方法可以应用于上述各实施例中并行查表装置,在并行查表装置的硬件电路构建完成后,先将预设规则插入该装置中以形成预设规则匹配表(即LPM表),该LPM表中包含许多预设规则以及与之对应的匹配结果,当基于来自预设输入通道的键值生成的查表请求与某一条预设规则匹配时,则将对应的匹配结果反馈至与键值来源对应的预设输出通道,在同一时刻,本实施例基于该并行查表装置可支持多路通道的并行查表访问需求。
在一些可行的实施例中,所述索引表模块包括多级索引表,所述共享资源池模块包括多组直接表;步骤S10可以包括但不限于以下步骤:
步骤S11,对预设规则进行掩码散列处理并与所述索引表进行逐级匹配;
步骤S12,若匹配成功,且与所述预设规则匹配的直接表地址的对应行存在空位,则将所述预设规则插入所述直接表地址的对应行;
步骤S13,若匹配成功,且与所述预设规则匹配的直接表地址的对应行不存在空位,则重新构建索引规则;
步骤S14,若匹配失败,则根据所述直接表内是否存在空余索引位置和空余直接表行地址确定所述预设规则的插入方式。
本实施例对于预设规则的插入过程(亦可视为下表过程)进行详细阐述,参照图7,图7为本实施例提供的规则插入流程示意图,由图7可知,在预设规则进入该并行查表装置后,先根据预设的掩码和哈希函数,对规则进行散列地址计算,需要说明的是,本实施例中预设的掩码长度应小于绝大部分的前缀规则的有效长度,有效长度小于预设掩码的预设规则无法直接应用此并行查表装置,可以选择补充少量的TCAM或者算法实现的TCAM(例如并行哈希装置)对这类规则进行特殊处理;也可以将掩码长度不足的规则进行扩展,转化为多条更长前缀的规则再进行下发,针对规则扩展,举例来说,一个4b位宽、有效长度为2的规则0b10**,可以扩展为两个有效长度为3的规则0b100*和0b101*,*表示0或1;
计算后的地址用于对第一级索引表进行寻址访问,由于索引表内部可能不只一级,因此需要不断提取索引表的信息并进行比较,判断是否要进入下一级索引表,还是直接跳转至直接表进行最终的精确匹配;
若需要进入下一级索引表,则读取下一级索引表的对应行信息,然后再次判断是否已有匹配的下一级索引表地址,若已有匹配的下一级索引表地址,则再次执行读取下一级索引表的对应行信息和相应的判断步骤,直至没有匹配的下一级索引表地址时,获取对应的直接表行地址,判断是否已有匹配的直接表地址,若已有匹配的直接表地址,则判断匹配的直接表地址行内是否有空位,若匹配的直接表地址行内有空位,则将规则插入直接表对应地址行,至此,当前的预设规则插入成功;
若匹配的直接表地址行内没有空位,则重构当前索引链上的规则,尝试插入当前下发的规则,并判断重构后是否能够插入,若不能插入则当前的预设规则视为插入失败,插入失败的情况下,可使用预留的补充资源(例如TCAM或算法类TCAM等)进行存储,若能够插入,则更新索引表及所有设计改动的索引表行和直接表行后,视为插入成功;
如果规则在某一级索引表中,未找到匹配的下一跳信息,则认为当前规则未命中索引表(即没有匹配的直接表地址),此时判断是否有空余索引位置以及判断直接表是否有空余行可供申请,可能出现以下三种情况:如果没有空余索引位置,则需要执行上述重构当前索引链上的规则及其后续步骤;如果有空余索引位置,但是直接表资源已耗尽(即直接表没有空余行可供申请),无可申请的行地址空间,则也执行上述重构当前索引链上的规则及其后续步骤;如果既有空余的索引位置,直接表也有空余行可供申请,则直接更新索引,新申请一行直接表并插入规则,返回插入成功。
在一些可行的实施例中,步骤S20可以包括但不限于以下步骤:
步骤S21,对来自预设输入通道的键值进行掩码散列处理以得到散列地址信息;
步骤S22,对所述散列地址信息进行处理以得到唯一的直接表地址;
步骤S23,基于所述键值和所述直接表地址生成查表请求。
在一些可行的实施例中,所述索引表模块包括多级索引表,所述索引表包括前级索引表和末级索引表;步骤S22可以包括但不限于以下步骤:
步骤S221,对所述散列地址信息进行处理以生成索引号;
步骤S222,获取所述前级索引表中与所述索引号对应的行数据;
步骤S223,根据所述行数据判断是否需要访问下一级索引表;
步骤S224,若否,则基于所述行数据计算偏移地址,将所述前级索引表中存储的直接表的基地址与所述偏移地址相加作为唯一的直接表地址;
步骤S225,若是,则获取下一级索引表中与所述索引号对应的行数据,并执行所述根据所述行数据判断是否需要访问下一级索引表的步骤,直至当前访问的索引表为所述末级索引表时,基于所述末级索引表中与所述索引号对应的行数据计算偏移地址,将所述前级索引表中存储的直接表的基地址与所述偏移地址相加作为唯一的直接表地址。
本实施例基于并行查表装置中的掩码散列模块对送入的键值执行预设的掩码处理,然后通过预设的哈希函数得到散列后的地址信息,基于该地址信息进行逐级索引,根据该地址信息获取索引号、索引信息(即索引号对应的行数据)和直接表的基地址,逐级索引过程中,若行数据大于1则表示需要进行下一级索引,若行数据等于1则表示无需再进行下一级索引,若行数据为0则表示未命中直接表地址,最后将基地址加上各索引信息中的偏移地址进行计算即可得到用于访问共享直接表的唯一的直接表地址。
本实施例提供了一种并行查表方法,与现有技术相比,本实施例克服了大容量路由表最长前缀匹配模块的设计困难,解决了随着同一张路由表的访问端口增加而带来的资源开销呈倍数增大的问题。本实施例提供的并行查表方法结合了当前多路并行查表需求,提供了分级查找与匹配机制、多通道共享表项存储资源的机制,减少了多路并行查表需求下实现最长前缀匹配查表的存储资源开销。
本实施例提供的并行查表方法与上述实施例提供的并行查表装置属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述任意实施例,并且本实施例具备并行查表装置相同的有益效果。
此外,本申请实施例还提供一种并行查表设备,上述应用于并行查表设备的并行查表方法可以由并行查表装置执行,该并行查表装置可以通过软件和/或硬件的方式实现,并集成在所述并行查表设备中。所述并行查表设备可以为手机、笔记本、平板电脑等可与网络侧通信的移动设备。
参照图8,图8为本申请一实施例提供的一种并行查表设备的硬件结构示意图。如图8所示,所述并行查表设备可以包括:处理器1001,例如中央处理器(Central ProcessingUnit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(Random Access Memory,RAM),也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储设备。
本领域技术人员可以理解,图8中示出的结构并不构成对并行查表设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。如图8所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及计算机程序。
在图8所示的并行查表设备中,网络接口1004主要用于与其他设备进行数据通信;用户接口1003主要用于与用户进行数据交互;本实施例中的处理器1001、存储器1005可以设置在并行查表设备中,所述并行查表设备通过处理器1001调用存储器1005中存储的计算机程序,并执行上述任一实施例提供的应用于并行查表设备的并行查表方法。
本实施例提出的并行查表设备与上述实施例提出的应用于并行查表设备的并行查表方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述任意实施例,并且本实施例具备与执行并行查表方法相同的有益效果。
此外,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例提供的并行查表方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
以上是对本申请实施例的较佳实施进行了具体说明,但本申请实施例并不局限于上述实施方式,熟悉本领域的技术人员在不违背本申请实施例精神的前提下还可作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请实施例权利要求所限定的范围内。
Claims (10)
1.一种并行查表装置,其特征在于,包括:
多组索引表模块,各所述索引表模块分别与不同的预设输入通道相连,所述索引表模块用于接收来自所述预设输入通道的键值并根据所述键值生成查表请求;
第一交织器,所述第一交织器与各所述索引表模块相连,所述第一交织器用于接收来自各所述索引表模块的查表请求并分发所述查表请求;
共享资源池模块,所述共享资源池模块与所述第一交织器相连,所述共享资源池模块用于接收来自所述第一交织器的所述查表请求并根据所述查表请求和预设规则匹配表生成匹配结果;
第二交织器,所述第二交织器与所述共享资源池模块以及多个预设输出通道相连,所述第二交织器用于接收来自所述共享资源池模块的匹配结果并将所述匹配结果反馈至与所述预设输入通道对应的预设输出通道。
2.如权利要求1所述的并行查表装置,其特征在于,所述索引表模块,包括:
多级索引表,各所述索引表级联;
索引外围电路,所述索引外围电路与各所述索引表、所述预设输入通道以及所述第一交织器相连。
3.如权利要求2所述的并行查表装置,其特征在于,所述索引表,包括:前级索引表和末级索引表;所述索引外围电路,包括:
掩码散列模块,所述掩码散列模块的输入端与所述预设输入通道相连,所述掩码散列模块的输出端与所述前级索引表相连;
匹配模块,所述匹配模块包括中间匹配模块和末级匹配模块,各所述索引表两两之间通过所述中间匹配模块相连,所述末级匹配模块的输入端与所述末级索引表的输出端相连,所述末级匹配模块的输出端与所述第一交织器相连。
4.如权利要求1所述的并行查表装置,其特征在于,所述共享资源池模块,包括:
多组共享直接表,各所述共享直接表与所述第一交织器相连;
匹配及仲裁模块,所述匹配及仲裁模块与所述共享直接表以及所述第二交织器相连。
5.一种并行查表方法,其特征在于,应用于如权利要求1至4中任一项所述的并行查表装置,包括:
插入预设规则以生成预设规则匹配表;
根据来自预设输入通道的键值生成查表请求;
根据所述查表请求和所述预设规则匹配表将所述键值与所述预设规则进行匹配以得到匹配结果;
将所述匹配结果反馈至与所述预设输入通道对应的预设输出通道。
6.如权利要求5所述的并行查表方法,其特征在于,所述根据来自预设输入通道的键值生成查表请求的步骤,包括:
对来自预设输入通道的键值进行掩码散列处理以得到散列地址信息;
对所述散列地址信息进行处理以得到唯一的直接表地址;
基于所述键值和所述直接表地址生成查表请求。
7.如权利要求6所述的并行查表装置,其特征在于,所述索引表模块包括多级索引表,所述索引表包括前级索引表和末级索引表;
所述对所述散列地址信息进行处理以得到唯一的直接表地址的步骤,包括:
对所述散列地址信息进行处理以生成索引号;
获取所述前级索引表中与所述索引号对应的行数据;
根据所述行数据判断是否需要访问下一级索引表;
若否,则基于所述行数据计算偏移地址,将所述前级索引表中存储的直接表的基地址与所述偏移地址相加作为唯一的直接表地址;
若是,则获取下一级索引表中与所述索引号对应的行数据,并执行所述根据所述行数据判断是否需要访问下一级索引表的步骤,直至当前访问的索引表为所述末级索引表时,基于所述末级索引表中与所述索引号对应的行数据计算偏移地址,将所述前级索引表中存储的直接表的基地址与所述偏移地址相加作为唯一的直接表地址。
8.如权利要求5至7中任一项所述的并行查表方法,其特征在于,所述索引表模块包括多级索引表,所述共享资源池模块包括多组直接表;
所述插入预设规则的步骤,包括:
对预设规则进行掩码散列处理并与所述索引表进行逐级匹配;
若匹配成功,且与所述预设规则匹配的直接表地址的对应行存在空位,则将所述预设规则插入所述直接表地址的对应行;
若匹配成功,且与所述预设规则匹配的直接表地址的对应行不存在空位,则重新构建索引规则;
若匹配失败,则根据所述直接表内是否存在空余索引位置和空余直接表行地址确定所述预设规则的插入方式。
9.一种并行查表设备,其特征在于,所述并行查表设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求5至8中任一项所述的并行查表方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求5至8中任一项所述的并行查表方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211263496.2A CN117914784A (zh) | 2022-10-11 | 2022-10-11 | 并行查表装置、方法、设备及计算机可读存储介质 |
PCT/CN2023/102617 WO2024078011A1 (zh) | 2022-10-11 | 2023-06-27 | 并行查表装置、方法及设备、计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211263496.2A CN117914784A (zh) | 2022-10-11 | 2022-10-11 | 并行查表装置、方法、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117914784A true CN117914784A (zh) | 2024-04-19 |
Family
ID=90668681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211263496.2A Pending CN117914784A (zh) | 2022-10-11 | 2022-10-11 | 并行查表装置、方法、设备及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117914784A (zh) |
WO (1) | WO2024078011A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103401777B (zh) * | 2013-08-21 | 2015-12-02 | 中国人民解放军国防科学技术大学 | Openflow的并行查找方法和系统 |
EP3761575A1 (en) * | 2014-04-30 | 2021-01-06 | Huawei Technologies Co., Ltd. | Search apparatus and method |
CN105791455B (zh) * | 2014-12-26 | 2020-04-07 | 中兴通讯股份有限公司 | 三态内容寻址存储器tcam空间的处理方法及装置 |
CN108134739B (zh) * | 2016-12-01 | 2020-10-02 | 深圳市中兴微电子技术有限公司 | 一种基于索引特里树的路由查找方法及装置 |
CN106713144B (zh) * | 2016-12-27 | 2020-01-21 | 锐捷网络股份有限公司 | 一种报文出口信息的读写方法及转发引擎 |
-
2022
- 2022-10-11 CN CN202211263496.2A patent/CN117914784A/zh active Pending
-
2023
- 2023-06-27 WO PCT/CN2023/102617 patent/WO2024078011A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024078011A1 (zh) | 2024-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2643762B1 (en) | Method and apparatus for high performance, updatable, and deterministic hash table for network equipment | |
US8780926B2 (en) | Updating prefix-compressed tries for IP route lookup | |
US7606236B2 (en) | Forwarding information base lookup method | |
US7418505B2 (en) | IP address lookup using either a hashing table or multiple hash functions | |
Bando et al. | Flashtrie: Hash-based prefix-compressed trie for IP route lookup beyond 100Gbps | |
US7167471B2 (en) | Network processor with single interface supporting tree search engine and CAM | |
EP2560327B1 (en) | Routing table establishment method and device | |
US20040230583A1 (en) | Comparison tree data structures of particular use in performing lookup operations | |
US8848707B2 (en) | Method for IP longest prefix match using prefix length sorting | |
US20050018683A1 (en) | IP address storage technique for longest prefix match | |
US6804230B1 (en) | Communication device with forwarding database having a trie search facility | |
CN101620623A (zh) | 内容可寻址存储器表项管理方法和装置 | |
US7403526B1 (en) | Partitioning and filtering a search space of particular use for determining a longest prefix match thereon | |
JP2006246488A (ja) | ネットワーク・ルータ、アドレス処理方法及びコンピュータ・プログラム | |
US6925503B2 (en) | Method and system for performing a longest prefix match search | |
US20230367720A1 (en) | Data search method and apparatus, and integrated circuit | |
CN112818185A (zh) | 一种基于sram的最长前缀匹配硬件系统查找的方法 | |
CN109039911B (zh) | 一种基于hash查找方式共享ram的方法及系统 | |
CN117914784A (zh) | 并行查表装置、方法、设备及计算机可读存储介质 | |
CN113343034A (zh) | Ip查找方法、系统及存储介质 | |
CN107204926B (zh) | 预处理cache的路由快速查找方法 | |
US11250003B2 (en) | Search circuit | |
US9444731B2 (en) | Methods and systems for data packet routing | |
US11924102B2 (en) | Minimizing deviation from average latency of table lookups | |
KR100504387B1 (ko) | Sram과 해슁을 이용한 ip 어드레스 검색 방법 및하드웨어 구조 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |