CN102405623B - 路由表项的存储方法和装置 - Google Patents
路由表项的存储方法和装置 Download PDFInfo
- Publication number
- CN102405623B CN102405623B CN201080003368.3A CN201080003368A CN102405623B CN 102405623 B CN102405623 B CN 102405623B CN 201080003368 A CN201080003368 A CN 201080003368A CN 102405623 B CN102405623 B CN 102405623B
- Authority
- CN
- China
- Prior art keywords
- binary tree
- route table
- table items
- segment
- 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
- 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
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
本发明公开了一种路由表项的存储方法和装置。方法包括:将路由表项依据范围匹配策略拆分为二个节点,每个节点的长度等于路由表项的长度;将每个节点划分为多个段,所述多个段至少包括第一段和第二段,第一段为所述二个节点的共同部分,第二段为所述二个节点的不同部分;获取路由表项在分层二叉树中的存储位置,分层二叉树包括各段的二叉树,各段的二叉树至少包括第一段的二叉树和第二段的二叉树;根据存储位置将与路由表项相关的各段添加到各段的二叉树中,第一段的二叉树通过指针指向第二段的二叉树。本发明将路由表项分段存储到分层二叉树中,显著减少了路由表项存储所需占用的内存总量。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种路由表项的存储方法和装置。
背景技术
范围匹配算法是路由器的一项关键技术,主要基于二叉树的树形结构对数据进行存储、查找和更新。在基于范围匹配算法建立二叉树过程中,现有技术将一条路由表项拆成2个节点,即低节点(Lowpoint)和高节点(Toppoint),再分别将低节点和高节点以特定规则插入到二叉树中,其中二叉树中的每个节点的大小为表项的大小,如表项长度为32bit,则每个节点的大小为32bit。
下面以带掩码的IPv4表项生成4层二叉树为例进行说明。表1中将每条拆分为2个节点,即低节点和高节点,2个节点形成的范围区间用于表示相应的带掩码的路由表项,如192.0.0.0–193.0.0.0形成的范围区间,用于表示表项192.0.0.0/8。这样,3条带掩码的IPv4表项拆分后可得到6个节点,按照自右向左递增的顺序,将6个节点插入到二叉树中,可生成如图1所示的4层2叉树。
表1
表项 | 低节点 | 高节点 |
192.0.0.0/8 | ①192.0.0.0 | ②193.0.0.0 |
B:195.0.0.0/8 | ③195.0.0.0 | ④196.0.0.0 |
C:192.168.0.0/16 | ⑤192.168.0.0 | ⑥192.169.0.0 |
发明人在实现本发明实施例过程中发现,现有技术中二叉树中每个节点的大小必须等于表项的大小,当二叉树的节点大小变大时,二叉树占用的内存大小就按正比增多。例如:IPv4表项长度为32bit,IPv6表项长度为128bit,现有技术将一条表项拆分为二个节点,这样,如果生成相同层的二叉树,如形成如图1所示的4层包括15个节点的二叉树,则IPv4表项需要占用的存储空间大小为32bit*15=480bit,IPv6表项需要占用的存储空间大小为128bit*15=1290bit,可见,随着表项长度的增加,所需占用的内存总量也正比增加。
发明内容
本发明实施例提供一种路由表项的存储方法和装置,用以减小路由表项存储所需占用的存储空间。
本发明实施例提供了一种路由表项的存储方法,包括:
将路由表项依据范围匹配策略拆分为二个节点,每个节点的长度等于所述路由表项的长度;将每个节点划分为多个段,所述多个段至少包括:第一段和第二段,所述第一段为所述二个节点的共同部分,所述第二段为所述二个节点的不同部分;
获取所述路由表项在分层二叉树中的存储位置,所述分层二叉树包括各段的二叉树,所述各段的二叉树至少包括第一段的二叉树和第二段的二叉树;
根据所述存储位置,将与所述路由表项相关的各段添加到各段的二叉树中,所述第一段的二叉树通过指针指向所述第二段的二叉树。
本发明实施例还提供了一种路由表项的存储装置,包括:
表项拆分模块,用于将路由表项依据范围匹配策略拆分为二个节点,每个节点的长度等于所述路由表项的长度;将每个节点划分为多个段,所述多个段至少包括:第一段和第二段,所述第一段为所述二个节点的共同部分,所述第二段为所述二个节点的不同部分;
存储位置获取模块,用于获取所述路由表项在分层二叉树中的存储位置,所述分层二叉树包括各段的二叉树,所述各段的二叉树至少包括第一段的二叉树和第二段的二叉树;
表项存储模块,用于根据所述存储位置,将与所述路由表项相关的各段添加到各段的二叉树中,所述第一段的二叉树通过指针指向所述第二段的二叉树。
本发明实施例提取路由表项根据范围匹配策略拆分的各节点的相同段作为共同部分、各节点的不同段作为不同部分,将路由表项分段存储到分层二叉树中,由于本发明实施例无需为提取出的共同部分重复分配存储空间,且不同部分所需占用的存储空间大小小于路由表项长度,因此显著减少了路由表项存储所需占用的内存总量。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术路由表项存储的二叉树结构示意图;
图2为本发明实施例提供的路由表项的存储方法流程图;
图3为本发明实施例提供的路由表项存储的二叉树结构示例一;
图4为本发明实施例提供的路由表项存储的二叉树结构示例二;
图5为本发明实施例提供的路由表项存储的二叉树结构示例三;
图6为本发明实施例提供的路由表项的存储装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为本发明实施例提供的路由表项的存储方法流程图。本发明实施例的执行主体可为路由器。如图2所示,本实施例路由表项的存储方法包括:
步骤21:将一条路由表项依据范围匹配策略拆分为二个节点,每个节点的长度等于所述路由表项的长度;将每个节点划分为多个段,所述多个段至少包括:第一段和第二段,所述第一段为所述二个节点的共同部分,所述第二段为所述二个节点的不同部分。
通过Key值信息和掩码长度信息,可以依据范围匹配策略将一个路由表项表示为一个范围,如:1.1.1.1/24的路由表项中,1.1.1.1为Key值信息,24为掩码长度信息,该路由表项所表示的范围为1.1.1.0–1.1.1.255这段区间,即在此区间的目的地址都将匹配到1.1.1.1/24。这样一个带掩码的路由表项就拆分为由不带掩码的二个节点表示的范围区间,每个节点的长度等于路由表项的长度24bit。
在将路由表项拆分为二个节点表示的范围区间之后,再进行各个节点的分段拆分。在分段拆分过程中,可提取各节点的相同段,该相同段为各节点的共同部分,即为本发明实施例所述的第一段,如:提取1.1.1.0和1.1.1.255的高位共同部分“1.1”作为第一段;各节点的不同段,该不同段为各节点的不同部分,即为本发明实施例所述的第二段,如:提取1.1.1.0和1.1.1.255的低位不同部分“1.0”和“1.255”作为第二段。需要说明的是,根据各段长度的大小,一条路由表项拆分过程中可能出现一个或多个第一段,一个或多个第二段,即将共同部分划分为一个或多个段,将不同部分划分为一个或多个段,其具体实现方式不受限制。
步骤22:获取所述路由表项在分层二叉树中的存储位置,所述分层二叉树包括各段的二叉树,所述各段的二叉树至少包括第一段的二叉树和第二段的二叉树。
分层二叉树中,高层空洞和与该空洞相邻的低层的空洞即组成一个二叉树,可参图1所示。各节点划分为各段之后,可根据预设策略确定各段的二叉树。预设策略如:分层二叉树各空洞中填入的各段的数值按照“上大下小且左大右小”的策略,或者,分层二叉树各空洞中填入的各段的数值按照“上大下小且右大左小”的策略等,这样在确定某一路由表项相关的各段在分层二叉树中的存储位置时,则可根据预设存储策略将需要添加到分层二叉树的各段的数值,与分层二叉树中已添加的段的数值进行比较,从而确定需要添加到分层二叉树的各段对应的二叉树的位置,确定的各段对应的二叉树的位置整体即为这些段相关的路由表项的存储位置。
步骤23:根据所述存储位置,将与所述路由表项相关的各段添加到各段的二叉树中,所述第一段的二叉树通过指针指向所述第二段的二叉树。
在确定了路由表项各段的存储位置后,则可将各段添加到相应二叉树中,即将各段填入与各段存储位置对应的二叉树的空洞,这样完成了各段数值在分层二叉树的存储。之后,需要建立各段之间的关联,以便通过分层二叉树进行信息查询。具体的,可采用指针关联的方式建立分层二叉树中各段内容之间的关联,即在使用分层二叉树过程进行信息查询时,如果当前查询指针指向分层二叉树中添加的第一段的内容,则可根据预先建立的指针关联引导当前查询指针沿分层二叉树从上到下,即从高层到低层的自动跳转,从而可将当前查询指针由该第一段所在的二叉树指向的第二段所在的二叉树。
所述将与所述路由表项相关的各段添加到各段的二叉树中,可包括:
(1)在向所述分层二叉树中添加第一条路由表项时,依据步骤21所示的方法将该路由表项划分为多个段,该多个段至少包括第一段和第二段,为所述第一条路由表项分配各段的二叉树,各段的二叉树之间通过指针关联。例如:为所述第一条路由表项分配第一段的二叉树和第二段的二叉树,将第二段的二个子节点添加到第二段的二叉树,将第一段添加到第一段的二叉树,并将第一段的二叉树通过指针指向第二段的二叉树,从而建立起该路由表项的第一段和第二段之间的关联。
由于第二段是二个节点的不同部分组成,因此,第二段包括有第一节点的低位部分和第二节点的低位部分,第一节点的低位部分和第二节点的低位相应部分即为组成第二段的二个子节点,如:1.1.1.0和1.1.1.255的低位部分“1.0”和“1.255”组成第二段,则“1.0”和“1.255”即为第二段的二个子节点。第二段包括的二个子节点添加到第二段的二叉树中,如将“1.0”和“1.255”填入第二段的二叉树的空洞中。这二个字节点在第二段的二叉树中的具体填入位置,可根据预设策略,如前述的“上大下小、左大右小”的策略,或者,“上大下小、右大左小”的策略将二个子节点填入第二段的二叉树的空洞中。第一段的二叉树通过指针指向第二段的二叉树,即指向第二段的二叉树的顶层节点。
(2)在继续向所述分层二叉树中添加路由表项时,依据步骤21所示的方法将该路由表项划分为多个段,该多个段至少包括第一段和第二段,根据精确匹配策略查找分层二叉树中是否存在需要添加的路由表项的第一段的二叉树。如果分层二叉树中存在需要添加的路由表项的第一段的二叉树,则根据范围匹配策略查找分层二叉树中是否存在需要添加的路由表项的第二段的二叉树。如果分层二叉树中存在需要添加的路由表项的第一段的二叉树,但没有需要添加的路由表项的第二段的二叉树,则在分层二叉树中分配需要添加的路由表项的第二段的二叉树,将需要添加的路由表项的第二段的二个子节点添加到新分配的第二段的二叉树,并将第一段的二叉树通过指针指向新分配的第二段的二叉树,从而建立起需要添加的路由表项的第一段和第二段之间的关联。
进一步的,本发明实施例还可包括在分层二叉树中存储与路由表项对应的索引信息。每条路由表项对应的索引信息可根据实际需要确定,该索引信息用于指示该路由表项对应的转发地址信息等。为便于在分层二叉树中添加新的路由表项,本发明实施例确定在分层二叉树的最底层存储索引信息,通过指针建立路由表项与该路由表项对应的索引信息之间的关联,如将路由表项的第二段,通过指针指向该路由表项对应的索引信息。
下面以将一条路由表项拆分为二个节点,且每个节点划分为两段,即第一段和第二段为例进行详细说明:
1、假设将第一条路由表项192.168.0.1/32插入分层二叉树中:
(1)将32bit掩码的路由表项192.168.0.1/32拆分为二个节点,即低节点192.168.0.1和高节点192.168.0.2。低节点和高节点的大小均为32bit。
(2)将低节点192.168.0.1划分为二段,即低节点第一段为192.168,低节点第二段为0.1,低节点第一段和低节点第二段的大小均为16bit。
(3)将高节点192.168.0.2拆分为二段,即高节点第一段为192.168,高节点第二段为0.2,高节点第一段和高节点第二段的大小均为16bit。
(4)确定需要插入的分层二叉树的段并确定相应段在分层二叉树中的存储位置,将确定的段插入相应段的二叉树。
低节点第二段和高节点第二段即组成本发明实施例所述的第二段的二个子节点。将低节点第二段和高节点第二段进行范围匹配比较,且将低节点第二段0.1和高节点第二段0.2插入同一二叉树,插入有低节点第二段0.1和高节点第二段0.2的二叉树称为第二段的二叉树。低节点第二段和高节点第二段在同一二叉树中的位置,可根据预设插入顺序,如左大由小或者左小右大的顺序进行插入。生成的二叉树示例如图3所示。
将低节点第一段192.168和高节点第一段192.168进行精确比较,且在二者一致时,说明192.168为低节点第一段和高节点第一段的共同部分,将192.168插入与第二段的二叉树相邻的二叉树中,插入192.168的二叉树称为第一段的二叉树。
(5)建立插入有192.168的第一段的二叉树,与插入有0.2和0.1的第二段的二叉树之间的关联。
将第一段的二叉树的指针指向第二段的二叉树,这样就在二叉树中添加了路由表项192.168.0.1/32。
2、将上述分层二叉树中继续添加路由表项192.168.11.11/32:
(1)将32bit掩码的路由表项192.168.11.11/32拆分为二个节点,即低节点192.168.11.11和高节点192.168.11.12。低节点和高节点的大小均为32bit。
(2)将低节点192.168.11.11划分为二段,即低节点第一段为192.168,低节点第二段为11.11,低节点第一段和低节点第二段的大小均为16bit。
(3)将高节点192.168.11.12拆分为二段,即高节点第一段为192.168,高节点第二段为11.12,高节点第一段和高节点第二段的大小均为16bit。
(4)确定需要插入的分层二叉树的段并确定相应段在分层二叉树中的存储位置,将确定的段插入相应段的二叉树。
将低节点第一段192.168和高节点第一段192.168进行精确比较,在二者一致时,查找分层二叉树中是否存在192.168的二叉树;且在分层二叉树中存在192.168的二叉树时,获取192.168的二叉树的指针指向的第二段的二叉树的空节点数,即获取插入有0.1和0.2的二叉树的空节点数。如果空节点数不足,即空节点数小于第二段的数量,如空节点数为1,但第二段的数量为2,则分配新的第二段的二叉树,即将插入有0.1和0.2的二叉树向上提一层,将11.11、11.12插入0.2所在的二叉树中。生成的二叉树示例如图4所示。
(5)建立插入有192.168的第一段的二叉树,与插入有11.11、11.12和0.2的第二段的二叉树之间的关联。
将插入有192.168的第一段的二叉树的指针,指向插入有11.11、11.12和0.2的第二段的二叉树,这样就在分层二叉树中添加了路由表项192.168.0.1/32和路由表项192.168.11.11/32。
3、将路由表项对应的索引信息存储到分层二叉树的最底层:
可预先确定将分层二叉树的最底层用于存储路由表项对应的索引信息,生成的二叉树示例如图5所示。在实际应用中,可在建立分层二叉树的过程中,将分层二叉树的最底层空出来,在将路由表项的各段添加到分层二叉树之后,将路由表项对应的索引信息添加到分层二叉树的最底层,并通过指针建立路由表项与其对应的索引信息之间的关联,例如:如果在建立分层二叉树过程中,各段插入顺序为左大右小插入,则从某路由表项第一段开始顺指针自左再一直向右直至到达分层二叉树最底层,指针最终指向的索引即为该路由表项对应的索引。
本发明实施例将路由表项分段存储,即将路由表项依据范围匹配策略拆分为二个节点,每个节点划分为多个段,提取各节点的相同段作为共同部分、各节点的不同段作为不同部分分别添加到各段的分层二叉树中,并通过指针建立相同段的二叉树与不同段的二叉树之间的关联。由于本发明实施例无需为提取出的共同部分重复分配存储空间,且不同部分所需占用的存储空间大小小于路由表项长度,因此减少了范围匹配节点的存储空间。
本发明实施例可应用于任何长度路由表项的存储。当路由表项长度较长,如IPv6路由表项长度为128bit,则由于采用路由表项分段存储的策略,路由表项存储所需占用的内存总量相对于现有技术明显减少。不妨以存储IPV6路由表项所需占用的内存总量为例进行对比说明。IPV6路由表项长度为128bit。采用现有技术进行路由表项存储,则则存储1条IPV6路由表项需要2*128bit的内存,而本发明实施例进行路由表项存储,则存储1条路由表项只需要3*64bit的内存。如果存储的多条路由表项之间都没有重复部分,则采用现有技术存储n条路由表项,需要占用n*128bit的内存,而采用本发明实施例存储则n条路由表项,则需要占用3*n*64bit的内存,该情形下,本发明实施例存储路由表项所需占用的内存总量仅为现有技术的3/4。如果存储的多条路由表项之间都没有重复部分,例如n条路由表项的高64bit都相同,则采用本发明实施例的存储方法存储n条路由表项,仅需要占用(2n+1)*64bit的存储空间,其所需占用的内存总量约为现有技术的1/2。可见,采用本发明实施例进行路由表项存储,明显减少了路由表项存储所需占用的内存总量。
在采用本发明上述实施例建立分层二叉树后,可基于生成的分层二叉树查找某一路由表项的索引信息。下面结合图5对查找过程说明如下:
(1)将预先确定的查询路由表项拆分为多个段,查询路由表项拆段的方法与在建立分层二叉树过程中插入路由表项时的拆段方法相同。以下不妨以将查询路由表项拆分为二段为例进行说明。如:将IPv4查询路由表项192.168.0.2拆分为第一段和第二段,第一段为IPv4查询路由表项192.168.0.2的高16bit“192.168”,第二段为IPv4查询路由表项192.168.0.2的低16bit“0.2”。
(2)以精确匹配的查找策略确定填入有与第一段相同节点的子树。
具体的,对于子树节点左大右小的分层二叉树,以精确匹配的查找策略,将第一段“192.168”与分层二叉树中的节点进行比较,确定填入有与第一段“192.168”相同节点的子树。如果第一段“192.168”大于当前节点,则沿当前节点相邻的左子树继续查找;如果第一段“192.168”小于当前节点,则沿当前节点相邻右子树继续查找;如果第一段“192.168”等于当前节点,则沿当前节点的下一层子树查找第二段。
(3)从填入有与第一段相同节点的子树的下一层子树开始,以范围匹配的查找策略确定指针路径。
在填入有第一段“192.168”节点的下一层子树查找第二段“0.2”。如果第二段“0.2”大于当前节点,则沿当前节点下一层相邻的左子树继续查找;如果第二段“0.2”小于当前节点,则沿当前节点下一层相邻的右子树继续查找;如果第二段“0.2”等于当前节点,则从当前节点向右直至到达分层二叉树最底层,指针最终指向的索引即为该查询路由表项192.168.0.2对应的索引。
上述查询路由表项192.168.0.2索引信息查找过程中的指针路径如图5中虚线所示。在基于分层二叉树确定查询路由表项的索引信息之后,可根据索引信息进行数据转发等处理。
图6为本发明实施例提供的路由表项的存储装置的结构示意图。如图6所示,本实施例路由表项的存储装置包括:表项拆分模块61、存储位置获取模块62和表项存储模块63。
表项拆分模块61用于将路由表项依据范围匹配策略拆分为二个节点,每个节点的长度等于所述路由表项的长度;将每个节点划分为多个段,所述多个段至少包括:第一段和第二段,所述第一段为所述二个节点的共同部分,所述第二段为所述二个节点的不同部分。
存储位置获取模块62用于获取所述路由表项在分层二叉树中的存储位置,所述分层二叉树包括各段的二叉树,所述各段的二叉树至少包括第一段的二叉树和第二段的二叉树。
表项存储模块63用于根据所述存储位置,将与所述路由表项相关的各段添加到各段的二叉树中,所述第一段的二叉树通过指针指向所述第二段的二叉树。
在上述技术方案的基础上,可选的,表项存储模块63可具体用于在所述路由表项为插入所述分层二叉树的第一条路由表项时,为所述路由表项分配第一段的二叉树和第二段的二叉树,将第二段的二个子节点添加到第二段的二叉树,将第一段添加到第一段的二叉树。
表项存储模块63还可具体用于在所述路由表项不是插入所述分层二叉树的第一条路由表项时,在根据精确匹配策略查找到分层二叉树中存在所述路由表项的第一段的二叉树、且根据范围匹配策略没有查找到所述路由表项的第二段的二叉树,则分配所述路由表项的第二段的二叉树。相应的,表项存储模块63可具体用于将所述路由表项的第二段插入分配的所述第二段的二叉树,所述第一段的二叉树通过指针指向所述第二段的二叉树。
在上述技术方案的基础上,路由表项的存储装置还可包括:索引信息存储模块64。索引信息存储模块64用于将与所述路由表项对应的索引信息存储于所述分层二叉树的最底层,并将所述路由表项的第二段的二叉树通过指针指向与所述路由表项对应的索引信息。
本实施例路由表项存储装置将路由表项分段存储,即将路由表项依据范围匹配策略拆分为二个节点,每个节点划分为多个段,提取各节点的相同段作为共同部分、各节点的不同段作为不同部分分别添加到各段的分层二叉树中,并通过指针建立相同段的二叉树与不同段的二叉树之间的关联。由于本发明实施例无需为提取出的共同部分重复分配存储空间,且不同部分所需占用的存储空间大小小于路由表项长度,因此减少了范围匹配节点的存储空间。本实施例路由表项存储装置的表现实体不受限制,如可为路由器,其实现机理可参见图2-图4对应实施例的记载,在此不再赘述。
本领域普通技术人员可以理解:附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
Claims (10)
1.一种路由表项的存储方法,其特征在于,包括:
将路由表项依据范围匹配策略拆分为二个节点,所述二个节点分别为高节点和低节点,每个节点的长度等于所述路由表项的长度;将每个节点划分为多个段,所述多个段至少包括:第一段和第二段,所述第一段为所述高节点和低节点的高位共同部分,所述第二段为所述高节点和低节点的低位不同部分;
获取所述路由表项在分层二叉树中的存储位置,所述分层二叉树包括各段的二叉树,所述各段的二叉树至少包括第一段的二叉树和第二段的二叉树;
根据所述存储位置,将与所述路由表项相关的各段添加到各段的二叉树中,所述第一段的二叉树通过指针指向所述第二段的二叉树。
2.根据权利要求1所述的方法,其特征在于,在所述路由表项为插入所述分层二叉树的第一条路由表项时,所述将与所述路由表项相关的各段添加到各段的二叉树中包括:
为所述路由表项分配第一段的二叉树和第二段的二叉树,将第二段的二个子节点添加到第二段的二叉树,将第一段添加到第一段的二叉树。
3.根据权利要求1所述的方法,其特征在于,在所述路由表项不是插入所述分层二叉树的第一条路由表项时,所述将与所述路由表项相关的各段添加到各段的二叉树中包括:
在根据精确匹配策略查找到分层二叉树中存在所述路由表项的第一段的二叉树、且根据范围匹配策略没有查找到所述路由表项的第二段的二叉树,则分配所述路由表项的第二段的二叉树。
4.根据权利要求3所述的方法,其特征在于,所述根据所述存储位置,将与所述路由表项相关的各段添加到各段的二叉树中,包括:
将所述路由表项的第二段插入分配的所述第二段的二叉树,所述第一段的二叉树通过指针指向所述第二段的二叉树。
5.根据权利要求1所述的方法,其特征在于,还包括:
将与所述路由表项对应的索引信息存储于所述分层二叉树的最底层,并将所述路由表项的第二段的二叉树通过指针指向与所述路由表项对应的索引信息。
6.一种路由表项的存储装置,其特征在于,包括:
表项拆分模块,用于将路由表项依据范围匹配策略拆分为二个节点,所述二个节点分别为高节点和低节点,每个节点的长度等于所述路由表项的长度;将每个节点划分为多个段,所述多个段至少包括:第一段和第二段,所述第一段为所述高节点和低节点的高位共同部分,所述第二段为所述高节点和低节点的低位不同部分;
存储位置获取模块,用于获取所述路由表项在分层二叉树中的存储位置,所述分层二叉树包括各段的二叉树,所述各段的二叉树至少包括第一段的二叉树和第二段的二叉树;
表项存储模块,用于根据所述存储位置,将与所述路由表项相关的各段添加到各段的二叉树中,所述第一段的二叉树通过指针指向所述第二段的二叉树。
7.根据权利要求6所述的装置,其特征在于,
所述表项存储模块,具体用于在所述路由表项为插入所述分层二叉树的第一条路由表项时,为所述路由表项分配第一段的二叉树和第二段的二叉树,将第二段的二个子节点添加到第二段的二叉树,将第一段添加到第一段的二叉树。
8.根据权利要求6所述的装置,其特征在于,
所述表项存储模块,具体用于在所述路由表项不是插入所述分层二叉树的第一条路由表项时,在根据精确匹配策略查找到分层二叉树中存在所述路由表项的第一段的二叉树、且根据范围匹配策略没有查找到所述路由表项的第二段的二叉树,则分配所述路由表项的第二段的二叉树。
9.根据权利要求8所述的装置,其特征在于,
所述表项存储模块,具体用于将所述路由表项的第二段插入分配的所述第二段的二叉树,所述第一段的二叉树通过指针指向所述第二段的二叉树。
10.根据权利要求6所述的装置,其特征在于,还包括:
索引信息存储模块,用于将与所述路由表项对应的索引信息存储于所述分层二叉树的最底层,并将所述路由表项的第二段的二叉树通过指针指向与所述路由表项对应的索引信息。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2010/071635 WO2011124030A1 (zh) | 2010-04-08 | 2010-04-08 | 路由表项的存储方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102405623A CN102405623A (zh) | 2012-04-04 |
CN102405623B true CN102405623B (zh) | 2014-10-08 |
Family
ID=44762023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080003368.3A Expired - Fee Related CN102405623B (zh) | 2010-04-08 | 2010-04-08 | 路由表项的存储方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20130024649A1 (zh) |
EP (1) | EP2544414A4 (zh) |
CN (1) | CN102405623B (zh) |
WO (1) | WO2011124030A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104539537A (zh) * | 2014-12-25 | 2015-04-22 | 北京华为数字技术有限公司 | 一种路由查找方法和装置 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10348626B1 (en) * | 2013-06-18 | 2019-07-09 | Marvell Israel (M.I.S.L) Ltd. | Efficient processing of linked lists using delta encoding |
US9479437B1 (en) * | 2013-12-20 | 2016-10-25 | Google Inc. | Efficient updates of weighted cost multipath (WCMP) groups |
US9935831B1 (en) * | 2014-06-03 | 2018-04-03 | Big Switch Networks, Inc. | Systems and methods for controlling network switches using a switch modeling interface at a controller |
CN108256352B (zh) * | 2018-01-15 | 2021-10-22 | 北京安博通科技股份有限公司 | 一种web防护特征库自动打包的方法、装置及终端 |
CN111049746B (zh) * | 2018-10-12 | 2022-04-22 | 华为技术有限公司 | 一种路由表项生成方法、字典树生成方法和装置 |
CN109905413B (zh) * | 2019-04-30 | 2021-10-22 | 新华三信息安全技术有限公司 | 一种ip地址的匹配方法及装置 |
CN113014493B (zh) * | 2019-12-20 | 2022-05-17 | 中盈优创资讯科技有限公司 | 路由播发方法及装置 |
CN111818305B (zh) * | 2020-07-09 | 2021-12-10 | 杭州海康威视数字技术股份有限公司 | 一种分布式系统、业务控制方法及装置 |
US11894997B2 (en) * | 2021-07-13 | 2024-02-06 | Nile Global, Inc. | Methods and systems for network diagnostic |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061712A (en) * | 1998-01-07 | 2000-05-09 | Lucent Technologies, Inc. | Method for IP routing table look-up |
US6680916B2 (en) * | 2001-01-22 | 2004-01-20 | Tut Systems, Inc. | Method for using a balanced tree as a base for a routing table |
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 |
CN100352233C (zh) * | 2002-12-10 | 2007-11-28 | 中兴通讯股份有限公司 | 路由表的组织与查找方法 |
US7233579B1 (en) * | 2002-12-20 | 2007-06-19 | Nortel Networks Limited | Routing table for forwarding Internet Protocol (IP) packets through a communications network |
US7797348B2 (en) * | 2003-05-01 | 2010-09-14 | The Hong Kong Polytechnic University | Data structure and system for IP address lookup and IP address lookup system |
CN100366008C (zh) * | 2003-05-29 | 2008-01-30 | 华为技术有限公司 | 构造路由表及用其查找路由项的方法 |
US20050018683A1 (en) * | 2003-07-21 | 2005-01-27 | Zhao Yigiang Q. | IP address storage technique for longest prefix match |
CN101420415B (zh) * | 2007-10-23 | 2012-08-22 | 华为技术有限公司 | 形成路由表的方法及装置 |
CN101388842B (zh) * | 2008-10-30 | 2012-04-04 | 华为技术有限公司 | 一种存储方法和装置 |
-
2010
- 2010-04-08 CN CN201080003368.3A patent/CN102405623B/zh not_active Expired - Fee Related
- 2010-04-08 WO PCT/CN2010/071635 patent/WO2011124030A1/zh active Application Filing
- 2010-04-08 EP EP10849267A patent/EP2544414A4/en not_active Withdrawn
-
2012
- 2012-09-27 US US13/629,346 patent/US20130024649A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104539537A (zh) * | 2014-12-25 | 2015-04-22 | 北京华为数字技术有限公司 | 一种路由查找方法和装置 |
CN104539537B (zh) * | 2014-12-25 | 2018-04-20 | 北京华为数字技术有限公司 | 一种路由查找方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2544414A1 (en) | 2013-01-09 |
CN102405623A (zh) | 2012-04-04 |
EP2544414A4 (en) | 2013-01-09 |
WO2011124030A1 (zh) | 2011-10-13 |
US20130024649A1 (en) | 2013-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102405623B (zh) | 路由表项的存储方法和装置 | |
US6490592B1 (en) | Method of and apparatus for generating a tree data structure supporting longest match lookup | |
EP2560327B1 (en) | Routing table establishment method and device | |
CN103561133B (zh) | 一种ip地址归属信息索引方法及快速查询方法 | |
CN101388030B (zh) | 数据库和数据库处理方法 | |
US6691124B2 (en) | Compact data structures for pipelined message forwarding lookups | |
CN106416152B (zh) | 一种查找装置、查找配置方法和查找方法 | |
US20070189284A1 (en) | System and method for routing table computation and analysis | |
CN105141525B (zh) | IPv6路由查找方法及装置 | |
CN101621502A (zh) | 存储、查找路由表的方法及装置 | |
CN100488174C (zh) | 流分类中基于硬件的差异化组织方法 | |
US20170366459A1 (en) | Jump on a Match Optimization for Longest Prefix Match using a Binary Search Tree | |
CN103107945B (zh) | 一种快速查找ipv6路由的系统及方法 | |
US10462062B2 (en) | Memory efficient packet classification method | |
CN101159658A (zh) | 虚拟私用网路由查找的方法和装置 | |
CN102567505A (zh) | 一种分布式数据库及其数据操作方法 | |
CN104009921A (zh) | 基于任意字段匹配的数据报文转发方法 | |
US20040044868A1 (en) | Method and apparatus for high-speed longest prefix match of keys in a memory | |
CN114884877B (zh) | 一种哈希表和HOT相结合的IPv6路由查找方法 | |
US20080086448A1 (en) | Method of generating node indentifier in tree structure | |
CN101692653B (zh) | 路由表的管理方法和装置 | |
CN100472427C (zh) | 一种数据包递归流分类方法 | |
CN106656816B (zh) | 分布式ipv6路由查找方法和系统 | |
CN101741588B (zh) | 数据存储系统及方法 | |
CN103581023A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141008 Termination date: 20190408 |