CN100359886C - 一种改进的多级查找表的建立及查找方法 - Google Patents
一种改进的多级查找表的建立及查找方法 Download PDFInfo
- Publication number
- CN100359886C CN100359886C CNB021603286A CN02160328A CN100359886C CN 100359886 C CN100359886 C CN 100359886C CN B021603286 A CNB021603286 A CN B021603286A CN 02160328 A CN02160328 A CN 02160328A CN 100359886 C CN100359886 C CN 100359886C
- Authority
- CN
- China
- Prior art keywords
- look
- multistage
- list item
- searching
- conflict
- 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
Images
Landscapes
- Small-Scale Networks (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出了建立多级查找表的方法,包括:建立空白多级查找表以及含有多个表项的辅助链表;对辅助链表的各个表项进行冲突判断;将辅助链表中无冲突的表项添加到空白多级查找表的第一级查找表中,并将无冲突的状态标识和查找结果分别填入与表项相对应的各个域内;按照最高区分度原则为有冲突的表项确定下一级查找的索引,根据确定的索引建立第二级查找表,并将确定的索引、有冲突状态标识以及第二级查找表的入口填入第一级查找表中与表项对应的各个域内;若表项在第二级查找表中仍有冲突,则依照建立第二级查找表的方式来建立其后的各级查找表,直至表项在某一级查找表中无冲突为止。本发明还提出了对所建立的多级查找表进行查找的方法。
Description
发明领域
本发明涉及多级查找表中数值的查找,特别涉及一种在高速数据帧交换技术中使用的经过改进的多级查找表的建立及查找方法。
背景技术
利用查找表进行数值查找的方法在很多领域中都得到应用,例如,在网络数据的传输和交换技术中,网络路由设备或交换设备通常采用查表的方法来查找与数据报文地址相对应的端口或通道,并通过这些端口或通道将数据报文转发给下一级转发设备或网段。目前,在普遍使用的二层网络交换设备中大量采用多级查找表的方式来进行路由选择。这是因为,在与介质访问控制(MAC)地址相对应的二层交换设备中,由于MAC地址多达48比特,如果要建立一个MAC地址和转发端口一一映射的端口路由表项,表项数目将多达248个,其占用的存储空间将会庞大到让人无法接收,其次,使用二层交换设备进行路由的网段不可能有大量的主机。因此完全可以使用体积小且效率损失不大的多级查找表来代替上文中提到的一一映射的端口路由表。
图1是传统的多级查找表的查找流程图。如图1所示,首先建立一张完全覆盖的第一级查找表,例如在MAC地址查找中以MAC地址的低16比特为索引建立一张含有2的16次方个表项的第一级查找表,它覆盖了低16比特的所有组合。当接收到一个报文并提取出其MAC地址后首先使用该MAC地址的低16比特作为索引在第一级查找表中查找对应的表项,如果具有该低16比特组合的MAC地址在第一级查找表中是唯一的,即,没有和其他MAC地址产生冲突,则查找成功结束,然后报文通过与查找结果相对应的端口被转发出去;如果有冲突,即,有多个MAC地址具有该低16比特的组合,则从该低16比特组合对应的“座位”上得到进入二级查找表的入口。二级查找表一般是比一级查找表小很多的完全覆盖表,比如在上例中可以采用以MAC地址的高32比特的最低4比特为索引,建立一个只有16个表项(4比特可以有16种组合)的很小的二级查找表,同上所述,将报文的MAC地址的高32比特的最低4比特作为索引在这张小的二级查找表中对号入座,如果没有冲突,则返回查找成功结果,否则再到三级查找表的入口地址;随后再以报文MAC地址的高32比特中的次高4比特作为索引在三级查找表中查找......以次类推(各级查找表的索引分别是以4比特为一个单元从低位依次向高位延展,可参看后面的表二),除了第一张查找表的规模比较大之外,其他的表项的规模是很小的,而在该设备连接的网段中MAC地址的低16比特的值相同的概率是比较小的,只有2的16次方分之一,也就是65536分之一,因此,大部分的多级查找只要查找一下大表就能够返回查找成功的标记了,而且采用这样的多级查找表方法将原来大到难以想象的一一映射表变成了相对而言极其小巧的多级表表项,使得设备真正能够实用地设计出来。
以上介绍的只是最一般化的多级查找表实现方法,在实际应用中还有多种其他的查找法,例如二叉树查找法等等,但是它们的思路是一样的,即,化大表项为多级小表项,其要求也是一样的,即,尽量不要损失性能。
但是,在利用现有技术中的多级查找方法进行查表时,虽然它缩小了查找表的空间,但是如果在查表过程中不断出现冲突,即,需要进行多次查找时,就会导致多级查找效率的大幅度下降。如果将这样的查找表及查找方法应用于对时间要求比较苛刻的地方——还是以二层交换机为例,那么对于性能的影响将是不可忽略的。
发明内容
本发明的目的是为了解决传统多级查找表在出现多次查找的情况下查找效率低的问题。
根据本发明的第一个方面所述,它提供了一种改进的多级查找表的建立方法,所述多级查找表含有多个根据索引排列的表项,所述表项包括状态标识域,用于标识冲突情况;指针域,用于指出下一级查找所使用的查找索引的标识号;以及查找结果域,用于表示查找成功返回的结果或者查找失败得到的下一级查找的入口,所述多级查找表的建立方法包括以下步骤:1)建立空白多级查找表以及含有多个所述表项的辅助链表;2)对所述辅助链表中的各个表项进行冲突判断;3)将所述辅助链表中没有冲突的表项直接添加到所述空白多级查找表的第一级查找表中的相应位置上,并且将代表无冲突的状态标识和查找结果分别填入所述第一级查找表与所述表项相对应的各个域内;4)按照区分度最高的原则为所述辅助链表中有冲突的表项确定下一级查找的索引,根据确定的索引建立第二级查找表,并将所述确定的索引、代表有冲突的状态标识以及所述第二级查找表的入口填入所述第一级查找表中与所述表项相对应的各个域内,同时将代表无冲突的状态标识和查找结果分别填入所述第二级查找表中与所述表项相对应的各个域内;5)如果所述表项在所述第二级查找表中仍有冲突,则依照建立所述第二级查找表的方式来建立其后的各级查找表,直至所述表项在所述多级查找表的某一级查找表中无冲突为止。
根据本发明的上述方法,进一步包括以下步骤i)当需要在所述多级查找表中添加表项时,根据待添加表项与原有表项的冲突情况,直接将所述待添加表项添加入所述第一级查找表中并同时在所述辅助链表中添加对应项,或者从所述多级查找表中删除已有的冲突表项,在所述辅助链表中添加对应项,并根据建立所述多级查找表的方式重建所述多级查找表的部分查找表;ii)当需要从所述多级查找表中删除表项时,根据待删除表项与原有表项的冲突情况,直接将所述待删除表项从所述第一级查找表中删除并同时删除所述辅助链表中的对应项,或者从所述多级查找表中删除已有的冲突表项,从所述辅助链表中删除对应项,并根据建立所述多级查找表的方式重建所述多级查找表的部分查找表。
根据本发明的第二个方面所述,它提供了一种对利用上述建立方法建立的多级查找表进行查找的方法,包括以下步骤:a)将查找目标分成多个域,并以各个域中的数值作为查表的索引;b)取得所述查找目标第一个域中的数值以及所述多级查找表的入口;c)以所述数值作为索引在所述多级查找表中查找对应的表项;d)根据查找到的对应表项中的状态标识以决定是否需进行下一级查找;e)当无需进行下一级查找时,直接返回相匹配的表项;f)当需要进行下一级查找时,取得下一级查找的索引以及下一级查找表的入口以进行下一级查找,并且按照相同的方式对其后的各级表进行查找,直到查找到相匹配的表项为止。
通过使用根据本发明所述方法建立的改进的多级查找表并利用相应的查找方法,就可以大大改善出现冲突情况下的查找过程。这样的好处是显而易见的,即,在需要大量查表过程的应用中,查表过程的简化,就意味着整体效率的提高。在查找表规模较小的情况下(也就是冲突比较严重的情况下),其有利之处尤为突出。
附图说明
图1是传统的多级查找表的查找流程图;
图4是利用本发明实施例所述的多级查找表进行查找的方法流程图;
图5是根据本发明实施例所述的多级查找表的建立流程;
图6是本发明实施例所述的多级查找表的更新流程图。
优选实施方式
下面将以二层交换设备中的多级路由查找表及其查找方法为例并结合附图对本发明的优选实施例进行详细说明。
表一:多级查找中一个表项的内容
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
C | 保留 | INDICATOR | 查找到的返回结果或下一级查找的入口地址 |
表二:MAC地址用于多级查找时的分派(上表为高位,下表为低位,低32位加上高16位构成48位的MAC地址)
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
空余部分 | 九次索引 | 八次索引 | 七次索引 | 六次索引 |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
五次索引 | 四次索引3 | 三次索引3 | 二次索引2 | 第次查找的索引2 |
为了便于对本发明的说明,首先参考以上两个表。表一是根据本发明所述的多级查找表中的一个表项(假设多级表已经建立好,其具体建立过程将在后面作出说明)。如前所述,这里讨论的查找表是覆盖了某个索引的所有可能组合的完全覆盖表,假如我们以16比特组合的数值作为索引,那么在一个查找表中将有2的16次方也即65536个表一中的表项,每个表项代表着这16比特的一种组合——换句话说就是任意给出一个16比特的组合,均能在这个查找表中“对号入座”地找到唯一的一个表项与之相对应。这个表项中各个部分的含义为:“C”域为一个状态标识域,它代表了该表项是否与其他表项有冲突,即,是否与其他表项相同,如果有冲突则该位置1;“INDICATOR″域是一个指针域,它用于指出下一级查找所使用的查找索引的标识号;最后一个域就是查找成功返回的结果或者查找失败得到的下一级查找的入口地址(也即是指向下一张查找表的地址指针)。
表二是对一个MAC地址的划分(这里说到划分方式完全只是一个例子,我们可以作各种各样的划分,完全根据需要而定),48位的MAC地址被人为地划分为9个域,分别是第一级查找的索引、第二级查找的索引、......、第9级查找的索引。后面说到的索引即是指这些域中的数值。值得一提的是上面说到的“INDICATOR”域中的指针即是指向这些域的。
接下来将参考图2对本发明所述多级查找表的具体查找过程进行详细说明。
图2是利用本发明实施例所述的多级查找表进行查找的方法流程图,如图2所示,该查找过程主要包括以下内容:第一级查找:以“第一级查找的索引”域中的数值为索引进行第一级查找,在对应的第一级查找表(再说明一次,此表包含有2的16次方即65536个表项)中找到该数值对应的表项(步骤1、2),然后,对该表项的值进行检查(步骤3):“C”域是否为0,如果为0则说明此表项没有冲突,查找成功,可以马上获取低16比特的返回值,查找结束(步骤6);“C”域为1说明此表项有冲突,获取“INDICATOR”域的值(假设为N)和下一级查找的入口地址,进入下一级查找(步骤4、5)。
第二级查找:根据“INDICATOR”的指示,获得相应的“第N级查找的索引”的4比特数值,并以此为索引在第二级查找表中找到该值对应的表项(这里需要指出,4比特的索引对应的这第二张查找表的大小为2的4次方即16个表项,比第一级张查找表小得多),随后像第一级查找一样检查该表项的值。如此一直持续下去,最后一定能够找到无冲突的表项并返回查找结束的返回值。这里,应该注意的是,与传统查找方法相比,本发明不一定是按照顺序根据表二中的“第二级查找索引”在多级查找表中进行查找,而是根据一个按照最高区分度原则确定出来的下一级索引来进行查找。下一级查找索引的确定以及下一级查找表的建立将在后面得到详细说明。
根据上述的查找过程,不难发现导致查找效率低下的原因就是冲突,如果不断地有冲突,那么就必须一遍一遍地查找下去,浪费大量的程序运行时间。减少冲突概率的方法简单且唯一:扩大第一级查找表的容量!第一级查找表的容量大了,就能有更大的概率一级查找成功,如果第一级查找表的容量扩大到以整个MAC地址的48比特为索引,那么就能够保证完全没有冲突,所有的查找都能够一次查找成功。当然,这时候的第一级查找表其实就是一一映射表,所谓的多级查找已经不复存在了。既然我们已经知道一一映射表是不可能做到的,那么就只能在冲突概率和第一级查找表的容量上作一个折衷,像这里说到的第一级查找表的大小为16比特,在一个网段中出现两个16比特相同数值的MAC地址的概率为65536分之1,出现三个这样的MAC地址的概率为4,294,967,296分之1,......可以说冲突的概率已经很小了,这样的折衷是可以接收的。
另一方面,第二级查找表也存在冲突的问题,但是我们却使用4比特作为索引——注意到这里使用的索引的位数只是4位,远少于一级查找表的16位,这是会大大增加冲突的概率的,但是这么做也是有理由的:第一级查找的冲突概率已经很小了,第二级查找冲突的概率就更小了,如果再用很大的第二级查找表的话会浪费大量的程序空间的。这是在冲突概率和占用的程序空间之间作权衡。
前面已经计算过出现两个MAC地址的低16比特相同的概率为65536分之1,但是在第二级查找表中是必定能区分二者的(按照传统的查找则不一定能区分二者);对于出现三个低16比特相同的MAC地址的情况下使用本发明可以使得在第二级查找表中区分三者的概率由(16*15*14)/(16*16*16)=0.8204提高到1-(1-(16*15*14)/(16*16*16))8=1-1.086×10-6=0.999998914,这样的概率使得在二级查找表中区分三个MAC地址的可能性极大地提高了;依此可以计算如果出现四个MAC地址的低16比特相同的情况下能够在二级查找表中完全区分出这四者的概率:1-(1-(16*15*14*13)/(16*16*16*16))8=1-1.53×10-4=0.999847,这个概率仍然是很高的(如果考虑到四个这样的MAC地址出现的概率为3.5527×10-15的话,可以认为经过二级查找仍然不能区分出四者的事件为极小概率事件)。同理,出现更多的低位相同的MAC地址的概率是急剧收缩的,因此最多经过二级查找即能区分出这些MAC地址的概率是传统多级查找表算法远远不能及的。
对于以上根据本发明所述的多级查找方法来说,其核心内容是构造一个高效率的多级查找表。相对于查找过程,表的建立过程要复杂得多,它是本发明的核心部分。下面将参考图3对根据本发明实施例所述的多级查找表的建立过程进行详细说明。这里,仍以二层交换设备中的多级路由查找表为例进行说明。
图3是根据本发明实施例所述的一种多级查找表的建立流程。如图3所示,该流程主要包括以下内容:首先建立两个表(步骤11):一个是空白的第一级查找表,容量为65536个表项的完全覆盖表;第二个表是一个链表,表项的数量是可伸缩的,其中包含的内容是这个网段中所使用的所有MAC地址(这里假设已经知道与此设备有关的该网段中的MAC地址)的,这些MAC地址被有规则地排列,基本规则就是:低16比特相同的MAC地址紧挨着放置。然后,从链表中得到第一个需要添加入多级查找表的表项(步骤12),根据上面建立的链表,可以很容易地知道哪些MAC地址的低16比特没有冲突(也就是没有两个或以上的MAC地址的低16比特是相同的)而哪些是有冲突的(步骤13)。将无冲突的MAC地址对应的第一级查找表表项的“查找到的结果或下一级查找的入口地址”域中填入查找成功的返回值——这些MAC地址只需要一级查找就能够得到成功的返回值(步骤14);而对于有冲突的MAC地址,显然需要建立第二级查找表,而关键就是第二级查找表的索引——不必按部就班地用表二中的“二级索引”域中的值作为索引,而是通过对比,在“二级索引”~“九级索引”中找到一个最合适的值作为索引,这个最合适的索引符合这样的条件:通过这个索引,能够尽可能多地使在第一级查找中有冲突的MAC地址在第二级查找中不再冲突!确定这个索引的过程是很简单的,即:将第一次查找有冲突的MAC地址都集中在一起,将它们的二级索引都剥离出来,看看使用二级索引来建立第二级查找表会不会出现冲突,如果不会冲突的话就使用二级索引建立第二级查找表;否则将三级索引剥离出来看看使用三级索引作为第二级的查找会不会出现冲突......如此这般,如果无论使用哪级索引来构建第二级查找表都会出现冲突,则选择冲突数量最少的那个来建立第二级查找表,然后再如上方式建立第三级查找表......。通过上述这个简单的过程就能知道到底“二级索引”~“九级索引”中的哪个域作为索引能够最好的减少第二级查找中的冲突——不妨设这个索引为M,随后建立一个第二级查找表,以M为索引,参照第一级查找表的方式将有冲突的MAC地址在第二级查找表中建表,同时在第一级查找表中将这些MAC地址对应的表项的“C”域置1标识有冲突,在“INDICATOR”域填上指向M的指针值。经过以上过程,第一级查找表和第二级查找表都建立起来了(步骤15、16),假如在第二级查找表中还有冲突,那么依照建立第二级查找表的方式可以建立第三级查找表以至于第四级查找表......一直到没有冲突为止(步骤17、18)。至此,多级查找表建立起来了。
在多级查找表的使用过程中,经常需要根据外部环境的变化来对其进行更新。而外部环境变化具体反映到多级查找表中不外乎是表项的增添和删除。图4是本发明实施例所述的多级查找表的更新流程图。如图4所示,在表项增加的情况下:如果二层交换设备上出现了新的MAC地址,那么它将被捕获并插入到上述的链表中,随后这个MAC地址、以及在链表上和它相邻的MAC地址将被比较其“第一级查找索引”域的值:如果都不相同,则找到对应的第一级查找表中的表项并填写该表项(参见建立多级查找表的过程);如果出现了有冲突的MAC地址,则删除已经建立的、与新增加的这个MAC地址冲突的那个旧的MAC地址对应的查找表中的表项,并且按照上面建立多级查找表的方式将这些MAC地址(包括新出现的MAC地址)对应的各次查找表的表项建立起来(步骤111、113、115、117)。表项删减的情况下:如果拥有某个MAC地址的设备从二层交换设备上移除,或者二层交换设备本身的MAC地址一端口路由表项的老化掉而导致需要从多级查找表中删减该MAC地址对应的表项都是可能的。同样的,如果该MAC地址在第一级查找表中没有冲突,那么直接删除该表项的内容,删除链表中该MAC地址对应的表项并重新连接链表;否则,删除该MAC地址对应的第二级查找表以及与该二级查找表关联的、可能存在的三级查找表,依次类推,后续查找表都删除,随后将该MAC地址对应的表项从链表中移除,最后根据新的链表重新建立该部分的多级查找表(步骤112、114、116、118)。需要注意的是这里介绍的只是最简单的删除方式,完全可以用更好的方式来移除以节省程序运行时间。
本发明中在多级查找表的建立和更新中出现了另外一个辅助表项:链表。粗看这样做增加了程序空间的开支,但是实际上这个链表完全可以就是端口路由表,这样的话端口路由表就兼作了多级查找表的辅助表项,并没有增加程序的空间开支。即使本发明应用于其他应用领域,不存在端口路由表的说法,那么建立这个链表的确占用了一定的程序空间,不过这一点程序空间可以换来比常规的多级查找表高得多的可用性(大大提高了有冲突的情况下的查找效率)还是值得的。
不难看出,本发明的核心在于将大量有冲突的多级查找的过程简化了,并且着力于通过合理的算法使得对它们的查找变得有效得多:比如对于MAC地址0x100000000000和0x200000000000,它们在一级查找表中是有冲突的,如果按照传统的多级查找,那么将要查找9次才能在“第九级查找表”中成功地找到它们;如果按照本发明中的查找法,那么在第二级查找表中将会用最高的4比特作为查找索引,那么只要2次查找就能在“第二级查找表”中成功地找到它们;又比如MAC地址0x110000448899、0x220000558899和0x330000558899,如果按照传统方法建表并查找,那么查找这三个MAC地址将需建立第三级查找表,要查找后两个MAC地址的话就必须经过三级查找,而采用本发明的查找法的话将会使用最高的4比特或次高的4比特作为索引建立第二级查找表,这就能够将这三个MAC地址无冲突地放进第二级查找表中,避开了第三级查找表!这一算法的理论基础是通过增加查找的广度来减少查找的深度,从而获得较少的查找次数。
本发明人提请注意的是,虽然以上对本发明所作的详细说明是以二层交换设备中的多级路由查找表及其查找过程为例来进行的,但是这并不意味着对本发明的限制。所属领域的技术人员应该明白,可以将本发明的构思应用到各种类似的多级查找当中。例如,本发明所述的多级查找表及相应的查找方法可被应用到三层IP地址的查找当中。另外,在本发明实施例所述的建表及查表方法中,一级查找索引的长度为16比特,二级索引、三级索引......的长度为4比特,但本发明不仅限于此,也可以根据需要任意选取各级索引的长度。总之,本发明的精神和范围是由其权利要求书而不是具体实施例来定义的。
Claims (8)
1.建立多级查找表的方法,所述多级查找表含有多个根据索引排列的表项,所述表项包括状态标识域,用于标识冲突情况;指针域,用于指出下一级查找所使用的查找索引的标识号;以及查找结果域,用于表示查找成功返回的结果或者查找失败得到的下一级查找的入口,包括以下步骤:
1)建立空白多级查找表以及含有多个所述表项的辅助链表;
2)对所述辅助链表中的各个表项进行冲突判断;
3)将所述辅助链表中没有冲突的表项直接添加到所述空白多级查找表的第一级查找表中的相应位置上,并且将代表无冲突的状态标识和查找结果分别填入所述第一级查找表与所述表项相对应的各个域内;
4)按照区分度最高的原则为所述辅助链表中有冲突的表项确定下一级查找的索引,根据确定的索引建立第二级查找表,并将所述确定的索引、代表有冲突的状态标识以及所述第二级查找表的入口填入所述第一级查找表中与所述表项相对应的各个域内,同时将代表无冲突的状态标识和查找结果分别填入所述第二级查找表中与所述表项相对应的各个域内;
5)如果所述表项在所述第二级查找表中仍有冲突,则依照建立所述第二级查找表的方式来建立其后的各级查找表,直至所述表项在所述多级查找表的某一级查找表中无冲突为止。
2.根据权利要求1所述的建立多级查找表的方法,其特征在于进一步包括以下步骤:
i)当需要在所述多级查找表中添加新表项时,根据待添加表项与原有表项的冲突情况,直接将所述待添加表项添加入所述第一级查找表中并同时在所述辅助链表中添加对应项,或者从所述多级查找表中删除已有的冲突表项,在所述辅助链表中添加对应项,并根据建立所述多级查找表的方式重建所述多级查找表的部分查找表;
ii)当需要从所述多级查找表中删除表项时,根据待删除表项与原有表项的冲突情况,直接将所述待删除表项从所述第一级查找表中删除并同时删除所述辅助链表中的对应项,或者从所述多级查找表中删除已有的冲突表项,从所述辅助链表中删除对应项,并根据建立所述多级查找表的方式重建所述多级查找表的部分查找表。
3.根据权利要求1或2所述的建立多级查找表的方法,其中在步骤2)中,对所述辅助链表中的各个表项的冲突判断即判断所述表项的第一级查找索引在所述辅助链表中是否唯一。
4.根据权利要求1或2所述的建立多级查找表的方法,其特征在于所述多级查找表和所述辅助链表中的表项与MAC地址对应。
5.根据权利要求4所述的建立多级查找表的方法,其特征在于所述辅助链表中的MAC地址按照连续的规则排列。
6.根据权利要求5所述的建立多级查找表的方法,其特征在于所述辅助链表中的MAC地址的长度为16比特。
7.对利用权利要求1所述方法建立的多级查找表进行查找的方法,包括以下步骤:a)将查找目标分成多个域,并以各个域中的数值作为查表的索引;b)取得所述查找目标第一个域中的数值以及所述多级查找表的入口;c)以所述数值作为索引在所述多级查找表中查找对应的表项;d)根据查找到的对应表项中的状态标识以决定是否需进行下一级查找;e)当无需进行下一级查找时,直接返回相匹配的表项;f)当需要进行下一级查找时,取得下一级查找的索引以及下一级查找表的入口以进行下一级查找,并且按照相同的方式对其后的各级表进行查找,直到查找到相匹配的表项为止。
8.根据权利要求7所述的查找方法,其特征在于所述查找目标与MAC地址对应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021603286A CN100359886C (zh) | 2002-12-26 | 2002-12-26 | 一种改进的多级查找表的建立及查找方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021603286A CN100359886C (zh) | 2002-12-26 | 2002-12-26 | 一种改进的多级查找表的建立及查找方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1510931A CN1510931A (zh) | 2004-07-07 |
CN100359886C true CN100359886C (zh) | 2008-01-02 |
Family
ID=34237839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021603286A Expired - Fee Related CN100359886C (zh) | 2002-12-26 | 2002-12-26 | 一种改进的多级查找表的建立及查找方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100359886C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101188753B (zh) * | 2007-11-27 | 2010-12-29 | 海信集团有限公司 | 一种视频熵解码查找表的构造方法及视频熵解码方法 |
CN101515874B (zh) * | 2008-02-21 | 2011-07-27 | 卓望数码技术(深圳)有限公司 | 网络服务器的访问控制方法及控制系统 |
CN101340386B (zh) * | 2008-08-12 | 2011-08-10 | 华为技术有限公司 | 建立和查找路由表项的方法及路由器 |
CN101694664B (zh) * | 2009-11-03 | 2012-07-11 | 杭州华三通信技术有限公司 | 一种查找内容可寻址存储器表项的方法和装置 |
CN104734958A (zh) * | 2013-12-18 | 2015-06-24 | 深圳市中兴微电子技术有限公司 | 一种路由信息的老化方法与装置 |
CN106254244B (zh) * | 2016-07-28 | 2020-01-07 | 上海斐讯数据通信技术有限公司 | 一种基于sdn网络的合并流表项方法 |
CN107896193B (zh) * | 2017-12-29 | 2020-10-16 | 湖南恒茂高科股份有限公司 | 一种交换机及其查找表的创建方法、查找方法 |
CN115167218B (zh) * | 2022-07-20 | 2024-06-21 | 重庆长安汽车股份有限公司 | 一种车载局部网络管理方法及系统 |
CN117971899A (zh) * | 2023-12-28 | 2024-05-03 | 北京国科环宇科技股份有限公司 | 一种数据查找方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1120877A (zh) * | 1993-12-23 | 1996-04-17 | 英国电讯公司 | 消息路由 |
CN1197520A (zh) * | 1995-09-27 | 1998-10-28 | 记忆体公共有限公司 | 存储器管理 |
WO2001047168A2 (en) * | 1999-12-20 | 2001-06-28 | Zarlink Semiconductor V. N. Inc. | High speed mac address search engine |
WO2001067786A2 (en) * | 2000-03-10 | 2001-09-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Packet core function and method of selecting a packet data service node/foreign agent in a packet data network |
CN1383618A (zh) * | 2000-05-22 | 2002-12-04 | 株式会社鹰山 | 地址转换器、交织器和去交织器 |
-
2002
- 2002-12-26 CN CNB021603286A patent/CN100359886C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1120877A (zh) * | 1993-12-23 | 1996-04-17 | 英国电讯公司 | 消息路由 |
CN1197520A (zh) * | 1995-09-27 | 1998-10-28 | 记忆体公共有限公司 | 存储器管理 |
WO2001047168A2 (en) * | 1999-12-20 | 2001-06-28 | Zarlink Semiconductor V. N. Inc. | High speed mac address search engine |
WO2001067786A2 (en) * | 2000-03-10 | 2001-09-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Packet core function and method of selecting a packet data service node/foreign agent in a packet data network |
CN1383618A (zh) * | 2000-05-22 | 2002-12-04 | 株式会社鹰山 | 地址转换器、交织器和去交织器 |
Also Published As
Publication number | Publication date |
---|---|
CN1510931A (zh) | 2004-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6434144B1 (en) | Multi-level table lookup | |
US8208408B2 (en) | Tree-based node insertion method and memory device | |
CN101510839B (zh) | 最长匹配地址查询的方法和装置 | |
EP2314027B1 (en) | Switching table in an ethernet bridge | |
US6917934B2 (en) | Search engine for large database search using hash pointers | |
US5946679A (en) | System and method for locating a route in a route table using hashing and compressed radix tree searching | |
US7146371B2 (en) | Performance and memory bandwidth utilization for tree searches using tree fragmentation | |
CN100472480C (zh) | 分组处理方法和装置 | |
CN101604337B (zh) | 一种哈希表项存储、查找装置及方法 | |
CN101667958B (zh) | 选择哈希函数的方法、存储及查找路由表的方法及装置 | |
US8352955B2 (en) | Process placement in a processor array | |
KR100488414B1 (ko) | 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법 | |
CN100359886C (zh) | 一种改进的多级查找表的建立及查找方法 | |
US20180059947A1 (en) | Expanding variable sub-column widths as needed to store data in memory | |
JPH0685819A (ja) | コンピュータシステム | |
US7460538B2 (en) | Communication control apparatus and method for searching an internet protocol address | |
CN105450792A (zh) | 用于多核转发网络地址端口转换的端口分配方法和装置 | |
CN1319325C (zh) | 一种采用哈希链表查找路由表项的方法 | |
CN100421106C (zh) | 具有增强能力的关联存储器 | |
US20130182612A1 (en) | Method for Efficiently Retrieving Topology-Specific Data for Point-to-Point Networks | |
EP1131921B1 (en) | Method and apparatus for adaptive address lookup table generator | |
US6826621B1 (en) | Method and system for aggregating interface addresses | |
WO2002098055A2 (en) | Load balancing in ip address lookup | |
CN100401723C (zh) | 一种快速索引方法 | |
CN1905516B (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: 20080102 Termination date: 20151226 |
|
EXPY | Termination of patent right or utility model |