地址匹配方法、装置、存储介质及程序产品与流程

文档序号:36903823发布日期:2024-02-02 21:34阅读:16来源:国知局
地址匹配方法、装置、存储介质及程序产品与流程

本技术实施例涉及通信,特别涉及一种地址匹配方法、装置、存储介质及程序产品。


背景技术:

1、为了提高报文转发效率,路由器等转发设备上配置有转发表(forwardinginformation base,fib),fib包括多个前缀、以及与这多个前缀一一对应的转发规则。转发设备在接收到报文时,解析该报文的目的地址,从fib中查找与目的地址匹配的最长前缀,基于匹配到的最长前缀对应的转发规则转发报文。该过程也称为路由查找过程。

2、在上述路由查找过程中,为了提高路由查找效率,可以针对fib中的所有前缀维护一个二分搜索树。该二分搜索树包括多个节点,每个节点代表一个前缀长度,且每个前缀长度对应一个哈希表,该哈希表用于存储长度为相应前缀长度的多个前缀。为了进一步提高路由查找效率,每个节点对应的哈希表中的前缀还可以向前缀长度较短的节点投影,并在投影的节点对应的哈希表中存储该前缀对应的前缀标记。比如,以节点代表的前缀长度来命名节点,则节点3对应的哈希表用于存储长度为3的前缀,节点5对应的哈希表用于存储长度为5的前缀。如果节点5中某个前缀向节点3投影,则节点3对应的哈希表还用于存储该前缀对应的前缀标记。该前缀标记可以理解为将该前缀的前面比特位按照长度3进行截取得到的部分。由于二分搜索树中任一节点的右子树上的节点的前缀长度必然大于该节点的前缀长度,该节点的左子树上的节点的前缀长度必然小于该节点的前缀长度,因此该节点对应的哈希表中如果存在前缀标记,则该前缀标记是该节点的右子树上的节点对应的哈希表中的前缀投影得到的前缀标记。这种场景下,在匹配目的地址时,如果目的地址和某个节点对应的哈希表中的前缀标记匹配,则从二分搜索树上该节点的右子树上遍历各个节点对应的哈希表,以查找与目的地址匹配的最长前缀。

3、上述路由查找过程中,需要遍历的节点数量较多,导致路由查找效率较低。


技术实现思路

1、本技术实施例提供了一种地址匹配方法、装置、存储介质及程序产品,可以提高路由查找效率。所述技术方案如下:

2、第一方面,提供了一种地址匹配方法。在该方法中,确定待匹配的地址和二分搜索树。其中,该二分搜索树包括多个节点,每个节点指示一个前缀长度,且每个前缀长度对应一个哈希表,每个哈希表用于存储长度均为相应前缀长度的至少一个前缀,或者至少一个前缀和至少一个前缀标记,每个前缀标记由其他哈希表中的前缀按照相应前缀标记所在哈希表对应的前缀长度投影得到。

3、将该地址与多个节点中第一节点对应的哈希表进行匹配,第一节点为二分搜索树中的多个节点中任一节点;如果该地址与第一节点对应的哈希表中的目标前缀标记匹配,则获取目标前缀标记对应的启发式信息,该启发式信息是指与至少一个启发式信息节点关联的信息,至少一个启发式信息节点为投影得到目标前缀标记的前缀所在哈希表对应的节点;基于目标前缀标记对应的启发式信息查找与该地址匹配的最长前缀。

4、在本技术实施例中,在确定出待匹配的地址与某个前缀标记匹配时,由于该前缀标记还对应有启发式信息,且启发式信息用于记录与启发式信息节点关联的信息,因此能够基于启发式信息缩小查找范围,避免了需要逐个遍历该前缀标记所在哈希表对应的节点的右子树上的全部节点。因此本技术实施例提供的地址匹配方法可以减少遍历节点的数量,从而提高路由查找效率。

5、基于第一方面提供的方法,在一些可能的实现方式中,启发式信息包括至少一个启发式信息节点中每个启发式信息节点所指示的前缀长度。这种场景下,基于目标前缀标记对应的启发式信息查找与该地址匹配的最长前缀的实现过程可以为:基于至少一个启发式信息节点中每个启发式信息节点所指示的前缀长度,从二分搜索树中查找与该地址匹配的最长前缀。

6、通过在启发式信息中直接记录每个启发式信息节点所指示的前缀长度,以便于在路由查找时,基于记录的前缀长度能够直接确定出每个启发式信息节点,进而快速从二分搜索树中查找与该地址匹配的最长前缀。

7、基于第一方面提供的方法,在一些可能的实现方式中,基于至少一个启发式信息节点中每个启发式信息节点所指示的前缀长度,从二分搜索树中查找与该地址匹配的最长前缀的实现过程可以为:基于至少一个启发式信息节点中每个启发式信息节点所指示的前缀长度,确定至少一个启发式信息节点的公共最近祖先节点,该公共最近祖先节点为二分搜索树中包含全部启发式信息节点的最小子树的根节点;从二分搜索树中以公共最近祖先节点为根节点的子树上,查找与该地址匹配的最长前缀。

8、在基于启发式信息中记录的前缀长度确定出每个启发式信息节点后,便可将路由查找范围缩小在二分搜索树中以公共最近祖先节点为根节点的子树上,从而实现缩小路由查找范围,进而提高路由查找效率。

9、基于第一方面提供的方法,在一些可能的实现方式中,启发式信息包括启发式查找路径,启发式查找路径包括按序排列的至少一个二分判断节点,至少一个二分判断节点为二分搜索树上的节点,启发式查找路径为能够遍历至少一个启发式信息节点的路径。这种场景下,基于目标前缀标记对应的启发式信息查找与该地址匹配的最长前缀的实现过程为:按照启发式查找路径中至少一个二分判断节点的顺序,依次遍历至少一个二分判断节点,以从至少一个二分判断节点对应的哈希表中查找与该地址匹配的最长前缀。

10、可选地,在本技术实施例中,还可以在启发式信息中记录能够遍历至少一个启发式信息节点的启发式查找路径,以便于在路由查找时,直接该启发式查找路径快速查找与该地址匹配的最长前缀,进一步提高了路由查找效率。

11、基于第一方面提供的方法,在一些可能的实现方式中,至少一个二分判断节点为二分搜索树中以公共最近祖先节点为根节点的子树上的节点,公共最近祖先节点为二分搜索树中包含全部启发式信息节点的最小子树的根节点。

12、可以将启发式查找路径定位在二分搜索树中以公共最近祖先节点为根节点的子树上,从而实现缩小路由查找范围,进而提高路由查找效率。

13、基于第一方面提供的方法,在一些可能的实现方式中,在该方法中,可以通过下述步骤预先确定启发式查找路径。具体地,确定至少一个启发式信息节点的公共最近祖先节点,将公共最近祖先节点确定为一个二分判断节点;确定位于公共最近祖先节点的左子树上的部分启发式信息节点,并将部分启发式信息节点更新为至少一个启发式信息节点,返回执行确定至少一个启发式信息节点的公共最近祖先节点的操作,直至最近一次确定的公共最近祖先节点没有左子树或左子树上没有任一启发式信息节点;将确定的二分判断节点依次配置为启发式路径中的各个二分判断节点。

14、通过上述方式确定的启发式查找路径能够遍历到至少一个启发式信息节点中的全部启发式信息节点,从而实现在缩小查找范围的同时提高查找准确率。

15、基于第一方面提供的方法,在一些可能的实现方式中,在该方法中,还可以通过下述步骤预先确定启发式查找路径。具体地,确定至少一个启发式信息节点的公共最近祖先节点;如果公共最近祖先节点为至少一个启发式信息节点中一者,则将公共最近祖先节点确定为一个二分判断节点,如果公共最近祖先节点不是至少一个启发式信息节点中一者,则将位于公共最近祖先节点的右子树的启发式信息节点更新为至少一个启发式信息节点,返回执行确定至少一个启发式信息节点的公共最近祖先节点的操作,直至最近一次确定的公共最近祖先节点为至少一个启发式信息节点中一者,将最近一次确定的公共最近祖先节点确定为一个二分判断节点,或者,直至最近一次确定的公共最近祖先节点没有右子树或右子树上没有任一启发式信息节点,且最近一次确定的公共最近祖先节点不是至少一个启发式信息节点中一者;对于每次确定的公共最近祖先节点,如果公共最近祖先节点的左子树上存在启发式信息节点,将左子树上的启发式信息节点更新为至少一个启发式信息节点,并返回执行确定至少一个启发式信息节点的公共最近祖先节点的操作,直至最近一次确定的公共最近祖先节点没有左子树或左子树上没有任一启发式信息节点;将确定的二分判断节点依次配置为启发式路径中的各个二分判断节点。

16、通过上述方式确定的启发式查找路径满足以下特点:排序靠前的二分式判断节点比排序靠后的二分是判断节点,更靠近二分搜索树的右侧。由于二分搜索树中越靠近右侧的节点的前缀长度越大,因此通过该启发式查找路径查找与该地址匹配的最长前缀时,能够快速锁定到前缀长度较大的启发式信息节点进行匹配,进一步提高路由查找效率。

17、基于第一方面提供的方法,在一些可能的实现方式中,将该地址与多个节点中第一节点对应的哈希表进行匹配的实现过程可以为:确定初始路径,该初始路径包括二分搜索树的根节点以及位于根节点左子树的连续左子节点;依次将初始路径中每个节点作为第一节点,并执行将该地址与多个节点中第一节点对应的哈希表进行匹配的操作。

18、在路由查找的过程中,可以预先确定如上的初始路径,然后对初始路径中每个节点为执行本技术实施例提供的地址匹配方法,以查找与该地址匹配的最长前缀,以确保遍历到每个可能的最长前缀,从而提高路由查找的准确性。

19、基于第一方面提供的方法,在一些可能的实现方式中,对于任一哈希表,在该哈希表存储有前缀标记的情况下,该哈希表还用于存储前缀标记的最长匹配前缀bmp。另外,二分搜索树中任一节点对应的哈希表中的每个前缀对应有关联前缀标记列表aml,每个前缀的aml包括至少一个前缀标记,每个前缀的aml中的前缀标记的bmp均是相应前缀。

20、这种场景下,在该方法中,响应于前缀更新操作,基于待更新前缀对应的aml,更新待更新前缀对应的aml中的每个前缀标记的bmp。

21、由于哈希表中还存储有每个前缀标记的bmp。如此,在fib中增加或删除一个前缀时,很有可能会影响其投影的到的前缀标记的bmp,此时则需要对各个前缀标记的bmp进行更新。在本技术实施例中,为了减少前缀更新时引发的bmp更新操作的工作量,二分搜索树中每个节点对应的哈希表中每个前缀对应有关联前缀标记列表aml,每个前缀的aml包括至少一个前缀标记,每个前缀的aml中的前缀标记的bmp均是相应前缀。如此,更新某个前缀时,基于该前缀对应的aml便可确定需要对哪些前缀标记中的bmp进行更新,避免需要对全局的前缀标记的bmp进行更新,从而提高了更新效率。

22、基于第一方面提供的方法,在一些可能的实现方式中,前缀更新操作包括前缀插入操作,待更新前缀包括待插入的第一前缀。这种场景下,基于待更新前缀对应的aml,更新待更新前缀对应的aml中的每个前缀标记的bmp的实现过程为:确定第一前缀的长度,得到第一前缀长度,将第一前缀插入至与第一前缀长度对应的哈希表中;从二分搜索树中确定第二前缀,第二前缀是与第一前缀匹配、且长度小于第一前缀长度的最长前缀;获取第二前缀的aml,得到第二aml;将第二aml中部分前缀标记确定为第一前缀的aml中的前缀标记,得到第一aml,将第一aml中的各个前缀标记的bmp由第二前缀更新为第一前缀。

23、当插入一条前缀时,可能会有前缀标记的bmp变成新插入的前缀,而所有可能受影响的前缀标记必定在不长于插入的前缀的最长匹配前缀(假设存在)的aml中。基于此,在插入第一前缀时,可以从二分搜索树中确定长度小于第一前缀长度且与第一前缀匹配的最长前缀,得到第二前缀,然后从第二前缀的aml中确定哪些前缀标记的bmp会更新为第一前缀,从而得到第一前缀的aml。

24、基于第一方面提供的方法,在一些可能的实现方式中,第二aml中部分前缀标记为满足以下条件的前缀标记:部分前缀标记的长度大于或等于第一前缀长度,且部分前缀标记的前缀为第一前缀。

25、通过上述方式在插入第一前缀时,可以快速从二分搜索树中确定出长度小于第一前缀长度且与第一前缀匹配的最长前缀,也即第二前缀。

26、基于第一方面提供的方法,在一些可能的实现方式中,在该方法中,将第一前缀向二分搜索树上的第二节点进行投影,得到第一前缀标记,并将第一前缀标记添加到第二节点对应的哈希表中;确定第一前缀标记的bmp,得到第一bmp;在第一bmp的aml中添加第一前缀标记。

27、由于新插入了一个前缀,而插入的前缀需要向其他节点进行投影,因此,在本技术实施例中,在插入第一前缀后,还将第一前缀向二分搜索树上的第二节点进行投影,得到第一前缀标记,并将第一前缀标记添加到第二节点对应的哈希表中;确定第一前缀标记的bmp,得到第一bmp;在第一bmp的aml中添加第一前缀标记。以实现对其他aml的更新。

28、基于第一方面提供的方法,在一些可能的实现方式中,将第一前缀向二分搜索树上的第二节点进行投影,得到第一前缀标记之后,在该方法中,还可以确定并存储第一前缀标记对应的启发式信息。

29、通过上述方式,可以便于后续基于第一前缀标记对应的启发式信息执行本技术实施例提供的地址匹配方案。

30、基于第一方面提供的方法,在一些可能的实现方式中,前缀更新操作包括前缀删除操作,待更新前缀包括待删除的第三前缀。这种场景下,基于待更新前缀对应的aml,更新待更新前缀对应的aml中的每个前缀标记的bmp的实现过程为:确定第三前缀的长度,得到第三前缀长度,将第三前缀从所第三前缀长度对应的哈希表中删除;获取第三前缀的aml,得到第三aml;重新确定第三aml中每个前缀标记的bmp,并将第三aml中每个前缀标记添加到重新确定的bmp的aml中;删除第三aml。

31、当删除一条前缀时,需要对所有以删除前缀作为bmp的前缀标记重新计算bmp,而所有可能受影响的前缀标记必定在删除前缀的aml中。基于此,在删除第三前缀时,需要重新计算第三前缀的aml的每个前缀标记的bmp,并将第三aml中每个前缀标记添加到重新确定的bmp的aml中。

32、基于第一方面提供的方法,在一些可能的实现方式中,在该方法中,还可以确定第三前缀投影到二分搜索树上的第三节点的前缀标记,得到第三前缀标记;如果不存在其他前缀投影到第三前缀标记,则删除第三前缀标记以及对应的启发式信息;如果存在其他前缀投影到第三前缀标记,则更新第三前缀标记对应的启发式信息。

33、在删除第三前缀后,第三前缀之前投影的前缀标记的启发式信息需要进行更新。基于上述方式,可以实现对第三前缀之前投影的前缀标记的启发式信息进行更新。

34、第二方面,提供了一种地址匹配装置,所述地址匹配装置具有实现上述第一方面中地址匹配方法行为的功能。所述地址匹配装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的地址匹配方法。

35、第三方面,提供了一种地址匹配装置,所述地址匹配装置的结构中包括处理器,所述处理器用于执行程序或指令,以使得所述地址匹配装置执行前述第一方面及其可能的实现方法中任一所述的方法。在一些实施例中,该地址匹配装置还包括存储器,所述存储器用于存储所述程序或指令;在一些实施例中,所述存储器还用于存储实现上述第一方面所提供的地址匹配方法所涉及的数据。所述地址匹配装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。

36、第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序或指令,当其在计算机上运行时,使得所述计算机执行上述第一方面所述的地址匹配方法。

37、第五方面,提供了一种包含程序或指令的计算机程序产品,当所述程序或指令在计算机上运行时,使得所述计算机执行上述第一方面所述的地址匹配方法。

38、上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1