一种查找装置、查找方法和配置方法

文档序号:9474190阅读:537来源:国知局
一种查找装置、查找方法和配置方法
【技术领域】
[0001] 本发明涉及数据通信领域,尤其涉及一种查找装置、查找方法和配置方法。
【背景技术】
[0002] 路由器的主要任务是进行网际协议(Internet Protocol,简称:IP)报文转发,也 就是根据报文头中的目的IP地址将到达路由器输入端口的报文转发到正确的输出端口。 路由查找就是根据报文的目的IP地址,查找路由器中的路由表,得到报文下一跳信息的过 程。
[0003] 路由表中的每条路由主要由一个前缀和对应的下一跳信息构成,前缀可以用'0', '1'和组成的三值位串表示。路由查找采用最长前缀匹配(longest prefix match,简称 LPM)原则。当有多个前缀与输入的IP地址匹配时,与该IP地址匹配的前缀中掩码最长的 前缀对应的下一跳信息为最终的查找结果。
[0004] 基于Trie树(也称前缀树)的算法根据前缀中的位串建立一棵二叉树或多叉树。 如果每次考虑一位,则建立一棵二叉树,也称为单位Trie树。图1示出了一棵单位Trie树, 其中包含11个前缀,图1中左侧P〇~pl〇,在单位Trie树中对应的节点用黑色圆圈表示, 连接点用白色圆圈表示。如果每次考虑多位,则建立一棵多位Trie树。在多位Trie树中, 每次考虑的位数一般是固定的,称为Trie树的步长(英文stride)。
[0005] MBT (multi-bit trie,多位Trie)树算法是一种被广泛应用的路由查找算法。MBT 可以看作按stride把一个单位Trie树分成多个子树,并为每个子树创建一个Trie节点。 每个Trie节点均有一个关联前缀,一个Trie节点的关联前缀是该Trie节点对应的子树的 根节点上的前缀值。位于一个子树内的前缀数量最多为2stl^-l个,如果某个子树内分布有 前缀,还要为该子树创建一个前缀(英文:prefiX)节点,位于一个子树内的前缀都保存在该 子树对应的prefix节点中。每个前缀对应一条下一跳信息。一般在MBT中只保存下一跳指 针,也就是指向下一跳信息的指针。
[0006] 图2示出了基于图1中的前缀建立的stride等于3的MBT树。该MBT树包括7 个Trie节点,如图2中所示的Trie Node T1~Trie Node T7,每个Trie节点配置有一个前 缀节点,如图2中所示Prefix Node。每个Prefix Node中保存有该Prefix Node对应的Trie 节点中的各个前缀的下一跳指针,例如,图2中Trie Node T4对应的prefix节点(prefix节 点表示前缀节点)中保存有前缀p3的下一跳指针"RE Index of P3"。除了 Trie Node T1对 应的前缀节点以外的每个前缀节点中,还保存一个最长前缀匹配(present longest prefix match,简称PLPM)。一个prefix节点的PLPM为覆盖该prefix节点对应的子树的最长前缀。 图2中prefix节点中的"RE Index of PLPM"表示该prefix节点的PLPM的下一跳指针。
[0007] 位于一个子树内的前缀都保存在该子树对应的prefix节点中。一个prefix节点中, 通常会保存该prefix节点对应的子树内的所有前缀,并用位图指示prefix节点中保存的前 缀,位图包括2s&ldM个比特(bit)。比如,图2中的子树T4内有3个前缀p3、p6和p7,用 7比特的位图表示即为1000101,表示该子树中第1、5、7个节点为前缀。
[0008] 现有MBT算法中,为了减小树的深度,一般会加大步长的取值,比如取值为8。当步 长较大时,prefix节点对应的位图所占比特也比较多。如果前缀分布比较稀疏,prefix节点 中存储的前缀数量较少,但对应的位图仍需要占用较多比特,导致存储空间的开销较大,利 用率低。

【发明内容】

[0009] 本发明实施例提供了一种查找装置、查找方法和配置方法,用于提高前缀节点的 编码效率,从而减少存储空间的开销。
[0010] 第一方面,提供一种查找装置,所述查找装置包括:存储单元;
[0011] 所述存储单元中配置有N个前缀节点,N3 1,每个前缀节点包括第一数据域,所述 第一数据域中包括Μ个前缀集合,M3 1,其中:
[0012] 第i前缀节点对应第一步长的第一 ΜΒΤ子树,所述第i前缀节点中的第j前缀集 合对应第二MBT子树,所述第二MBT子树是基于第二步长对所述第一 MBT子树划分得到的, 所述第二步长小于所述第一步长;其中,1 < i < N,1 < j < Μ ;
[0013] 所述第j前缀集合中包括所述第二MBT子树的关联前缀、第一位置信息,所述第一 位置信息用于按序指示所述第二MBT子树中的各个前缀在所述第二MBT子树中的位置。
[0014] 结合第一方面,在第一方面的第一种可能的实现方式中,所述第i前缀节点中还 包括第二数据域,所述第二数据域中包括所述第一 MBT子树中所有前缀各自所对应的下一 跳。
[0015] 结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式 中,所述第二数据域设置于所述第一数据域之后;
[0016] 所述第二数据域中各个前缀所对应的下一跳的顺序,与所述第一数据域中各个前 缀集合中的第一位置信息所指示的前缀位置的顺序,相同或相反。
[0017] 结合第一方面、第一方面的第一种至第二种可能的实现方式中的一种,在第一方 面的第三种可能的实现方式中,所述第i前缀节点中还包括第三数据域,所述第三数据域 中包括所述第i前缀节点中的所有前缀集合的数量、所述第i前缀节点中的所有前缀集合 中的每个前缀集合的头部信息,其中,第j前缀集合的头部信息中包含所述第二MBT子树的 关联肖U缀的长度。
[0018] 结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式 中,所述第三数据域设置于所述第一数据域之前;
[0019] 所述第三数据域中各个前缀集合的头部信息的顺序,与所述第一数据域中各个前 缀集合的顺序,相同或相反。
[0020] 结合第一方面、第一方面的第一种至第四种可能的实现方式中的一种,在第一方 面的第五种可能的实现方式中,所述第一数据域中的所述Μ个前缀集合按照查找顺序包括 第1至第Μ前缀集合,所述Μ个前缀集合中,第j前缀集合中存储的关联前缀的长度,不小 于第j+Ι前缀集合中存储的关联前缀的长度,1 < j < M。
[0021] 结合第一方面、第一方面的第一种至第五种可能的实现方式,在第一方面的第六 种可能的实现方式中,所述第i前缀节点中包含第一指示信息,用于指示所述第j前缀集合 所对应的第二MBT子树中包含唯一一个前缀,所述第j前缀集合中的第一位置信息为所述 唯一一个前缀在所述第二MBT子树中的节点位置编号,所述第一位置信息的长度等于所述 第二步长;或者
[0022] 所述第i前缀节点中包含第二指示信息,用于指示所述第j前缀集合所对应的第 二MBT子树中包含至少2个前缀,所述第j前缀集合中的所述第一位置信息为位图,用于指 示所述第二MBT子树中的所述至少2个前缀在该第二MBT子树中的位置,所述第一指示信 息的长度为2stnde-l,stride为所述第二步长。
[0023] 结合第一方面、第一方面的第一种至第六种可能的实现方式中的一种,在第一方 面的第七种可能的实现方式中,所述存储单元用于执行查找流程;或者,所述查找装置还包 括查找单元,所述查找单元用于基于所述存储单元执行所述查找流程;
[0024] 所述查找流程包括:
[0025] 获得查找关键字;
[0026] 在所述N个前缀节点中查找关联前缀与所述查找关键字最长匹配的前缀节点,针 对查找到的前缀节点执行以下步骤:
[0027] 根据前缀节点中前缀集合的总数量和每个前缀集合中的关联前缀的长度,确定每 个前缀集合的存储位置、每个前缀集合中的关联前缀和第一位置信息的存储位置;
[0028] 根据每个前缀集合中的关联前缀和第一位置信息的存储位置,获取每个前缀集合 中的关联前缀和第一位置信息;
[0029] 在所有前缀集合中查找关联前缀与所述查找关键字最长匹配的前缀集合;
[0030] 根据查找到的前缀集合中的第一位置信息,确定与所述查找关键字最长匹配的前 缀;
[0031] 根据与所述查找关键字最长匹配的前缀获得下一跳,得到所述查找关键字的查找 结果。
[0032] 结合第一方面、第一方面的第一种至第七种可能的实现方式,在第一方面的第八 种可能的实现方式中,还包括配置单元,所述配置单元用于配置所述存储单元中的前缀节 点,具体的,所述配置单元具体用于:
[0033] 获得待配置的前缀信息,所述前缀中包括至少一个地址前缀以及所述地址前缀所 对应的下一跳;
[0034] 在所有前缀节点中查找关联前缀与所述待配置的地址前缀最长匹配的前缀节 占.
[0035] 针对查找到的前缀节点执行以下操作:
[0036] 根据前缀节点中前缀集合的总数量和每个前缀集合中的关联前缀的长度,确定每 个前缀集合的存储位置、每个前缀集合中的关联前缀和第一位置信息的存储位置;
[0037] 根据每个前缀集合中的关联前缀和第一位置信息的存储位置,获取每个前缀集合 中的关联前缀和第一位置信息;
[0038] 在所有前缀集合中查找关联前缀与所述待配置的地址前缀最长匹配的前缀集 合;
[0039] 在前缀节点中配置所述待配置的地址前缀所对应的下一跳,并更新与所述待配置 的地址前缀最长匹配的前缀集合中的第一位置信息。
[0040] 第二方面,提供一种查找方法,包括:
[0041] 获得查找关键字;
[0042] 在所配置的N个前缀节点中查找关联前缀与所述查找关键字最长匹配的前缀节 点;其中,N3 1,每个前缀节点包括第一数据域,所述第一数据域中包括Μ个前缀集合, Μ > 1,其中:第i前缀节点对应第一步长的第一 ΜΒΤ子树,所述第i前缀节点中的第j前缀 集合对应第二MBT子树,所述第二MBT子树是基于第二步长对所述第一 MBT子树划分得到 的,所述第二步长小于所述第一步长,1 < i < N,1 < j < M,所述第j前缀集合中包括所述 第二MBT子树的关联前缀、第一位置信息,所述第一位置信息用于按序指示所述第二MBT子 树中的各个前缀在所述第二MBT子树中的位置;
[0043] 针对查找到的前缀节点执行以下步骤:
[0044] 根据前缀节点中前缀集合的
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1