CN107888521B - 多协议共享表项资源池的方法和装置 - Google Patents
多协议共享表项资源池的方法和装置 Download PDFInfo
- Publication number
- CN107888521B CN107888521B CN201710985768.2A CN201710985768A CN107888521B CN 107888521 B CN107888521 B CN 107888521B CN 201710985768 A CN201710985768 A CN 201710985768A CN 107888521 B CN107888521 B CN 107888521B
- Authority
- CN
- China
- Prior art keywords
- entry
- table entry
- variable
- resource pool
- lpm
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/103—Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了多协议共享表项资源池的方法和装置,属于多协议共享资源池的技术领域。所述多协议共享表项资源池的方法包括:接收查表请求;根据所述查表请求得到预先设置的表项资源池中桶的桶地址;以及根据所述表项资源池中的桶地址进行读写;其中,所述表项资源池由层L2表项、层L3表项、最长的前缀匹配LPM共享。本发明通过预先设置共享表项资源池,并将对共享表项资源池中的地址查找具体到对桶地址的查找,这是一种细粒度的连续可调的协议表项空间的划分方式,解决了各种协议表项空间无法灵活分配的问题。
Description
技术领域
本发明涉及多协议共享资源池的技术,具体地涉及多协议共享表项资源池的方法和装置。
背景技术
在支持三层交换甚至四层交换的以太网交换ASIC芯片中,一般会有多条协议流水线并行进行以太网报文的三层及四层协议处理。每条流水线上有多个访问端口,需要同时读写协议表。
每个协议表是一组协议数据结构的集合,其对外有一个或多个读写访问接口,内部由一块或多块RAM(随机存取存储器)组成,并在其中按照一定的地址顺序存放这组协议数据结构。协议流水线部件通过协议表的读写端口对各表项进行读写访问。
在实际芯片中,在某些应用场景下,可能有部分协议表要求使用的容量较大;而在另外一些应用场景下,可能另外一部分协议表要求使用较大的表项容量。如果所有的协议表都按照其最大容量进行设计,当其所处的场景不需要使用这么大的表项容量时,可能会造成硬件资源的浪费。而如果不按照最大容量进行设计,那么在一些特定场景下,将不能达到系统设计需求。
为了解决这个问题,很多现有的以太网交换芯片中,都设计了一种多协议共享的协议表。在这种共享协议表中,将各个协议处理模块所需要的表项组织起来,划分成多个块,然后按照应用场景为每个协议处理模块分配若干个表项块。这样,在不同的应用场景下,根据各协议处理过程中对于表项容量需求的不同,分别为其分配不同数目的表项块供其使用。这样可以优化表项资源配置,在不降低设计指标的情况下,提高硬件资源使用效率。
图1是现有技术的一种芯片中共享协议表项组织结构图,如图1所示,在该芯片中,层L2、层L3以及最长的前缀匹配LPM等协议处理模块分别需要访问协议表项。为了在这几个协议处理模块之间实现表项资源共享,假设这种芯片将所有表项分成10个不同规格的bank(物理存储体),例如bank0,bank1,……,bank9,其中bank0和bank1为L2协议处理专用,bank6、bank7、bank8和bank9为L3协议处理专用,中间的bank2、bank3、bank4和bank5为共享表项存储空间,同时在需要时也可以作为LPM表项的空间。如果在某种场景下,L2所需要的表项容量超过bank0和bank1的最大容量,则可以依次使用bank2、bank3、bank4和bank5;如果L3所需要的表项容量超过bank6-bank9的最大容量,则可以依次使用bank5、bank4、bank3和bank2;在这个过程中,同一个bank在某种配置下只能被某一个协议处理模块使用,而且同一个协议处理模块所使用的表项bank应该是连续存放的。这样,在这种芯片中共有5种不同的配置模式,对应实际情况下5种不同的应用场景,如下:
在模式0下,L2使用bank0-bank5,L3使用bank6-bank9,LPM不使用任何表项;
在模式1下,L2使用bank0-bank4,L3使用bank5-bank9,LPM不使用任何表项;
在模式2下,L2使用bank0-bank3,L3使用bank4-bank9,LPM不使用任何表项;
在模式3下,L2使用bank0-bank2,L3使用bank3-bank9,LPM不使用任何表项;
在模式4下,L2使用bank0-bank1,L3使用bank6-bank9,LPM使用bank2-bank5。
可以看出,在图1相关的芯片中,只有5种配置模式,也就是说L2表项和L3表项的容量只有5种不同的情况,而且要使用LPM的表项时,只有一种可能的配置来实现。
国内的以太网交换芯片设计厂商即使在高端芯片中也是将各协议处理部件所要用到的表项组织成18个block(块)。在使用时,根据当前配置的不同,每个block可以被多个协议处理模块中的某一个使用。这种芯片中只有部分block才被允许配置成供不同协议处理部件使用,其他block也是固定分配的,不能随意变更。
在以上两种方式中,协议处理部件所能使用的表项容量可以根据应用场景和需求的不同进行调整。但是其调整的粒度是以块为单位的,即每个块中的所有表项只能属于同一个协议处理部件。
这种处理方式,只能在几种固定模式下配置使用,虽然易于实现,但无法支持更加灵活多变的应用场景。然而,在某种应用环境下,需要对L2、L3甚至LPM所能使用的表项进行更加灵活的配置,甚至需要随意调整其能够使用的表项容量,以上描述的两种方式将无法实现。
发明内容
本发明实施例的目的是提供多协议共享表项资源池的方法和装置,用于解决各种协议表项空间无法灵活分配的问题。
为了实现上述目的,本发明实施例提供了一种多协议共享表项资源池的方法,该方法包括:接收查表请求;根据所述查表请求得到预先设置的表项资源池中桶的桶地址;以及根据所述表项资源池中的桶地址进行读写;其中,所述表项资源池由层L2表项、层L3表项、最长的前缀匹配LPM共享。
可选的,所述表项资源池包括一个或多个物理存储体,所述一个或多个物理存储体中的每一个物理存储体包括一个或多个桶,其中,根据所述查表请求得到预先设置的表项资源池中桶的桶地址包括:根据所述查表请求通过哈希索引得到所述一个或多个桶中的一个桶的桶地址;以及根据所述桶地址查找到相应的桶,并对该相应的桶中的各个表项进行匹配,返回匹配成功的表项。
可选的,所述L2表项、所述L3表项、所述LPM表项满足以下条件:所述L2表项的总深度、所述L3表项的总深度与所述LPM表项的总深度之和不大于所述表项资源池的总容量;所述L2表项在全局地址空间中的起始地址与所述L2表项的总深度之和不大于所述L3表项在全局地址空间中的起始地址;所述L3表项在全局地址空间中的起始地址与所述L3表项的总深度之和不大于所述LPM表项在全局地址空间中的起始地址;以及所述LPM表项在全局地址空间中的起始地址与所述LPM表项的总深度不大于所述表项资源池的总深度。
可选的,所述一个或多个桶中的每一个桶包括一个或多个逻辑表项,其中桶为物理表项。
可选的,根据所述查表请求得到预先设置的表项资源池中的地址包括:针对所述L2表项/所述L3表项/所述LPM表项设置第一变量、第二变量、第三变量、第四变量,其中所述第一变量初始值设为1;从最高位开始从高位到低位扫描所述L2表项/所述L3表项/所述LPM表项,如果当前位不是1,则将所述第一变量右移1位,最高位补0,如果当前位是1,则所述第三变量为所述L2表项/所述L3表项/所述LPM表项的局部地址与所述第一变量按位与的结果;如果所述第三变量>所述L2表项/所述L3表项/所述LPM表项的总深度,则所述第二变量=所述第三变量-所述L2表项/所述L3表项/所述LPM表项的总深度,否则,所述第二变量=所述第三变量;以及所述第四变量=所述L2表项/所述L3表项/所述LPM表项的起始地址+所述第二变量;其中,所述第四变量为所述查表请求在所述表项资源池中所要访问的地址。
相应地,本发明还提供了一种多协议共享表项资源池的装置,该装置包括:接收模块,用于接收查表请求;获取模块,用于根据所述查表请求得到预先设置的表项资源池中桶的桶地址;以及读写模块,用于根据所述表项资源池中的桶地址进行读写;其中,所述表项资源池由层L2表项、层L3表项、最长的前缀匹配LPM共享。
可选的,所述表项资源池包括一个或多个物理存储体,所述一个或多个物理存储体中的每一个物理存储体包括一个或多个桶,其中,所述获取模块还用于:根据所述查表请求通过哈希索引得到所述一个或多个桶中的一个桶的桶地址;以及根据所述桶地址查找到相应的桶,并对该相应的桶中的各个表项进行匹配,返回匹配成功的表项。
可选的,所述L2表项、所述L3表项、所述LPM表项满足以下条件:所述L2表项的总深度、所述L3表项的总深度与所述LPM表项的总深度之和不大于所述表项资源池的总容量;所述L2表项在全局地址空间中的起始地址与所述L2表项的总深度之和不大于所述L3表项在全局地址空间中的起始地址;所述L3表项在全局地址空间中的起始地址与所述L3表项的总深度之和不大于所述LPM表项在全局地址空间中的起始地址;以及所述LPM表项在全局地址空间中的起始地址与所述LPM表项的总深度不大于所述表项资源池的总深度。
可选的,所述一个或多个桶中的每一个桶包括一个或多个逻辑表项,其中桶为物理表项。
可选的,所述获取模块还用于:针对所述L2表项/所述L3表项/所述LPM表项设置第一变量、第二变量、第三变量、第四变量,其中所述第一变量初始值设为1;从最高位开始从高位到低位扫描所述L2表项/所述L3表项/所述LPM表项,如果当前位不是1,则将所述第一变量右移1位,最高位补0,如果当前位是1,则所述第三变量为所述L2表项/所述L3表项/所述LPM表项的局部地址与所述第一变量按位与的结果;如果所述第三变量>所述L2表项/所述L3表项/所述LPM表项的总深度,则所述第二变量=所述第三变量-所述L2表项/所述L3表项/所述LPM表项的总深度,否则,所述第二变量=所述第三变量;以及所述第四变量=所述L2表项/所述L3表项/所述LPM表项的起始地址+所述第二变量;其中,所述第四变量为所述查表请求在所述表项资源池中所要访问的地址。
相应地,本发明还提供了一种交换芯片,该交换芯片上存储有指令,该指令用于使得机器执行本申请上述方法。
通过上述技术方案,本发明通过预先设置共享表项资源池,并将对共享表项资源池中的地址查找具体到对桶地址的查找,这是一种细粒度的连续可调的协议表项空间的划分方式,解决了各种协议表项空间无法灵活分配的问题。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是现有技术提供的一种芯片中共享协议表项的组织结构图;
图2是本发明提供的多协议共享表项资源池的方法的流程图;
图3是本发明具体实施方式提供的表项资源池的表项存储结构图;
图4是本发明具体实施方式提供的共享表项资源池中L2表项的8个entry在一个bucket中的存储结构;
图5是本发明具体实施方式提供的共享表项资源池中L3表项的4种不同entry在一个bucket中混合存储时的各种可能的情形;
图6是本发明具体实施方式提供的共享表项资源池中LPM表项中一个bucket内的4种不同情形;以及
图7是本发明提供的多协议共享表项资源池的装置的框图。
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
图2是本发明提供的多协议共享表项资源池的方法的流程图,如图2所示,该方法包括:
步骤201,接收查表请求。
步骤202,根据查表请求得到预先设置的表项资源池中桶的桶地址。
步骤203,根据表项资源池中的桶地址进行读写。
其中,表项资源池由层L2表项、层L3表项、最长的前缀匹配LPM共享。
针对以上多协议共享表项资源池的方法,需要预先设置表项资源池,然后将该表项资源池划分成多个物理存储体,L2、L3和LPM处理部件共同使用这个表项资源池,还可以根据当前应用场景的不同,事先为各个协议表分配不同的存储空间,这里的存储空间的分配通过外部送入的配置信号来实现。
图3是本发明具体实施方式提供的表项资源池的表项存储结构图,如图3所示,表项资源池的总容量为40K,即40K深,使用单端口RAM实现,将该40K的表项资源池分为8个物理存储体,每个物理存储体为5K深,其中,物理存储体用bank表示。
具体来说,表项资源池包括一个或多个物理存储体,一个或多个物理存储体中的每一个物理存储体包括一个或多个桶,其中,根据查表请求得到预先设置的表项资源池中桶的桶地址包括:根据查表请求通过哈希索引得到一个或多个桶中的一个桶的桶地址;以及根据桶地址查找到相应的桶,并对该相应的桶中的各个表项进行匹配,返回匹配成功的表项。
一般来说,一个表项资源池包括多个bank,一个bank包括多个bucket(桶),一个桶中有多个entry(表项)。在以太网交换芯片中,L2、L3和LPM表项可以采用Hash(哈希)索引方式,也就是协议处理部件给出一个Hash索引的键值key之后,通过Hash函数将key映射成桶地址,然后用key对桶内各个entry进行匹配,并返回匹配成功的entry。
为了避免多个协议表项地址空间发生冲突,L2表项、L3表项、LPM表项满足以下条件:L2表项的总深度、L3表项的总深度与LPM表项的总深度之和不大于表项资源池的总容量;L2表项在全局地址空间中的起始地址与L2表项的总深度之和不大于L3表项在全局地址空间中的起始地址;L3表项在全局地址空间中的起始地址与L3表项的总深度之和不大于LPM表项在全局地址空间中的起始地址;以及LPM表项在全局地址空间中的起始地址与LPM表项的总深度不大于表项资源池的总深度。
仍以表项资源池的总容量为40K深为例,对存储空间的分配的限定如下:
l2_addr_depth+l3_addr_depth+lpm_addr_depth≤40K;
l2_addr_start+l2_addr_depth≤l3_addr_start;
l3_addr_start+l3_addr_depth≤lpm_addr_start;
lpm_addr_start+lpm_addr_depth≤40K。
其中,l2_addr_start表示L2表项在全局地址空间中的起始地址;l2_addr_depth表示L2表项的总深度;l3_addr_start表示L3表项在全局地址空间中的起始地址;l3_addr_depth表示L3表项的总深度;lpm_addr_start表示LPM表项在全局地址空间中的起始地址;lpm_addr_depth表示LPM表项的总深度。
如果从某个协议处理部件的查表端口接收到一个查表请求,设其请求访问的本协议表项局部地址为req_index,首先根据该请求端口判断属于哪个协议表项空间,然后根据该协议表项空间的最大深度来判断所接收到的局部地址req_index是否超出了表项空间范围。如果req_index大于本协议表项空间深度,则用req_index对深度取余,其结果即为在该表项局部空间内从起始地址开始的偏移。最后将此局部空间的偏移与该协议表项起始地址相加,即为在全局空间中所要查询的地址。
这是由于硬件实现取余操作较为复杂,所以本发明对原始的取余操作进行了改进,具体来说,根据查表请求得到预先设置的表项资源池中的地址包括:针对L2表项/L3表项/LPM表项设置第一变量、第二变量、第三变量、第四变量,其中第一变量初始值设为1;从最高位开始从高位到低位扫描L2表项/L3表项/LPM表项,如果当前位不是1,则将第一变量右移1位,最高位补0,如果当前位是1,则第三变量为L2表项/L3表项/LPM表项的局部地址与第一变量按位与的结果;如果第三变量>L2表项/L3表项/LPM表项的总深度,则第二变量=第三变量-L2表项/L3表项/LPM表项的总深度,否则,第二变量=第三变量;第四变量=L2表项/L3表项/LPM表项的起始地址+第二变量;其中,第四变量为查表请求在表项资源池中所要访问的地址。
下面给出具体实施例。
设从L2处理部件的某个端口发出一个查表请求,其请求查询的局部地址为l2_index[15:0],同时设L2表的起始地址为l2_addr_start[15:0],L2表的深度为l2_addr_depth[15:0],然后进行以下步骤:
(1)设置一个16位的变量l2_addr_depth_mask[15:0],其初始值为全1,即16’hffff;
(2)从最高位开始,依次从左向右扫描l2_addr_depth[15:0],如果当前位不是1,则将l2_addr_depth_mask[15:0]右移1位,最高位补0;如果当前位是1,则结束扫描l2_addr_depth[15:0],转到(3);
(3)设置16位的变量l2_real_index[15:0]和l2_mask_index[15:0],l2_mask_index[15:0]的值为l2_index[15:0]与l2_addr_depth_mask[15:0]按位与的结果,即l2_mask_index[15:0]=l2_index[15:0]&l2_addr_depth_mask[15:0];
(4)如果l2_mask_index[15:0]>l2_addr_depth[15:0],则令l2_real_index[15:0]=l2_mask_index[15:0]-l2_addr_depth[15:0];否则,令l2_real_index[15:0]=l2_mask_index[15:0];
(5)设置16位的变量l2_global_index[15:0],令l2_global_index[15:0]=l2_addr_start[15:0]+l2_real_index[15:0],l2_global_index[15:0]即为L2处理部件发出的查表请求在全局地址空间中所要访问的地址。
对于L3处理部件或LPM处理部件,与L2处理部件的类似,于此不予赘述。
下面给出本发明应用于L2、L3、LPM的具体示例,假设一个bucket为840位。
L2协议处理部件访问表项时,采用Hash索引方式查找到表项资源池中的bucket,并对该bucket中的8个entry进行连续访问进行匹配,并返回匹配成功的entry,一个entry的宽度可以为103位。这里所设置的一个bucket包括8个entry仅仅是一种示例,本领域技术人员应当理解,一个bucket可以包括任意数量的entry,需要说明的是,一个entry可以包括105位,这里仅使用了其中的103位。
图4是本发明具体实施方式提供的共享表项资源池中L2表项的8个entry在一个bucket中的存储结构,是在L2表中,一个840位宽的物理表项被分成8个105位宽的逻辑表项,每个逻辑表项中包含1个103位的entry。需要说明的是桶为物理表项,该物理表项可以被划分为一个或多个逻辑表项。
L3协议处理部件访问表项时,采用Hash索引方式查找到表项资源池中的bucket,entry共有4种不同的类型,每个bucket中可以包含4种不同的entry类型,每一种类型的entry的宽度可以选取如下:
(1)ipv4unicast(单播)类型:每个entry的宽度可以为86位;
(2)ipv4multicast(多播)类型:每个entry的宽度可以为190位;
(3)ipv6unicast类型:每个entry的宽度可以为190位;
(4)ipv6multicast类型:每个entry的宽度可以为347位。
与以上对L2协议处理部件的类似,以ipv4unicast(单播)为例,这里示例的是每个entry的宽度为86位,然而这仅仅是一个示例,一个entry的宽度可以为其他值,例如,以共享资源池为840位,一个bucket包括8个entry为例,一个bucket一般为105位,上述示例仅采用了其中的86位。当然,也可以是一个bucket包括4个entry,一个entry为210位,那么可以使用其中的190位(如ipv4multicast类型)或者170位等。
图5是本发明具体实施方式提供的共享表项资源池中L3表项的4种不同entry在一个bucket中混合存储时的各种可能的情形,如图5所示,在L3表项中,一个840位宽的物理表项可以被划分成多种不同的格式,每个物理表项中可以包含105位、210位和420位的逻辑表项。在划分时,首先将840位的物理表项分成8个105位宽的单元,每个105位宽的逻辑表项可以占用任意一个单元,每个210位宽的逻辑表项可以占用单元0和1,或者单元2和3,或者单元4和5,或者单元6和7;每个420位宽的逻辑表项可以占用单元0123,或者单元4567。每个105位宽的逻辑表项可以包含1个86位宽的ipv4unicast类型的entry,每个210位宽的逻辑表项可以包含1个190位宽的ipv4multicast类型或ipv6unicast类型的entry,每个420位宽的逻辑表项可以包含1个347位宽的ipv6multicast类型的entry。
LPM协议处理部件访问表项时,采用Hash索引方式查找到表项资源池中的bucket,存在以下6中不同的情况:
(1)ipv4类型:连续访问12个entry,每个entry的宽度可以为70位;
(2)ipv4_1类型:连续访问8个entry,每个entry的宽度可以为105位;
(3)ipv6_64类型:连续访问8个entry,每个entry的宽度可以为105位;
(4)ipv6_64_1类型:连续访问6个entry,每个entry的宽度可以为140位;
(5)ipv6_128类型:连续访问4个entry,每个entry的宽度可以为210位;
(6)ipv6_128_1类型:连续访问4个entry,每个entry的宽度可以为210位。
图6是本发明具体实施方式提供的共享表项资源池中LPM表项中一个bucket内的4种不同情形,如图6所示,在LPM表中,如果是ipv4类型的表项,则一个840位宽的物理表项包含12个70位宽的entry;如果是ipv4_1类型或ipv6_64类型的表项,则一个840位宽的物理表项包含8个105位宽的entry;如果是ipv6_64_1类型的表项,则一个840位宽的物理表项包含6个140位宽的entry;如果是ipv6_128类型或ipv6_128_1类型的表项,则一个840位宽的物理表项包含4个210位宽的entry。与以上L2协议处理部件、L3协议处理部件类似,图6也仅仅是一个示例。
这样,整个共享表项资源池的表项存储宽度为840位宽,总容量为33.6Mb。各个协议处理部件(L2、L3或LPM)所能够使用的表项空间通过l2_addr_start、l2_addr_depth、l3_addr_start、l3_addr_depth、lpm_addr_start、lpm_addr_depth等信号进行配置;每一个840位宽的物理表项即为一个bucket,根据当前协议类型的不同,每个bucket中包含的entry数目及其实际位宽各不相同。
为了使得表项池中的每个表项都能满足上述L2、L3以及LPM表的格式需求,本发明中,一个物理表项宽度为840位,在被不同的协议处理部件使用时,一个840位的物理表项会被划分成不同的逻辑表项。
图7是本发明提供的多协议共享表项资源池的装置的框图,如图7所示,该装置包括接收模块701、获取模块702和读写模块703。其中接收模块701用于接收查表请求;获取模块702用于根据查表请求得到预先设置的表项资源池中桶的桶地址;读写模块703用于根据表项资源池中的桶地址进行读写;其中,表项资源池由层L2表项、层L3表项、最长的前缀匹配LPM共享。
应当说明的是,本发明提供的多协议共享表项资源池的装置的具体细节及益处与本发明提供的多协议共享表项资源池的方法类似,于此不予赘述。
相应地,本发明还提供了一种交换芯片,该交换芯片上存储有指令,该指令用于使得机器执行本申请上述方法。
以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。
本发明支持三层交换的以太网交换芯片,不同层次的协议流水线共享访问查找表时,将整个表项设计成一个共享资源池。本发明针对以太网协议处理过程中的多个协议处理部件共享使用协议表项时,各种协议表项空间无法灵活分配的问题,给出了一种细粒度的连续可调的协议表项空间划分及其实现方法。通过本发明的以上技术方案,能够以bucket为粒度来配置各个协议处理部件实际能够使用的表项,各表项空间划分方式更加灵活;根据不同协议表项实际entry宽度的不同,设计了一种能够兼顾多种协议表项格式的表项资源池,满足了多种协议同时共享访问表项资源池的需求;地址计算方式简单,便于硬件实现。
此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。
Claims (9)
1.一种多协议共享表项资源池的方法,其特征在于,该方法包括:
接收查表请求;
根据所述查表请求得到预先设置的表项资源池中桶的桶地址;以及
根据所述表项资源池中的桶地址进行读写;
其中,所述表项资源池由层L2表项、层L3表项、最长的前缀匹配LPM共享;
所述表项资源池包括一个或多个物理存储体,所述一个或多个物理存储体中的每一个物理存储体包括一个或多个桶,其中,根据所述查表请求得到预先设置的表项资源池中桶的桶地址包括:
根据所述查表请求通过哈希索引得到所述一个或多个桶中的一个桶的桶地址;以及
根据所述桶地址查找到相应的桶,并对该相应的桶中的各个表项进行匹配,返回匹配成功的表项。
2.根据权利要求1所述的方法,其特征在于,所述L2表项、所述L3表项、所述LPM表项满足以下条件:
所述L2表项的总深度、所述L3表项的总深度与所述LPM表项的总深度之和不大于所述表项资源池的总容量;
所述L2表项在全局地址空间中的起始地址与所述L2表项的总深度之和不大于所述L3表项在全局地址空间中的起始地址;
所述L3表项在全局地址空间中的起始地址与所述L3表项的总深度之和不大于所述LPM表项在全局地址空间中的起始地址;以及
所述LPM表项在全局地址空间中的起始地址与所述LPM表项的总深度不大于所述表项资源池的总深度。
3.根据权利要求1所述的方法,其特征在于,所述一个或多个桶中的每一个桶包括一个或多个逻辑表项,其中桶为物理表项。
4.根据权利要求1所述的方法,其特征在于,根据所述查表请求得到预先设置的表项资源池中的地址包括:
针对所述L2表项/所述L3表项/所述LPM表项设置第一变量、第二变量、第三变量、第四变量,其中所述第一变量初始值设为1;
从最高位开始从高位到低位扫描所述L2表项/所述L3表项/所述LPM表项,如果当前位不是1,则将所述第一变量右移1位,最高位补0,如果当前位是1,则所述第三变量为所述L2表项/所述L3表项/所述LPM表项的局部地址与所述第一变量按位与的结果;
如果所述第三变量>所述L2表项/所述L3表项/所述LPM表项的总深度,则所述第二变量=所述第三变量-所述L2表项/所述L3表项/所述LPM表项的总深度,否则,所述第二变量=所述第三变量;以及
所述第四变量=所述L2表项/所述L3表项/所述LPM表项的起始地址+所述第二变量;
其中,所述第四变量为所述查表请求在所述表项资源池中所要访问的地址。
5.一种多协议共享表项资源池的装置,其特征在于,该装置包括:
接收模块,用于接收查表请求;
获取模块,用于根据所述查表请求得到预先设置的表项资源池中桶的桶地址;以及
读写模块,用于根据所述表项资源池中的桶地址进行读写;
其中,所述表项资源池由层L2表项、层L3表项、最长的前缀匹配LPM共享;
所述表项资源池包括一个或多个物理存储体,所述一个或多个物理存储体中的每一个物理存储体包括一个或多个桶,其中,所述获取模块还用于:
根据所述查表请求通过哈希索引得到所述一个或多个桶中的一个桶的桶地址;以及
根据所述桶地址查找到相应的桶,并对该相应的桶中的各个表项进行匹配,返回匹配成功的表项。
6.根据权利要求5所述的装置,其特征在于,所述L2表项、所述L3表项、所述LPM表项满足以下条件:
所述L2表项的总深度、所述L3表项的总深度与所述LPM表项的总深度之和不大于所述表项资源池的总容量;
所述L2表项在全局地址空间中的起始地址与所述L2表项的总深度之和不大于所述L3表项在全局地址空间中的起始地址;
所述L3表项在全局地址空间中的起始地址与所述L3表项的总深度之和不大于所述LPM表项在全局地址空间中的起始地址;以及
所述LPM表项在全局地址空间中的起始地址与所述LPM表项的总深度不大于所述表项资源池的总深度。
7.根据权利要求5所述的装置,其特征在于,所述一个或多个桶中的每一个桶包括一个或多个逻辑表项,其中桶为物理表项。
8.根据权利要求5所述的装置,其特征在于,所述获取模块还用于:
针对所述L2表项/所述L3表项/所述LPM表项设置第一变量、第二变量、第三变量、第四变量,其中所述第一变量初始值设为1;
从最高位开始从高位到低位扫描所述L2表项/所述L3表项/所述LPM表项,如果当前位不是1,则将所述第一变量右移1位,最高位补0,如果当前位是1,则所述第三变量为所述L2表项/所述L3表项/所述LPM表项的局部地址与所述第一变量按位与的结果;
如果所述第三变量>所述L2表项/所述L3表项/所述LPM表项的总深度,则所述第二变量=所述第三变量-所述L2表项/所述L3表项/所述LPM表项的总深度,否则,所述第二变量=所述第三变量;以及
所述第四变量=所述L2表项/所述L3表项/所述LPM表项的起始地址+所述第二变量;
其中,所述第四变量为所述查表请求在所述表项资源池中所要访问的地址。
9.一种交换芯片,其特征在于,该交换芯片上存储有指令,该指令用于使得机器执行本申请上述权利要求1-4中的任一项权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710985768.2A CN107888521B (zh) | 2017-10-20 | 2017-10-20 | 多协议共享表项资源池的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710985768.2A CN107888521B (zh) | 2017-10-20 | 2017-10-20 | 多协议共享表项资源池的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107888521A CN107888521A (zh) | 2018-04-06 |
CN107888521B true CN107888521B (zh) | 2021-01-01 |
Family
ID=61781840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710985768.2A Active CN107888521B (zh) | 2017-10-20 | 2017-10-20 | 多协议共享表项资源池的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107888521B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113098798B (zh) * | 2021-04-01 | 2022-06-21 | 烽火通信科技股份有限公司 | 配置共享表项资源池的方法、包交换方法、芯片以及电路 |
CN113254081B (zh) * | 2021-06-16 | 2021-10-08 | 中国人民解放军国防科技大学 | 一种交换芯片内控制通路镜像读写系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1538663A (zh) * | 2003-04-16 | 2004-10-20 | 华为技术有限公司 | 一种采用哈希链表查找路由表项的方法 |
CN1612562A (zh) * | 2003-10-28 | 2005-05-04 | 武汉烽火网络有限责任公司 | 用策略流实现不同因特网协议数据包转发的方法和设备 |
CN104283782A (zh) * | 2014-10-14 | 2015-01-14 | 杭州华三通信技术有限公司 | 多协议标签交换网络中确定报文转发路径的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9408060B2 (en) * | 2014-10-14 | 2016-08-02 | Radius Networks Inc. | Interleaving multiple bluetooth low energy advertisements |
-
2017
- 2017-10-20 CN CN201710985768.2A patent/CN107888521B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1538663A (zh) * | 2003-04-16 | 2004-10-20 | 华为技术有限公司 | 一种采用哈希链表查找路由表项的方法 |
CN1612562A (zh) * | 2003-10-28 | 2005-05-04 | 武汉烽火网络有限责任公司 | 用策略流实现不同因特网协议数据包转发的方法和设备 |
CN104283782A (zh) * | 2014-10-14 | 2015-01-14 | 杭州华三通信技术有限公司 | 多协议标签交换网络中确定报文转发路径的方法和装置 |
Non-Patent Citations (1)
Title |
---|
"Hash算法在网络处理器中的实现";付仲满,张辉,刘涛,;《计算机工程》;20140915;第40卷(第9期);269-274 * |
Also Published As
Publication number | Publication date |
---|---|
CN107888521A (zh) | 2018-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6754776B2 (en) | Method and system for logical partitioning of cache memory structures in a partitoned computer system | |
US9264357B2 (en) | Apparatus and method for table search with centralized memory pool in a network switch | |
CN112334982B (zh) | 共享存储器块配置 | |
US7085275B2 (en) | Method for accessing a non-symmetric dual-slot address table and switching apparatus using same | |
KR102391602B1 (ko) | 다수의 공유된 메모리들을 사용하는 재구성가능한 병렬 룩업을 위한 방법 및 시스템 | |
CN102035727B (zh) | 一种路由的处理方法和设备 | |
CN104102586B (zh) | 一种地址映射处理的方法、装置 | |
US20040225858A1 (en) | Systems and methods for processor memory allocation | |
Bando et al. | FlashTrie: beyond 100-Gb/s IP route lookup using hash-based prefix-compressed trie | |
EP3499816B1 (en) | Method for configuring address table, fpga, and network device applying fpga | |
US20140358886A1 (en) | Internal search engines architecture | |
CN114389995B (zh) | 资源共享的方法、装置以及电子设备 | |
CN107888521B (zh) | 多协议共享表项资源池的方法和装置 | |
CN116431530B (zh) | 一种cxl内存模组、内存的处理方法及计算机系统 | |
GB2350534A (en) | Packet-based network device with forwarding database having a trie search facility | |
KR20170009961A (ko) | 패킷 처리를 위한 다중 테이블 해시 기반 룩업 | |
CN105791455B (zh) | 三态内容寻址存储器tcam空间的处理方法及装置 | |
KR20180006645A (ko) | 메모리 버퍼를 포함하는 메모리 시스템 | |
CN106294191A (zh) | 处理表的方法、访问表的方法和装置 | |
US9256548B2 (en) | Rule-based virtual address translation for accessing data | |
EP2829028B1 (en) | Memory architecture determining the number of replicas stored in memory banks or devices according to a packet size | |
US20080301400A1 (en) | Method and Arrangement for Efficiently Accessing Matrix Elements in a Memory | |
US20230367720A1 (en) | Data search method and apparatus, and integrated circuit | |
CN114300008A (zh) | 一种动态可重构的ram读写方式 | |
CN107948075A (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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Wu Nan Inventor after: Li Xiajuan Inventor after: You Ziwei Inventor after: Yang Jianzhe Inventor after: Wang Kefei Inventor before: Wu Nan Inventor before: Qi Xingyun Inventor before: Li Xiajuan Inventor before: You Ziwei Inventor before: Yang Jianzhe Inventor before: Wang Kefei |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |