路由表查找方法

文档序号:6555190阅读:706来源:国知局
专利名称:路由表查找方法
技术领域
本发明涉及网络通信,特别涉及路由表的查找方法。
背景技术
Internet的迅速发展给我们的生活带来了巨大的变化,随之而来的是网络流量的迅速增长。路由器是在网络中对数据分组进行转发的典型设备,路由表是其转发数据分组的基础。转发数据分组时,路由器需要根据目的IP地址,查找可以匹配的路由表项,从而确定正确的下一跳出口。在IP路由表中,每个表项都包括路由地址,路由地址又称为前缀,一般表示为P/L,P表示前缀地址,即主机或网络地址;L表示前缀长度,即该主机或网络地址的掩码长度。路由表项的查找过程也称为最长匹配查找过程,即先将待查找的目的地址,与路由表项中前缀长度的比特位进行逻辑与操作,再将其结果和该路由表项中前缀地址进行匹配,选择所有匹配项中前缀长度最长那一个。
在现有技术中,BSD的Radix树因其查找高效而成为目前比较常用的路由表组织结构。目前对Radix树路由表项的查找一般是根据待查找的目的IP地址,利用最长前缀匹配原则,选择最精确匹配路由。但是,在某些应用中,例如依赖最精确匹配路由表项而建立的快速转发表在该某一路由表项删除时,为了避免采用新增快速转发表项的方式引起CPU资源的消耗,这个时候,需要在路由表中查找可替代当前快速转发表所依赖的待删除P/L表项的其它相匹配的路由。而现有技术中对Radix树路由表项不能支持此种应用的查找。关于BSD radix树查找详细资料见《TCP/IP Illustrated Volume 2TheImplementation》,18章——Radix树路由表。

发明内容
本发明所要解决的技术问题,就是提供一种可用于快速转发表更新的路由表查找方法,以解决现有Radix树查找原则不适用的问题,从而避免不必要的系统资源浪费。
本发明解决所述技术问题,采用的技术方案是,路由表查找方法,包括以下步骤a.确定待查找路由地址的前缀地址和前缀长度;b.在查找路由表时,设定匹配条件为一、路由表项的前缀地址与待查找路由地址的前缀地址相匹配;二、路由表项的前缀长度与待查找路由地址的前缀长度相匹配;符合上述两条即为匹配的路由表项。
进一步的是,步骤b中,所述路由表项的前缀长度与待查找路由地址的前缀长度相匹配是指,在满足上述匹配条件一的路由表项中,其前缀长度最长,并且等于或者小于待查找路由地址的前缀长度的路由表项。
具体的是,所述步骤b包括b1.根据待查找路由地址的前缀地址,按照Radix树查找流程,从根节点开始查找到第一个叶子节点,判断待查找路由地址的前缀地址与该叶子节点前缀地址是否匹配,如果匹配,则进入步骤b2,否则进入步骤b4;b2.比较所述叶子节点前缀长度是否小于或等于待查找路由地址的前缀长度,如果是,则确定该叶子节点为匹配的路由表项,进入步骤b5;否则进入步骤b3;b3.判断是否存在其它与待查找路由地址的前缀地址相匹配的叶子节点;如果有,则逐一将这些叶子节点的前缀长度,与待查找路由地址的前缀长度进行比较,确定前缀长度最接近待查找路由地址的前缀长度的叶子节点为相匹配的路由表项,进入步骤b5;如果没有,进入步骤b4;b4.根据最长前缀匹配算法向上回溯查找,确定与待查找路由地址的前缀地址相匹配、前缀长度小于待查找路由地址的前缀长度的第一个叶子节点为匹配路由表项;b5.输出匹配的路由表项,查找结束。
进一步的是,步骤b3中,所述前缀长度最接近待查找路由地址的前缀长度的叶子节点是指,该叶子节点的前缀长度,在所有与待查找的路由地址的前缀地址相匹配的叶子节点中最长,并且等于或者小于待查找路由地址的前缀长度。
本发明的有益效果是,根据用户指定的前缀地址和前缀长度,查找与其前缀地址和前缀长度都匹配的路由表项,能够解决某些实际应用中,Radix树查找原则不适用的问题,扩大了BSD Radix树的应用范围。


图1是本发明的程序流程图。
具体实施例方式
本发明的技术方案,根据待查找路由地址的前缀地址和前缀长度,查找满足匹配条件的路由表项,查找流程为1、开始查找后首先使用待查找路由地址的前缀地址,依照Radix树组织结构,从Radix根节点开始查找。在查找过程中使用测试位决定匹配分支,测试位包含在Radix树上内节点中,待查找路由地址的前缀地址与测试位测试为0走左子树,待查找路由地址的前缀地址与测试位测试为1走右子树。根据这样的规则最终可以找到唯一的叶子节点(路由表项);找到路由表项之后,确定待查找路由地址的前缀地址和该路由表项前缀地址是否匹配将待查找路由地址的前缀地址,与该路由表项前缀长度进行逻辑与操作,如果得到的结果与该路由表项前缀地址相同,代表与该路由表项匹配,反之则表示不匹配。如果前缀地址匹配成功,还需要确定前缀长度是否满足条件I.如果该路由表项前缀长度小于或等于待查找路由地址的前缀长度,则找到匹配路由,输出查找结果,查找结束。
II.否则,还需要判断是否存在其它和待查找路由地址的前缀地址匹配的叶子节点,这些叶子节点被称为重复键,它们的区别是前缀长度不同。如果存在这样的叶子节点则逐一将他们的前缀长度和待查找路由地址的前缀长度相比较,找到其中前缀长度最长,并且其前缀长度小于或等于待查找路由地址的前缀长度的叶子节点,作为相匹配的路由表项输出,查找结束。
如果路由表项前缀地址不匹配或者前缀长度不匹配那么就需要根据最长前缀匹配算法向上回溯查找。
回溯过程中,发现内节点存在掩码列表,那么说明这个内节点的子树,有可能存在和待查找路由地址的前缀地址匹配的路由表项。根据这样的假设,将待查找路由地址的前缀地址和掩码列表中的掩码地址进行逻辑与操作,得到的结果再按照Radix树遍历方法依次比较测试位,最终可以得到一个叶子节点。确定叶子节点的前缀地址,与待查找路由地址的前缀地址是否匹配,并且叶子节点前缀长度小于或等于待查找路由地址的前缀长度,如果两个条件都满足则返回匹配路由,查找结束;否则继续使用掩码列表中的下一个掩码进行匹配。如果所有掩码列表的掩码地址都不满足条件,继续向上进行回溯直到根节点为止,结束查找。
实施例目前,为了保证转发效率,一般在路由器等转发设备中都设置快速转发模块,以提高报文转发速率。因为如果新的快速转发表建立需要一段时间,期间需要转发的数据包只有提交上层CPU处理,系统资源的消耗较大。因此通过主动更新快速转发表,节省了时间,避免了不必要的系统资源的浪费。当快速转发模块的转发缓存中所依赖的某条路由被删除之后,可以通过直接更新转发缓存所依赖的路由到另外一条,所以就需要在路由表中查找可以替代该路由的路由表项,假设存在3条路由,他们依次包含1.0.0.0/81.2.0.0/161.2.3.0/24如果路由表中删除1.2.3.0/24路由,快速转发模块则需要查找路由表,确定该路由表项被删除之后,路由表中还有哪条路由表项可用,并将原来依赖路由1.2.3.0/24的数据包,按照新查找到的路由表项进行转发。这个时候新查找到的路由表项应该是可以替代原来的路由1.2.3.0/24,也就是查找可以和该前缀地址1.2.3.0相匹配,长度小于该前缀长度24的路由表项。
根据本发明提供的查找方法,这里我们设置查找前缀地址为1.2.3.0,前缀长度为23,因为原前缀地址的前缀长度是24,那么在匹配过程中,路由1.2.3.0/24将不能匹配,所以待查找的路由可以称作是次精确的路由表项,通过指定前缀长度23,只有掩码长度小于等于23的路由表项才能匹配。我们在路由表中查找前缀地址和1.2.3.0匹配,前缀长度等于或小于23的路由表项。使用上面的例子,我们在查找时输入关键字1.2.3.0/23,这里的掩码长度是23,那么在匹配过程中,路由1.2.3.0/24将不能匹配,因为查找的不是最精确的路由表项,所以只有掩码长度等于或小于23的路由表项才能匹配。所以利用查找前缀长度等于或小于23的前缀地址的路由表项的匹配规则,将会匹配到路由1.2.0.0/16,这样快速转发模块可以根据查找结果进行相应的快速转发工作。本发明的程序流程见图1。
本发明的用途不限于快速转发表的更新,还有其它一些应用,如当添加一条新路由表项比老的表项更精确时,需要更新老的转发缓存。那么需要找到转发缓存依赖的次精确路由表项,然后将它们更新到更精确的路由表项上去。如果通过遍历快速转发表,更新依赖老的路由表项的转发缓存,则这样的操作效率比较低,通过直接更新快速转发表所依赖的路由表项,则效率更高。那么就需要在路由表中找到转发缓存依赖的次精确路由,根据该路由我们可以快速索引原来引用老路由表项的转发缓存,然后将它们更新到更精确的路由表项上去。这样可以大大提高更新效率。
权利要求
1.路由表查找方法,包括以下步骤a.确定待查找路由地址的前缀地址和前缀长度;b.在查找路由表时,设定匹配条件为、路由表项的前缀地址与待查找路由地址的前缀地址相匹配;二、路由表项的前缀长度与待查找路由地址的前缀长度相匹配;符合上述两条即为匹配的路由表项。
2.根据权利要求1所述路由表查找方法,其特征在于步骤b中,所述路由表项的前缀长度与待查找路由地址的前缀长度相匹配是指,在满足上述匹配条件一的路由表项中,其前缀长度最长,并且等于或者小于待查找路由地址的前缀长度的路由表项。
3.根据权利要求1所述路由表查找方法,其特征在于所述步骤b包括b1.根据待查找路由地址的前缀地址,按照Radix树查找流程,从根节点开始查找到第一个叶子节点,判断待查找路由地址的前缀地址与该叶子节点前缀地址是否匹配,如果匹配,则进入步骤b2,否则进入步骤b4;b2.比较所述叶子节点前缀长度是否小于或等于待查找路由地址的前缀长度,如果是,则确定该叶子节点为匹配的路由表项,进入步骤b5;否则进入步骤b3;b3.判断是否存在其它与待查找路由地址的前缀地址相匹配的叶子节点;如果有,则逐一将这些叶子节点的前缀长度,与待查找路由地址的前缀长度进行比较,确定前缀长度最接近待查找路由地址的前缀长度的叶子节点为相匹配的路由表项,进入步骤b5;如果没有,进入步骤b4;b4.根据最长前缀匹配算法向上回溯查找,确定与待查找路由地址的前缀地址相匹配、前缀长度小于待查找路由地址的前缀长度的第一个叶子节点为匹配路由表项;b5.输出匹配的路由表项,查找结束。
4.根据权利要求3所述路由表查找方法,其特征在于步骤b3中,所述前缀长度最接近待查找路由地址的前缀长度的叶子节点是指,该叶子节点的前缀长度,在所有与待查找的路由地址的前缀地址相匹配的叶子节点中最长;并且等于或者小于待查找路由地址的前缀长度。
全文摘要
本发明涉及网络通信,特别涉及路由表的查找方法。本发明提供了一种可用于快速转发表更新的路由表查找方法,以解决现有Radix树查找原则不适用的问题。本发明解决所述技术问题,采用的技术方案是,路由表查找方法,包括以下步骤a.确定待查找路由地址的前缀地址和前缀长度;b.在查找路由表时,设定匹配条件为一、路由表项的前缀地址与待查找路由地址的前缀地址相匹配;二、路由表项的前缀长度与待查找路由地址的前缀长度相匹配;符合上述两条即为匹配的路由表项。本发明的有益效果是,根据用户指定的前缀地址和前缀长度,查找匹配的路由表项,能够解决某些实际应用中,Radix树查找原则不适用的问题,扩大了BSD Radix树的应用范围。
文档编号G06F17/30GK1949746SQ200610022148
公开日2007年4月18日 申请日期2006年10月31日 优先权日2006年10月31日
发明者舒弋, 林茂 申请人:成都迈普产业集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1