CN103270727A - 存储体感知多位特里结构 - Google Patents
存储体感知多位特里结构 Download PDFInfo
- Publication number
- CN103270727A CN103270727A CN2011800633121A CN201180063312A CN103270727A CN 103270727 A CN103270727 A CN 103270727A CN 2011800633121 A CN2011800633121 A CN 2011800633121A CN 201180063312 A CN201180063312 A CN 201180063312A CN 103270727 A CN103270727 A CN 103270727A
- Authority
- CN
- China
- Prior art keywords
- mtrie
- memory
- memory bank
- piece
- level
- 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/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/748—Address table lookup; Address filtering using longest matching prefix
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施例包括由存储体感知mtrie控制模块执行的用于将多个mtrie级分布于多个存储体的方法。存储体感知mtrie控制模块识别存在的多个存储体,并且识别一个或多个mtrie级中的一个或多个mtrie块,每个mtrie块是与mtrie级关联的mtrie节点的阵列。存储体感知mtrie控制模块将每个mtrie块存储在多个存储体之一中,给定mtrie块中的所有mtrie节点都存储在同一存储体中。对于每个后续mtrie级,存储体感知mtrie控制模块确保那个mtrie级中的每个mtrie块存储在除了存储紧邻的前一mtrie级的mtrie块的存储体之外的多个存储体之一中。
Description
技术领域
一般来说,本发明的实施例涉及多位特里结构(multi-bit trie)的领域,更具体来说,涉及存储体感知多位特里结构。
背景技术
多位特里结构(mtrie)是一种主要用于给定关键字(例如IP地址)的最长前缀匹配以得到关联值(例如路由或下一跳)的树数据结构。在其最简单形式中,mtrie中的各节点具有两种类型:(1)叶,或者(2)mtrie节点。顾名思义,叶节点存储值并且终止搜索。mtrie节点常常存储步幅大小S,步幅大小S指示为了确定要采取哪个分支、从关键字的剩余部分要处理的位数。可能分支的数量为2^S,并且关键字位(它们的S)提供子节点的索引。
代替存储(指向子分支的)全部2^S个指针,常常对空间来优化mtrie节点。这通过将给定mtrie节点的子存储在连续阵列(mtrie块)中来进行。而且,mtrie节点存储指向那个节点的子分支mtrie块的开始的基指针。给定mtrie块的基址(BA)、mtrie块中的每个mtrie节点的大小(SZ)和子节点的索引(I),能够容易地使用下列公式来计算子节点的存储地址(AD):AD(I)=BA+SZ*I。
图1是示出按照现有技术的3级mtrie的框图。第0级100是根节点,并且具有3位的步幅以及指向其子mtrie块第1级110的基指针Ptr1。注意,在第1级的根的子作为2^3条目(0至7)的阵列存储在连续mtrie块中。索引001处的条目被示为具有3的步幅以及指向第2A级120的基址的基指针Ptr2。第1级110的索引011处的条目被示为具有2的步幅以及指向第2B级121的基址的基指针Ptr3。第110级110的索引6处的条目被示为具有1的步幅以及指向第2C级122的基址的基指针Ptr4。
mtrie中的查找在根处与所提供的关键字一起开始。在每个中间mtrie节点,关键字的一部分(如步幅所指定)被用尽以确定下一个节点,依此类推。最后,一旦到达叶节点,则查找以叶中存储的值终止。图1示出使用带圆圈的1-4的四个步骤在mtrie中的关键字的查找。步骤1示出,正执行关键字001100的查找。第0级100中的步幅为三,因此查找使用三个最高有效位在索引001处对子分支第1级进行索引。步骤2对访问指向第2A级120的索引001处的mnode并且显示三的步幅的第1A级110进行索引。步骤3使用三的步幅和Ptr2在索引100处对第2A级进行索引。步骤4访问保存与关键字001100关联的值的索引100处的叶节点。
存储器技术使得各存储器装置被组织为存储体的集合(例如4或8)。来自该地址的位的子集在最初配置装置时被选择作为存储体选择符。一般来说,存储体选择符位被选择成使得将第一块(例如前8、前16或者前32个字节)指配给第一存储体以及将下一块指配给下一存储体,等等。术语“条带化(striping)”还用于描述块的大小以及如何将地址分布于不同存储体。除了存储器技术之外,存储体的数量和条带化大小(块大小)还取决于管理存储器的存储控制器。
图2是示出按照现有技术的存储器的4个存储体中存储的4级mtrie的框图。图2以四列示出存储器的4个存储体,即存储体0-3。存储地址开始于存储体中的第一存储块处的0x000,并且从左至右递增,使得存储体1的第一存储块处于地址0x010,存储体2的第一存储块处于地址0x020,以及存储体3的第一存储块处于地址0x030。存储体0的第二存储块处于地址0x040。这种寻址方案继续进行到处于地址0x180的存储体0的最后的第七存储块、处于地址0x190的存储体1的最后块、处于地址0x1A0的存储体2的最后块、以及处于地址0x1B0的存储体3的最后块。因此,通过跨越多于16个字节(图2中的一个存储块的宽度)的连续地址所分配的阵列会跨越至少两个存储体。
图2中,四级mtrie开始于地址0x000处的存储体0的第一块中存储的根节点第0级200。根节点指向第1级210,第1级开始于存储体1的第二存储块、地址0x050,并且跨越到存储体3的第二存储块、地址0x07F。第1级200中的mtrie节点指向第2A级220,第2A级220存储在存储体0的第五块并且跨越到存储在地址0x100至0x11F的存储体1的第五块。第1级200中的另一个mtrie节点指向第2B级221,第2B级221存储在存储体2的第五块并且跨越到存储在地址0x120至0x13F的存储体3的第五块。第2A级220中的mtrie节点指向地址0x180处的存储体0的第七块中的第3A级230。第2B级221中的mtrie节点指向存储体2的第七块中并且跨越到地址0x1A0-0x1BF处的存储体3的第七块的第3B级231。
定义存储器装置(和控制器)的另一方面是最大事务处理速率。最大事务处理速率是每秒能够执行的访问(读和写)次数。存储器装置具有总的最大事务处理速率和每存储体的最大事务处理速率。下表提供两种芯片上存储器技术、即静态随机存取存储器(SRAM)和嵌入式动态随机存取存储器(eDRAM)以及两种芯片外存储器技术、即降低等待时间动态随机存取存储器(RL-DRAM)和双倍数据速率同步动态随机存取存储器(DDR-SDRAM)的示范比较。
即使存储器装置(具有b个存储体)额定为每秒M个事务处理的总吞吐量,所得到的有效吞吐量也取决于如何将访问均匀地分布于b个存储体。例如,eDRAM装置被示为具有对装置总体而言600tps的总吞吐量以及每存储体的吞吐量150tps。这意味着,为了实现所提供的最大吞吐量,对这个eDRAM的访问需要扩散于8个存储体中的至少4个存储体上。
在最坏情况下,如果所有访问针对单个存储体,则有效吞吐量将是单个存储体的吞吐量(M/b)。术语“存储体冲突”用于表示如下事实:对存储器装置的访问不均等地分布于存储体上。由于存储体冲突拉低了存储器装置的性能,所以是不希望有的。
用于避免存储体冲突的现有方案依靠随机性和统计分布来提供跨存储体的均匀分布访问。随机化能够在存储器分配时间执行,使得将地址指配给哪些节点没有规律性。如果将多个数据结构映射到同一存储器装置,则能够看到多个数据结构的分配中的随机化如何降低跨存储体的不均匀分布的概率。若给定存储地址本身,还使用哈希对如何拣选存储体进一步加扰。
在分组转发应用中使用的网络处理单元(NPU)、以及具体来说是用于因特网协议(IP)地址查找的mtrie的上下文中,查找一般被切断成一些分组属性(例如源IP地址)。每个查找又根据用于查找的关键字而转换为一系列存储器访问。因此,一旦数据结构已经建立,则访问模式取决于业务混合。这是关于访问的随机性和统计分布的附加假设开始起作用的情况。
但是,上述技术没有完全消除存储体冲突的可能性。因此,虽然依靠随机性和统计分布对于大多数现实世界应用是足够好的,但是它可能并不适合于所有情形(当这些假设中的一个或多个无效时)。
在NPU的上下文中,一些数据结构由于原始性能原因而放置在芯片上。芯片上存储器趋向于小的尺寸。因此,若给定尺寸限制,这类存储器只能够容纳一个或两个数据结构,或者在一些情况下,仅容纳较大数据结构的一部分。因此,芯片上存储器往往不能获得存储器分配中随机化的有益效果以避免存储体冲突。另外,在需要为性能严格预算并且保证性能的一些硬件实现中,依靠随机性的解决方案是不适合的。
发明内容
本发明的实施例包括耦合到网络并且配置成从网络的其它网络单元接收分组的网络单元。网络单元处理分组并且在存储体感知多位特里结构(mtrie)内维护因特网协议(IP)地址查找表。网络单元包括配置成从网络的其它网络单元接收分组的多个网络接口,各分组包含目的地IP地址。网络单元还包括处理器,处理器耦合到多个网络接口,以及配置成处理所接收分组并且为所接收分组中的一个或多个确定下一跳。网络单元还包括存储器和存储控制模块。存储器耦合到处理器,并且配置成存储存储体感知mtrie。存储控制模块耦合到处理器和存储器,并且包括多个存储体。存储控制模块配置成识别存储器中存在的多个存储体。存储控制模块还配置成识别存储体感知mtrie中的一个或多个mtrie级中的一个或多个mtrie块。存储控制模块还配置成将给定mtrie块的所有mtrie节点存储在同一存储体中。存储控制模块还配置成将步幅长度以及指向另一个mtrie块的指针存储在一个或多个mtrie节点中,并且配置成将转发接口标识符存储在一个或多个mtrie节点中。对于每个后续mtrie级,存储控制模块还配置成确保该mtrie级中的每个mtrie块存储在除了存储紧邻的前一mtrie级的mtrie块的存储体之外的多个存储体之一中。
本发明的实施例包括由存储体感知多位(mtrie)控制模块执行的用于将mtrie中的多个mtrie级分布于存储器中的多个存储体的方法。存储体感知mtrie控制模块识别存储器中存在的多个存储体。存储体感知mtrie控制模块识别一个或多个mtrie级中的一个或多个mtrie块,每个mtrie块是与mtrie级关联的mtrie节点的阵列。存储体感知mtrie控制模块将一个或多个mtrie块中的每个存储在多个存储体之一中,给定mtrie块中的所有mtrie节点都存储在同一存储体中。对于每个后续mtrie级,存储体感知mtrie控制模块确保该mtrie级中的每个mtrie块存储在除了存储紧邻的前一mtrie级的mtrie块的存储体之外的多个存储体之一中。
本发明的实施例包括要耦合到处理器和包括多个存储体的存储器的存储控制模块。存储控制模块将多个多位(mtrie)级分布于多个存储体。存储控制模块包括配置成识别存储器中存在的多个存储体的存储体感知mtrie控制模块。存储体感知mtrie控制模块还配置成识别一个或多个mtrie级中的一个或多个mtrie块,每个mtrie块是与mtrie级关联的mtrie节点的阵列。存储体感知mtrie控制模块还配置成将一个或多个mtrie块中的每个存储在多个存储体之一中,给定mtrie块中的所有mtrie节点都存储在同一存储体中。对于每个后续mtrie级,存储体感知mtrie控制模块还配置成确保该mtrie级中的每个mtrie块存储在除了存储紧邻的前一mtrie级的mtrie块的存储体之外的多个存储体之一中。
附图说明
在附图中,通过示例而不是限制来说明本发明,附图中相似的参考标号表示相似的单元。应当注意,本公开中,“一”或“一个”实施例的不同说法不一定表示同一个实施例,这类说法表示至少一个。此外,在结合一个实施例来描述特定特征、结构或特性时,无论是否明确描述,均认为结合其它实施例来实现这种特征、结构或特性是在本领域的技术人员的知识范围之内的。
通过参照以下描述和用于示出本发明的实施例的附图,可以最佳地理解本发明。附图中:
图1是示出按照现有技术的3级mtrie的框图。
图2是示出按照现有技术的存储器的4个存储体中存储的4级mtrie的框图。
图3是示出按照本发明的实施例具有存储体感知多位特里结构(mtrie)的网络单元的框图。
图4是示出按照本发明的实施例维护存储体感知mtrie的方法的流程图。
图5是示出按照本发明的实施例具有存储体感知多位特里结构(mtrie)的存储器的框图。
图6是示出按照本发明的实施例在板块(slab)/片(slice)分配中具有存储体感知多位特里结构(mtrie)的存储器的框图。
具体实施方式
以下描述会描述用于将存储体感知多位特里结构存储在网络单元内的方法和设备。在以下描述中,提出了诸如逻辑实现、操作码、指定操作数的手段、资源划分/共享/重复实现、系统组件的类型和相互关系以及逻辑划分/集成选择之类的许多具体细节,以便提供对本发明的更透彻理解。然而,本领域的技术人员会理解,即使没有这类具体细节,也可实施本发明。在其它情况下,没有详细示出控制结构、门级电路和完整软件指令序列,以免影响对本发明的理解。通过所包含的描述,本领域的技术人员将能够实现适当的功能性而无需过分实验。
说明书中提到“一个实施例”、“实施例”、“一个示例实施例”等表示所述实施例可包括特定特征、结构或特性,但可能不一定每个实施例都包括该特定特征、结构或特性。此外,这类短语不一定指同一个实施例。此外,在结合一个实施例来描述特定特征、结构或特性时,无论是否明确描述,均认为结合其它实施例来实现这种特征、结构或特性是在本领域的技术人员的知识范围之内的。
在以下描述和权利要求书中,可使用术语“耦合”和“连接”及其派生词。应当理解,这些术语不是要作为彼此的同义词。“耦合”用于表示彼此可以或者可以不直接物理或电接触的两个或更多单元相互合作或交互。“连接”用于表示彼此耦合的两个或更多单元之间的通信的建立。
图3是示出按照本发明的实施例具有存储体感知多位特里结构(mtrie)的网络单元的框图。不是依靠随机性,而是网络单元将mtrie级分布于存储体,从而确保给定mtrie块中的所有mtrie节点都放置在同一存储体中,并且不同mtrie级的mtrie块放置在不同存储体中。其优点在于,与所查找的关键字无关并且因此与贯穿mtrie以查找对应mtrie叶节点的路径无关,访问不同级的任何查找将命中不同存储体。因此,对存储器装置的存储器访问将更均匀地分布于存储体,并且因而减少存储体冲突。
网络单元300耦合到网络390。在一个实施例中,网络单元300通过网络390耦合到多个端站(例如订户端站或服务器端站)391。在另一个实施例中,网络单元300通过网络390耦合到多个其它网络单元391。在又一个实施例中,网络单元通过网络390耦合到多个端站391和多个网络单元392。第一网络单元300包括耦合到处理器320的多个网络接口310A-310N。处理器320还耦合到存储控制模块330,存储控制模块330耦合到存储器340。存储器存储存储体感知mtrie(例如mtrie内的因特网协议(IP)地址查找表)。在一个实施例中,存储器是RL-DRAM(降低等待时间动态随机存取存储器)。另一个实施例可使用其它类型的存储器(例如eDRAM(嵌入式动态随机存取存储器))。而其它实施例利用DDR-DRAM(双倍数据速率动态随机存取存储器)或SDR-DRAM(单数据速率动态随机存取存储器)。在一些实施例中,存储控制模块330还包括具体在存储器340内建立和维护存储体感知mtrie的存储体感知mtrie控制模块335(虚线中所示)。在其它实施例中,存储体感知mtrie控制模块335包括由处理器320执行的指令集,并且存储控制模块330在存储器340内建立和维护存储体感知mtrie。
在一个实施例中,网络单元300利用存储体感知mtrie来存储和维护将目的地IP地址与下一跳关联的IP地址查找表。当处理器通过多个网络接口接收分组时,处理器为所接收分组中的一个或多个确定下一跳。当处理器了解IP地址与下一跳之间的新关联时,处理器指导存储控制模块330将IP地址用作关键字以及将下一跳用作关联值将新条目存储在IP地址查找表中。
图4是示出按照本发明的实施例维护存储体感知mtrie的方法的流程图。在框400,存储控制模块330识别存储器340中存在的多个存储体。在框410,存储控制模块330识别各将放置在多个mtrie级之一中的一个或多个mtrie块。每个mtrie块是与给定mtrie级关联的mtrie节点的阵列。在框415,存储控制模块330将每个mtrie块存储在多个存储体之一中,使得给定mtrie级的所有mtrie节点都存储在同一存储体中。在一个实施例中,指向另一级的mtrie节点,存储控制模块330存储标识关键字的多少要用作下一索引的步幅大小(步幅长度)以及指向下一级的另一个mtrie块的指针。在其它实施例中,指向另一级的mtrie节点没有存储步幅长度,因为它跨mtrie中的所有mtrie节点是固定的。在作为叶节点的mtrie节点中,存储控制模块330将存储对应值、例如与用作那个叶节点的关键字的特定IP地址对应的下一跳(转发接口标识符)。在存储多个mtrie级的多个mtrie块时,存储控制模块对于每个后续级420执行下列步骤:在框425,存储控制模块330将确保每个mtrie级中的每个mtrie块存储在除了存储紧邻的前一mtrie级的mtrie块的存储体之外的存储体之一中。在一个实施例中,存储控制模块330还将确保给定mtrie级中的所有mtrie块存储在相同存储体中。又在另一个实施例中,存储控制模块330将确保各存储体仅包含来自一个mtrie级的mtrie块。
又参照图3,四级存储体感知mtrie在存储器340内被示为分布于四个存储级。本领域的技术人员会知道,存储器的深度和mtrie的深度没有明确绑定在一起,并且在这里只是为了便于说明而示出。在存储体0,根mtrie节点第0级被存储,并且指向存储体1中存储的mtrie子分支第1级mtrie块。第1级mtrie块中的mtrie节点指向存储体2中存储的两个分开的第2级mtrie块。第2级mtrie块中的mtrie节点指向存储体3中存储的两个分开的第3级mtrie块。能够参照图5更详细地说明图3。
图5是示出按照本发明的实施例具有存储体感知多位特里结构(mtrie)的存储器的框图。图5与图2相似,但是图2示出与图5的存储体感知mtrie相反的不是存储体感知的mtrie。图5以四列示出存储器的四个存储体,即存储体0-3。存储地址开始于存储体中的第一存储块处的0x000,并且从左至右递增,使得存储体1的第一存储块处于地址0x010,存储体2的第一存储块处于地址0x020,以及存储体3的第一存储块处于地址0x030。存储体0的第二存储块处于地址0x040。这种寻址方案继续进行到处于地址0x180的存储体0的最后的第七存储块、处于地址0x190的存储体1的最后块、处于地址0x1A0的存储体2的最后块以及处于地址0x1B0的存储体3的最后块。
图2中,四级存储体感知mtrie在存储器340中被示为分布于四个存储级。在存储体0中,根mtrie节点第0级500存储在地址0x000-0x00F。根mtrie节点500指向地址0x010-0x01F、0x050-0x05F、0x090-0x09F和0x0D0-0x0DF处的存储体1中存储的mtrie子分支第1级mtrie块510。第1级mtrie块510中的两个mtrie节点指向存储体2中存储的两个分开的第2级mtrie块。mtrie块520将mtrie级2A保持在地址0x020-0x02F、0x060-0x06F和0x0A0-0x0AF。mtrie块521将mtrie级2B保持在地址0x160-0x16F和0x1A0-0x1AF。块520中的mtrie节点指向地址0x070-0x7F和0x0B0-0x0BF处的存储体3中的第3A级。块521中的mtrie节点指向地址0x130-0x13F、0x170-0x17F和0x1B0-0x1BF处的存储体3中的第3B级。
图2中,存储块为16字节宽。假定mtrie块中的每个mtrie节点也是16字节,则存储控制器能够使用mtrie块中的索引以及mtrie块的起始地址来转换到特定mtrie节点的存储地址。例如,如果查找要求存储控制器访问第2A级520中的第二mtrie节点(索引为1,因为第一mtrie节点是索引0),则存储控制器能够计算存储体感知偏移,以便加至那个mtrie块的起始地址(0x020)。存储体感知偏移等于索引(I)*(存储体数量(B)*块大小(CSZ)),在示范情况下按照十六进制为1*4*16=64(或0x40)。将0x40加至起始地址0x20得到存储地址0x060或存储体2中的第二块。因此,地址(I)=起始地址(SA)+索引(I)*(存储体(B)*块大小(CSZ)或Ad(I)=SA+I*(B*CZ)。当然,这种计算简化成块大小和mtrie节点大小相等的情形。
在其它实施例中,有利的是将mtrie节点之间的间距存储在每个mtrie节点本身中的mtrie块内。如果间距(SP)存储在mtrie节点中,则地址计算简化为Ad(I)=SA+I*SP。这允许块大小和mtrie节点大小不同。本领域的技术人员会知道,SP可等于块大小,并且仍然有利的是将SP存储在mtrie节点中以避免存储器访问期间的B*CSZ的常数乘法。在一个实施例中,有利的是将mtrie节点大小增加到等于块大小。mtrie节点大小的增加没有降低存储器访问速率,因为存储控制器必须访问块,而与使用块的部分或者块的全部无关。
此外,有利的是确保用于查找的所有访问分布于存储体。因此,存储控制器(例如330)将mtrie中的每级映射到不同存储体,但是不排除每级可分为如图6中对第2级所示的多个mtrie块。使用图6作为示例,每次对第2级需要mtrie块时,会从存储体2来分配存储器。因此,存储控制器能够确信mtrie中的关键字的给定查找不会对其自己呈现存储体冲突,因为每级的各存储器读取将在不同存储体中发生。通过构造mtrie以确保给定查找中不发生存储体冲突,使存储器装置的吞吐量对于那个查找为最大。
在一个实施例中,这个mtrie分配方案采用将存储器分配为板块和片的存储控制器来实现。例如,使用2级板块分配器,板块分配的第一级分配存储器的大区域(板块),而第二级从较大板块内少量发放较小固定大小的片。在使用存储体感知mtrie来实现IP查找表的情况下,预计表更新引起对转换和撤消基础mtrie结构的表的频繁变更。从存储器管理方面,这转换成mtrie块的频繁分配和解除分配(释放)。为了全面支持存储体感知mtrie分配,存储控制器将每个板块当作一系列片,其中每个片包含在一个存储体中。使用诸如参照图5所述之类的算术地址转换,将每个片当作存储器的连续块。标准存储器管理算法能够跨属于特定存储体的所有片运行。如果分配无法实现,则附加板块被分配和划分在各片。如果某个板块的所有片是自由的,则聚结逻辑负责将其存储体组合为板块,并且又将它释放回到中心池中。
图6是示出按照本发明的实施例在板块/片分配中具有存储体感知多位特里结构(mtrie)的存储器的框图。在图6的存储器中已经分配存储器的三个板块、即板块0-2。各板块跨四个存储体来分配,并且进一步切割为四个片,每个片包含在一个存储体内。图6包含四级存储体感知mtrie。根mtrie节点第0级600存储在第一板块的第一片、即板块0片0中,并且指向被分为两个mtrie块的第1级。mtrie块第1A级610存储在板块0片1中,并且指向第二级mtrie块第2A级620。mtrie块第1B级611存储在板块1片1中,并且指向第二级mtrie块第2B级621。mtrie块第2A级620存储在板块0片2中,并且指向板块0片3中存储的第三级mtrie块第3A级630。mtrie块第2B级621存储在板块2片2中,并且指向板块2片3中存储的第三级mtrie块第3B级631。
将各存储器板块划分到其中的板块数量取决于实现最大总吞吐量所需的存储体的数量。如果参阅背景部分的eDRAM特性,即使存储器本身被构造成包含每装置八个存储体,访问也仅需要分散于四个存储体,以便得到最大吞吐量。因此,对于eDRAM,仅创建四个片是足够的。通过四个片和八个存储体,每个片将各由两个存储体来组成。在这种方案中,片内的块将分散在两个存储体。因此,存储器访问不需要分散在全部八个存储体之中,只要存储器访问分散在四个片之中。如果mtrie结构包含比片数更多的级,则存储控制器对mtrie级执行片的循环分配,而无需牺牲吞吐量,因为最大访问次数分散在已经配置用于最大总吞吐量的片上。
本文所使用的“网络单元”(例如路由器、交换机、桥)是包括硬件和软件的一件组网设备,它在通信上互连网络上的其它设备(例如其它网络单元、端站)。一些网络单元是“多服务网络单元”,它们提供对多个连网功能(例如路由、桥接、交换、第2层汇聚、会话边界控制、服务质量和/或订户管理)的支持,和/或提供对多个应用服务(例如数据、语音和视频)的支持。订户端站(例如服务器、工作站、膝上型计算机、上网本、掌上型设备、移动电话、智能电话、多媒体电话、基于因特网协议的语音(VOIP)电话、用户设备、终端、便携媒体播放器、GPS单元、游戏系统、机顶盒)访问通过因特网提供的内容/服务和/或覆盖于因特网(例如通过其中隧道传递)上的虚拟专用网(VPN)上提供的内容/服务。内容和/或服务通常由属于服务或内容提供商的一个或多个端站(例如服务器端站)或者参与对等服务的端站来提供,并且可包括例如公开网页(例如免费内容、店面、搜索服务)、私人网页(例如提供电子邮件服务的用户名/密码访问网页)和/或基于VPN的公司网络。通常,订户端站(例如通过与接入网(有线或无线)耦合的客户驻地设备)耦合到边缘网络单元,边缘网络单元(例如通过一个或多个核心网络单元)耦合到与其它端站(例如服务器端站)耦合的其它边缘网络单元。
网络单元通常分为控制平面和数据平面(有时称作转发平面或媒体平面)。在网络单元是路由器(或者实现路由功能性)的情况下,控制平面通常确定如何路由数据(例如分组)(例如数据的下一跳和该数据的输出端口),而数据平面负责转发该数据。例如,控制平面通常包括与其它网络单元进行通信以交换路由并且基于一个或多个路由选择量度来选择那些路由的一个或多个路由选择协议(例如边界网关协议(BGP)、内部网关协议(IGP)(例如开放式最短路径优先(OSPF)、路由选择信息协议(RIP)、中间系统到中间系统(IS-IS))、标记分布协议(LDP)、资源保存协议(RSVP))。
路由和邻接物被存储在控制平面上的一个或多个路由选择结构(例如路由选择信息库(RIB)、标记信息库(LIB)、一个或多个邻接物结构)中。控制平面基于路由选择结构采用信息(例如邻接物和路由信息)来对数据平面编程。例如,控制平面将邻接物和路由信息编程到数据平面上的一个或多个转发结构(例如转发信息库(FIB)、标记转发信息库(LFIB)以及一个或多个邻接物结构)中。数据平面在转发业务时使用这些转发和邻接物结构。
每个路由选择协议基于某些路由量度(量度对于不同路由选择协议能够是不同的)将路由条目下载到主RIB。每个路由选择协议能够在本地RIB(例如OSPF本地RIB)中存储路由条目,其中包括没有下载到主RIB的路由条目。管理主RIB的RIB模块从路由选择协议所下载的路由中选择路由(基于量度集合),并且将那些所选路由(有时称作活动路由条目)下载到数据平面。RIB模块还能够使路由在路由选择协议之间重新分布。
对于第2层转发,网络单元能够存储用于基于这个数据中的第2层信息来转发数据的一个或多个桥接表。
通常,网络单元包括一个或多个线路卡的集合、一个或多个控制卡的集合以及可选的一个或多个服务卡(有时称作资源卡)的集合。这些卡通过一个或多个机构(例如耦合线路卡的第一全网格以及耦合全部卡的第二全网格)耦合在一起。线路卡的集合组成数据平面,而控制卡的集合提供控制平面并且通过线路卡与外部网络单元交换分组。服务卡的集合能够提供专用处理(例如第4层至第7层服务(例如防火墙、IPsec、IDS、P2P)、VoIP会话边缘控制器、移动无线网关(GGSN、演进分组系统(EPS)网关))。作为举例,服务卡可用于端接IPsec隧道,并且执行伴随认证和加密算法。
如本文所述,指令可表示配置成执行某些操作或具有预定功能性的诸如专用集成电路(ASIC)之类的硬件的特定配置或者在非暂时计算机可读介质中实施的存储器中存储的软件指令。因此,附图所示的技术能够使用在一个或多个电子装置(例如端站、网络单元)上存储和执行的代码及数据来实现。这类电子装置使用诸如非暂时计算机可读存储介质(例如磁盘、光盘、随机存取存储器、只读存储器、闪存装置、相变存储器)和暂时计算机可读通信介质(例如电、光、声或其它形式的传播信号 - 诸如载波、红外信号、数字信号)之类的计算机可读介质来存储和(内部和/或通过网络与其它电子装置之间)传递代码和数据。另外,这类电子装置通常包括一个或多个处理器的集合,处理器耦合到诸如一个或多个存储装置(非暂时机器可读存储介质)、用户输入/输出装置(例如键盘、触摸屏和/或显示器)和网络连接之类的一个或多个其它组件。该处理器集合和其它组件的耦合通常通过一个或多个总线和桥(又称作总线控制器)进行。因此,给定电子装置的存储装置通常存储供那个电子装置的一个或多个处理器的集合上执行的代码和/或数据。当然,本发明的一个实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。
备选实施例
虽然图中的流程图示出本发明的某些实施例所执行的操作的特定顺序,但是应当理解这种顺序是示范性的(例如备选实施例可按照不同顺序来执行操作、组合某些操作、交迭某些操作等)。
虽然按照若干实施例描述了本发明,但是本领域的技术人员会知道,本发明并不局限于所述实施例,而是可在所附权利要求的精神和范围之内经过修改和变更来实施。因此,本描述被看作是说明性而不是限制性的。
Claims (9)
1. 一种网络单元,所述网络单元要耦合到网络,配置成从所述网络的其它网络单元接收分组,处理那些分组,并且在存储体感知多位特里结构(mtrie)内维护因特网协议(IP)地址查找表,所述网络单元包括:
多个网络接口,配置成从所述网络的其它网络单元接收分组,各分组包含目的地IP地址;
处理器,耦合到所述多个网络接口,并且配置成:
处理所接收分组,和
为所述所接收分组中的一个或多个确定转发接口;
存储器,耦合到所述处理器,配置成存储所述存储体感知mtrie;
存储控制模块,耦合到所述处理器,并且耦合到包括多个存储体的所述存储器,所述存储控制模块配置成:
识别所述存储器中存在的所述多个存储体,
识别所述存储体感知mtrie中的一个或多个mtrie级中的一个或多个mtrie块,其中每个mtrie块将是各与所述一个或多个mtrie级之一关联的mtrie节点的阵列;
将所述一个或多个mtrie块中的每个存储在所述多个存储体之一中,其中给定mtrie块的所有mtrie节点要存储在同一存储体中;
将步幅长度和指向另一个mtrie块的指针存储在一个或多个mtrie节点中;
将转发接口标识符存储在一个或多个mtrie节点中;并且
对于每个后续mtrie级:
确保该mtrie级中的每个mtrie块存储在除了存储紧邻的前一mtrie级的mtrie块的所述存储体之外的所述多个存储体之一中。
2. 如权利要求1所述的网络单元,其中,所述存储控制模块还配置成确保给定mtrie级中的所有mtrie块都存储在所述多个存储体中的同一存储体中。
3. 如权利要求1所述的网络单元,其中,所述存储控制模块还配置成确保包含来自所述多个mtrie级之一的mtrie块的各存储体不包含来自所述多个mtrie级中另一级的mtrie块。
4. 一种由存储体感知多位特里结构(mtrie)控制模块执行的用于将mtrie中的多个mtrie级分布于存储器中的多个存储体的方法,所述方法包括下列步骤:
识别所述存储器中存在的所述多个存储体;
识别一个或多个mtrie级中的一个或多个mtrie块,其中每个mtrie块是与mtrie级关联的mtrie节点的阵列;
将所述一个或多个mtrie块中的每个存储在所述多个存储体之一中,其中给定mtrie块中的所有mtrie节点都存储在同一存储体中;以及
对于每个后续mtrie级:
确保该mtrie级中的每个mtrie块存储在除了存储紧邻的前一mtrie级的mtrie块的所述存储体之外的所述多个存储体之一中。
5. 如权利要求4所述的方法,还包括以下步骤:确保给定mtrie级中的所有mtrie块都存储在所述多个存储体中的同一存储体中。
6. 如权利要求4所述的方法,还包括以下步骤:确保包含来自所述多个mtrie级之一的mtrie块的各存储体不包含来自所述多个mtrie级中另一级的mtrie块。
7. 一种存储控制模块,要耦合到处理器和包括多个存储体的存储器,所述存储控制模块用于将多个多位特里结构(mtrie)级分布于所述多个存储体,所述存储控制模块包括:
存储体感知mtrie控制模块,配置成:
识别所述存储器中存在的所述多个存储体;
识别所述mtrie中的一个或多个mtrie级中的一个或多个mtrie块,其中每个mtrie块是与所述一个或多个mtrie级之一关联的mtrie节点的阵列;
将所述一个或多个mtrie块中的每个存储在所述多个存储体之一中,其中给定mtrie块的所有mtrie节点要存储在同一存储体中;以及
对于每个后续mtrie级:
确保该mtrie级中的每个mtrie块存储在除了存储紧邻的前一mtrie级的所述mtrie块的所述存储体之外的所述多个存储体之一中。
8. 如权利要求7所述的存储控制模块,还配置成确保给定mtrie级中的所有mtrie块都存储在所述多个存储体中的同一存储体中。
9. 如权利要求7所述的存储控制模块,还配置成确保包含来自所述多个mtrie级之一的mtrie块的各存储体不包含来自所述多个mtrie级中另一级的mtrie块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/983,098 US8472350B2 (en) | 2010-12-31 | 2010-12-31 | Bank aware multi-bit trie |
US12/983098 | 2010-12-31 | ||
PCT/IB2011/055474 WO2012090098A1 (en) | 2010-12-31 | 2011-12-06 | Bank aware multi-bit trie |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103270727A true CN103270727A (zh) | 2013-08-28 |
CN103270727B CN103270727B (zh) | 2017-02-15 |
Family
ID=45420701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180063312.1A Expired - Fee Related CN103270727B (zh) | 2010-12-31 | 2011-12-06 | 存储体感知多位特里结构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8472350B2 (zh) |
EP (1) | EP2659627A1 (zh) |
CN (1) | CN103270727B (zh) |
WO (1) | WO2012090098A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015192742A1 (zh) * | 2014-06-20 | 2015-12-23 | 华为技术有限公司 | 一种查找装置、查找方法和配置方法 |
CN108139967A (zh) * | 2015-10-09 | 2018-06-08 | 华为技术有限公司 | 将数据流转换为阵列 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378304B2 (en) * | 2013-01-16 | 2016-06-28 | Google Inc. | Searchable, mutable data structure |
WO2018046986A1 (en) * | 2016-09-09 | 2018-03-15 | Telefonaktiebolaget Lm Ericsson (Publ) | Techniques for efficient forwarding information base reconstruction using point of harvest identifiers |
US10635331B2 (en) | 2017-07-05 | 2020-04-28 | Western Digital Technologies, Inc. | Distribution of logical-to-physical address entries across bank groups |
WO2019113197A1 (en) * | 2017-12-05 | 2019-06-13 | Walmart Apollo, Llc | System and method for an index search engine |
KR20200053204A (ko) | 2018-11-08 | 2020-05-18 | 삼성전자주식회사 | 저장 장치, 저장 장치의 동작 방법 및 저장 장치를 제어하는 호스트의 동작 방법 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6370144B1 (en) * | 1997-11-05 | 2002-04-09 | Polytechnic University | Methods and apparatus for shaping queued packets using a two-dimensional RAM-based search engine |
US7249149B1 (en) * | 1999-08-10 | 2007-07-24 | Washington University | Tree bitmap data structures and their use in performing lookup operations |
US6798777B1 (en) * | 2000-04-17 | 2004-09-28 | Juniper Networks, Inc. | Filtering and route lookup in a switching device |
US7899067B2 (en) * | 2002-05-31 | 2011-03-01 | Cisco Technology, Inc. | Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match |
US7733888B2 (en) * | 2002-06-04 | 2010-06-08 | Alcatel-Lucent Usa Inc. | Pointer allocation by prime numbers |
US7782853B2 (en) * | 2002-12-06 | 2010-08-24 | Stmicroelectronics, Inc. | Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine |
US7715392B2 (en) * | 2002-12-12 | 2010-05-11 | Stmicroelectronics, Inc. | System and method for path compression optimization in a pipelined hardware bitmapped multi-bit trie algorithmic network search engine |
US7194568B2 (en) * | 2003-03-21 | 2007-03-20 | Cisco Technology, Inc. | System and method for dynamic mirror-bank addressing |
US7535907B2 (en) * | 2005-04-08 | 2009-05-19 | Oavium Networks, Inc. | TCP engine |
EP2074534B1 (en) * | 2006-10-20 | 2017-01-25 | Oricane AB | Method, device, computer program product and system for representing a partition of n w-bit intervals associated to d-bit data in a data communications network |
US8144705B1 (en) * | 2008-03-17 | 2012-03-27 | Juniper Networks, Inc. | Systems and methods for recursively accessing a multi-bank SRAM |
-
2010
- 2010-12-31 US US12/983,098 patent/US8472350B2/en active Active
-
2011
- 2011-12-06 WO PCT/IB2011/055474 patent/WO2012090098A1/en active Application Filing
- 2011-12-06 EP EP11802537.8A patent/EP2659627A1/en not_active Withdrawn
- 2011-12-06 CN CN201180063312.1A patent/CN103270727B/zh not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
WILL EATHERTON等: "Tree Bitmap: Hardware/Software IP Lookups with Incremental Updates", 《ACM SIGCOMM》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015192742A1 (zh) * | 2014-06-20 | 2015-12-23 | 华为技术有限公司 | 一种查找装置、查找方法和配置方法 |
CN105227468A (zh) * | 2014-06-20 | 2016-01-06 | 华为技术有限公司 | 一种查找装置、查找方法和配置方法 |
CN105227468B (zh) * | 2014-06-20 | 2019-01-08 | 华为技术有限公司 | 一种查找装置、查找方法和配置方法 |
CN108139967A (zh) * | 2015-10-09 | 2018-06-08 | 华为技术有限公司 | 将数据流转换为阵列 |
Also Published As
Publication number | Publication date |
---|---|
US8472350B2 (en) | 2013-06-25 |
EP2659627A1 (en) | 2013-11-06 |
WO2012090098A1 (en) | 2012-07-05 |
CN103270727B (zh) | 2017-02-15 |
US20120170580A1 (en) | 2012-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103270727A (zh) | 存储体感知多位特里结构 | |
CN104380278B (zh) | 用于客户端管理会话持续性的设备、系统和方法 | |
US9825857B2 (en) | Method for increasing Layer-3 longest prefix match scale | |
CN108027805B (zh) | 数据网络中的负载分发 | |
CN108476208A (zh) | 多路径传输设计 | |
US11489771B2 (en) | Efficient forwarding information base caching system and method | |
CN108769111A (zh) | 一种服务器连接方法、计算机可读存储介质及终端设备 | |
Bando et al. | Flashtrie: Hash-based prefix-compressed trie for IP route lookup beyond 100Gbps | |
CN104115472A (zh) | 用于内容导向网络中可扩展路由的方法 | |
CN108259346B (zh) | 一种等价路由表项建立方法和装置 | |
US20170270119A1 (en) | Systems and methods for distributed storage of data across multiple hash tables | |
Le et al. | Scalable tree-based architectures for IPv4/v6 lookup using prefix partitioning | |
CN104601736A (zh) | 一种短url服务的实现方法及装置 | |
CN103141060A (zh) | 内容路由器转发平面结构 | |
CN102985909A (zh) | 为良好分格的对象提供高扩展性网络存储的方法和设备 | |
US11012358B2 (en) | Forwarding table management | |
US9135833B2 (en) | Process for selecting compressed key bits for collision resolution in hash lookup table | |
CN107547364A (zh) | 路由下发方法、装置和网络设备 | |
CN103593485B (zh) | 实现数据库实时操作的方法和设备 | |
Dai et al. | Improving load balance for data-intensive computing on cloud platforms | |
CN102857547A (zh) | 分布式缓存的方法及设备 | |
CN103051544B (zh) | 实现IPv4私网接入IPv6网络的方法及接入设备 | |
Smiljanić et al. | A comparative review of scalable lookup algorithms for IPv6 | |
CN108287661A (zh) | 一种在中心权威机构进行验证的链式存储系统 | |
US9378140B2 (en) | Least disruptive cache assignment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170215 Termination date: 20211206 |
|
CF01 | Termination of patent right due to non-payment of annual fee |