一种路由查找方法、装置和路由设备与流程

文档序号:13391427阅读:207来源:国知局
一种路由查找方法、装置和路由设备与流程

本发明涉及通信技术领域,更具体的说,涉及路由查找方法、装置和路由设备。



背景技术:

请参见图1所示,图1所示的为当前使用比较广泛的路由器架构,主要包括上行线卡1、交换网板2和下行线卡3等部件。在图1所示的路由器架构中,报文先由上行线卡1的网络处理器和流量管理进行处理,经过交换网板2发送到下行线卡3上,经由下行线卡3的流量管理和网络处理器处理后发出。

下面简要介绍ipv4(internetprotocolversion4,网际协议版本4)报文的转发流程:首先,报文进入上行线卡1的网络处理器后,进行一系列的预处理;然后,由上行线卡1的查找引擎对报文的ip地址进行lpm(longestprefixmatch,最长前缀匹配)方式在存储器中查路由转发表,找到最长匹配的路由表项,获取出接口信息;其次,报文经上行线卡1的流量管理发送给交换网板2,交换网板2再将报文交换至出接口所在的下行线卡3中;最后,报文经过下行线卡3的流量管理和网络处理器处理后,从下行线卡3的出接口发出。

由于转发表的条目较多,需要占用较大的存储空间,而上行线卡本身的存储空间非常有限,通常需要在上行线卡上增加额外的存储器,以使存储器存储转发表的所有条目,所以上行线卡的查找引擎经常需要在存储器中获取转发表的内容。

在研究和实践过程中,发明人发现上述相关技术至少存在以下问题:上述相关及技术不仅需要在上行线卡上额外的挂接存储器,而且还需要为上行线卡的查找引擎与存储器之间建立连线以保持通信,所以增加了硬件成本。



技术实现要素:

本发明实施例提供一种路由查找方法、装置和路由设备,以解决相关方案中硬件成本高的技术问题。

为了解决上述技术问题,本发明实施例公开了如下技术方案:

第一方面,一种路由查找方法,方法应用于路由设备的目标单板中,方法包括:

获取关键字,关键字为报文中的ip地址转换而成的;

根据预先获取到的节点数据的存储地址获取节点数据,节点数据为前缀与目标前缀 的出接口信息、下一级节点数据的存储地址和下一级节点数据的存储位置的对应关系;

在节点数据中确定与关键字的第一部分相匹配的前缀,并在节点数据中确定与前缀对应的数据,关键字包括第一部分和第二部分;

在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置;

在节点数据的存储位置与下一级节点数据的存储位置不同时,将预先生成的查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,查找标识用于说明报文为需要进行后续查找的报文;

将具有帧头的报文发送至下一级节点数据的存储位置对应的指定单板处。

结合上述第一方面,在第一种可能的实现方式中,在获取节点数据的存储位置的步骤之后,方法还包括:

判断节点数据的存储位置与下一级节点数据的存储位置是否相同;

在节点数据的存储位置与下一级节点数据的存储位置相同时,根据下一级节点数据的存储地址获取下一级节点数据,在下一级节点数据中确定与关键字的第二部分对应的数据,在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处;

在节点数据的存储位置与下一级节点数据的存储位置不同时,执行将查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中的步骤。

结合上述第一方面,在第二种可能的实现方式中,在节点数据中确定与关键字相匹配的前缀,并在节点数据中确定与前缀对应的数据的步骤之后,方法还包括:

判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置;

在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,执行获取节点数据的存储位置的步骤;

在数据不为下一级节点数据的存储地址和下一级节点数据的存储位置时,判断数据是否为目标前缀的出接口信息,在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

结合上述第一方面,在第三种可能的实现方式中,在获取关键字的步骤之前,方法还包括:

获取预先设置好的每个目标前缀和每个目标前缀的出接口信息;

根据每个目标前缀和每个目标前缀的出接口信息建立多个节点数据,多个节点数据被划分为至少两个级别,节点数据具有至少一个前缀;

确定多个节点数据中每个节点数据的存储位置、每个节点数据的下一级节点数据的 存储位置和每个节点数据的下一级节点数据的存储地址;

将每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址添加至多个节点数据中;

将多个节点数据存储到每个节点数据对应的存储位置中。

结合上述第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,在根据预先获取到的节点数据的存储地址获取节点数据的步骤之前,方法还包括:

按照预设分配策略将每个节点数据分配给每个存储位置,每个存储位置为在路由设备的多个单板中选取的。

第二方面,一种路由查找方法,方法应用于路由设备的指定单板中,方法包括:

接收目标单板发送的具有帧头的报文,帧头包括查找标识、节点数据的存储地址和关键字;

在帧头中存在查找标识时,根据帧头内的节点数据的存储地址获取节点数据,节点数据为前缀与目标前缀的出接口信息、下一级节点数据的存储地址和下一级节点数据的存储位置的对应关系;

在节点数据中确定与关键字对应的数据;

在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

结合上述第二方面,在第一种可能的实现方式中,在节点数据中确定与关键字对应的数据的步骤之后,方法还包括:

判断数据是否为目标前缀的出接口信息;

在数据为目标前缀的出接口信息时,执行将报文发送至出接口信息对应的位置处的步骤;

在数据不为目标前缀的出接口信息时,判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置,在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置,在节点数据的存储位置与下一级节点数据的存储位置不同时,将查找标识、下一级节点数据的存储地址和关键字的剩余部分添加至报文的帧头中,将具有帧头的报文发送至下一级节点数据的存储位置处。

结合上述第二方面,在第二种可能的实现方式中,在节点数据中确定与关键字对应的数据的步骤之后,方法还包括:

判断数据是否为目标前缀的出接口信息;

在数据为目标前缀的出接口信息时,执行将报文发送至出接口信息对应的位置处的 步骤;

在数据不为目标前缀的出接口信息时,判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置,在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置,在节点数据的存储位置与下一级节点数据的存储位置相同时,根据下一级节点数据的存储地址获取下一级节点数据,在下一级节点数据中确定与关键字的剩余部分对应的数据,在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

结合上述第二方面,在第三种可能的实现方式中,在接收目标单板发送的具有帧头的报文的步骤之前,方法还包括:

获取预先设置好的每个目标前缀和每个目标前缀的出接口信息;

根据每个目标前缀和每个目标前缀的出接口信息建立多个节点数据,多个节点数据被划分为至少两个级别,节点数据具有至少一个前缀;

确定多个节点数据中每个节点数据的存储位置、每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址;

将每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址添加至多个节点数据中;

将多个节点数据存储到每个节点数据对应的存储位置中。

结合上述第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第四种可能的实现方式中,在接收目标单板发送的具有帧头的报文的步骤之前,方法还包括:

按照预设分配策略将每个节点数据分配给每个存储位置,每个存储位置为在路由设备的多个单板中选取的。

第三方面,一种路由查找装置,包括:

第一获取模块,用于获取关键字,关键字为报文中的ip地址转换而成的;

第二获取模块,用于根据预先获取到的节点数据的存储地址获取节点数据,节点数据为前缀与目标前缀的出接口信息、下一级节点数据的存储地址和下一级节点数据的存储位置的对应关系;

第一确定模块,用于在节点数据中确定与关键字的第一部分相匹配的前缀,并在节点数据中确定与前缀对应的数据,关键字包括第一部分和第二部分;

第三获取模块,用于在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置;

第一添加模块,用于在节点数据的存储位置与下一级节点数据的存储位置不同时,将预先生成的查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,查找标识用于说明报文为需要进行后续查找的报文;

第一存储模块,用于将具有帧头的报文发送至下一级节点数据的存储位置对应的指定单板中。

结合上述第三方面,在第一种可能的实现方式中,装置还包括:

第一判断模块,用于判断节点数据的存储位置与下一级节点数据的存储位置是否相同;

第一执行模块,用于在节点数据的存储位置与下一级节点数据的存储位置相同时,根据下一级节点数据的存储地址获取下一级节点数据,在下一级节点数据中确定与关键字的第二部分对应的数据,在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处;

第二执行模块,用于在节点数据的存储位置与下一级节点数据的存储位置不同时,执行添加模块。

结合上述第三方面,在第二种可能的实现方式中,装置还包括:

第二判断模块,用于判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置;

第三执行模块,用于在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,执行第三获取模块;

第四执行模块,用于在数据不为下一级节点数据的存储地址和下一级节点数据的存储位置时,判断数据是否为目标前缀的出接口信息,在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

结合上述第三方面,在第三种可能的实现方式中,装置还包括:

第四获取模块,用于获取预先设置好的每个目标前缀和每个目标前缀的出接口信息;

建立模块,用于根据每个目标前缀和每个目标前缀的出接口信息建立多个节点数据,多个节点数据被划分为至少两个级别,节点数据具有至少一个前缀;

第二确定模块,用于确定多个节点数据中每个节点数据的存储位置、每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址;

第二添加模块,用于将每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址添加至多个节点数据中;

第二存储模块,用于将多个节点数据存储到每个节点数据对应的存储位置中。

结合上述第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式或第三方面的第三种可能的实现方式,在第四种可能的实现方式中,装置还包括:

分配模块,用于按照预设分配策略将每个节点数据分配给每个存储位置,每个存储位置为在路由设备的多个单板中选取的。

第四方面,一种路由查找装置,包括:

接收模块,用于接收目标单板发送的具有帧头的报文,帧头包括查找标识、节点数据的存储地址和关键字;

第一获取模块,用于在帧头中存在查找标识时,根据帧头内的节点数据的存储地址获取节点数据,节点数据为前缀与目标前缀的出接口信息、下一级节点数据的存储地址和下一级节点数据的存储位置的对应关系;

第一确定模块,用于在节点数据中确定与关键字对应的数据;

发送模块,用于在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

结合上述第四方面,在第一种可能的实现方式中,装置还包括:

第一判断模块,用于判断数据是否为目标前缀的出接口信息;

第一执行模块,用于在数据为目标前缀的出接口信息时,执行发送模块;

第二执行模块,用于在数据不为目标前缀的出接口信息时,判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置,在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置,在节点数据的存储位置与下一级节点数据的存储位置不同时,将查找标识、下一级节点数据的存储地址和关键字的剩余部分添加至报文的帧头中,将具有帧头的报文发送至下一级节点数据的存储位置处。

结合上述第四方面,在第二种可能的实现方式中,装置还包括:

第二判断模块,用于判断数据是否为目标前缀的出接口信息;

第三执行模块,用于在数据为目标前缀的出接口信息时,执行发送模块;

第四执行模块,用于在数据不为目标前缀的出接口信息时,判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置,在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置,在节点数据的存储位置与下一级节点数据的存储位置相同时,根据下一级节点数据的存储地址获取下一级节点数据,在下一级节点数据中确定与关键字的剩余部分对应的数据,在数据为目标前缀的 出接口信息时,将报文发送至出接口信息对应的位置处。

结合上述第四方面,在第三种可能的实现方式中,装置还包括:

第二获取模块,用于获取预先设置好的每个目标前缀和每个目标前缀的出接口信息;

建立模块,用于根据每个目标前缀和每个目标前缀的出接口信息建立多个节点数据,多个节点数据被划分为至少两个级别,节点数据具有至少一个前缀;

第二确定模块,用于确定多个节点数据中每个节点数据的存储位置、每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址;

添加模块,用于将每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址添加至多个节点数据中;

存储模块,用于将多个节点数据存储到每个节点数据对应的存储位置中。

结合上述第四方面、第四方面的第一种可能的实现方式、第四方面的第二种可能的实现方式或第四方面的第三种可能的实现方式,在第四种可能的实现方式中,装置还包括:

分配模块,用于按照预设分配策略将每个节点数据分配给每个存储位置,每个存储位置为在路由设备的多个单板中选取的。

第五方面,一种路由设备,包括目标单板和指定单板;

目标单板,用于获取关键字,关键字为报文中的ip地址转换而成的;根据预先获取到的节点数据的存储地址获取节点数据,节点数据为前缀与目标前缀的出接口信息、下一级节点数据的存储地址和下一级节点数据的存储位置的对应关系;在节点数据中确定与关键字的第一部分相匹配的前缀,并在节点数据中确定与前缀对应的数据,关键字包括第一部分和第二部分;在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置;在节点数据的存储位置与下一级节点数据的存储位置不同时,将预先生成的查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,查找标识用于说明报文为需要进行后续查找的报文;将具有帧头的报文发送至下一级节点数据的存储位置对应的指定单板处;

指定单板,用于接收目标单板发送的具有帧头的报文,帧头包括查找标识、下一级节点数据的存储地址和关键字的第二部分;在帧头中存在查找标识时,根据帧头内的下一级节点数据的存储地址获取下一级节点数据;在下一级节点数据中确定与关键字的第二部分对应的数据;在与关键字的第二部分对应的数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

与现有技术相比,本实施例提供的技术方案具有以下优点和特点:

在本发明提供的方案中,利用关键字在预先生成的节点数据中查找对应的数据,在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,说明关键字在节点数据中未查找到对应的出接口信息,关键字的第二部分还需要在下一级节点数据中继续查找对应的出接口信息。在节点数据的存储位置与下一级节点数据的存储位置不同时,说明节点数据存储在目标单板上,而下一级节点数据未存储在目标单板上,需要将查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,并将具有帧头的报文发送至下一级节点数据的存储位置对应的指定单板处,以使指定单板在接收到具有帧头的报文后,在指定单板的下一级节点数据中确定与关键字的第二部分对应的出接口信息,并将报文发送到出接口对应的位置处,以实现报文的转发。由于路由设备中具有多个单板,本发明提供的方案将转发表生成的节点数据预先存储在路由设备的多个单板上,从而无需外接存储器便可以存储下转发表生成的所有节点数据。因此,本发明提供的方案可以降低路由设备的硬件成本。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的路由器架构。

图2为本发明实施例提供的一种路由查找方法的流程图。

图3为本发明实施例提供的又一种路由查找方法的流程图。

图4为本发明实施例提供的又一种路由查找方法的流程图。

图5为本发明实施例提供的又一种路由查找方法的流程图。

图6为本发明实施例提供的又一种路由查找方法的流程图。

图7为本发明实施例提供的又一种路由查找方法的流程图。

图8为本发明实施例提供的又一种路由查找方法的流程图。

图9为本发明实施例提供的又一种路由查找方法的流程图。

图10为本发明实施例提供的一种路由查找装置的示意图。

图11为本发明实施例提供的又一种路由查找装置的示意图。

图12为本发明实施例提供的又一种路由查找装置的示意图。

图13为本发明实施例提供的又一种路由查找装置的示意图。

图14为本发明实施例提供的又一种路由查找装置的示意图。

图15为本发明实施例提供的又一种路由查找装置的示意图。

图16为本发明实施例提供的又一种路由查找装置的示意图。

图17为本发明实施例提供的又一种路由查找装置的示意图。

图18为本发明实施例提供的又一种路由查找装置的示意图。

图19为本发明实施例提供的又一种路由查找装置的示意图。

图20为本发明实施例提供的一种路由设备的示意图。

图21为本发明实施例提供的又一种路由设备的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图2为本发明实施例提供的一种路由查找方法的流程图。图2所示的路由查找方法可以将转发表生成的节点数据预先存储在路由设备的多个单板上,从而无需外接存储器便可以存储下转发表生成的所有节点数据,以降低路由设备的硬件成本。该方法包括以下步骤。

步骤s11、获取关键字,关键字为报文中的ip地址转换而成的。

其中,本发明实施例提供的方法可以应用于路由设备的目标单板上。路由设备可以为路由器或交换机等用于转发报文的设备,单板可以为路由设备上的线卡或交换网板等。

线卡的基本功能为在路由表中查找与报文的ip地址相对应的数据,但是本发明实施例提供的方案将路由表拆分成多个节点数据,所以线卡用于在节点数据中查找与报文的ip地址相对应的数据,该数据指的是出接口信息,也可以是下一级节点数据的存储地址和下一级节点数据的存储位置。

交换网板的基本功能为将报文从上行线卡转发到下行线卡,但是在本发明实施例提供的方案中,交换网板不仅用于将报文从上行线卡转发到下行线卡,还可以存储预先分配的节点数据,并用于在交换网板中存储的节点数据中查找与报文的ip地址相对应的数据。

在现有技术中,将路由表的全部内容存储到外置存储器中。在本发明实施例中,将 路由表拆分成多个节点数据,并将多个节点数据分别放置到路由设备中的不同单板中,例如,将多个节点数据分别放置到路由设备的多个线卡和多个交换网板中。

请结合图1所示,在路由设备接收到报文的时候,报文会进入上行线卡1中。上行线卡1会提取报文中的ip地址(internetprotocoladdress,网际协议地址),并将ip地址转换成二进制数,转换后的二进制数即为关键字。

例如,假设在路由设备接收到报文的时候,报文会进入上行线卡1中。上行线卡1会提取报文中的ip地址192.168.1.1,并将ip地址192.168.1.1转换成二进制数11000000101010000000000100000001。其中,二进制数11000000101010000000000100000001即为关键字。

步骤s12、根据预先获取到的节点数据的存储地址获取节点数据。

其中,节点数据为预先生成的一组数据的对应关系,节点数据为前缀与目标前缀的出接口信息、下一级节点数据的存储地址和下一级节点数据的存储位置的对应关系。

前缀和目标前缀均为由二进制数组成的数值,其中,前缀和目标前缀的二进制数可以为1个,也可以为多个。例如,前缀可以为0、1、00、10、000、001、010、011、100、101、110或111等,目标前缀可以为0*、10*、111*、0000*、1001*、11101*、11111*、000011*、0000100*和1110100*等。

目标前缀的出接口信息包括目的单板标识和目的口标识,例如,出接口信息为目的单板1和目的口1。

节点数据中存储有与前缀对应的下一级节点数据的存储地址和下一级节点数据的存储位置,可以通过节点数据中的下一级节点数据的存储地址和下一级节点数据的存储位置来获取下一级节点数据,所以通过本级节点数据中的存储地址和存储位置找到本级节点数据对应的下一级节点数据。

存储地址指的是存储在内存中的数据的地址。例如,下一级节点数据的存储地址为ox000000001。

存储位置指的是路由设备中的单板。例如,存储位置可以为路由设备中的线卡,也可以为路由设备中的交换网板。

如果节点数据为第一级的节点数据,那么存储节点数据的单板中会预存有该节点数据的存储地址;如果节点数据为非第一级的节点数据,那么可以利用该节点数据的上一级节点数据中的存储地址来获取该节点数据。

请参见表1所示,表1所示的为节点数据的结构。

表1

由于节点数据的数量可能为多个,所以需要按照预设分配策略将每个节点数据分配给每个存储位置,每个存储位置为在路由设备的多个单板中选取的。预设分配策略具有很多种方式,例如,可以按照平均分配的方式将每个节点数据分配给每个存储位置;又如,可以按照随机分配的方式将每个节点数据分配给每个存储位置;再如,为了保证单板负载均衡,可以先确定每个存储位置对应的单板的负载能力,然后根据单板的负载能力来将每个节点数据分配给每个存储位置;再如,为了避免节点数据下发到单板上以后,单板出现故障而无法获取节点数据,可以将相同的节点数据分配到不同的单板上,以保证节点数据存在备份,在某个单板出现故障以后,还可以去其他的单板获取相同的节点数据,如果一个节点数据被分配到两个单板上,那么该节点数据的上一级节点数据会存储有这两个单板的存储地址和存储位置。

请参见表2所示,表2所示的为节点数据的结构。假设第二级节点数据a被同时分配到单板b和单板c上,那么第一级节点数据d会存储有单板b的存储地址x1和存储位置y1,以及单板c的存储地址x2和存储位置y2,以便于通过第一级节点数据d来找到第二级节点数据a的存储位置和存储地址。

表2

步骤s13、在节点数据中确定与关键字的第一部分相匹配的前缀,并在节点数据中确定与前缀对应的数据,关键字包括第一部分和第二部分。

其中,在单板获取到预先生成的节点数据以后,单板会在节点数据中确定与关键字的第一部分匹配的前缀,不同的查找方法有不同的匹配条件。然后,在节点数据中确定出与前缀对应的数据。与前缀对应的数据指的是出接口信息,或者,与前缀对应的数据指的是下一级节点数据的存储地址和下一级节点数据的存储位置。

在节点数据中确定出与前缀对应的数据的方法有很多,例如,可以采用lpm(longestprefixmatch,最长前缀匹配)算法在节点数据中确定出与前缀对应的数据,也可以采用精确匹配算法在节点数据中确定出与前缀对应的数据。无论采用哪种查找算法,均可以在节点数据中确定出与关键字对应的数据。

关键字包括第一部分和第二部分,在步骤s13中会匹配关键字中的第一部分,在本次查找过程中不会用到关键字的第二部分。

例如,假设关键字为000011010101,关键字的第一部分为000,关键字的第二部分为011010101。假设在节点数据中确定与关键字的第一部分000相匹配的前缀为000,然后,在节点数据中确定出与前缀000对应的数据。本次查找未用到关键字的第二部分011010101。

步骤s14、在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置。

其中,在节点数据中确定与关键字相匹配的前缀,并在节点数据中确定与前缀对应的数据以后,单板需要确定数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置。在单板确定出数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,说明关键字在节点数据中未查找到对应的出接口信息,关键字的第二部分还需要在下一级节点数据中继续查找对应的出接口信息,所以单板需要获取到节点数据的存储位置,以判断下一级节点数据的存储位置与节点数据的存储位置是否相同。

步骤s15、在节点数据的存储位置与下一级节点数据的存储位置不同时,将预先生成的查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中。

其中,在单板获取到节点数据的存储位置以后,单板还需要确定下一级节点数据的存储位置与节点数据的存储位置是否相同。在单板确定出节点数据的存储位置与下一级节点数据的存储位置不同时,说明节点数据存储在一个单板上,而下一级节点数据存储在另一个单板上,所以单板需要将查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,以便于进行后续查找。

查找标识用于说明该报文为需要进行后续查找的报文,所以在路由设备中的单板检测到报文的帧头中具有查找标识时,都会利用报文的帧头中的下一级节点数据的存储地址和关键字的第二部分进行后续查找。例如,查找标识可以为字符和数字组成的字符串。

步骤s16、将具有帧头的报文发送至下一级节点数据的存储位置对应的指定单板处。

其中,在单板将查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中以后,单板需要将具有帧头的报文发送至下一级节点数据的存储位置对应 的指定单板处,以使指定单板利用帧头中的数据进行后续查找,以找出与关键字对应的出接口信息。

在图2所示的实施例中,路由设备的单板可以利用关键字在预先生成的节点数据中查找对应的数据,在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,说明关键字在节点数据中未查找到对应的出接口信息,关键字的第二部分还需要在下一级节点数据中继续查找对应的出接口信息。在节点数据的存储位置与下一级节点数据的存储位置不同时,说明节点数据存储在目标单板上,而下一级节点数据未存储在目标单板上,需要将查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,并将具有帧头的报文发送至下一级节点数据的存储位置对应的指定单板处,以使指定单板在接收到具有帧头的报文后,在指定单板的下一级节点数据中确定与关键字的第二部分对应的出接口信息,并将报文发送到出接口对应的位置处,以实现报文的转发。由于路由设备中具有多个单板,本发明提供的方案将转发表生成的节点数据预先存储在路由设备的多个单板上,从而无需外接存储器便可以存储下转发表生成的所有节点数据。因此,本发明提供的方案可以降低路由设备的硬件成本。

为了更加清楚的解释图2所示的实施例,下面通过具体的使用场景来介绍图2所示的实施例。

请参见表3所示,表3所示的为节点数据的结构。在表3所示的例子中,假设获取到的关键字为000011010101,根据预先获取到的节点数据的存储地址获取到表3所示的节点数据,那么采用最长前缀匹配的方式,可以在节点数据中确定出与关键字000011010101相匹配的前缀为000,然后确定出与前缀000对应的数据。由于与前缀000对应的数据为第一行数据,所以与前缀000对应的数据为交换网板a和0x00000001。其中,交换网板a为下一级节点数据的存储位置,0x00000001为下一级节点数据的存储地址。由于在节点数据中与关键字对应的数据为下一级节点数据的存储地址和下一级节点数据的存储位置,所以需要获取节点数据的存储位置。假设获取到节点数据的存储位置为线卡b,那么节点数据的存储位置与下一级节点数据的存储位置不同,所以需要将查找标识、下一级节点数据的存储地址0x00000001和关键字的第二部分011010101添加至报文的帧头中,并将具有该帧头的报文发送至下一级节点数据的存储位置交换网板a处。

表3

请参见图3所示,图3为本发明实施例提供的又一种路由查找方法的流程图。图3所示的实施例为基于图2改进的实施例,所以与图2相同的内容可参见图2所示的实施例。相对于图2所示的实施例,图3所示的实施例在步骤s14之后,还可以包括以下步骤:

步骤s17、判断节点数据的存储位置与下一级节点数据的存储位置是否相同。在节点数据的存储位置与下一级节点数据的存储位置相同时,执行步骤s18;在节点数据的存储位置与下一级节点数据的存储位置不同时,执行步骤s15。

其中,在路由设备的目标单板获取节点数据的存储位置,需要判断节点数据的存储位置与下一级节点数据的存储位置是否相同。如果不同,说明节点数据存储在目标单板上,而下一级节点数据未存储在目标单板上,所以需要执行步骤s15,以将查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,并将具有帧头的报文发送至下一级节点数据的存储位置对应的指定单板处,以使指定单板在接收到具有帧头的报文后,进行后续查找;如果相同,说明节点数据和下一级节点数据均存储在目标单板上,所以需要执行步骤s18,在目标单板上进行后续查找。

步骤s18、根据下一级节点数据的存储地址获取下一级节点数据,在下一级节点数据中确定与关键字的第二部分对应的数据,在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

其中,在节点数据的存储位置与下一级节点数据的存储位置不同时,目标单板可以直接在本地利用下一级节点数据的存储地址获取下一级节点数据,并利用下一级节点数据进行后续查找。

在图3所示的实施例中,由于每个节点数据可能存储在不同的单板上,如果下一级 节点数据的存储位置与节点数据的存储位置相同,那么只需要在本地利用下一级节点数据的存储地址获取下一级节点数据,并进行后续查找;如果下一级节点数据的存储位置与节点数据的存储位置不同,那么需要将查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,并将具有帧头的报文发送到下一级节点数据的存储位置对应的指定单板处,以使指定单板利用下一级节点数据的存储地址获取下一级节点数据,并进行后续查找。

请参见图4所示,图4为本发明实施例提供的又一种路由查找方法的流程图。图4所示的实施例为基于图2改进的实施例,所以与图2相同的内容可参见图2所示的实施例。相对于图2所示的实施例,图4所示的实施例在步骤s13之后,还可以包括以下步骤:

步骤s19、判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置。在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,执行步骤s14。在数据不为下一级节点数据的存储地址和下一级节点数据的存储位置时,执行步骤s20。

其中,在路由器的目标单板在节点数据中确定与关键字相匹配的前缀,并在节点数据中确定与前缀对应的数据以后,需要判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置。在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,说明关键字在节点数据中未查找到对应的出接口信息,关键字的第二部分还需要在下一级节点数据中继续查找对应的出接口信息,所以需要执行步骤s14。在数据不为下一级节点数据的存储地址和下一级节点数据的存储位置时,需要执行步骤s20,以判断数据是否为目标前缀的出接口信息。

步骤s20、判断数据是否为目标前缀的出接口信息,在数据为目标前缀的出接口信息时,执行步骤s21。

其中,在路由设备的目标单板判断出数据为目标前缀的出接口信息时,目标单板需要将报文发送至出接口信息对应的位置处,以使出接口信息对应的位置可以对报文进行转发,以完成本次路由查找流程。

步骤s21、将报文发送至出接口信息对应的位置处。

其中,出接口信息对应的位置指的是路由设备中的某一个单板,例如,出接口信息为线卡a的3号接口,那么路由设备的目标单板就会将报文发送至出接口信息对应的线卡a中,以使线卡a将报文从3号接口进行转发。

在图4所示的实施例中,在路由设备的目标单板在节点数据中确定与关键字相匹配的前缀,并在节点数据中确定与前缀对应的数据以后,还需要判断该数据为下一级节点数据的存储地址和下一级节点数据的存储位置还是出接口信息。如果该数据为下一级节点数据的存储地址和下一级节点数据的存储位置,那么说明关键字在节点数据中未查找到对应的出接口信息,关键字的第二部分还需要在下一级节点数据中继续查找对应的出接口信息。如果该数据为出接口信息,那么说明关键字在节点数据中查找到对应的出接口信息,目标单板可以直接将报文发送至出接口信息对应的位置处,以结束路由查找流程。

请参见图5所示,图5为本发明实施例提供的又一种路由查找方法的流程图。图5所示的实施例为基于图2改进的实施例,所以与图2相同的内容可参见图2所示的实施例。相对于图2所示的实施例,图5所示的实施例在步骤s11之前,还可以包括以下步骤:

步骤s22、获取预先设置好的每个目标前缀和所述每个目标前缀的出接口信息;

其中,在执行步骤s11之前,即利用关键字在节点数据中进行路由查找之前,需要建立每个节点数据,在本实施例中,步骤s22至步骤s26介绍的为建立每个节点数据的过程。当然,步骤s22至步骤s26介绍的仅为一种建立每个节点数据的方式,本领域技术人员可以基于步骤s22至步骤s26联想到其他建立每个节点数据的方式。

步骤s23、根据每个目标前缀和每个目标前缀的出接口信息建立多个节点数据,多个节点数据被划分为至少两个级别,节点数据具有至少一个前缀;

其中,目标前缀为预先设置好的数据,目标前缀的数量可以为多个,每个目标前缀均对应一个出接口信息。将多个节点数据划分成多个级别的方式有多种,例如,可以按照固定步长、动态步长、后续遍历或前序遍历等多种方法将多个节点数据划分成多个级别。每个节点数据均会具有至少一个前缀,该前缀用于在查找过程中与关键字进行匹配。

步骤s24、确定多个节点数据中每个节点数据的存储位置、每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址;

其中,由于每个节点数据都需要被预先分配存储位置,那么在步骤s24中即可根据预先分配的情况来确定每个节点数据的存储位置,以及每个节点数据的下一级每个节点数据的存储位置。而且,在建立多个节点数据时,已经确定了每个节点数据的存储地址,所以可以直接的确定每个节点数据的下一级节点数据的存储地址。

步骤s25、将每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级 节点数据的存储地址添加至多个节点数据中;

其中,在确定出每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址以后,便可以将每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址添加至多个节点数据中。

步骤s26、将多个节点数据存储到每个节点数据对应的存储位置中。

在图5所示的实施例中,可以根据每个目标前缀和每个目标前缀的出接口信息建立多个节点数据,并向多个节点数据中添加下一级节点数据的存储位置和下一级节点数据的存储地址,最后将每个节点数据存储在对应的存储位置中,从而为后续在节点数据中查找关键字做好准备。

为了说明图5所示的实施例的具体实现,下面通过实施例来介绍如何根据查找树来建立多个节点数据。当然,建立节点数据的方式有很多种,并不局限于利用查找树来建立节点数据。关于根据查找树来建立多个节点数据包括以下步骤:

步骤a,获取预先设置好的每个目标前缀和每个目标前缀的出接口信息。

在步骤a,中,目标前缀为预先设置好的数据,目标前缀的数量可以为多个,每个目标前缀均对应一个出接口信息。

步骤b,、根据每个目标前缀建立查找树,每个目标前缀均对应查找树中的一个节点。

其中,查找树的种类也有很多种。例如,可以根据每个目标前缀建立二叉树;又如,可以根据每个目标前缀建立多叉树;又如,可以根据每个目标前缀建立路径压缩树。当然,本发明实施例并不局限于二叉树、多叉树或路径压缩树,还可以为其他种类的查找树。

步骤c,、将查找树划分成多个级别,查找树的每个级别中均至少包括一棵子树,子树至少包括一个节点。

其中,查找树具有多个节点,将查找树划分成多个级别以后,查找树会形成多个子树,且每个子树至少包括一个节点。

将查找树划分成多个级别的方式有多种,例如,可以按照固定步长、动态步长、后续遍历或前序遍历等多种方法将查找树划分成多个级别,从而使得查找树演变成多棵子树。

步骤d,、确定查找树中每个子树对应的存储位置和每个子树对应的下一级子树的存储位置。

其中,由于每个子树均会对应一个节点数据,所以需要预先将每个子树分配给存储 位置,那么在步骤d中即可根据预先分配的情况来确定每个子树对应的存储位置,以及每个子树对应的下一级子树的存储位置。

步骤e,、确定查找树中每个子树的前缀对应的目标前缀和下一级子树。

其中,每个子树的查找路径即为每个子树的前缀,每个子树的前缀可能会对应目标前缀,也可能会对应下一级子树。每个子树的某个前缀只能仅对应一个目标前缀或仅对应一个下一级子树,而每个子树的某个前缀不能同时对应一个目标前缀和一个下一级子树。

步骤f,、建立每个子树的节点数据,节点数据为每个子树的前缀与目标前缀的出接口信息、下一级子树的存储地址和下一级子树的存储位置的对应关系。

其中,在确定出查找树中每个子树的前缀对应的目标前缀和下一级子树以后,便可以根据每个子树的前缀、目标前缀的出接口信息、下一级子树的存储地址和下一级子树的存储位置建立节点数据。每个子树的前缀可能与目标前缀的出接口信息存在对应关系,每个子树的前缀可能与下一级子树的存储地址和下一级子树的存储位置存在对应关系,需要将与每个子树的前缀存在对应关系的数据全部统一起来,以生成节点数据。最后生成的节点数据就如表3所示的结构。

步骤g,、将每个子树的节点数据存储到每个子树对应的存储位置中。

其中,在建立每个子树的节点数据以后,仅需要将节点数据存储到对应的存储位置中即可,以便于后续步骤可以利用存储到不同存储位置中的节点数据进行路由查找。

例如,假设查找树具有5个子树,分别为子树a1、子树b1、子树c1、子树d1和子树e1,子树a1的下一级子树为子树b1和c1,子树b1的下一级子树为子树d1和e1。子树a1的节点数据为a2,子树b1的节点数据为b2,子树c1的节点数据为c2,子树d1的节点数据为d2,子树e1的节点数据为e2。假设预先将节点数据a2分配至单板x1上,将节点数据b2和节点数据c2分配至单板x2上,将节点数据d2分配至单板x3上,将节点数据e2分配至单板x4上。

图6为本发明实施例提供的又一种路由查找方法的流程图。图6为图2相应的实施例,图6所示的实施例需要与图2所示的实施例进行相互配合,如果图6所示的实施例中存在与图2所示的实施例相同的内容,请参见图2所示的实施例。图6所示的路由查找方法可以将转发表生成的节点数据预先存储在路由设备的多个单板上,从而无需外接存储器便可以存储下转发表生成的所有节点数据,以降低路由设备的硬件成本。该方法 包括以下步骤。

步骤s31、接收目标单板发送的具有帧头的报文,帧头包括查找标识、节点数据的存储地址和关键字。

其中,本发明实施例提供的方法可以应用于路由设备的指定单板上。路由设备可以为路由器或交换机等用于转发报文的设备,单板可以为路由设备上的线卡或交换网板等。

在路由设备的目标单板将具有帧头的报文发送给路由设备的指定单板以后,指定单板便会接收到目标单板发送的具有帧头的报文。由于目标单板预先在报文的帧头中添加了查找标识、节点数据的存储地址和关键字,所以指定单板可以解析出帧头中的查找标识、节点数据的存储地址和关键字。

由于节点数据的数量可能为多个,所以需要按照预设分配策略将每个节点数据分配给每个存储位置,每个存储位置为在路由设备的多个单板中选取的。预设分配策略具有很多种方式,例如,可以按照平均分配的方式将每个节点数据分配给每个存储位置;又如,可以按照随机分配的方式将每个节点数据分配给每个存储位置;再如,为了保证单板负载均衡,可以先确定每个存储位置对应的单板的负载能力,然后根据单板的负载能力来将每个节点数据分配给每个存储位置;再如,为了避免节点数据下发到单板上以后,单板出现故障而无法获取节点数据,可以将相同的节点数据分配到不同的单板上,以保证节点数据存在备份,在某个单板出现故障以后,还可以去其他的单板获取相同的节点数据,如果一个节点数据被分配到两个单板上,那么该节点数据的上一级节点数据会存储有这两个单板的存储地址和存储位置。

步骤s32、在帧头中存在查找标识时,根据帧头内的节点数据的存储地址获取节点数据,节点数据为前缀与目标前缀的出接口信息、下一级节点数据的存储地址和下一级节点数据的存储位置的对应关系。

其中,在指定单板接收到目标单板发送的具有帧头的报文以后,指定单板需要确定报文的帧头内是否存在查找标识。如果单板确定出报文的帧头内不存在查找标识,说明该报文需要在指定单板内执行正常的报文转发流程;如果单板确定出报文的帧头内存在查找标识,说明该报文仅是在指定单板进行路由查找的,指定单板需要根据帧头内的节点数据的存储地址获取节点数据。

步骤s33、在节点数据中确定与关键字对应的数据。

其中,与关键字对应的数据有可能为出接口信息,也有可能为下一级节点数据的存储地址和下一级节点数据的存储位置。

步骤s34、在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位 置处。

其中,在数据为目标前缀的出接口信息时,说明已经完成了路由查找,那么指定单板需要将报文发送至出接口信息对应的位置处,以结束路由查找流程

在图6所示的实施例中,利用关键字在预先生成的节点数据中查找对应的数据,在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,说明关键字在节点数据中未查找到对应的出接口信息,关键字的第二部分还需要在下一级节点数据中继续查找对应的出接口信息。在节点数据的存储位置与下一级节点数据的存储位置不同时,说明节点数据存储在目标单板上,而下一级节点数据未存储在目标单板上,需要将查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,并将具有帧头的报文发送至下一级节点数据的存储位置对应的指定单板处,以使指定单板在接收到具有帧头的报文后,在指定单板的下一级节点数据中确定与关键字的第二部分对应的出接口信息,并将报文发送到出接口对应的位置处,以实现报文的转发。由于路由设备中具有多个单板,本发明提供的方案将转发表生成的节点数据预先存储在路由设备的多个单板上,从而无需外接存储器便可以存储下转发表生成的所有节点数据。因此,本发明提供的方案可以降低路由设备的硬件成本。

为了更加清楚的解释图6所示的实施例,下面通过具体的使用场景来介绍图6所示的实施例。

请参见表3所示,表3所示的为节点数据的结构。在表3所示的例子中,路由设备的指定单板接收目标单板发送的具有帧头的报文,帧头包括查找标识、节点数据的存储地址0x10000001和关键字011010101。由于指定单板可以确定出帧头中存在查找标识,所以指定单板会根据帧头内的节点数据的存储地址0x10000001获取到如表3所示的节点数据。指定单板在获取到如表3所示的节点数据以后,指定单板需要在节点数据中确定与关键字011010101对应的数据。由于与关键字011010101对应的数据为目标前缀的出接口信息目的单板1和目的口1,所以指定单板会将报文发送至出接口信息对应的位置处。

请参见图7所示,图7为本发明实施例提供的又一种路由查找方法的流程图。图7所示的实施例为基于图6改进的实施例,所以与图6相同的内容可参见图6所示的实施例。相对于图6所示的实施例,图7所示的实施例在步骤s33之后,还可以包括以下步骤:

步骤s35、判断数据是否为目标前缀的出接口信息。在数据为目标前缀的出接口信息时,执行步骤s34;在数据不为目标前缀的出接口信息时,执行步骤s36。

其中,指定单板在节点数据中确定与关键字对应的数据以后,需要判断数据是否为目标前缀的出接口信息。如果是,说明已经找到需要的出接口信息,并执行步骤s34,以将报文发送至出接口信息对应的位置处,即可完成查找工作。否则,说明还未找到需要的出接口信息,还需进行后续查找,需要执行步骤s36,以进行后续查找。

步骤s36、判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置,在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,执行步骤s37。

步骤s37、获取节点数据的存储位置,在节点数据的存储位置与下一级节点数据的存储位置不同时,将查找标识、下一级节点数据的存储地址和关键字的剩余部分添加至报文的帧头中,将具有帧头的报文发送至下一级节点数据的存储位置处。

其中,在指定单板判断出数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,需要获取节点数据的存储位置,以便于在节点数据的存储位置与下一级节点数据的存储位置不同时,说明需要下一级节点数据未存储在本地,所以需要将查找标识、下一级节点数据的存储地址和关键字的剩余部分添加至报文的帧头中,将具有帧头的报文发送至下一级节点数据的存储位置处。

请参见图8所示,图8为本发明实施例提供的又一种路由查找方法的流程图。图8所示的实施例为基于图6改进的实施例,所以与图6相同的内容可参见图6所示的实施例。相对于图6所示的实施例,图8所示的实施例在步骤s33之后,还可以包括以下步骤:

步骤s38、判断数据是否为目标前缀的出接口信息。在数据为目标前缀的出接口信息时,执行步骤s34;在数据不为目标前缀的出接口信息时,执行步骤s39。

其中,指定单板在节点数据中确定与关键字对应的数据以后,需要判断数据是否为目标前缀的出接口信息。如果是,说明已经找到需要的出接口信息,并执行步骤s34,以将报文发送至出接口信息对应的位置处,即可完成查找工作。否则,说明还未找到需要的出接口信息,还需进行后续查找,需要执行步骤s39,以进行后续查找。

步骤s39、判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置,在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,执行步骤s40。

步骤s40、获取节点数据的存储位置,在节点数据的存储位置与下一级节点数据的存储位置相同时,根据下一级节点数据的存储地址获取下一级节点数据,在下一级节点数据中确定与关键字的剩余部分对应的数据,在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

其中,在指定单板判断出数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,需要获取节点数据的存储位置,在节点数据的存储位置与下一级节点数据的存储位置相同时,说明在本地即可获取下一级节点数据的,并在下一级节点数据中确定与关键字的剩余部分对应的数据,在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

请参见图9所示,图9为本发明实施例提供的又一种路由查找方法的流程图。图9所示的实施例为基于图6改进的实施例,所以与图6相同的内容可参见图6所示的实施例。相对于图6所示的实施例,图9所示的实施例在步骤s31之前,还可以包括以下步骤:

步骤s41、获取预先设置好的每个目标前缀和所述每个目标前缀的出接口信息;

其中,在执行步骤s31之前,即接收目标单板发送的具有帧头的报文之前,需要建立每个节点数据,在本实施例中,步骤s41至步骤s45介绍的为建立每个节点数据的过程。当然,步骤s41至步骤s45介绍的仅为一种建立每个节点数据的方式,本领域技术人员可以基于步骤s41至步骤s45联想到其他建立每个节点数据的方式。

步骤s42、根据每个目标前缀和每个目标前缀的出接口信息建立多个节点数据,多个节点数据被划分为至少两个级别,节点数据具有至少一个前缀;

其中,目标前缀为预先设置好的数据,目标前缀的数量可以为多个,每个目标前缀均对应一个出接口信息。将多个节点数据划分成多个级别的方式有多种,例如,可以按照固定步长、动态步长、后续遍历或前序遍历等多种方法将多个节点数据划分成多个级别。每个节点数据均会具有至少一个前缀,该前缀用于在查找过程中与关键字进行匹配。

步骤s43、确定多个节点数据中每个节点数据的存储位置、每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址;

其中,由于每个节点数据都需要被预先分配存储位置,那么在步骤s43中即可根据预先分配的情况来确定每个节点数据的存储位置,以及每个节点数据的下一级每个节点数据的存储位置。而且,在建立多个节点数据时,已经确定了每个节点数据的存储地址,所以可以直接的确定每个节点数据的下一级节点数据的存储地址。

步骤s44、将每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址添加至多个节点数据中;

其中,在确定出每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址以后,便可以将每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址添加至多个节点数据中。

步骤s45、将多个节点数据存储到每个节点数据对应的存储位置中。

在图5所示的实施例中,可以根据每个目标前缀和每个目标前缀的出接口信息建立多个节点数据,并向多个节点数据中添加下一级节点数据的存储位置和下一级节点数据的存储地址,最后将每个节点数据存储在对应的存储位置中,从而为后续在节点数据中查找关键字做好准备。

为了说明图9所示的实施例的具体实现,下面通过实施例来介绍如何根据查找树来建立多个节点数据。当然,建立节点数据的方式有很多种,并不局限于利用查找树来建立节点数据。关于根据查找树来建立多个节点数据包括以下步骤:

步骤a,获取预先设置好的每个目标前缀和每个目标前缀的出接口信息。

在步骤a,中,目标前缀为预先设置好的数据,目标前缀的数量可以为多个,每个目标前缀均对应一个出接口信息。

步骤b,、根据每个目标前缀建立查找树,每个目标前缀均对应查找树中的一个节点。

其中,查找树的种类也有很多种。例如,可以根据每个目标前缀建立二叉树;又如,可以根据每个目标前缀建立多叉树;又如,可以根据每个目标前缀建立路径压缩树。当然,本发明实施例并不局限于二叉树、多叉树或路径压缩树,还可以为其他种类的查找树。

步骤c,、将查找树划分成多个级别,查找树的每个级别中均至少包括一棵子树,子树至少包括一个节点。

其中,查找树具有多个节点,将查找树划分成多个级别以后,查找树会形成多个子树,且每个子树至少包括一个节点。

将查找树划分成多个级别的方式有多种,例如,可以按照固定步长、动态步长、后续遍历或前序遍历等多种方法将查找树划分成多个级别,从而使得查找树演变成多棵子树。

步骤d,、确定查找树中每个子树对应的存储位置和每个子树对应的下一级子树的存储位置。

其中,由于每个子树均会对应一个节点数据,所以需要预先将每个子树分配给存储位置,那么在步骤d中即可根据预先分配的情况来确定每个子树对应的存储位置,以及每个子树对应的下一级子树的存储位置。

步骤e,、确定查找树中每个子树的前缀对应的目标前缀和下一级子树。

其中,每个子树的查找路径即为每个子树的前缀,每个子树的前缀可能会对应目标前缀,也可能会对应下一级子树。每个子树的某个前缀只能仅对应一个目标前缀或仅对应一个下一级子树,而每个子树的某个前缀不能同时对应一个目标前缀和一个下一级子树。

步骤f,、建立每个子树的节点数据,节点数据为每个子树的前缀与目标前缀的出接口信息、下一级子树的存储地址和下一级子树的存储位置的对应关系。

其中,在确定出查找树中每个子树的前缀对应的目标前缀和下一级子树以后,便可以根据每个子树的前缀、目标前缀的出接口信息、下一级子树的存储地址和下一级子树的存储位置建立节点数据。每个子树的前缀可能与目标前缀的出接口信息存在对应关系,每个子树的前缀可能与下一级子树的存储地址和下一级子树的存储位置存在对应关系,需要将与每个子树的前缀存在对应关系的数据全部统一起来,以生成节点数据。最后生成的节点数据就如表3所示的结构。

步骤g,、将每个子树的节点数据存储到每个子树对应的存储位置中。

其中,在建立每个子树的节点数据以后,仅需要将节点数据存储到对应的存储位置中即可,以便于后续步骤可以利用存储到不同存储位置中的节点数据进行路由查找。

例如,假设查找树具有5个子树,分别为子树a1、子树b1、子树c1、子树d1和子树e1,子树a1的下一级子树为子树b1和c1,子树b1的下一级子树为子树d1和e1。子树a1的节点数据为a2,子树b1的节点数据为b2,子树c1的节点数据为c2,子树d1的节点数据为d2,子树e1的节点数据为e2。假设预先将节点数据a2分配至单板x1上,将节点数据b2和节点数据c2分配至单板x2上,将节点数据d2分配至单板x3上,将节点数据e2分配至单板x4上。

图10为本发明实施例提供的一种路由查找装置的示意图。图10为图2对应的装置实施例,图10中与图2相同的内容请参见图2即可。参照图10,该装置包括以下模块:

第一获取模块11,用于获取关键字,关键字为报文中的ip地址转换而成的;

第二获取模块12,用于根据预先获取到的节点数据的存储地址获取节点数据,节点 数据为前缀与目标前缀的出接口信息、下一级节点数据的存储地址和下一级节点数据的存储位置的对应关系;

第一确定模块13,用于在节点数据中确定与关键字的第一部分相匹配的前缀,并在节点数据中确定与前缀对应的数据,关键字包括第一部分和第二部分;

第三获取模块14,用于在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置;

第一添加模块15,用于在节点数据的存储位置与下一级节点数据的存储位置不同时,将预先生成的查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,查找标识用于说明报文为需要进行后续查找的报文;

第一存储模块16,用于将具有帧头的报文发送至下一级节点数据的存储位置对应的指定单板中。

图11为本发明实施例提供的又一种路由查找装置的示意图。图11为图10的改进实施例,图11中与图10相同的内容请参见图10即可。参照图11,该装置还包括以下模块:

第一判断模块17,用于判断节点数据的存储位置与下一级节点数据的存储位置是否相同;

第一执行模块18,用于在节点数据的存储位置与下一级节点数据的存储位置相同时,根据下一级节点数据的存储地址获取下一级节点数据,在下一级节点数据中确定与关键字的第二部分对应的数据,在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处;

第二执行模块19,用于在节点数据的存储位置与下一级节点数据的存储位置不同时,执行添加模块15。

图12为本发明实施例提供的又一种路由查找装置的示意图。图12为图10的改进实施例,图12中与图10相同的内容请参见图10即可。参照图12,该装置还包括以下模块:

第二判断模块20,用于判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置;

第三执行模块21,用于在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,执行第三获取模块14;

第四执行模块22,用于在数据不为下一级节点数据的存储地址和下一级节点数据的存储位置时,判断数据是否为目标前缀的出接口信息,在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

图13为本发明实施例提供的又一种路由查找装置的示意图。图13为图10的改进实施例,图13中与图10相同的内容请参见图10即可。参照图13,该装置还包括以下模块:

第四获取模块23,用于获取预先设置好的每个目标前缀和每个目标前缀的出接口信息;

建立模块24,用于根据每个目标前缀和每个目标前缀的出接口信息建立多个节点数据,多个节点数据被划分为至少两个级别,节点数据具有至少一个前缀;

第二确定模块25,用于确定多个节点数据中每个节点数据的存储位置、每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址;

第二添加模块26,用于将每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址添加至多个节点数据中;

第二存储模块27,用于将多个节点数据存储到每个节点数据对应的存储位置中。

图14为本发明实施例提供的又一种路由查找装置的示意图。图14为图10的改进实施例,图14中与图10相同的内容请参见图10即可。参照图14,该装置还包括以下模块:

分配模块28,用于按照预设分配策略将每个节点数据分配给每个存储位置,每个存储位置为在路由设备的多个单板中选取的。

图15为本发明实施例提供的又一种路由查找装置的示意图。图15为图6对应的装置实施例,图15中与图6相同的内容请参见图6即可。参照图15,该装置包括以下模块:

接收模块31,用于接收目标单板发送的具有帧头的报文,帧头包括查找标识、节点数据的存储地址和关键字;

第一获取模块32,用于在帧头中存在查找标识时,根据帧头内的节点数据的存储地址获取节点数据,节点数据为前缀与目标前缀的出接口信息、下一级节点数据的存储地 址和下一级节点数据的存储位置的对应关系;

第一确定模块33,用于在节点数据中确定与关键字对应的数据;

发送模块34,用于在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

图16为本发明实施例提供的又一种路由查找装置的示意图。图16为图15的改进实施例,图16中与图15相同的内容请参见图15即可。参照图16,该装置还包括以下模块:

第一判断模块35,用于判断数据是否为目标前缀的出接口信息;

第一执行模块36,用于在数据为目标前缀的出接口信息时,执行发送模块34;

第二执行模块37,用于在数据不为目标前缀的出接口信息时,判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置,在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置,在节点数据的存储位置与下一级节点数据的存储位置不同时,将查找标识、下一级节点数据的存储地址和关键字的剩余部分添加至报文的帧头中,将具有帧头的报文发送至下一级节点数据的存储位置处。

图17为本发明实施例提供的又一种路由查找装置的示意图。图17为图15的改进实施例,图17中与图15相同的内容请参见图15即可。参照图17,该装置还包括以下模块:

第二判断模块38,用于判断数据是否为目标前缀的出接口信息;

第三执行模块39,用于在数据为目标前缀的出接口信息时,执行发送模块34;

第四执行模块40,用于在数据不为目标前缀的出接口信息时,判断数据是否为下一级节点数据的存储地址和下一级节点数据的存储位置,在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置,在节点数据的存储位置与下一级节点数据的存储位置相同时,根据下一级节点数据的存储地址获取下一级节点数据,在下一级节点数据中确定与关键字的剩余部分对应的数据,在数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

图18为本发明实施例提供的又一种路由查找装置的示意图。图18为图15的改进实施例,图18中与图15相同的内容请参见图15即可。参照图18,该装置还包括以下模 块:

第二获取模块41,用于获取预先设置好的每个目标前缀和每个目标前缀的出接口信息;

建立模块42,用于根据每个目标前缀和每个目标前缀的出接口信息建立多个节点数据,多个节点数据被划分为至少两个级别,节点数据具有至少一个前缀;

第二确定模块43,用于确定多个节点数据中每个节点数据的存储位置、每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址;

添加模块44,用于将每个节点数据的下一级节点数据的存储位置和每个节点数据的下一级节点数据的存储地址添加至多个节点数据中;

存储模块45,用于将多个节点数据存储到每个节点数据对应的存储位置中。

图19为本发明实施例提供的又一种路由查找装置的示意图。图19为图15的改进实施例,图19中与图15相同的内容请参见图15即可。参照图19,该装置还包括以下模块:

分配模块46,用于按照预设分配策略将每个节点数据分配给每个存储位置,每个存储位置为在路由设备的多个单板中选取的。

图20为本发明实施例提供的一种路由设备的示意图。参照图20,该路由设备包括目标单板51和指定单板52;

目标单板51,用于获取关键字,关键字为报文中的ip地址转换而成的;根据预先获取到的节点数据的存储地址获取节点数据,节点数据为前缀与目标前缀的出接口信息、下一级节点数据的存储地址和下一级节点数据的存储位置的对应关系;在节点数据中确定与关键字的第一部分相匹配的前缀,并在节点数据中确定与前缀对应的数据,关键字包括第一部分和第二部分;在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置;在节点数据的存储位置与下一级节点数据的存储位置不同时,将预先生成的查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,查找标识用于说明报文为需要进行后续查找的报文;将具有帧头的报文发送至下一级节点数据的存储位置对应的指定单板处;

指定单板52,用于接收目标单板发送的具有帧头的报文,帧头包括查找标识、下一级节点数据的存储地址和关键字的第二部分;在帧头中存在查找标识时,根据帧头内的下一级节点数据的存储地址获取下一级节点数据;在下一级节点数据中确定与关键字的 第二部分对应的数据;在与关键字的第二部分对应的数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

在图20所示的实施例中,目标单板51和指定单板52可以为线卡或交换网板等单板。

图21为本发明实施例提供的又一种路由设备的示意图。参照图21,该路由设备包括处理器61和存储器62,其中,存储器62内存储有处理器61能够执行的操作指令,处理器61读取存储器62内的操作指令用于实现以下方法:

获取关键字,关键字为报文中的ip地址转换而成的;根据预先获取到的节点数据的存储地址获取节点数据,节点数据为前缀与目标前缀的出接口信息、下一级节点数据的存储地址和下一级节点数据的存储位置的对应关系;在节点数据中确定与关键字的第一部分相匹配的前缀,并在节点数据中确定与前缀对应的数据,关键字包括第一部分和第二部分;在数据为下一级节点数据的存储地址和下一级节点数据的存储位置时,获取节点数据的存储位置;在节点数据的存储位置与下一级节点数据的存储位置不同时,将预先生成的查找标识、下一级节点数据的存储地址和关键字的第二部分添加至报文的帧头中,查找标识用于说明报文为需要进行后续查找的报文;将具有帧头的报文发送至下一级节点数据的存储位置对应的指定单板处;用于接收目标单板发送的具有帧头的报文,帧头包括查找标识、下一级节点数据的存储地址和关键字的第二部分;在帧头中存在查找标识时,根据帧头内的下一级节点数据的存储地址获取下一级节点数据;在下一级节点数据中确定与关键字的第二部分对应的数据;在与关键字的第二部分对应的数据为目标前缀的出接口信息时,将报文发送至出接口信息对应的位置处。

需要说明的是,图1至图21所示的实施例只是本发明所介绍的可选实施例,本领域技术人员在此基础上,完全可以设计出更多的实施例,因此不在此处赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以 通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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