CN101510839B - 最长匹配地址查询的方法和装置 - Google Patents
最长匹配地址查询的方法和装置 Download PDFInfo
- Publication number
- CN101510839B CN101510839B CN200810149123.6A CN200810149123A CN101510839B CN 101510839 B CN101510839 B CN 101510839B CN 200810149123 A CN200810149123 A CN 200810149123A CN 101510839 B CN101510839 B CN 101510839B
- Authority
- CN
- China
- Prior art keywords
- subtree
- entry
- mapping program
- descriptor
- node
- 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.)
- Expired - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- 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/742—Route cache; Operation thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
- G06F16/902—Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
-
- 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
-
- 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/02—Topology update or discovery
-
- 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/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical routing
-
- 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
-
- 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]
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
Abstract
本发明涉及最长匹配地址查询的方法和装置,更具体地,提出了一种在给出可用于搜索的查找表时对查找表进行增量更新的方法和装置。为了增加或删除查找表,在提供对查找表中的第一存储空间中存储的第一组路由的访问时,把第二组路由存储在查找表中的第二存储空间中。通过子树条目中存储的第一指针提供对第一存储空间的访问。将第二组路由存储到第二存储空间后,通过用指向第二存储空间的第二指针替换子树条目中存储的第一指针,将访问切换到第一存储空间中的第一组路由。
Description
技术领域
因特网是由路由器连接的一组网络。路由器维护表示每个可能的目的网络,即接收的数据包应被转发到的下一跳的路由表。下一跳可以是另一个路由器或最终的目的地。
背景技术
在路由器中的端口接收的网际协议(“IP”)数据包包括一个IP目的地址。该IP目的地址是该IP数据包的最终目的地。目前,存在两种版本的IP,IP版本4(“IPv4”)和IP版本6(“IPv6”)。IPv4提供包含在用来存储IP目的地址的数据包中IP首部中的32位字段。根据存储在IP首部中的IP目的地址,如果目的地在本地网,路由器转发接收到的与下一跳路由器或最终目的地相连的数据包。
一个32位的IPv4目的地址提供40亿个可能的路由。一个互连网路由器通常存储40亿个可能的路由中的5万个路由。然而,存储的路由数量会随着互连网的发展和IPv6的普及而增加。
起初,IP地址空间分为A,B和C三类IP地址。每个IP地址空间分为网络地址和主机地址。A类可容纳126个网络,每个网络可包含16,000,000台主机。B类可容纳16382个网络,每个网络可包含64,000台主机,以及C类可容纳2,000,000个网络,每个网络可包含256台主机。然而,将IP地址空间划分为不同的类减少了可用IP地址的数量。C类只允许每个网络最多256台主机对于大多数组织来说太少了。因此,大多数组织分配到一个B类地址,多达64,000个主机地址,这些地址即使该组织用不了也不能由其它组织使用。具有B类IP地址的组织的主机都在16位最高有效位(“MSBs”)中存储相同的网络地址,例如27.32.xx.xx。
引入无级域间路由(“CIDR”)以便释放未使用的IP主机地址。剩余的未使用网络分配给规模不同的组织。一个需要500个地址的组织得到500个连续的地址。例如,一个组织可以分配到以128.32.xx为起始的500个可用地址。自从引入了无级域间路由,增加了存储在路由器中的路由数量。无级域间路由需要最长前缀匹配来寻找相应路由来代替为找到相应的IP目的地址的下一跳而寻找匹配的网络地址。例如,因为128.32.4.xx可能已经分配给其它需要不同下一跳的组织,所以在B类IP地址的16MSB,例如128.xx.xx之后,不再停止寻找。
一种用来查询关键字最长前缀匹配的方法是使用二叉树搜索。二叉树搜索与输入的32位逐位匹配到32层,需要32次搜索才能找到与32位关键字匹配的条目。另一种搜索匹配的方法是使用Patricia树。如果二叉树没有条目的叶子,Patricia树减少所需的搜索次数。
Brodnick等人于1998年5月11日提交的题为“快速路由查询的方法和系统”,序号为PCT/SE98/00854的PCT申请中描述了有效地搜索与IP目的地址有关的下一跳的另一种方法。Brodnick描述的方法通过不再存储重复路由来减少所存储的下一跳的数量。通过减少下一跳的数量,减小了对内存的需求,因此路由查找表可以存储在快速超高速缓冲存储器中。
Brodnick等人将二叉树划分为三层。将二叉树划分为三层使搜索次数减少到三。第一层中的索引条目表示搜索是否可以利用从条目获得的路由在第一层结束,或者该搜索必须利用IP目的地址另外的部分将继续到下一层。
图1A说明了表示二叉树第一层的现有技术的64K(65536)位表。64K位表30代表在深度16层的二叉树的叶子或节点44,每个节点44对应一位。位表被划分为长度为16的位屏蔽。在64K位表中共有212=4096个位屏蔽。图1A中显示了一个位屏蔽。如果有子树或路由索引存储在与节点44对应的指针数组中,则位表30中的一位赋置为“1”。如果该节点与前一节点44共享路由条目,则位表30中的一位赋置为“0”。
图1B说明了在超高速缓冲存储器中实现查找表的当前技术。查找表包括码字数组36,基索引数组34和映射表40。图1B中还显示了32位IP地址38。针对位表30(图1A)中的每个位屏蔽,将码字46存储在码字数组36中。码字46包括一个6位的值46a和一个10位的位移46b。针对码字数组36的数组中的每四个码字46,将基索引42存储在基索引数组34中。
码字数组36,基索引数组34和映射表40用来在指针数组(未显示)中选择指针。指针存储一个路由索引或一个索引以便执行进一步的搜索。
通过在码字数组36中选择码字46和在基索引数组34中选择基索引42来在指针数组中选择一组指针。利用IP地址38的前12位50来选择码字46。利用IP地址38的前10位来选择基索引42。利用映射表32在一组指针中选择正确的指针。
所选码字36中10位的值46b作为到映射表32的索引。映射表32将一个位屏蔽中的位数映射到4位的位移。该位移指定在指针数组中所选的一组指针中的指针。10位的值46b选择映射表32中的行,并且IP地址52的位19:16选择4位的位移54。
这样,搜索指针需要下面的超高速缓冲存储器访问:(1)读取16位码字46;(2)读取16位基地址42;(3)从映射表32中读取4位位移54;(4)从指针索引读取指针,其中指针索引是基地址42,码字位移46a和4位位移54之和。
二叉树的每一层需要同样的存储器访问。这样,3层的搜索需要访问存储器12次。
发明内容
David A.Brown提交的代理案编号2037.2004-001,题为“长匹配地址查询的方法和装置”描述了用来执行多层搜索符合关键字的值的查找表。能够存储在查找表中的路由索引的数量由查找表中存储单元的数量来限制。
根据本发明的原理,给出包括第一查询单元和第二查询单元的查找表。第一查询单元接收关键字并且通过第一单元中的多层搜索提供第一结果。第二查询单元接收关键字并且通过第二单元中的多层搜索提供第二结果。第一查询单元和第二查询单元二者都并行地接收关键字,但根据第一结果和第二结果,只有一个单元提供只存储在一个查询单元中的关键字的最终结果。
根据存储在查找表中的最终结果的总数将最终结果分配到表中。关键字可以是IP地址,最终结果是IP地址的路由索引。
由关键字索引的第一查询单元中的第一存储单元存储最终结果,由关键字索引的第二查询单元中的第二存储单元存储最终结果存储在第一查询单元的指示。第一查询单元和第二查询单元都包括多个映射程序层并且每一个映射程序层包括用于存储结果的存储单元。
在一个实施例中,把与存储在第一查询单元中的多个映射程序层的任何一层中的单元中的关键词对应的最终结果转发到第二查询单元,并由第一查询单元提供。
在另一个实施例中,由存储最终结果的查询单元提供与该关键字对应的最终结果。
附图说明
图1A示出代表二叉树第一层的现有技术的位表;
图1B示出在超高速缓冲存储器中实现的现有技术的查找表;
图2A示出根据本发明原理的最长匹配前缀查找表;
图2B示出存储在图2A所示的查找表中的路由索引的二叉树表示;
图3示出根据本发明原理的40位关键字的最长匹配前缀查找表;
图4示出能够存储在图2A所示的直接映射的映射程序的映射程序条目的类型;
图5示出对应图2B所示的映射程序层2112b中的节点的映射程序;
图6A是子树的二叉树表示;
图6B示出对应图6A所示的子树底层中的节点的图5所示的数据字段中存储的密集子树描述符。
图7示出图5所示的ptr字段;
图8示出图5所示的映射程序地址逻辑;
图9是说明搜索最长匹配的步骤的流程图;
图10A示出提供深度扩展的实施例;
图10B示出图10A所示的实施例中的一个查找表;
图10C示出通过提供深度扩展来增加可用于存储值的映射程序条目数量的另一个实施例;
图10D示出图10C所示的实施例中的副查找表;
图11A-B示出在图10A和10C所示查找表中的映射程序条目中图2B所示路由索引的二叉树表示中节点分配的二叉树表示。
图12是说明在图10A和10C所示的查找表中的映射程序条目中分配值的方法的流程图;
图13是说明搜索与图10C所示的查找表中一个映射程序条目中存储的搜索关键字对应的值的方法的流程图;
图14是说明搜索与图10A所示的查找表中一个映射程序条目中存储的搜索关键字对应的值的方法的流程图;
图15示出由第一映射程序层索引的第二映射程序层中稀疏子树和密集子树的二叉树表示;
图16A-C示出在图5所示子树条目和图4所示子树条目中数据字段和指针字段的修改以便在子树条目中允许存储多个稀疏子树描述符;
图17示出图8所示位移逻辑中稀疏模式子树逻辑以选择稀疏居住子树中节点的块位移;
图18示出图17中位移逻辑中所示的稀疏模式逻辑;
图19A-D示出在稀疏居住子树中为节点选择块位移;
图20是说明图8所示指针逻辑中稀疏模式基本选择逻辑的方框图;
图21示出在子树存储器中存储的密集子树描述符和稀疏子树描述符;
图22是说明向为稀疏居住子树和密集居住子树中的节点存储路由的子树映射程序中的映射程序条目提供映射程序地址的方法的流程图;
图23示出将要加到查找表的新路由的二叉树表示;
图24示出更新处理器存储器中存储的路由;
图25示出查找表中存储的图23所示的新路由;
图26是说明向图25所示查找表中增加新路由的步骤的流程图。
本发明前面所述的及其它目的,特征和优点将通过下面参考本发明实施例的具体描述更加显而易见,不同附图中的相同部分用同一参考符号表示。附图不必放大,强调只起说明本发明原理的作用。
具体实施方式
下面描述本发明的优选实施例。
密集模式
图2A示出根据本发明原理的最长匹配前缀查找表100。查找表100提供对应关键字104的路由索引102。路由索引102用来访问对应IP目的地址的下一跳。在图2A所示的实施例中,关键字104为32位,但是关键字104不必限制在32位。查找表100包括3个映射程序106a-c。每个映射程序106a-c包括独立的地址存储器。对应关键字104的路由索引102或缺省路由索引存储在映射程序106a-c之一的一个单元中。如果需要搜索多个映射程序,来自每个映射程序的映射程序输出110a-c存储在延迟存储器150a-c中,直到所有映射程序106a-c已访问了关键字。
多路复用器108选择转发到多路复用器108输入端中的一个映射程序输出110a-c作为路由索引102。根据映射程序输出110a-c的最高有效位(“MSB”)来选择映射程序输出110a-c。仅当映射程序输出110a-c包括路由索引102时,将映射程序输出110a-c的MSB置为“1”。
图2B说明了图2A所示的查找表100中映射程序106a-c中存储的条目的二叉树表示。结合图2A来描述图2B。32位关键字104可以表示为32层二叉树。二叉树实现需要32次搜索,以便按位向下搜索到32层。为减少搜索次数,将32层的二叉树分为每个映射程序层112a-c对应一个映射程序106a-c(图2A)的3个映射程序层112a-c。映射程序层1 12a包括32层二叉树的前16层。然而,为简单起见,图2B中只显示了16层中的5层。映射程序层2 112b包括32层二叉树接下来的8层,图2B显示了8层中的3层。映射程序层3包括32层二叉树的最后8层,图1B显示了8层中的3层。每个映射程序层112a-c包括多个节点。将32层这样分配,使映射程序层1 112a中包括16层(关键字104的16MSB),映射程序层2 112b中包括8层以及映射程序层3中包括8层对当前存储器技术显然是最适宜的;然而,本发明不受这种配置的限制。
取代对关键字104的前16位进行16次分别的逐位搜索,而是将与关键字104的前16位有关的路由索引102存储在映射程序106a中(图2A)。映射程序106a(图2A)直接由关键字104的前16位MSBs索引。根据前一个映射程序106a是否存储了用于访问与关键字104有关的下一跳信息的路由索引102来搜索接下来的映射程序106b。
如图2B所示,映射程序层1 112a所示的节点或叶子包括分别标为r0和r1的两个路由114,116,以及分别标为s0和s1的指向映射程序层2 112b中1304和13023的两个指针。对应每个路由114,116的路由索引102存储在L1映射程序106a中。另外,为子树索引1304存储L2映射程序106b的地址指针120,为子树索引13023存储L2映射106b的地址指针(未示出)。在映射程序106a中的映射程序条目1404中为子树索引1304存储的地址指针120表示为了寻找与关键字104有关的路由索引102所需的下一层的搜索。
树中任何节点的值可以通过跟踪从根114开始的路径来确定。所示二叉树中的每个节点有两个子节点,右子节点和左子节点。如果父节点为“1”,选择右子节点。如果父节点为“0”,选择左子节点。跟踪从根114到节点116的路径,对于所有MSB置为“010”的关键字,r1作为路由索引102存储在L1映射程序106a中。跟踪从根114到s0节点1304的路径,对于所有MSBs置为“00011”的关键字,s0存储在L1映射程序106a中。
L1映射106a是直接映射的映射程序并且存储映射程序层1 112a的底层的每个底层节点或叶子的路由索引102。映射程序层1 112a的底层是32层二叉树的第16层。第16层有64K个节点。但是,为了说明的目的,所示映射程序层1 112a的底层作为32层二叉树的第五层显示。L1映射程序106a所示的路由索引102对应映射程序层1 112a的第五层节点1301-13032。跟踪从根节点114到第五层节点1301,1302,1303的路径,路由索引102为r0。因此r0存储在L1映射程序106a的位置1401,1402,1403中;即在索引00000,00001和00010。节点1304存储子树索引s0,因此s0存储在L1映射程序106a中地址为00011的位置1404。类似地,第五层节点1305-1308的路由索引102是r0,因此r0存储在L1映射程序106a中地址为00100,00101,00110和00111的位置1405,1406,1407,1408。对应第五层节点1309-13012的路由索引102是r1,因此r1存储在L1映射程序106a中地址为01000和01001的位置1409,14010。
在L1映射程序106a的每个位置存储直接分配给第五层节点3001-30032或通过第五层节点3001-32的父节点分配或指向下一个映射程序106b-c的地址指针的路由索引102。映射程序层3 106c包括在32层二叉树底层的节点138的主节点h0和在节点140的主节点h1。对主节点的搜索需要搜索关键字104的所有位。如图2A所示,h0的路由索引102存储在L3映射程序106c中的位置1464中。与L1映射程序106a不同,L2映射程序106b和L3映射程序106c不是直接映射。
在映射程序106b和106c中,不为每个可能的输入而存储路由索引102。仅当节点的路由索引102与映射程序106b-c中存储的前一个路由索引102不同时才存储路由索引102。请看映射程序层2112b中所示的第一子树A中的第三层节点,节点1321和节点1322的路由索引102是r0,因此r0对应的路由索引存储在L2映射程序106b中的节点1321和节点1322对应的位置1421中。节点1322的子树索引存储在位置1422中。与第三层节点1324和第三层节点1325和1326有关的路由索引102为r0,与存储前一个节点1322的s0不同,r0存储在L2映射程序106b中的下一个位置1423。因为节点1327不与前一节点1326共享同一路由,所以对应节点1327的路由r2存储在L2映射程序106b中的位置1424中。为下一个第三层的节点1327存储子树索引s3,因此,s3存储在L2映射程序106b中的位置1425中。由于仅当与前一节点的路由不同时才存储路由索引,因此减少了用于存储路由索引102所需的内存。如图所示,只需要L2映射程序106b中的5个位置来存储映射层2112b中第一子树A的8个第三层节点1321-8对应的路由索引。对于非直接映射106b、106c将在后面结合图5详细描述。
图3说明了根据本发明原理的对应40位关键字210的最长匹配前缀查找表200。在一个实施例中,40位关键字包括8位前缀和32位IP地址。8位前缀可以是与32位IP地址有关的虚拟专用网(“VPN”)的标识符。查找表200包括4个映射程序106a-d。如结合图2A所描述过的,映射程序106a是直接映射的映射程序。映射程序106b-d是间接映射。映射程序106a存储路由索引102或对应40位关键字210的16个MSB的L2映射程序106b的子树索引。这样,L1映射程序具有64K个可能的位置,第一映射程序层112a(图2B)的64K个节点中的每一个节点对应一个位置。存储在L1映射程序106a中对应位置的L1映射程序条目数据220a转发到管道208和L2间接映射程序106b。如果L1映射程序条目数据220a表明下一层的搜索需要利用关键字210b接下来的8位,那么根据关键字210b接下来的8位和L1映射程序条目数据220a在L2间接映射程序106b中执行搜索。
第二层搜索的结果提供在转发到管道208和L3间接映射程序106c的L2映射程序条目数据220b上。根据关键字210c接下来的8位和L2映射程序条目数据220b,在L3间接映射程序106c中执行第三层搜索。
搜索结果提供在转发到管道208和L4间接映射程序106d的L3映射程序条目数据220c上。L3映射程序条目数据220c根据关键字210d的最后8位和L3映射程序条目数据220c来确定是否在L4间接映射程序106d中执行第四层搜索。
第四层的搜索结果提供在L4映射程序条目数据220d上。与关键字210的最长匹配前缀有关的路由索引102只存储在映射106a-d其中一个的一个位置。因此,转发到管道208的路由索引102只包含在映射程序条目数据220a-d之一中。如果在映射程序106a-d的其中一个中找到路由索引102,例如在106b中,则不需要对余下的映射程序106c-d进行搜索和访问。管道208包括用来选择映射程序条目数据220a-d之一中包含的路由索引102的多路复用器108(图2A)。例如,映射程序条目数据220a-d的MSB能够提供是否包含路由索引的指示。
通过将管道208与映射程序106a-d结合使用,可以并行执行对具有不同关键字210的最长匹配前缀表200的多重搜索。管道208通过存储与40位关键字210有关的每个映射程序106a-d的映射程序条目数据220a-d,允许并行执行40位查找表200的多重搜索,直到映射106a-d的每个搜索都已完成,如果必要,寻找对应40位关键字210的路由索引。因此,对应所接收的IP地址的路由索引的搜索请求通过对直接映射的映射程序106a执行一次内存访问来发送给查找表200。对应于另一个关键字的路由索引的后继搜索可以在直接映射的映射程序106a的下一个内存访问循环时发送给查找表200。
图4说明了能够存储在图3所示的直接映射的映射程序106a中的映射程序条目的类型。图2B所示的二叉树中任何节点对应的映射程序条目能够存储非条目300,路由条目302或子树条目描述符304。映射程序条目300,302,304中每一种类型包括一个子树标记306。子树标记306的状态表示映射程序条目是否为子树条目描述符304。如果子树标记306置为“1”,映射程序条目是子树描述符304并且包括子树索引312。子树索引312是下一个非直接映射的映射程序106b-d中存储的子树条目描述符304的地址。子树条目将在后面结合图4进行描述。如果子树标记306为“0”,将检查非条目标记314来确定映射程序条目是非条目300还是路由条目302。如果非条目标记314是“0”,该条目则是非条目300。如果非条目标记314为“1”,该条目则是路由条目302,并且在路由索引字段310存储中与关键字104有关的路由索引102(图3)。多路复用器108(图2A)利用子树标记306来选择包括路由索引102(图3)的映射程序条目数据220a-d。
图5说明了对应图2B所示的映射层2112b中的节点的映射程序106b。映射106b包括子树内存400,映射程序地址逻辑402和子树映射程序418。把由存储在映射程序106a中的关键字210a的第一部分选择的子树索引312转发到子树内存400。子树内存400包括由子树索引312选择的子树条目404。子树条目404包括数据字段406和指针字段408。
返回图2B,子树条目404对应映射程序层2112b所示的一个子树的底层。如果映射程序层2112b有8层,每个子树(未示出)的底层具有最多256条路由,每个节点一个路由。
继续到图5,子树条目404提供对与子树底层上的每个节点对应的256个可能的路由索引102(图3)的访问。路由索引102(图3)存储在子树映射程序418中。为提供对256个可能的路由索引的访问,密集子树描述符存储在数据字段406中。数据字段406有256位宽,为在子树底层的每个节点提供一位。数据字段将在后面结合图6A和图6B详细描述。指针字段408有256位宽,允许存储16个16位指针,每个指针存储子树映射程序418中16个相邻映射程序条目的基地址,以便提供对256个路由索引的访问。因此,指针字段408可以为子树底层中的每个节点间接地提供到子树映射程序418中的映射程序条目的指针。将结合图6详细描述指针字段408。
把存储在数据字段406的密集子树描述符中的子树数据412和存储在指针字段408中的子树指针414转发到映射程序地址逻辑402。映射程序地址逻辑402还接收关键字210b的下一部分(接下来的8位)。
映射程序地址逻辑402根据与子树有关的关键字212b接下来的8位,子树数据412和子树指针414来确定与子树底层中的节点有关的映射程序条目的映射程序地址416。映射程序地址416在子树映射程序418中选择映射程序条目。子树映射程序418包括直接映射的映射程序106a的与结合图4所述类型相同的映射程序条目。映射程序数据条目220b的内容确定是否需要后继搜索。如果映射程序条目数据220b包括表明在下一个映射层112c(图2B)还有另一个子树条目404的子树索引312(图4),则需要后继搜索。
关键字210b的第二部分选择所选子树底层中的节点。子树指针414选择与子树中的节点有关的基地址,子树数据412选择与基地址有关的映射条目模块中的位移。映射程序地址逻辑402将结合图7在后面描述。
图6A是子树的二叉树表示。所示子树包括5层。该子树包括三个路由索引r1,r2和r3以及两个子树索引s0和s1。子树底层上有32个节点5001-50032。下面的表1显示了与底层中的每个节点5001-50032有关的路由索引或子树索引。
表1
图6说明了对应图6A所示的子树底层中的节点的图5所示的数据字段406中存储的密集子树描述符。数据字段406包括32位,图6A所示的子树底层中的每个节点500对应一位。位5021-50232在数据字段406中是这样分配的:如果要使用前一个节点的路由索引,那么数据字段中的一位设定为‘0’,如果使用存储在子树映射程序418(图5)中的下一个路由索引,那么设定‘1’递增到下一个映射条目地址。除非指定了路由,否则数据字段402中的第一位选择存储在映射程序条目5041中的缺省路由r0。这样,由于没有指定的路由,把位5021设定为‘0’来选择缺省路由。为接下来三个节点5002-5004选择映射程序条目5041中存储的缺省路由r0,因此,在数据字段406中的对应位5022-5024被设定为“0”,以使用5021使用的前一个路由索引。在节点5005存在路由改变。
节点5006共享用于映射程序条目5042中存储的节点5005的路由r1。因此位5025是‘1’表示路由改变,以便在子树映射程序418(图5)中选择映射程序条目5042。位5026是‘0’表示把5025中存储的路由索引用于该节点。不为节点5007提供路由,因此,存在着路由变化,并且在位5027中存储‘1’来表示需要在子树映射程序418(图5)中的映射程序条目5043存储缺省路由r0。
节点5008与前一个节点5007共享同一个路由,在子树映射程序418(图5)中不需要新的映射程序条目。对应节点5008的位5028设定为“0”。节点5009与前一个节点5008具有不同的路由,因此在子树映射程序418(图5)中需要新的映射程序条目。对应节点5009的位5029设定为“1”,并且将存储r2的映射程序条目5044添加到下一个相邻存储单元中的子树映射程序418(图5)。
节点50010与前一个节点5009具有不同的路由,在子树映射程序418(图5)中需要新的路由条目。对应节点50010的位50210设定为“1”,并且将存储s0的映射程序条目5045添加到下一个相邻存储单元中的子树映射程序418(图5)。
节点50011与前一个节点50010具有不同的路由,在子树映射程序418(图5)中需要新的映射程序条目。对应节点50011的位50211设定为“1”,并且将存储r2的映射程序条目5046添加到下一个相邻存储单元中的子树映射程序418(图5)。
节点50012和50013共享与前一个节点50011相同的路由,在子树映射程序418(图5)中不需要新的映射程序条目。在数据字段406中把对应于节点50012的位50212和对应于节点50013的位50213设定为‘0’。
节点50014与前一个节点50013具有不同的路由,在子树映射程序418(图5)中需要新的映射程序条目。数据字段406中对应节点50014的位50214设定为‘1’,并且把存储s1的映射程序条目5047添加到下一个相邻存储单元中的子树映射程序418(图5)。节点50015与前一个节点50014具有不同的路由,在子树映射程序418(图5)中需要新的映射程序条目。数据字段406中对应节点50015的位50215设定为‘1’,并且将存储r2的映射程序条目5048添加到下一个相邻存储单元中的子树映射程序418(图5)。节点50016与前一个节点50015共享同一个路由,在子树映射程序418(图5)中不需要新的映射程序条目。
节点50017与前一个节点50016具有不同的路由,在子树映射程序418(图5)中需要新的映射程序条目。将数据字段406中对应节点50017的位50217设定为‘1’,并且将存储r3的映射程序条目5049添加到下一个相邻存储单元中的子树映射418(图5)。
节点50018-50032全部与前一个节点50017共享相同的路由,在子树映射程序418(图5)中不需要新的映射程序条目。将对应的位50218-50232设定为‘0’。这样就需要9个映射程序条目5041-9来存储32个节点5001-50032的路由条目302(图4)或子树条目304(图4)。
通过计算在数据字段406中存储的密集子树描述符中存储的‘1’的数量在子树映射程序418(图5)中索引与节点5001-50032对应的映射程序条目5041-5049。例如,为寻找对应节点50028的映射程序条目5041-5049,计算数据字段406的位5021-50228中存储‘1’的数量。‘1’的数量是8,并且对应的映射程序条目是从缺省路由开始的第八个位置,即映射程序条目5049。
仅当路由发生变化时才存储映射程序条目的方法减少了子树映射程序418(图5)中每个子树映射程序条目5041-5049的数量。
图7说明了图5所示的指针字段408。指针字段408包括用于存储子树映射程序418(图5)中几组16个相邻映射程序条目位置5041-50416组(图6B)的基地址的块基地址字段6001,6002。在16个相邻映射程序条目的组6021,6022的子树映射程序418(图5)中分配内存。8层的子树可以具有多达256个不同路由,需要16个组6021,6022来存储所有256个路由。根据子树的路由数量来确定所需组602的数量。通过从块基地址的空闲列表中(未显示)删除块基地址6021,6022来将组602分配给特定的子树。为内存提供地址空闲列表的方法是已知的技术。
通过分配16个映射程序条目5041-16的内存块,由于所分配的16个位置是相邻的,所以子树映射程序418(图5)中的内存易于管理。
图8说明了图5所示的映射程序地址逻辑402。映射程序地址逻辑402包括位移逻辑700,指针逻辑702和加法器逻辑704。位移逻辑700包括节点选择逻辑706和“1”计数逻辑708。指针逻辑包括基地址选择逻辑710。
节点选择逻辑706选择在子树数据412中对应8位关键字210b的节点500(图6B)。相应的节点数通过节点选择718转发到‘1’计数逻辑708。‘1’计数逻辑708累计子树数据字段406中存储的‘1’的数量,直到与所选节点500对应的位。‘1’的数量通过块选择712转发到指针逻辑702并且通过块位移714转发到加法器逻辑704。
需要8位宽的计数字段的256位子树数据字段406中最大可存储256个“1”。8位计数字段分为两个字段,提供块选择712的4个MSB和提供块位移714的4个最低有效位(“LSB”)。
例如,如果8位的关键字210b为‘01000100’,为选择节点数68并且共有27个“1”存储在子树数据42的前68位,计数结果为IC Hex(00011100),MSB(0001);即块选择714选择块6021(图6)和LSB(1100);即基块位移选择映射程序条目50411(图6),即块5021中的第12个条目。
基地址选择逻辑710根据从位移逻辑700转发的块选择712从子树指针414中选择基地址716。加法器逻辑704将从位移逻辑700转发的块位移714累加到基地址716,并且提供映射程序地址416。映射程序地址416是映射程序106b-d中映射程序条目504(图6B)的索引。
图9是根据本发明原理用于在查找表200中搜索关键字210(图3)的最长匹配前缀的步骤的流程图。
在步骤800中,把关键字210a(图3)的第一部分作为索引转发到映射程序106a。处理过程继续到步骤802。
在步骤802中,由关键字210a(图3)的第一部分索引的第一层映射程序中的映射程序条目504(图6B)中存储的映射程序条目数据220a(图3)确定是否需要继续对下一层进行搜索。如果需要,处理过程继续到步骤804。否则,第一层映射程序中索引的映射程序条目504(图6B)中的路由条目302(图4)存储该关键字的最长前缀路由并且处理过程继续到步骤808。
在步骤804,搜索下一层映射程序106b-d。下一层映射程序的索引取决于前一层映射程序中索引的映射程序条目504(图6B)中子树条目描述符304(图4)中存储的子树索引312和关键字210b-d的下一部分。处理过程继续到步骤806。
在步骤806中,下一层映射程序中的索引映射程序条目504(图6B)存储该关键字对应的最长前缀路由索引或表示需要进一步搜索的子树索引。如果需要进一步搜索,处理过程继续到步骤804。否则,处理过程继续到步骤808。
在步骤808,把映射程序106a-d之一中的一个映射程序条目504(图6B)中存储的路由索引102(图3)作为路由索引102(图3)从查找表200转发。处理过程结束。
深度扩展
能够存储在图3所示查找表200中的路由索引102(图3)的数量受子树映射程序418(图5)中可用映射程序条目504(图6B)的数量的限制。例如,如果每个子树映射程序418(图5)包括128K个映射程序条目并且在查找表中有两个子树映射程序418(图5),那么查找表200中最多可以存储256K个路由索引102(图3)。具有128K个映射程序条目的子树映射程序418(图5)需要一个17位的索引。具有512K个映射程序条目的子树映射程序418(图5)需要一个19位的索引。查找表200中2个512K的子树映射程序418(图5)为32位IPv4目的地址的40亿个可能的路由索引102(图3)中1百万个提供了存储空间。
通过提供多个查找表200可以增加用于存储路由索引102(图3)的映射程序条目504(图6B)的数量。可以在多个查找表中并行地搜索与查找表200之一中的子树映射程序418(图5)中的映射程序条目504(图6B)中存储的搜索关键字对应的值。
图10A说明了深度扩展的实施例。示出两个查找表,一个为主查找表200a,另一个为副查找表200b。但是,查找表的数量不只限于所示的两个,可以增加一个以上的副查找表200b。
以相同的搜索关键字210并行搜索查找表200a-d中的每一个。对应于搜索关键字210的路由索引102(图3)存储在查找表200a-d之一中的子树映射程序418(图5)中,或查找表200a和200b二者中的直接映射程序106a中。在完成对查找表200a和200b的并行搜索后,找到最终路由索引900。
图10B说明了图10A所示实施例中的查找表200a中的一个。查找表200a-b中的每一个包括映射程序106a-d和已经结合图3针对查找表200描述过的管道208,以及驱动器逻辑902。查找表200a为与搜索关键字对应的路由索引在映射程序106a-d中执行多层搜索。每一层的搜索结果通过映射程序条目数据220a-d转发到管道208。管道208再将搜索结果904转发到驱动器逻辑902。每个查找表200a-b中映射程序106a中的映射程序条目504(图6B)存储子树条目304(图4),但只有主查找表200a的映射程序106a存储路由条目302(图4)。副查找表200b中映射程序106a中的映射程序条目504(图6B)代替路由条目302存储非条目300(图4)。将映射程序106a中的路由索引集中在一个查找表避免了为提供最终路由索引900的查找表的选择过程。这导致了副查找表200b中不能用于存储路由索引而只允许存储相同查找表的64K内存配置成主查找表或结合图3所述的副查找表。在另一个实施例中,可以提供没有映射程序106a的副查询设备。如果路由索引102(图3)存储在映射程序106a中的路由条目302(图4),那么搜索在主查找表200a中的映射程序106a中结束。
如图10A所示,主查找表200a和副查找表200b共享最终路由索引900。存储了最终路由索引900的查找表200a,200b提供路由索引102(图3)。如果每个查找表200a,200b是独立的设备,共享最终路由索引900减小了每个设备的外部引脚数量。只有查找表200a,200b中的一个随时驱动最终路由索引。
为避免两个查找表200a,200b中存储与搜索关键字210有关的路由索引而会使两个查找表同时驱动最终路由索引900的错误状态,每个查找表200a,200b存储一个设备代码。3位的设备代码允许扩展的查找表包括8个设备。
驱动器逻辑902确定搜索结果904是否包括路由索引102(图3)。如果包括,查找表200a中的驱动器逻辑902发出试图通过总线请求信号(未示出)驱动最终路由索引900的信号。如果两个或更多的查找表200a,200b同时发出试图驱动路由索引信号的信号,那么由具有最低设备代码的查找表200a,200b中提供路由索引。通过使用总线请求信号来解决总线冲突的方法是熟知的技术。
图10C说明了用来提供深度扩展以增加可用于存储与搜索关键字210对应的值的映射程序条目数量的另一个实施例。在图10C所示的实施例中,提供两个查找表200c-d来存储值,主表200c和副表200d。但是查找表的数量不只限于所示的两个,可以通过加入更多的副表200d来增加映射程序条目的数量。在查找表200c-d中并行执行对与搜索关键字[39:0]210对应的查找表200c-d之一中的映射程序条目中所存储的值的搜索。
图10D说明了图10C所示的实施例中的副表200d。每个查找表包括结合图3针对查找表200描述的映射程序106a-d。每个查找表200c-d中映射程序106a中的映射程序条目存储子树条目304(图4)。每个查找表200c-d将映射程序106a中映射程序条目504(图6B)里存储的子树条目描述符304(图4)中存储的子树索引312转发到下一个映射程序106b-d。但是,路由索引102(图3)只存储在主查找表200c的映射程序106a中。无条目存储在副查找表200d中的映射程序106a中以避免在一个以上的查找表200b,200d中存储与该关键字对应的路由索引。
副查找表200d中的多层搜索结果904转发到最终索引逻辑1004。最终索引逻辑1004将多层搜索结果904或从主查找表200c转发来的输入结果1000a作为输出结果1002a转发。如果路由索引102(图3)包括在多层搜索结果904中,那么将多层搜索的结果作为输出结果1002a转发。如果路由索引102(图3)包括在输入结果1000a中,那么将输入结果1000a作为输出结果1002a转发。如果路由索引102(图3)既不包括在输入结果1000a,也不包括在多层搜索结果904中,那么将多层搜索结果904作为输出结果1002a转发。
如图10C所示,主查找表200c和副查找表200d通过标有输入结果1000a的公共总线相连。路由索引102(图3)只通过输出结果1002a从副查找表200d转发。如果有一个以上的副查找表200d,最后一个副查找表提供扩展查找表的路由索引102(图3)。本实施例可以避免实现结合图10A所述的多驱动器最终路由索引900的出现,但需要更多用于输入结果1000a的设备外部引脚。
图11A-B说明了在查找表200a-b(图10A)或200c-d(图10C)中分配图2B所示路由的二叉树表示。
图11A说明了主查找表200a(图10A)或200c(图10C)中存储的路由的二叉树表示。主查找表200a中不包括图2B所示路由的二叉树表示中所示的子树B。节点1301-13022和13024-32在结合图3所述的查找表200a中的映射程序106a中编码。如果存储在主查找表200a中,那么在那里索引子树B的节点用“X”图形化地表示为已修剪子树。在主查找表200a中对应节点13023的映射程序条目504(图6B)不再存储指向子树B的子树索引312(图4)。取而代之的是非条目300(图4)存储在主查找表200a中对应节点13023的映射程序条目504(图6B)中,以表示对应节点13023的映射程序条目存储在另一个副查找表200b的子树映射程序418(图5)中。
图11B说明了存储在副查找表200b(图10A)或200d(图10C)中子树映射程序418(图5)中的映射程序条目504(图6B)的路由的二叉树表示。与图2B所示二叉树表示不同,存储在副查找表200b中的路由的二叉树表示不包括子树A。因此,节点1301-1303和1305-13032以如结合图2B所述的那样进行编码。对应副查找表200b中节点1304的映射程序条目504(图6B)不再存储指向子树A的子树索引312(图4)。取而代之的是对应副查找表200b中节点1304的映射程序条目存储非条目300(图4)以表示对应节点1304的映射程序条目存储在另一个查找表中。子树A对应的子树索引和主机138(图11A)对应的路由索引存储在主查找表200a中,并且子树B对应的子树索引和主机140(图11A)对应的路由索引存储在副查找表200b中。副查找表200b,200d只存储子树的结果;就是说,副查找表200b,200d不存储第一层映射程序106a中的结果。
参考图11A和图11B,利用关键字210a的第一部分对主映射程序层11102a(图3)或副映射程序层11104a中任何节点1309-13012的搜索产生了主查找表200a,200c中映射程序106a中映射程序条目504(图6B)中路由条目302(图4)中存储的r1 116以及副查找表200b,200d中映射程序106a中映射程序条目504(图6B)中存储的非条目300(图4)。主查找表200a,200c中存储的路由条目302(图4)通过输入结果1000a转发到副查找表200b,200d并且通过输出结果1002a由副查找表200b,200d转发。
利用关键字210a的第一部分对节点1304的搜索产生了主查找表200a中映射程序106a的映射程序条目504(图6B)中子树条目描述符304(图4)中存储的子树A的子树索引312(图4)。子树索引312转发到主查找表200a中的映射程序106b来继续对主查找表200a中存储的路由条目302(图4)进行搜索。
利用关键字210的第一部分对节点13023的搜索产生主查找表200a中映射程序106a的映射程序条目504(图6B)中存储的非条目300(图4)以及副查找表200b中映射程序106a的映射程序条目504(图6B)中存储子的树条目描述符304(图4)。因此,继续利用关键字210b的下一部分在副查找表200b的映射程序106b中搜索路由条目302(图4)。
图12是说明图10A所示查找表200a-b中映射程序条目504(图6B)中存储的路由条目302(图4)的分配方法的流程图。同样的方法用于图10C所示的查找表200c-d。在查找表200a-b中存储之前,最初由处理器(未示出)在存储器中存储映射程序条目中要存储的路由条目302(图4)。
当路由条目302(图4)存储在存储器中时,计算每个查找表200a-b(图10A)中要存储的路由条目302(图4)的数量。映射程序层1 1104a(图11B)的路由条目302(图4)存储在查找表200a的映射程序106a中。映射程序层1 1104a(图11B)的子树条目304(图4)存储在每个查找表200a-200b的映射程序106a中。
在步骤1200中,为确定如何在查找表200a-b(图10A)中分配路由条目302(图4),需要计算每个查找表200a-200b(图10A)中映射程序106a的每个子树条目304(图4)中要存储的路由条目302(图4)的数量。当确定了存储路由条目302(图4)所需的映射程序条目504(图6B)的总数之后,处理过程继续到步骤1202。
在步骤1202中,将要存储的子树的映射程序条目504(图6B)的总数除以查找表200a-b(图10A)的数量以确定存储在每个查找表200a-b(图10A)中的路由条目302(图4)的数量。处理过程继续到步骤1204。
在步骤1204中,在所选查找表200a-b中子树映射程序418(图5)的映射程序条目504(图6B)中存储路由条目302(图4)。处理过程继续到步骤1206。
在步骤1206中,如果在所选查找表200a-b中子树映射程序418(图5)的映射程序条目504(图6B)中存储的路由条目的数量小于1/n,其中n表示可用查找表200a-b(图10A)的数量,那么处理过程继续到步骤1024。否则,所选查找表200a-b已经存储了映射程序条目总数的1/n,并且处理过程继续到步骤1208。
在步骤1208中,所选查找表200a-b存储映射程序条目总数的1/n,因为相应子树的路由索引不存储在当前所选的查找表中,所以任何剩余子树节点的非条目300(图4)存储在所选择的查找表200a-b中。处理过程继续到步骤1210。
在步骤1210中,如果已经存储了全部路由条目,处理过程结束。否则,处理过程继续到步骤1212。
在步骤1212中,选择下一个查找表200a-b(图10A)。处理过程继续到步骤1204。
在搜索对应于IP地址的路由索引之前,在查找表200a-b(图10A)中分配路由条目。搜索是在查找表200a-b(图10A)中的每一个中并行执行的。用查找表200a-b(图10A)中的一个来描述实现对每个查找表并行搜索的方法。
图13是说明利用搜索关键字搜索与图10C所示的查找表200c-d中的任何一个存储的搜索关键字对应值的方法的流程图。
在步骤1300中,查找表200c-d(图10C)中的每一个接收搜索关键字210。查找表200c-d中的每一个中的映射程序106a搜索于关键字210a的第一部分对应的值。处理过程继续到步骤1302。
在步骤1302中,读取映射程序106a中映射程序条目504(图6B)中存储的条目。主查找表200c中的映射程序条目504(图6B)可以存储非条目300(图4),路由条目302(图4)或子树条目描述符304(图4)。副查找表200d中的映射程序条目504可以存储非条目300(图4)和子树条目描述符304(图4)。如果相应的查找表200中的映射程序条目存储路由条目302(图4),该条目则是有效值,不需要进一步搜索查找表200c-d中的后继映射程序106b-d,处理过程继续到步骤1310。否则,处理过程继续到步骤1304。
在步骤1304中,如果条目存储了子树条目描述符304(图4),那么需要进一步搜索查找表200c-d并且处理过程继续到步骤1306。否则,该条目存储非条目,表示不需要进一步的搜索,处理过程继续到步骤1310。
在步骤1306中,在所选子树中继续搜索。根据关键字210b-d的下一部分和从上一层的搜索得到的子树索引312(图4)来搜索下一层映射程序106b-d(图3)。处理过程继续到步骤1308。
在步骤1308中,根据从当前层映射程序106b-d中搜索得到的映射程序条目来确定是否继续执行搜索。如果映射程序条目504(图6B)存储了子树条目描述符304(图4),搜索继续到下一层映射程序106b-d并且处理过程继续到步骤1306。如果映射程序条目504(图6B)没有存储子树条目描述符304(图4),则不需要作进一步搜索,处理过程继续到步骤1310。
在步骤1310中,把搜索结果与从另一个查找表接收的输入结果作比较。例如,如果查找表是副查找表200d,那么把从主查找表200c中搜索产生的输入结果通过输入结果1000a转发到查找表200d,并且与副查找表200d的搜索结果作比较。处理过程继续到步骤1312。
在步骤1312中,如果输入结果1000a与当前查找表200d中的搜索结果不同,处理过程继续到步骤1314。如果输入结果1000a与当前查找表200d中的搜索结果相同,在分开的查找表200c-d中的映射程序条目504(图6B)中已经存储这两个有效的结果。不应该相同的关键字210来存储两个有效结果,处理过程继续到步骤1316。
在步骤1314中,检查输入结果1000a来确定它是否有效。如果输入结果1000a是路由条目302(图4),那么它是有效的。如果输入结果1000a是非条目300(图4)或子树条目描述符304(图4),那么它是无效的。子树条目描述符304(图4),路由条目302(图4)和非条目300(图4)已经结合图4描述过了。如果输入结果1000a无效,处理过程继续到步骤1318。否则,处理过程继续到步骤1320。
在步骤1318中,输入结果1000a有效,而从当前查找表200d中搜索得到的结果无效。输入结果1000a通过输出结果1002a从当前查找表200d转发。如果当前查找表200d是最后一个查找表,那么输入结果1000a作为路由索引102(图3)转发,或者作为输入结果1000a转发到下一个查找表。处理过程结束。
在步骤1316中,在不同的查找表中存储关键字的两个有效的结果值。在查找表200c-d中存储路由条目期间发生错误时,生成错误代码以便能够纠错。处理过程结束。
在步骤1320中,来自当前查找表200d的搜索结果和输入结果1000a都无效。即使无效,也将当前查找表200d的搜索结果作为输入结果1000a转发到下一个查找表。处理过程结束。
图14是说明搜索与图10A所示的查找表200a-b之一中存储的搜索关键字对应的值的方法的流程图。
在步骤1340中,在两个查找表200a-b中的第一层映射程序106a搜索与关键字210a的第一部分对应的值。处理过程继续到步骤1342。
在步骤1342中,如果利用关键字210a的第一部分搜索第一层映射程序106a后找到了有效的结果值,则处理过程继续到步骤1352。否则,处理过程继续到步骤1344。
在步骤1344中,如果利用关键字210a的第一部分搜索第一层映射程序106a得到的值是子树条目描述符304(图4),处理过程继续到步骤1346。否则,当前查找表中不存储关键字的有效值,处理过程结束。
在步骤1346中,继续在以搜索上一层映射程序期间找到的子树条目描述符304(图4)中标识的子树中搜索有效值。根据关键字210b-c的下一部分和从搜索下一层得到的子树选择在下一层映射程序中搜索一个值。处理过程继续到步骤1348。
在步骤1348中,搜索结果确定是否需要对下一层进行搜索。从当前搜索得到的条目可以存储路由条目302,非条目300(图4)或子树条目描述符304(图4)。如果条目存储了子树条目描述符304(图4),则需要进一步的搜索并且处理过程继续到步骤1346。如果条目没有存储子树条目描述符304(图4),处理过程继续到步骤1350。
在步骤1350中,如果条目存储了路由索引102(图3),处理过程继续到步骤1352。否则,将条目存储在另一个查找表中。处理过程结束。
在步骤1352中,与该关键字对应的有效值存储在当前查找表中。有效值作为对应于该关键字的路由索引102(图3)转发。处理过程结束。
稀疏模式
返回图5,子树条目404对多达256个可能的路由索引中的每一个提供访问,256个节点字树中每个节点一个。路由索引存储在子树映射程序418(图5)中的映射程序条目5041-504n中。根据子树条目404中数据字段406中存储的密集子树描述符和指针字段408中存储的子树指针确定在子树映射程序418(图5)中映射程序条目504(图6B)的映射程序地址416。密集子树描述符的格式已经结合图6A-6B描述过了。密集子树描述符为256个节点的子树中每个节点存储一个节点位502(图6B)。但是,所有子树针对256个节点中的每一个具有不同的路由索引,例如,一个子树可能只有一个路由索引。
图15说明了由第一映射程序层112a中的子树条目304索引的第二层映射程序层112b中稀疏子树A和密集子树B的二叉树表示。映射程序106a中s1的子树条目描述符304(图4)存储子树A的子树条目404的子树索引312。映射程序106a中s0的子树条目描述符304(图4)存储子树B的子树条目404的子树索引312。
密集集中子树B有11个路由索引;即,r6-r16和6个子树条目;即,s2-s7。与存储路由条目302(图4)的映射程序条目504(图6B)和子树B的子树条目304(图4)对应的映射程序地址416在密集子树描述符中的编码已经结合图6B描述过了。
稀疏集中子树存储两个路由索引;即r1和r2。如果它们存储在密集子树描述符中,那么整个子树条目404用来提供映射程序条目504(图6B)的三个映射程序地址416;即,r0,r1和r2。
查找表200中存储的路由数量可以通过对多个稀疏子树描述符的其中一个稀疏子树描述符编码以及对子树条目404中密集子树描述符中的密集集中子树描述符编码来增加。
密集集中子树有16个或更多个映射程序条目504(图6B),子树条目404中的数据字段406存储结合图6A-6B所述的密集子树描述符。稀疏集中子树有15个或更少个映射程序条目504(图6B);子树条目404中的数据字段存储了多个稀疏子树描述符。通过提供在稀疏子树描述符中存储稀疏集中子树的能力,子树存储器400可以存储更多的子树并且查找表200中可以存储更多的路由条目。
图16A-C说明了对图5所示子树条目404中数据字段406和指针字段408以及图4所示子树条目描述符304(图4)的更改,以便允许在子树条目404中存储多个稀疏子树描述符。
转到图16A,以稀疏模式配置的子树条目404中的数据字段406包括多个稀疏子树描述符14001-1400n来代替结合图6B所述的子树的每个节点对应一位的密集子树描述符。每个稀疏子树描述符14001-1400n包括一个节点描述符14021-1402n。一个节点描述符14001-1402n是代表子树中完全已编码路由的一个9位值。节点描述符14021-1402n描述了子树中一个节点或多个节点。
转到图16B,为支持存储稀疏子树描述符,在子树条目404的指针字段408增加模式字段1404。指针字段408还存储块基地址6001和块基地址6002,每个块包括16个为每个子树条目404提供总共32个映射程序地址416的已分配映射程序地址416。模式字段1404存储模式值。模式字段1404中存储的模式值表示子树条目404中存储的稀疏子树描述符14001-1400n的数量和每个稀疏子树描述符14001-1400n中存储的节点描述符14021-1402n的数量。表2说明了每个模式对应的子树条目404的配置。
表2
参见表2,例如,如果设置子树条目404中指针字段408的模式字段1404中存储的模式值为“4”,那么子树条目404中的每个稀疏子树描述符1400存储5到7个节点描述符14021-1402n。每个节点描述符14021-1402n存储9位。通过每个稀疏子树描述符14001-1400n的节点描述符14021-1402n的数量乘以9(每个节点描述符14021-1402n的位数)来计算存储在稀疏子树描述符1400中的总位数。计算模式4的每个稀疏子树描述符1400的位数后,具有7个节点描述符1402的稀疏子树描述符1400存储63位(7个节点描述符×9位=63)。
数据字段406中的位数除以稀疏子树描述符14001-1400n的位数可以计算出每个子树条目404的稀疏子树描述符1400的数量。对于模式4,数据字段406中的位数为256并且稀疏子树描述符中的位数为63。因此稀疏子树描述符14001-1400n的数量为4(int(256/63)=4)。
每个子树的节点数乘以每个子树条目404的子树数量可以得到每个子树条目404的节点描述符14021-1402n的总数。计算模式4,如果在稀疏子树描述符14001-1400n中存储了7个节点描述符14021-1402n,那么每个子树条目404的节点描述符1402的数量为28(7×4=28),并且如果每个子树描述符14001-1400n有5个节点描述符1402,则结果为20(5×4=20)。
表2中的映射程序条目列表示子树条目404使用了多少子树映射程序418(图5)中的映射程序条目504(图6B)。通过将每个子树的节点加1并通过乘以稀疏子树描述符中的子树数量来计算映射程序值。每个子树节点加1是因为需要比每个子树节点数量多1个映射程序条目,以便存储子树的缺省条目。
参见表2中模式4的一行,如果每个稀疏子树描述符1400有7个节点描述符1402,那么每个子树条目404需要32((7+1)×4=32)个映射程序条目,并且如果每个稀疏子树描述符1400有5个节点描述符1402,那么每个稀疏子树描述符1400需要24((5+1)×4=24)个节点描述符1402。因为在16个块递增中分配了子树映射程序418(图5)中的映射程序地址416,所以选择每个子树节点的数量和每个子树条目404的子树数量,以便每个子树条目404的节点描述符的最大数量不超过30。通过在指针字段408中存储两个块基地址6001,6002来提供32个映射程序地址416。
转到图16C,子树存储器400中的每个子树条目404可以配置成如结合图6B所述的密集模式或稀疏模式。通过提供表示子树条目404是否以密集模式或稀疏模式编码的标志,将结合图4所述的子树映射程序418(图5)中存储的密集模式的子树条目描述符304(图4)修改为稀疏模式。类型字段1406提供指示符。
类型字段1406的状态表示子树条目404是按密集模式还是按稀疏模式配置。如果子树条目404以稀疏模式配置,那么稀疏子树描述符选择字段1408中存储的值和子树索引312用于选择稀疏子树描述符1400。稀疏子树描述符选择1408将结合图16在后面作详细描述。
图17说明了用于提供块位移714来选择稀疏集中子树的节点的映射程序条目504(图6B)的图8所示的位移逻辑700中稀疏模式逻辑1502。稀疏模式逻辑1502根据子树条目404中稀疏子树描述符1400存储的节点描述符1402来提供块位移714。位移逻辑700还包括密集模式逻辑1500。密集模式逻辑1500包括节点选择706和用来提供密集集中子树中用于路由的块位移714的“1”计数逻辑708。密集模式逻辑1500已经结合图8描述过了。
如果类型字段1406的状态表示子树条目404以稀疏模式配置,那么来自子树条目404的子树数据412转发到稀疏模式逻辑1502。结合图18描述稀疏模式子树逻辑1502。
图18说明了图17中位移逻辑700所示的稀疏模式逻辑1502。稀疏模式逻辑1502包括子树选择逻辑1600,多路复用器1602,内容可编址存储器(“CAM”)1606以及转换逻辑1604。所选子树条目404中的数据字段406中存储的稀疏子树描述符14001-1400n通过子树数据412转发到位移逻辑700。位移逻辑700将稀疏子树描述符14001-1400n转发到稀疏模式逻辑1502中的多路复用器1602。由子树选择逻辑1600生成的选择1614来选择子树数据412中的一个稀疏子树描述符14001。
子树选择逻辑1600根据从前一个映射程序层选择的映射程序条目转发的稀疏子树描述符选择1408的状态和所选子树条目404中的指针字段408中存储的模式1404生成选择1614,以便选择稀疏子树描述符14001。表3说明了所选稀疏子树描述符14001和从多路复用器1602通过所选择的稀疏子树描述符1610从对应模式4的子树条目404的多路复用器1602转发的相应的子树数据位412。参见表2中模式4的一行,在模式4中,子树条目404可以存储4个稀疏子树描述符。这4个稀疏子树描述符中的每一个可以以子树条目404的模式4存储。这4个稀疏子树描述符1400中的每一个有63位并且可以存储7到5个节点描述符1402。因此,这4个稀疏子树描述符1400中的每一个从63位的边界开始。第一个稀疏子树描述符14001存储在数据字段406的位62:0,第二个稀疏子树描述符14002存储在数据字段406的位125:63,第三个稀疏子树描述符14003存储在数据字段406的位188:126以及第四个稀疏子树描述符14004存储在数据字段406的位251:189。稀疏子树描述符选择1408选择数据字段406中的相应位。例如,看表3,如果稀疏子树描述符选择1408是“0001”,那么选择第二个稀疏子树描述符14002并且通过多路复用器1602将256位子树数据412的位125:63从所选择的稀疏子树描述符1610转发到转换逻辑1604。
稀疏子树描述符选择 | 子树数据 | 稀疏子树描述符 |
0000 | Bits 62:0 | 1 |
0001 | Bits 125:63 | 2 |
0010 | Bits188:126 | 3 |
0011 | Bits251:189 | 4 |
表3
子树存储器400中的每个子树条目404可以配置成稀疏模式或密集模式。以稀疏模式配置的每个子树条目404可以配置为能够通过模式1404存储每个稀疏子树描述符1400的不同数量的节点描述符1402。以稀疏模式配置的子树条目404中所有稀疏子树描述符1400存储每个稀疏子树描述符1400相同数量的节点描述符1402。
可以对节点描述符1402编码以表示子树中的多个节点。节点描述符1402表示的多个8位节点通过屏蔽8位中的一些位来识别。为取代利用每个节点描述符1402存储屏蔽位,使用9位节点描述符1402对节点描述符1402表示的8位宽的节点进行完全编码。使用运行比特长度编码来以9位宽的节点描述符1402对8位宽的节点编码。运行比特长度编码可以识别8位节点中的哪些位被屏蔽了。
转换逻辑1604将所选稀疏子树描述符1400中存储的9位宽的节点描述符14021-1402n转换为包括置为“X”位(任意值)的8位CAM值1612并且将8位CAM值1612装载到CAM 1606。表4显示了通过转换逻辑1604将9位节点描述符1402转换为8位CAM值1612的例子。
8位值 | 9位代码 |
101100XX | 101100100 |
100XXXXX | 100100000 |
001111XX | 001111100 |
0011XXXX | 001110000 |
表4
9位代码列说明了节点描述符1402中存储的值。看表4的第一行,节点描述符1402中存储的9位代码为“101100100”并且对应的8位值“101100XX”存储在CAM 1606中。转换逻辑1604通过在9位代码中从右到左搜索第一个为“1”的位来转换9位代码。在9位代码从右到左的位中,前两位为“0”,第三位为“1”。由于在第一个“1”的右边有两个“0”,因此转换逻辑1604将“100”转换为两个任意位(“XX”)。第一个“1”被忽略,余下的位直接复制到8位值的后几位。
在表4中的第二行,节点描述符1402存储的9位代码为“100100000”。转换逻辑1604通过在9位代码中从右到左搜索第一个为“1”的位来转换9位代码。第5位存储“1”。9位代码被转换为其5位最低有效位(“LSBS”)设置为“任意值”(“X”)的8位值。通过使用9位运行比特长度编码存储节点描述符1402,使每个节点描述符1402所需的位数最少,因此增加了可以存储在查找表200中的节点描述符1402的数量。
在9位节点描述符1402转换为8位值之后,转换逻辑1604将8位值载入CAM 1606。8位值以与所选稀疏子树描述符1400中存储的节点描述符1402相同的顺序载入CAM 1606,即,从最短到最长的匹配。CAM 1606提供用来存储每个稀疏子树描述符1400的最大编号节点描述符1402的存储空间。因此,CAM 1606为8位宽16个条目深,以便能提供15个条目来存储模式5的稀疏子树描述符1400的节点描述符1402的最大编号以及缺省的映射程序地址。CAM 1606具有三进制功能和内置的多匹配分解器。相对于提供真正的内容地址存储器,小容量的CAM 1606可以利用逻辑门来实现,即,CAM 1606可以通过仿真CAM的硬件电路来实现。
稀疏子树描述符1400中存储的节点描述符1402的数量确定了存储稀疏子树描述符1400的子树条目404。在特定模式范围内存储节点描述符1402的稀疏子树描述符1400存储在相同的子树条目404中。为每个子树的缺省路由计算缺省映射程序地址。缺省的8位值永久地存储在CAM 1606的第一单元以计算缺省的映射程序地址。
在所选稀疏子树1400对应的8位值载入CAM 1606之后,利用关键字210b的下一部分搜索CAM 1606。选定与关键字210b的下一部分中最大位数匹配的CAM 1606中的条目。从搜索CAM得到的匹配地址作为块位移714转发。块位移714用来确定与子树映射程序418(图5)中所存储路由对应的映射程序条目的映射程序地址416。
图19A-D说明了对稀疏集中子树1700中一个节点的块位移714的选择。图17A用图形表示了稀疏集中子树1700中的路由。子树1700中的节点对应三个路由r0,r1和r2之一,r0是子树1700的缺省路由。以稀疏子树描述符1400中的节点描述符14021和14022编码r1,r2两个路由。缺省路由r0的值永久保存在CAM 1606中的第一条目1702中。参见表2,具有两个节点描述符1402的稀疏子树描述符1400存储在模式字段1404为“1”的子树条目404中。
在子树1700中,r2对应所有与10xxxxxx匹配的节点,r1对应所有与010xxxxx匹配的节点。为了最小化用来描述稀疏子树描述符1400中每个路由的每个节点描述符14021,14022所需的位数,使用运行比特长度编码对节点描述符14021,14022进行编码。用于编码的方法比用于对节点进行完全编码所用位数多1位。在第一个“X”(“任意值”)的位置插入“1”并且其余X位编码为“0”。这样,路由10xxxxxx被翻译为10100000,路由010xxxxx被翻译为010100000。
图19B说明了节点描述符14021和14022在稀疏子树描述符1400中的存储。因为有两个节点描述符14021和14022存储在稀疏子树描述符1400中,所以节点描述符14021和14022存储在模式字段1404设置为“1”的子树条目404中。因为r1需要与前三位匹配,而r2需要与前两位匹配,所以子树的最长匹配为r1。节点14021和14022按从最短到最长的匹配顺序存储在稀疏子树描述符1400中,其中r2的节点描述符14021存储在第一位,r1的节点描述符14022存储在下一位。
图19C说明了节点描述符14022向8位屏蔽值1706的转换。在从左到右的节点描述符位17081-17089中,第一个“1”存储在位17086,它标志着8位被屏蔽值1706的屏蔽位的结束。执行下面的位转换来实现节点描述符14022向8位被屏蔽值1706的转换。存储在节点描述符17081位的“0”转换为“X”并且存储在8位被屏蔽值17101位。存储在节点描述符17082位的“0”转换为“X”并且存储在8位被屏蔽值17102位。存储在节点描述符17083位的“0”转换为“X”并且存储在8位被屏蔽值17103位。存储在节点描述符17084位的“0”转换为“X”并且存储在8位被屏蔽值17104位。存储在节点描述符17085位的“0”转换为“X”并且存储在8位被屏蔽值17105位。存储在节点描述符17086位的“1”被忽略。存储在节点描述符17087位的“0”存储在8位被屏蔽值17106位。存储在节点描述符17088位的“1”存储在8位被屏蔽值17107位。存储在节点描述符17089位的“0”存储在8位被屏蔽值17108位。
图19D说明了存储CAM 1606中的节点描述符14021和14022以及所选择的稀疏子树描述符1400的子树映射程序418(图5)中存储的对应的映射程序条目5041-5043。将所选择的子树描述符1400中存储的9位节点描述符14021和14022转换到转换逻辑1604(图18)中,并且载入CAM 1606。CAM 1606中第一个条目1702是图19A中子树1700所示的r0的缺省条目。第二个条目1704从所选择的稀疏子树描述符1400中存储的第一节点描述符14021转换。第二个条目1704是为r2转换的最短匹配。把所选择的子树描述符1400中存储的第二节点描述符14022从010100000转换为010XXXXX并且存储在CAM 1606的第三条目1706中。
对CAM 1606的搜索产生块位移714(图18)。块位移714用来确定子树映射程序418(图5)中存储的映射程序条目5041-5043的映射程序地址416。利用存储最长匹配的条目1702,1704,1706的关键字210b的第二部分来搜索CAM 1606。根据所选择的子树条目404中的指针字段408中存储的块基地址6001,6001之一将CAM 1606提供的块位移714与子树基地址结合。
图20是说明图8所示指针逻辑702中稀疏模式基选择逻辑1800的方框图。指针逻辑702选择用于计算子树映射程序418(图5)中映射程序条目504(图6B)的映射程序地址416的基地址716。指针逻辑702包括密集模式基选择逻辑710和稀疏模式基选择逻辑1800,根据从上一层映射程序层转发的子树条目描述符304(图4)中存储的类型1406的状态来选择其一。如前所述,类型1406的状态表示是否将子树配置为密集模式。
如果子树条目404存储了多个稀疏子树描述符1400,稀疏模式基选择逻辑1800计算稀疏子树描述符1400的基地址716。稀疏模式基选择逻辑1800利用模式字段1404中存储的模式值1608和子树条目404中块基地址域6001,6002中存储的子树指针414以及上一层映射程序层转发的子树条目描述符304(图4)中存储的稀疏子树描述符选择1408来计算基地址716。基地址716的计算如下:
基地址(稀疏子树描述符)=块基地址+基位移
其中,基位移=((1+节点/子树)×稀疏子树描述符选择)
例如,为查找以稀疏模式4配置的子树条目404中2号子树的起始基地址716,首先计算基位移。2号子树对应的稀疏子树描述符选择1408为“1”并且节点/子树数为7(见表2)。基位移为8((1+7)×1)。每个块基地址6001,6002是分配给子树条目404的16个映射程序地址块的基地址。2号子树对应的基位移是小于16的8,因此2号子树的块基地址是块基地址6001并且稀疏子树描述符的基地址716是块基地址6001+8。表5说明了以模式4配置的子树条目404中四个子树的每个子树基地址。
子树基地址 | 子树 |
块基地址1+0 | 1 |
块基地址2+8 | 2 |
块基地址2+0 | 3 |
块基地址2+8 | 4 |
表5
图21说明了存储在子树存储器400中的密集子树描述符和稀疏子树描述符。结合图15来描述图21。子树B(图21)的密集子树描述符存储在子树条目4041的数据字段4061。子树A(图21)的稀疏子树描述符14001存储在子树条目4042的数据字段4062。密集子树描述符存储结合图6B描述过的子树B底层中每个节点的节点位。稀疏模式描述符14001包括对应结合图19B描述过的路由r4和r5的节点描述符14021和14022。子树索引312选择子树条目4041,4042。
s0(图15)的映射程序106a中映射程序条目504(图6B)中子树条目描述符304(图4)存储的子树索引312选择子树条目4041。s 1(图15)的映射程序106a中映射程序条目504(图6B)中子树条目描述符304(图4)存储的子树索引312选择子树条目4042。因此,子树存储器400可以存储稀疏子树和密集子树对应的子树条目4041,4042。
图22是说明用来向存储稀疏集中子树和密集集中子树中的节点的路由的子树映射程序418(图5)中的映射程序条目504(图6B)提供映射程序地址416(图5)的方法的流程图。任何子树条目404都可以存储多个稀疏子树描述符或一个密集子树描述符。根据路由在二叉树中的如何分布,可以对稀疏子树描述符和密集子树描述符进行任意组合。灵活地混合和匹配在子树存储器400中子树条目404中的稀疏模式和密集子树描述符可以更好地利用子树存储器400。
在步骤1900中,从在上一映射程序层中选择的子树条目描述符304(图4)中存储的类型1406的状态来确定所选择的子树条目404的配置。如果子树条目404的类型配置为稀疏模式,处理过程继续到步骤1902。否则,处理过程继续到步骤1914。
在步骤1902中,子树条目404的配置是稀疏模式。以稀疏模式配置的子树条目404存储多个稀疏子树描述符1400。根据模式字段1404的状态确定子树条目404中存储的稀疏子树描述符1400的数量。位移逻辑700中的稀疏模式逻辑1502根据从上一映射程序层转发的子树条目描述符304(图4)中存储的稀疏子树描述符选择1408和前面结合图14描述过的模式字段1404的内容来从子树条目404中选择稀疏子树描述符1400。处理过程继续到步骤1904。
在步骤1904,所选择的稀疏子树描述符1400中的节点描述符1402中存储的9位编码值被转换为8位值并且按从最短到最长匹配的顺序存储在CAM 1606中。处理过程继续到步骤1906。
在步骤1906中,利用关键字210b的下一部分在CAM 1606中搜索存储最长匹配的CAM条目。处理过程继续到步骤1908。
在步骤1908中,把存储关键字210b下一部分的最长匹配的CAM 1606中的位置的地址作为块位移714转发。块位移714用来计算子树映射程序418(图5)中映射程序条目504(图6B)的映射程序地址416(图5B)。处理过程继续到步骤1910。
在步骤1910中,根据从上一映射程序层转发的子树条目描述符304(图4)中存储的稀疏子树描述符选择1408和所选择的子树条目404中存储的模式字段1404的内容来计算所选稀疏子树描述符1400对应的基地址716。处理过程继续到步骤1912。
在步骤1912中,通过在加法器逻辑704(图8)中将块位移714和基地址716相加来计算映射程序地址416。通过子树映射程序418(图5)中的映射程序地址416识别的映射程序条目504存储路由条目302(图4)或子树条目描述符304(图4)。如果映射程序条目504(图6B)存储路由条目302(图4),那么搜索结束。如果映射程序条目504(图6B)存储子树条目描述符304(图4),那么继续在下一映射程序层搜索对应关键字210b的值。
在步骤1914中,子树条目404以密集模式配置并且在数据字段406中存储一个密集子树描述符。通过统计前面结合图6B描述过的子树条目404中数据字段406中存储的密集子树描述符中“1”的数量来计算块位移714。处理过程继续到步骤1916。
在步骤1916中,子树条目404在子树条目404中的指针字段408存储16个块基地址600。前面结合图8描述过的指针逻辑702中的密集模式基选择逻辑710选择块基指针600中的一个。处理过程继续到步骤1912。
递增更新
图23说明了在查找表200中添加新路由的二叉树表示。二叉树说明了查找表200中存储的对应映射程序层1 2000,映射程序层2 2002和映射程序层3 2004的路由。映射程序层2 2002存储子树A和B的路由。映射程序层3 2004存储子树A1,A2,B1和B2的路由。s5表示子树映射程序418(图5)中存储的子树条目描述符304(图4)。s5对应的子树条目描述符304(图4)存储指向子树B2的指针,子树B2允许继续在映射程序层32004搜索关键字210的最长匹配路由。
因为子树B22006只有两个路由,r6和h1,所以它是稀疏子树。因此,节点r6和h1对应的节点描述符1402(图16A)存储在已经结合图14A描述过的稀疏子树描述符1400中。因为在稀疏子树描述符1400中存储了两个节点描述符1402,所以子树B22006对应的稀疏子树描述符1400存储在子树存储器400中模式字段1404设置为“1”的子树条目404中。
子树B2’2008所示的新节点h2添加到查找表200中。因为子树B22006的新增路由使稀疏子树描述符1400中存储的节点描述符1402的数量从2增加到3,所以新路由h1不能直接添加到查找表的子树B22006中。向稀疏子树描述符1400增加节点描述符1402需要在模式字段1404设置为“2”的子树条目404中分配新的稀疏子树描述符1400。因此,增加路由h1需要用子树B2’2008代替子树B22006。
图24说明了处理器存储器2400中存储的更新路由。查找表200中存储的二叉树的拷贝也存储在与查找表200分离的处理器存储器2400中。存储子树B22006的路由复制到处理器存储器2400的子树B2’2008并且向子树B2’2008增加新路由h2。
路由更新程序2402生成一系列路由更新指令2404,以便将子树B2’2008添加到查找表200中并且将路由更新2404转发到表更新程序2406。表更新程序2406生成路由更新2402对应的表更新2410并且转发更新周期2412,以便利用路由更新2404来更新查找表200。更新周期2412将路由更新写入子树存储器400(图5)中相应的存储器位置和子树映射程序418中(图5)。
返回图23,更新周期2412包括用来分配一部分子树映射程序418(图5)以存储映射程序条目504(图6B)中新子树B2’2008对应的路由的指令。子树B2’2008包括路由h1和r6以及新路由h2的映射程序条目504(图6B)中存储的路由条目。在子树B2’2008的路由条目存储在子树映射程序418(图5)中的映射程序条目504(图6B)后,产生了这些路由对应的节点描述符1402并且存储在稀疏子树描述符1400中。稀疏子树描述符1400存储在子树条目404。子树条目404的模式1404与稀疏子树描述符1400中存储的节点描述符1402的数量有关。
在子树B2’2008的稀疏子树描述符1400存储在查找表200的子树存储器400的子树条目404中之后,s5代表的子树条目描述符304(图4)由指向子树B22006改为指向子树B2’2008。当把子树B2’2008添加到查找表时,可以通过s5访问子树B22006中存储的路由r6和h1。在子树B2’2008存储到查找表中后,s5改为指向子树B2’2008并且可以访问路由h1和r6和新路由h2。因此,当把新路由h2添加到查找表200中时,可以在子树B22006中继续搜索对应于路由h1和r6的路由索引。
图25说明了查找表200中子树映射程序418b中的映射程序条目504c4中存储的图23所示的新路由h2。结合图24所示的二叉树表示来描述图25。
映射程序层22002中的子树B有3个路由;即r3,s4和s5。因为子树B的路由少于16个,所以它是稀疏子树。子树B r3,s4和s5的节点描述符1402a1-1402a3存储在子树存储器400a中子树条目404a中的稀疏子树描述符1400a1中。子树映射程序418a中存储子树B中每个路由对应的映射程序条目504a2-504a4。子树映射程序418a中的映射程序条目504a1存储子树B的缺省路由。每个映射程序条目504a2-504a4存储该节点的路由条目302(图4)或子树条目描述符304(图4)。504a3中存储路由s4的子树条目描述符304(图4),504a4中存储s5的子树条目描述符304(图4)。映射程序条目504a4中存储的s5为子树存储器400b提供子树索引312b,以便开始下一层搜索;即对映射程序层32004的搜索。
子树B2有两个路由,即h1和r6,所以它也是稀疏子树。节点描述符1402b1-1402b2存储在子树存储器400b中的子树条目404b中的稀疏子树描述符1400b1中。子树B2的每个路由存储在映射程序条目504b2-504b3中并且子树B2的缺省路由存储在映射程序条目504b1中。
为在子树B22006中搜索路由h1,将保存了用来存储路由s5的节点描述符1402的稀疏子树描述符1400a的子树条目404a的地址通过子树索引312a转发到子树存储器400a。所选择的子树条目404a中存储的数据字段406和指针字段408通过子树数据412a和子树指针414a转发到映射程序地址逻辑402a。映射程序地址逻辑402a生成存储了s5的子树条目的映射程序条目504a4的映射程序地址416a。映射程序地址416a取决于子树数据412a,子树指针414a和关键字210b的下一部分。把s5的子树条目通过子树索引312b转发到子树存储器400b。
子树存储器400b存储子树B22006的节点描述符1402b2,1402b1。子树B2的稀疏子树描述符1400b1存储在子树条目404b中。子树条目404b中存储的数据字段406和指针字段408通过子树数据412b和子树指针414b转发到映射程序地址逻辑402b。映射程序地址逻辑402b生成存储了h1的路由条目的映射程序条目504b3的映射程序地址416b。映射程序地址416b取决于子树数据412b,子树指针414b和关键字210c的下一部分确定。
为向子树B22006添加路由h2,分配子树映射程序418b中一组前面未使用过的映射程序602c,以便存储保存了子树B2’2008的路由r6,h1和h2的映射程序条目504c2-504c4。映射程序条目504c1存储子树B2’2008的缺省条目;即,映射程序条目504b1中存储的相同的值。映射程序条目504c2存储路由r6的路由条目;即,映射程序条目504b2中存储的相同的值。映射程序条目504c3存储路由h1的路由条目;即,映射程序条目504b3中存储的相同的值。映射程序条目504c4存储路由h2的路由条目。当写入映射程序条目504c1-4块时,可以通过子树映射程序418a中的504a4中为路由s5存储的子树条目来访问映射程序条目504b1-504b3中存储的路由条目。
在子树映射程序418b中已存储了子树B2’2008的映射程序条目504c1 -4后,把稀疏子树描述符1400c1添加到子树存储器400b。节点描述符1402c1-3的数量少于16,因此,节点描述符1402c1-3存储在稀疏子树描述符1400c1中。子树描述符14001在子树存储器400b中的位置取决于与稀疏子树描述符1400c1有关的节点描述符1402c1-3的熟练。通过在子树B22006中增加一个新路由,要为稀疏子树描述符1400c1存储的节点描述符1402c1-1402c3的数量从2增加到3。稀疏子树描述符1400c1存储在每个稀疏子树描述符含有3个节点描述符的子树条目404c中,并且将模式字段1404设置为“2”。如果有可用空间或分配了新模式3的子树条目,那么稀疏子树描述符1400c1存储在当前模式3的子树条目404c中。子树B2’2008中路由的节点描述符存储在模式3的子树条目404c中稀疏子树描述符1400c1中的节点描述符1402c1-3中。
把稀疏子树描述符1400c1和节点描述符1402c1-3存储到子树存储器400b后,可以访问子树B2’2008。为提供对子树B2’2008的访问,修改子树条目504a4在索引子树条目404c中索引稀疏子树描述符1400b1而不是在子树条目404b中索引稀疏子树描述符1400c1。可以访问映射程序条目504c4中存储的路由h2的路由条目和相应映射程序条目504c2和504c3中分别存储的路由r6和h1。
由于不能再访问映射程序条目504b1-504b3,所以将它们释放并放置在空闲列表(未示出)中等待以后分配。另外,也不能再访问稀疏子树描述符1400b1。因此,稀疏子树描述符1400b1被释放并放置在空闲列表(未显示)中等待以后分配。
已经描述了向稀疏子树中增加路由。也可以通过在新分配的子树条目404中存储新的密集子树描述符以及在子树映射程序418中存储对应的映射程序条目,并且将映射程序条目504a4中存储的子树条目改为索引新分配的子树条目404来向密集子树中增加路由。
图26是说明在图25所示查找表200中执行增加路由的递增更新步骤的流程图。
在步骤2200中,计算每个子树的路由数量以确定路由更新产生稀疏子树还是密集子树。如果路由更新后为密集子树,处理过程继续到步骤2218。如果路由更新后为稀疏子树,处理过程继续到步骤2202。
在步骤2202中,子树是稀疏的,因此确定为稀疏子树模式。处理过程继续到步骤2204。
在步骤2204中,搜索子树映射程序418(图5)中存储的部分填充的子树条目404的列表以确定是否可将新的稀疏子树描述符1400c1存储在前面分配的子树条目404中。例如,可将4个稀疏子树描述符1400c1-1400c4存储在模式4的子树条目404中。如果只存储了3个,子树条目404被部分填充并且存储在部分填充的子树条目404的列表中。如果有可用的部分填充的子树条目404,处理过程继续到步骤2208。否则,处理过程继续到步骤2206。
在步骤2206中,分配新的子树条目404c以便存储稀疏子树描述符1400c1,并且在为新分配的子树条目404c中的稀疏子树描述符1400c1中存储的节点描述符1402c1-1402c3存储映射程序条目504(图6B)的子树映射程序中分配映射程序条目504c1-504c4。把指向子树映射程序418(图5)中分配的映射程序条目504c1-504c4块的指针存储在新子树条目404c的指针字段408中。处理过程继续到步骤2208。
在步骤2208中,从子树条目404c中指针字段408中存储的指针和子树条目404c中模式字段1404中存储的模式来确定稀疏子树描述符1400c1的子树映射程序中第一个映射程序条目504c1的位置。处理过程继续到步骤2210。
在步骤2210中,将稀疏子树的路由条目存储在子树映射程序418b中的映射程序条目504c1-504c4中。处理过程继续到步骤2212。
在步骤2212中,把存储节点描述符1402c1-1402c3的稀疏子树描述符1400c1存储在子树条目404c中。处理过程继续到步骤2214。
在步骤2214中,映射程序条目504a4中存储的子树条目描述符304(图4)被修改为索引子树条目404c中存储的新稀疏子树描述符1400c1。现在可以访问映射程序条目504c4中存储的h2的路由条目。处理过程继续到步骤2216。
在步骤2216中,不能再访问映射程序条目504b1-504b3和稀疏子树描述符1400b。将映射程序条目504b1-504b3放置在子树映射程序418b的映射程序条目504(图6B)的空闲列表中并且分配用来存储其它路由。在部分填充的子树条目的列表中更新子树条目404b中的第一个可用位置。处理过程结束。
在步骤2218中,从处理器存储器2400(图24)中存储的空闲子树条目404的列表分配一个新的子树条目404。分配新的子树条目404用来存储新的密集子树描述符。分配子树映射程序418b中的映射程序条目组504(图6B)用于存储这些路由。指向若干块已分配的映射程序条目504(图6B)的指针存储在子树条目404(图5)中的指针字段408(图7)中。处理过程继续到步骤2220。
在步骤2220中,如前面结合图6A-B描述的,将新的密集子树描述符写入新子树条目404中的数据字段406。处理过程继续到步骤2222。
在步骤2222中,把密集子树的路由条目存储在由子树条目404中的指针字段408中存储的指针所识别的子树映射程序418(图5)中的映射程序条目504(图6B)中。处理过程继续到步骤2224。
在步骤2224中,修改映射程序条目504a4中存储的子树条目描述符304(图4)以指向新的子树条目404c中存储的新密集子树描述符。现在可以访问映射程序条目504c4中存储的h2的路由条目。处理过程继续到步骤2226。
在步骤2226中,把由旧子树条目404中的指针字段408中存储的指针指向的映射程序条目504(图6B)返回到处理器存储器2400(图24)中存储的映射程序条目的空闲列表。旧的子树条目404b添加到处理器存储器2400(图24)中存储的空闲子树条目列表中。
已经描述了向查找表添加路由的过程。执行类似的过程以便从查找表删除路由。例如,从子树B2’2008中删除h2 504c4需要存储含有路由r6和h1的两个节点描述符的新稀疏子树描述符,在模式2的子树条目中存储稀疏子树描述符,更新对应的子树映射程序并且习惯映射程序条目504a4中存储的子树条目描述符304(图4)指向新子树条目404中存储的更新的子树描述符。
虽然已经参考优选实施例特别给出和描述了本发明,本领域技术人员可以理解,在不脱离本发明所附权利要求的范围的情况下可以对本发明的形式和细节进行改变。
Claims (4)
1.一种更新查询表的装置,包括:
指向树中的第一子树入口的第一指针,通过所述第一指针提供对第一子树的第一存储空间中存储的第一组路由的访问;
指向用于代替第一子树的第二子树的第二子树入口的第二指针,通过所述第二指针提供对第二子树的第二存储空间中存储的第二组路由的访问,所述第二组路由是通过复制所述第一组路由并添加至少一个新的路由或删除至少一个已有的路由而得到的;和
被配置为通过用指向所述第二子树入口的所述第二指针替换指向所述第一子树入口的所述第一指针来提供对所述第二组路由的访问的逻辑。
2.根据权利要求1所述的装置,进一步包括:
被配置为在替换所述第一指针后释放所述第一存储空间的释放逻辑。
3.根据权利要求1所述的装置,其特征在于所述第一组路由中的路由数量小于所述第二组路由中的路由数量。
4.根据权利要求1所述的装置,其特征在于所述第一组路由中的路由数量大于所述第二组路由中的路由数量。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17023299P | 1999-12-10 | 1999-12-10 | |
US60/170,232 | 1999-12-10 | ||
US21296600P | 2000-06-21 | 2000-06-21 | |
US60/212,966 | 2000-06-21 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008189447A Division CN100432991C (zh) | 1999-12-10 | 2000-12-08 | 最长匹配地址查询的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101510839A CN101510839A (zh) | 2009-08-19 |
CN101510839B true CN101510839B (zh) | 2014-07-09 |
Family
ID=26865861
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008189447A Expired - Lifetime CN100432991C (zh) | 1999-12-10 | 2000-12-08 | 最长匹配地址查询的方法和装置 |
CNB008189471A Expired - Lifetime CN1278525C (zh) | 1999-12-10 | 2000-12-08 | 最长匹配地址查询的方法和装置 |
CN200810149123.6A Expired - Fee Related CN101510839B (zh) | 1999-12-10 | 2000-12-08 | 最长匹配地址查询的方法和装置 |
CN00818945A Pending CN1435030A (zh) | 1999-12-10 | 2000-12-08 | 最长匹配地址查询的方法和装置 |
CNB008189463A Expired - Lifetime CN1174587C (zh) | 1999-12-10 | 2000-12-08 | 最长匹配地址查询的方法和装置 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008189447A Expired - Lifetime CN100432991C (zh) | 1999-12-10 | 2000-12-08 | 最长匹配地址查询的方法和装置 |
CNB008189471A Expired - Lifetime CN1278525C (zh) | 1999-12-10 | 2000-12-08 | 最长匹配地址查询的方法和装置 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN00818945A Pending CN1435030A (zh) | 1999-12-10 | 2000-12-08 | 最长匹配地址查询的方法和装置 |
CNB008189463A Expired - Lifetime CN1174587C (zh) | 1999-12-10 | 2000-12-08 | 最长匹配地址查询的方法和装置 |
Country Status (10)
Country | Link |
---|---|
US (5) | US7423981B2 (zh) |
EP (4) | EP1250779A2 (zh) |
JP (4) | JP2003516670A (zh) |
KR (4) | KR100748772B1 (zh) |
CN (5) | CN100432991C (zh) |
AU (4) | AU2133901A (zh) |
CA (4) | CA2393760C (zh) |
DE (4) | DE10085387T5 (zh) |
GB (4) | GB2373082B (zh) |
WO (4) | WO2001043346A2 (zh) |
Families Citing this family (126)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4156112B2 (ja) * | 1998-12-25 | 2008-09-24 | 富士通株式会社 | 高速検索方法及び高速検索装置 |
JP2003516670A (ja) * | 1999-12-10 | 2003-05-13 | モサイド・テクノロジーズ・インコーポレイテッド | 最長一致アドレスルックアップのための方法および装置 |
US6996808B1 (en) * | 2000-02-12 | 2006-02-07 | Microsoft Corporation | Function injector |
US6675163B1 (en) * | 2000-04-06 | 2004-01-06 | International Business Machines Corporation | Full match (FM) search algorithm implementation for a network processor |
US7089240B2 (en) * | 2000-04-06 | 2006-08-08 | International Business Machines Corporation | Longest prefix match lookup using hash function |
US6947931B1 (en) * | 2000-04-06 | 2005-09-20 | International Business Machines Corporation | Longest prefix match (LPM) algorithm implementation for a network processor |
US6826561B2 (en) * | 2000-05-22 | 2004-11-30 | Broadcom Corporation | Method and apparatus for performing a binary search on an expanded tree |
US7047317B1 (en) * | 2000-06-14 | 2006-05-16 | Altera Corporation | High performance network address processor system |
US6555511B2 (en) * | 2000-06-19 | 2003-04-29 | Lance L. Renfrow | Stable hydrotropic surfactants comprising alkylamino propionate |
US7966421B2 (en) * | 2000-06-21 | 2011-06-21 | SAtech Group, A.B. Limited Liability Company | Method and apparatus for logically expanding the length of a search key |
US7111071B1 (en) * | 2000-06-29 | 2006-09-19 | Intel Corporation | Longest prefix match for IP routers |
JP2002026973A (ja) * | 2000-07-12 | 2002-01-25 | Nec Corp | 経路検索システム及びその方法並びにそれに使用するルータ装置 |
US8161081B2 (en) | 2001-03-16 | 2012-04-17 | Michael Philip Kaufman | System and method for generating automatic user interface for arbitrarily complex or large databases |
KR100488414B1 (ko) * | 2000-12-30 | 2005-05-11 | 한국전자통신연구원 | 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법 |
US6826669B1 (en) * | 2001-05-08 | 2004-11-30 | Lewiz Communications | Multi-protocol memory lookup system and method |
US6917954B2 (en) * | 2001-05-30 | 2005-07-12 | Mosaid Technologies, Inc. | Load balancing in IP address lookup |
US7062493B1 (en) * | 2001-07-03 | 2006-06-13 | Trilogy Software, Inc. | Efficient technique for matching hierarchies of arbitrary size and structure without regard to ordering of elements |
JP3845845B2 (ja) * | 2001-07-24 | 2006-11-15 | 株式会社テルミナス・テクノロジー | 連想メモリ・システムおよびネットワーク機器およびネットワーク・システム |
US20030031179A1 (en) * | 2001-08-08 | 2003-02-13 | Jintae Oh | Self-updateable longest prefix matching method and apparatus |
US7143382B2 (en) * | 2001-08-23 | 2006-11-28 | Cadence Design Systems, Inc. | Method and apparatus for storing routes |
US6665202B2 (en) | 2001-09-25 | 2003-12-16 | Integrated Device Technology, Inc. | Content addressable memory (CAM) devices that can identify highest priority matches in non-sectored CAM arrays and methods of operating same |
US20030217062A1 (en) * | 2001-12-18 | 2003-11-20 | Shawn Thomas | Method and system for asset transition project management |
US6691171B1 (en) * | 2002-02-01 | 2004-02-10 | Micrel, Inc. | Method and system for address lookup in data communication |
US7274698B2 (en) * | 2002-03-15 | 2007-09-25 | Broadcom Corporation | Multilevel parser for conditional flow detection in a network device |
US7764687B1 (en) * | 2002-03-28 | 2010-07-27 | Meriton Networks Us Inc. | Longest prefix match search technique |
US20030210654A1 (en) * | 2002-05-07 | 2003-11-13 | Dongguk University | Method of parallel packet switching |
US7325071B2 (en) * | 2002-06-04 | 2008-01-29 | Lucent Technologies Inc. | Forwarding traffic in a network using a single forwarding table that includes forwarding information related to a plurality of logical networks |
US6925464B2 (en) * | 2002-06-13 | 2005-08-02 | Intel Corporation | Method and system for performing inserts and lookups in memory |
JP4048861B2 (ja) * | 2002-07-23 | 2008-02-20 | 日本電気株式会社 | アドレス検索装置 |
US6934252B2 (en) * | 2002-09-16 | 2005-08-23 | North Carolina State University | Methods and systems for fast binary network address lookups using parent node information stored in routing table entries |
US7346009B2 (en) | 2002-09-30 | 2008-03-18 | Mosaid Technologies, Inc. | Dense mode coding scheme |
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 |
US8018935B2 (en) * | 2002-12-12 | 2011-09-13 | Intel Corporation | Address search |
US7890633B2 (en) * | 2003-02-13 | 2011-02-15 | Oracle America, Inc. | System and method of extending virtual address resolution for mapping networks |
US7443854B2 (en) * | 2003-04-02 | 2008-10-28 | Intel Corporation | Methods and apparatus to route packets in a policy driven networked environment |
US9014195B2 (en) * | 2003-05-02 | 2015-04-21 | Vitesse Semiconductor Corporation | Packet forwarding method and system |
US7260675B1 (en) | 2003-07-15 | 2007-08-21 | Integrated Device Technology, Inc. | CAM-based search engines that support pipelined multi-database search operations using encoded multi-database identifiers |
US7058757B1 (en) * | 2003-07-15 | 2006-06-06 | Integrated Device Technology, Inc. | Content addressable memory (CAM) devices that support distributed CAM control and methods of operating same |
US7840696B2 (en) * | 2003-07-25 | 2010-11-23 | Broadcom Corporation | Apparatus and method for classifier identification |
US7299227B2 (en) * | 2003-09-09 | 2007-11-20 | Stmicroelectronics, Inc. | Method and system for providing cascaded trie-based network packet search engines |
US7028106B2 (en) * | 2003-12-05 | 2006-04-11 | Hewlett-Packard Development Company, L.P. | Remapping routing information entries in an expander |
US8868745B1 (en) * | 2003-12-22 | 2014-10-21 | Avaya Inc. | Method and system for providing configurable route table limits in a service provider for managing VPN resource usage |
US7937413B2 (en) * | 2004-05-04 | 2011-05-03 | International Business Machines Corporation | Self-adaptive prefix encoding for stable node identifiers |
US7483426B2 (en) * | 2004-05-13 | 2009-01-27 | Micrel, Inc. | Look-up table expansion method |
RU2408075C2 (ru) * | 2004-07-12 | 2010-12-27 | Фекско | Прямая конвертация валюты |
US7603346B1 (en) | 2004-07-23 | 2009-10-13 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein |
US7747599B1 (en) | 2004-07-23 | 2010-06-29 | Netlogic Microsystems, Inc. | Integrated search engine devices that utilize hierarchical memories containing b-trees and span prefix masks to support longest prefix match search operations |
US8886677B1 (en) | 2004-07-23 | 2014-11-11 | Netlogic Microsystems, Inc. | Integrated search engine devices that support LPM search operations using span prefix masks that encode key prefix length |
US7653619B1 (en) | 2004-07-23 | 2010-01-26 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that support variable tree height |
US7725450B1 (en) * | 2004-07-23 | 2010-05-25 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined search and tree maintenance sub-engines therein that maintain search coherence during multi-cycle update operations |
CN100366023C (zh) * | 2004-07-28 | 2008-01-30 | 国家数字交换系统工程技术研究中心 | 路由查找装置 |
KR100735577B1 (ko) | 2004-08-12 | 2007-07-04 | 삼성전자주식회사 | 무선 네트워크의 적응형 키검색장치 및 방법 |
US7590130B2 (en) * | 2004-12-22 | 2009-09-15 | Exar Corporation | Communications system with first and second scan tables |
US20060133383A1 (en) * | 2004-12-22 | 2006-06-22 | Russell Homer | Communications system with scan table identification |
US7590119B2 (en) * | 2005-01-27 | 2009-09-15 | Cisco Technology, Inc. | Method and apparatus for context-based prefix updates in border gateway protocol |
US20060187923A1 (en) * | 2005-02-18 | 2006-08-24 | Broadcom Corporation | Dynamic filter processor key generation based on packet type |
US7876747B2 (en) * | 2005-03-04 | 2011-01-25 | Cisco Technology, Inc. | Method and apparatus for efficient load distribution on link aggregations |
US7839854B2 (en) * | 2005-03-08 | 2010-11-23 | Thomas Alexander | System and method for a fast, programmable packet processing system |
US8572125B2 (en) | 2005-08-22 | 2013-10-29 | International Business Machines Corporation | Scalable storage schemes for native XML column data of relational tables |
US7529726B2 (en) * | 2005-08-22 | 2009-05-05 | International Business Machines Corporation | XML sub-document versioning method in XML databases using record storages |
US8543614B2 (en) * | 2005-08-22 | 2013-09-24 | International Business Machines Corporation | Packing nodes into records to store XML XQuery data model and other hierarchically structured data |
CN100401723C (zh) * | 2005-10-13 | 2008-07-09 | 华为技术有限公司 | 一种快速索引方法 |
US7869411B2 (en) * | 2005-11-21 | 2011-01-11 | Broadcom Corporation | Compact packet operation device and method |
US7889676B1 (en) * | 2006-04-13 | 2011-02-15 | Infoblox Inc. | Systems and methods for storing and retrieving data |
CN100421114C (zh) * | 2006-04-21 | 2008-09-24 | 华为技术有限公司 | 基于关键字进行数据匹配查询的方法 |
US7817629B2 (en) * | 2006-05-12 | 2010-10-19 | Agere Systems Inc. | Methods and apparatus for performing network operations on packets of data in response to content of particular user-specified protocol header fields |
US7697518B1 (en) | 2006-09-15 | 2010-04-13 | Netlogic Microsystems, Inc. | Integrated search engine devices and methods of updating same using node splitting and merging operations |
US8194664B2 (en) * | 2006-10-10 | 2012-06-05 | Cisco Technology, Inc. | Two-level load-balancing of network traffic over an MPLS network |
US8189585B2 (en) * | 2006-10-10 | 2012-05-29 | Cisco Technology, Inc. | Techniques for virtual private network fast convergence |
US7937541B2 (en) * | 2006-10-12 | 2011-05-03 | International Business Machines Corporation | Speed selective table scan operation |
SE531557C2 (sv) * | 2006-10-20 | 2009-05-19 | Oricane Ab | Förfarande, klassificeringsanordning, datorprogramprodukt och system för att representera en del av n w-bit-intervall hörande till d-bit data i ett datakommunikationsnätverk |
WO2008048185A1 (en) * | 2006-10-20 | 2008-04-24 | 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 |
US7987205B1 (en) | 2006-11-27 | 2011-07-26 | Netlogic Microsystems, Inc. | Integrated search engine devices having pipelined node maintenance sub-engines therein that support database flush operations |
US7831626B1 (en) | 2006-11-27 | 2010-11-09 | Netlogic Microsystems, Inc. | Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node |
US8086641B1 (en) | 2006-11-27 | 2011-12-27 | Netlogic Microsystems, Inc. | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same |
US7953721B1 (en) | 2006-11-27 | 2011-05-31 | Netlogic Microsystems, Inc. | Integrated search engine devices that support database key dumping and methods of operating same |
CN100531140C (zh) * | 2006-12-20 | 2009-08-19 | 中国科学院计算技术研究所 | 一种实现无回溯的最长前缀匹配搜索的方法和装置 |
US20110019662A1 (en) | 2007-06-28 | 2011-01-27 | Rebelvox Llc | Method for downloading and using a communication application through a web browser |
US11095583B2 (en) | 2007-06-28 | 2021-08-17 | Voxer Ip Llc | Real-time messaging method and apparatus |
US8645477B2 (en) | 2009-01-30 | 2014-02-04 | Voxer Ip Llc | Progressive messaging apparatus and method capable of supporting near real-time communication |
US20100198923A1 (en) | 2009-01-30 | 2010-08-05 | Rebelvox Llc | Methods for using the addressing, protocols and the infrastructure of email to support near real-time communication |
US9178916B2 (en) | 2007-06-28 | 2015-11-03 | Voxer Ip Llc | Real-time messaging method and apparatus |
US8825772B2 (en) * | 2007-06-28 | 2014-09-02 | Voxer Ip Llc | System and method for operating a server for real-time communication of time-based media |
US8180029B2 (en) | 2007-06-28 | 2012-05-15 | Voxer Ip Llc | Telecommunication and multimedia management method and apparatus |
US8688789B2 (en) | 2009-01-30 | 2014-04-01 | Voxer Ip Llc | Progressive messaging apparatus and method capable of supporting near real-time communication |
US7886176B1 (en) | 2007-09-24 | 2011-02-08 | Integrated Device Technology, Inc. | DDR memory system for measuring a clock signal by identifying a delay value corresponding to a changed logic state during clock signal transitions |
US20090100219A1 (en) * | 2007-10-15 | 2009-04-16 | Anurag Bhargava | Method and apparatus for efficient cam lookup for internet protocol addresses |
CN101420415B (zh) * | 2007-10-23 | 2012-08-22 | 华为技术有限公司 | 形成路由表的方法及装置 |
US7716204B1 (en) | 2007-12-21 | 2010-05-11 | Netlogic Microsystems, Inc. | Handle allocation managers and methods for integated circuit search engine devices |
TWI413910B (zh) * | 2008-01-25 | 2013-11-01 | Univ Nat Taiwan | 數值資料範圍區間查詢方法及系統 |
CN102780624B (zh) * | 2008-02-05 | 2016-02-03 | 华为技术有限公司 | 一种建立路由的方法和装置 |
US8335780B2 (en) * | 2008-03-11 | 2012-12-18 | James Madison Kelley | Scalable high speed relational processor for databases and networks |
US7801877B1 (en) | 2008-04-14 | 2010-09-21 | Netlogic Microsystems, Inc. | Handle memory access managers and methods for integrated circuit search engine devices |
US7933885B1 (en) | 2008-04-25 | 2011-04-26 | Netlogic Microsystems, Inc. | Longest matching prefix search engine with hierarchical decoders |
US8036141B2 (en) * | 2008-08-15 | 2011-10-11 | At&T Intellectual Property I, L.P | Apparatus and method for managing a network |
DE102008059204B9 (de) * | 2008-11-27 | 2011-05-05 | Infineon Technologies Ag | Verfahren zum Suchen eines Slave-Knotens in einem Kommunikationsnetz, Master-Knoten und Slave-Knoten für ein Kommunikationsnetz |
US8849927B2 (en) | 2009-01-30 | 2014-09-30 | Voxer Ip Llc | Method for implementing real-time voice messaging on a server node |
US20100245582A1 (en) * | 2009-03-25 | 2010-09-30 | Syclipse Technologies, Inc. | System and method of remote surveillance and applications therefor |
US20100245072A1 (en) * | 2009-03-25 | 2010-09-30 | Syclipse Technologies, Inc. | System and method for providing remote monitoring services |
US20100246669A1 (en) * | 2009-03-25 | 2010-09-30 | Syclipse Technologies, Inc. | System and method for bandwidth optimization in data transmission using a surveillance device |
US9049157B1 (en) * | 2009-08-16 | 2015-06-02 | Compass Electro-Optical Systems Ltd | Method and device for improving scalability of longest prefix match |
US8363662B2 (en) * | 2010-03-19 | 2013-01-29 | Cisco Technology, Inc. | Alternate down paths for directed acyclic graph (DAG) routing |
EP2552059B1 (en) * | 2010-03-24 | 2014-12-03 | Nec Corporation | Packet transfer system, control apparatus, transfer apparatus, method of creating processing rules, and program |
US8751687B2 (en) | 2010-04-30 | 2014-06-10 | Microsoft Corporation | Efficient encoding of structured data |
WO2011137914A1 (en) * | 2010-05-04 | 2011-11-10 | Mingoa Limited | Identification and verification of management points in telecommunications systems |
US9077669B2 (en) * | 2010-06-14 | 2015-07-07 | Dynamic Invention Llc | Efficient lookup methods for ternary content addressable memory and associated devices and systems |
US20140185614A1 (en) * | 2012-12-28 | 2014-07-03 | General Instrument Corporation | Multiple domain addressing in message routing |
CN104052669B (zh) * | 2013-03-12 | 2018-12-07 | 凯为公司 | 用于处理交替配置的最长前缀匹配表的装置 |
US9331942B2 (en) * | 2013-03-12 | 2016-05-03 | Xpliant, Inc. | Apparatus and method for processing alternately configured longest prefix match tables |
CN104426770A (zh) * | 2013-09-09 | 2015-03-18 | 中兴通讯股份有限公司 | 路由查找方法及装置、B-Tree树结构的构建方法 |
JP5950285B2 (ja) * | 2013-12-19 | 2016-07-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム |
US9553829B2 (en) | 2014-11-13 | 2017-01-24 | Cavium, Inc. | Apparatus and method for fast search table update in a network switch |
US9485179B2 (en) | 2014-11-13 | 2016-11-01 | Cavium, Inc. | Apparatus and method for scalable and flexible table search in a network switch |
US10091056B1 (en) * | 2015-08-06 | 2018-10-02 | Amazon Technologies, Inc. | Distribution of modular router configuration |
US10419282B1 (en) | 2015-09-24 | 2019-09-17 | Amazon Technologies, Inc. | Self-configuring network devices |
US9584155B1 (en) * | 2015-09-24 | 2017-02-28 | Intel Corporation | Look-ahead hash chain matching for data compression |
US10063407B1 (en) | 2016-02-08 | 2018-08-28 | Barefoot Networks, Inc. | Identifying and marking failed egress links in data plane |
US10313231B1 (en) * | 2016-02-08 | 2019-06-04 | Barefoot Networks, Inc. | Resilient hashing for forwarding packets |
US10521411B2 (en) * | 2016-08-10 | 2019-12-31 | Moonshadow Mobile, Inc. | Systems, methods, and data structures for high-speed searching or filtering of large datasets |
CN106549872B (zh) * | 2016-10-31 | 2019-05-24 | 西安空间无线电技术研究所 | 最长前缀匹配与精确匹配结合的星载快速路由查找系统 |
US10237206B1 (en) | 2017-03-05 | 2019-03-19 | Barefoot Networks, Inc. | Equal cost multiple path group failover for multicast |
US10404619B1 (en) | 2017-03-05 | 2019-09-03 | Barefoot Networks, Inc. | Link aggregation group failover for multicast |
CN107169054A (zh) * | 2017-04-26 | 2017-09-15 | 四川长虹电器股份有限公司 | 基于前缀森林的ip索引方法 |
US10224957B1 (en) | 2017-11-27 | 2019-03-05 | Intel Corporation | Hash-based data matching enhanced with backward matching for data compression |
JP7088868B2 (ja) * | 2019-03-22 | 2022-06-21 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 通信装置、通信方法及びプログラム |
CN111367665B (zh) * | 2020-02-28 | 2020-12-18 | 清华大学 | 一种并行通信路由建立方法及系统 |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4450525A (en) * | 1981-12-07 | 1984-05-22 | Ibm Corporation | Control unit for a functional processor |
US4661658A (en) | 1985-02-12 | 1987-04-28 | International Business Machines Corporation | Offline PIN validation with DES |
AU620994B2 (en) | 1989-07-12 | 1992-02-27 | Digital Equipment Corporation | Compressed prefix matching database searching |
US5202986A (en) * | 1989-09-28 | 1993-04-13 | Bull Hn Information Systems Inc. | Prefix search tree partial key branching |
US5261088A (en) * | 1990-04-26 | 1993-11-09 | International Business Machines Corporation | Managing locality in space reuse in a shadow written B-tree via interior node free space list |
JPH0522297A (ja) * | 1991-07-09 | 1993-01-29 | Nec Corp | 通信ネツトワークシステム |
US5359724A (en) * | 1992-03-30 | 1994-10-25 | Arbor Software Corporation | Method and apparatus for storing and retrieving multi-dimensional data in computer memory |
US5329618A (en) | 1992-04-02 | 1994-07-12 | Fibronics Ltd. | Look-up table for a bridge in a data communications system |
CA2119788C (en) * | 1992-07-24 | 1996-12-31 | Peter L. Morse | Computer method and system for allocating and freeing memory |
US5323389A (en) * | 1992-08-14 | 1994-06-21 | Fore Systems, Inc. | ATM cell interface and method for dispatching an ATM cell |
US5386413A (en) | 1993-03-19 | 1995-01-31 | Bell Communications Research, Inc. | Fast multilevel hierarchical routing table lookup using content addressable memory |
CA2643234C (en) * | 1993-10-29 | 2012-05-15 | Microsoft Corporation | Method and system for generating a computer program |
US5384568A (en) * | 1993-12-02 | 1995-01-24 | Bell Communications Research, Inc. | Data compression |
US5854196A (en) * | 1994-08-23 | 1998-12-29 | The Procter & Gamble Company | Detergent compositions |
US5754854A (en) * | 1994-11-14 | 1998-05-19 | Microsoft Corporation | Method and system for providing a group of parallel resources as a proxy for a single shared resource |
JP3101767B2 (ja) * | 1995-05-18 | 2000-10-23 | ノーテル・ネットワークス・コーポレーション | 選択された挨拶を含むメッセージ電話ベース配送システム |
US5699276A (en) | 1995-12-15 | 1997-12-16 | Roos; Charles E. | Utility meter providing an interface between a digital network and home electronics |
US5857196A (en) * | 1996-07-19 | 1999-01-05 | Bay Networks, Inc. | Method for storing a tree of potential keys in a sparse table |
JP3520709B2 (ja) * | 1997-03-13 | 2004-04-19 | 三菱電機株式会社 | ネットワークアドレス検索方式 |
US6034958A (en) * | 1997-07-11 | 2000-03-07 | Telefonaktiebolaget Lm Ericsson | VP/VC lookup function |
US5946679A (en) * | 1997-07-31 | 1999-08-31 | Torrent Networking Technologies, Corp. | System and method for locating a route in a route table using hashing and compressed radix tree searching |
US6512766B2 (en) | 1997-08-22 | 2003-01-28 | Cisco Systems, Inc. | Enhanced internet packet routing lookup |
JPH1166096A (ja) * | 1997-08-25 | 1999-03-09 | Nippon Telegr & Teleph Corp <Ntt> | データ蓄積方法、そのデータ蓄積方法によって蓄積されたデータベース及びそのデータベースの検索方法 |
US6553002B1 (en) * | 1997-08-29 | 2003-04-22 | Ascend Communications, Inc. | Apparatus and method for routing data packets through a communications network |
KR20010030607A (ko) * | 1997-09-15 | 2001-04-16 | 에프넷 그룹 에이비 | 고속 라우팅 룩업 방법 및 시스템 |
US6266706B1 (en) * | 1997-09-15 | 2001-07-24 | Effnet Group Ab | Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams |
US6141655A (en) * | 1997-09-23 | 2000-10-31 | At&T Corp | Method and apparatus for optimizing and structuring data by designing a cube forest data structure for hierarchically split cube forest template |
US6563823B1 (en) * | 1997-10-30 | 2003-05-13 | Marconi Communications, Inc. | Multi-resolution tree for longest match address lookups |
US6223172B1 (en) * | 1997-10-31 | 2001-04-24 | Nortel Networks Limited | Address routing using address-sensitive mask decimation scheme |
JP3186681B2 (ja) * | 1997-12-25 | 2001-07-11 | 日本電気株式会社 | 経路検索回路及び通信制御装置 |
JP3570606B2 (ja) * | 1998-02-12 | 2004-09-29 | 日本電信電話株式会社 | データ検索装置および方法 |
JP3166700B2 (ja) * | 1998-03-12 | 2001-05-14 | 日本電気株式会社 | ルータ及び最長一致検索装置 |
US6085188A (en) * | 1998-03-30 | 2000-07-04 | International Business Machines Corporation | Method of hierarchical LDAP searching with relational tables |
BRPI9906335B1 (pt) * | 1998-03-31 | 2015-08-25 | Samsung Electronics Co Ltd | Sistema de comunicação móvel, e, processos para codificação e decodificação de canal para um sistema de comunicação móvel. |
US6067574A (en) * | 1998-05-18 | 2000-05-23 | Lucent Technologies Inc | High speed routing using compressed tree process |
US6247014B1 (en) | 1998-07-01 | 2001-06-12 | Nortel Networks Limited | Method and apparatus for performing hash lookups using valid bit tables with pointers |
US6526055B1 (en) | 1998-10-20 | 2003-02-25 | Sun Microsystems, Inc. | Method and apparatus for longest prefix address lookup |
IT1305140B1 (it) * | 1998-10-27 | 2001-04-10 | Cselt Centro Studi Lab Telecom | Memoria per la ricerca di informazioni mediante analisi di prefissi inparticolare per la realizzazione di tabelle di instradamento in nodi |
TW468116B (en) * | 1999-02-08 | 2001-12-11 | Wen-Shian Chen | High speed Internet protocol address lookups method for saving memory |
US6460112B1 (en) | 1999-02-23 | 2002-10-01 | Netlogic Microsystems, Llc | Method and apparatus for determining a longest prefix match in a content addressable memory device |
US6678274B1 (en) | 1999-07-30 | 2004-01-13 | Riverstone Networks, Inc. | Method and system for managing forwarding tables |
EP1083768A1 (en) * | 1999-09-08 | 2001-03-14 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | A method for facilitating data transmission |
US6744775B1 (en) * | 1999-09-27 | 2004-06-01 | Nortel Networks Limited | State information and routing table updates in large scale data networks |
US6687247B1 (en) * | 1999-10-27 | 2004-02-03 | Cisco Technology, Inc. | Architecture for high speed class of service enabled linecard |
JP2003516670A (ja) * | 1999-12-10 | 2003-05-13 | モサイド・テクノロジーズ・インコーポレイテッド | 最長一致アドレスルックアップのための方法および装置 |
US6826561B2 (en) * | 2000-05-22 | 2004-11-30 | Broadcom Corporation | Method and apparatus for performing a binary search on an expanded tree |
US7106732B2 (en) | 2000-12-27 | 2006-09-12 | Mosaid Technologies Incorporated | Default route coding |
-
2000
- 2000-12-08 JP JP2001542982A patent/JP2003516670A/ja not_active Withdrawn
- 2000-12-08 AU AU21339/01A patent/AU2133901A/en not_active Abandoned
- 2000-12-08 DE DE2000185387 patent/DE10085387T5/de not_active Withdrawn
- 2000-12-08 KR KR1020027007423A patent/KR100748772B1/ko active IP Right Grant
- 2000-12-08 JP JP2001542932A patent/JP4741134B2/ja not_active Expired - Lifetime
- 2000-12-08 JP JP2001542933A patent/JP4565793B2/ja not_active Expired - Lifetime
- 2000-12-08 EP EP20000986911 patent/EP1250779A2/en not_active Withdrawn
- 2000-12-08 EP EP20000984688 patent/EP1250778A2/en not_active Withdrawn
- 2000-12-08 WO PCT/CA2000/001444 patent/WO2001043346A2/en active Application Filing
- 2000-12-08 CN CNB008189447A patent/CN100432991C/zh not_active Expired - Lifetime
- 2000-12-08 CA CA 2393760 patent/CA2393760C/en not_active Expired - Fee Related
- 2000-12-08 GB GB0213387A patent/GB2373082B/en not_active Expired - Lifetime
- 2000-12-08 AU AU21338/01A patent/AU2133801A/en not_active Abandoned
- 2000-12-08 CA CA 2393764 patent/CA2393764A1/en not_active Abandoned
- 2000-12-08 CA CA 2397608 patent/CA2397608C/en not_active Expired - Fee Related
- 2000-12-08 GB GB0213389A patent/GB2373083B/en not_active Expired - Lifetime
- 2000-12-08 KR KR1020027007421A patent/KR20020082465A/ko not_active Application Discontinuation
- 2000-12-08 CN CNB008189471A patent/CN1278525C/zh not_active Expired - Lifetime
- 2000-12-08 JP JP2001542955A patent/JP2003516666A/ja active Pending
- 2000-12-08 EP EP20000984690 patent/EP1250662A2/en not_active Withdrawn
- 2000-12-08 KR KR1020027007422A patent/KR100748771B1/ko active IP Right Grant
- 2000-12-08 KR KR1020027007424A patent/KR100748773B1/ko active IP Right Grant
- 2000-12-08 DE DE2000185388 patent/DE10085388T1/de not_active Ceased
- 2000-12-08 EP EP20000984689 patent/EP1250775A2/en not_active Withdrawn
- 2000-12-08 US US09/733,629 patent/US7423981B2/en not_active Expired - Lifetime
- 2000-12-08 GB GB0213391A patent/GB2373084A/en not_active Withdrawn
- 2000-12-08 CN CN200810149123.6A patent/CN101510839B/zh not_active Expired - Fee Related
- 2000-12-08 WO PCT/CA2000/001442 patent/WO2001043370A2/en active Application Filing
- 2000-12-08 CN CN00818945A patent/CN1435030A/zh active Pending
- 2000-12-08 DE DE2000185390 patent/DE10085390T1/de not_active Ceased
- 2000-12-08 WO PCT/CA2000/001441 patent/WO2001043400A2/en not_active Application Discontinuation
- 2000-12-08 US US09/733,628 patent/US20010042130A1/en not_active Abandoned
- 2000-12-08 AU AU21337/01A patent/AU2133701A/en not_active Abandoned
- 2000-12-08 DE DE2000185389 patent/DE10085389T1/de not_active Ceased
- 2000-12-08 GB GB0213390A patent/GB2374174B/en not_active Expired - Lifetime
- 2000-12-08 WO PCT/CA2000/001443 patent/WO2001043345A2/en active Application Filing
- 2000-12-08 US US09/733,627 patent/US6691218B2/en not_active Expired - Lifetime
- 2000-12-08 AU AU23341/01A patent/AU2334101A/en not_active Abandoned
- 2000-12-08 US US09/733,761 patent/US6539369B2/en not_active Expired - Lifetime
- 2000-12-08 CA CA 2395151 patent/CA2395151C/en not_active Expired - Fee Related
- 2000-12-08 CN CNB008189463A patent/CN1174587C/zh not_active Expired - Lifetime
-
2003
- 2003-01-02 US US10/336,055 patent/US6836771B2/en not_active Expired - Lifetime
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101510839B (zh) | 最长匹配地址查询的方法和装置 | |
US6434144B1 (en) | Multi-level table lookup | |
US7715385B2 (en) | Default route coding | |
US6415279B1 (en) | Method and access means for determining the storage address of a data value in a memory device | |
US20050243827A1 (en) | Lookup engine | |
KR20020059238A (ko) | 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된다중탐색 트리 구조의 자료를 탐색하는 방법 | |
US7478109B1 (en) | Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes | |
CN105357247A (zh) | 基于分层云对等网络的多维属性云资源区间查找方法 | |
WO2002098055A2 (en) | Load balancing in ip address lookup | |
CN112269784A (zh) | 一种基于硬件实现的哈希表结构以及插入、查询和删除方法 |
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: 20140709 Termination date: 20151208 |
|
EXPY | Termination of patent right or utility model |