发明内容
有鉴于此,本申请提供一种基于等价路由的报文转发方法和装置,用于解决转发芯片转发环节和CPU转发环节选路不一致,造成某些场景下流量持续由CPU处理,浪费CPU的处理资源的问题。
具体地,本申请是通过如下技术方案实现的:
一种基于等价路由的报文转发方法,包括:
CPU学习到路由表项后,如果该路由表项包含等价路由,针对该等价路由中的每一个下一跳,分别学习对应的ARP表项;
CPU向转发芯片下发学习到的路由表项以及ARP表项;
当转发芯片接收到数据报文时,如果该数据报文命中包含等价路由的路由表项,基于预设的等价路由选路算法确定下一跳,并基于由CPU预先学习到的与该下一跳对应的ARP表项转发所述数据报文。
在所述基于等价路由的报文转发方法中,所述方法还包括:
CPU为学习到的所述ARP表项增加预设标记。
在所述基于等价路由的报文转发方法中,所述方法还包括:
当任一个ARP表项到达老化时长时,CPU检查该ARP表项是否有预设标记;
若该ARP表项有预设标记,重新学习该ARP表项。
在所述基于等价路由的报文转发方法中,所述方法还包括:
当任一个ARP表项到达老化时长时,CPU检查该ARP表项是否有预设标记;
若该ARP表项没有预设标记,正常老化该表项。
在所述基于等价路由的报文转发方法中,还包括:
如果所述数据报文命中不包含等价路由的路由表项时,转发芯片上送所述数据报文至CPU,由CPU学习该数据报文对应的ARP表项,并将该ARP表项下发至转发芯片,以使转发芯片根据该ARP表项转发接收的后续数据报文;
如果所述数据报文未命中任何路由表项,丢弃所述数据报文。
一种基于等价路由的报文转发装置,包括:
学习单元,用于在CPU学习到路由表项后,如果该路由表项包含等价路由,针对该等价路由中的每一个下一跳,分别学习对应的ARP表项;
下发单元,用于向转发芯片下发学习到的路由表项以及ARP表项;
转发单元,用于当转发芯片接收到数据报文时,如果该数据报文命中包含等价路由的路由表项,基于预设的等价路由选路算法确定下一跳,并基于由CPU预先学习到的与该下一跳对应的ARP表项转发所述数据报文。
在所述基于等价路由的报文转发装置中,所述装置还包括:
标记单元,用于为学习到的所述ARP表项增加预设标记。
在所述基于等价路由的报文转发装置中,所述学习单元进一步用于:
当任一个ARP表项到达老化时长时,CPU检查该ARP表项是否有预设标记;
若该ARP表项有预设标记,重新学习该ARP表项。
在所述基于等价路由的报文转发装置中,所述学习单元进一步用于:
当任一个ARP表项到达老化时长时,CPU检查该ARP表项是否有预设标记;
若该ARP表项没有预设标记,正常老化该表项。
在所述基于等价路由的报文转发装置中,所述装置还包括:
上送单元,用于如果所述数据报文命中不包含等价路由的路由表项时,上送所述数据报文至CPU,由CPU学习该数据报文对应的ARP表项,并将该ARP表项下发至转发芯片,以使转发芯片根据该ARP表项转发接收的后续数据报文;
丢弃单元,用于在所述数据报文未命中任何路由表项时,丢弃所述数据报文。
本发明实施例中,CPU学习到路由表项后,在该路由表项包含等价路由的情况下,针对该等价路由的每一个下一跳,分别触发学习对应的ARP表项。CPU向转发芯片下发学习到的路由表项和ARP表项。转发芯片接收到数据报文时,如果该数据报文命中包含等价路由的路由表项。转发芯片基于由CPU预先学习的等价路由对应的ARP表项转发数据报文。
这样当转发芯片接收到的数据报文命中包含等价路由的路由表项时,由于该等价路由每一个下一跳对应的ARP表项已经预先学习过,因此转发芯片不再需要将该数据报文上送CPU,转发芯片可以在本地自主地决策转发下一跳,并通过预先学习完成的与决策出的转发下一跳对应的ARP表项转发该数据报文,从而可以充分利用转发芯片高速转发的优势,有效节约CPU的处理资源。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对现有技术方案和本发明实施例中的技术方案作进一步详细的说明。
参见图1,为现有技术方案的一个数据报文转发流程图,该技术方案应用于路由设备上,路由设备包括CPU和转发芯片。
其中,CPU也可以称之为控制面,用于生成各类表项,执行ARP学习。转发芯片也可以称之为数据面,可以用于基于CPU下发的各类表项转发数据报文。
当数据报文到达转发芯片时,转发芯片可以基于该数据报文中携带的转发信息,在本地进行路由表查询;如果该数据报文没有命中路由表项,则可以丢弃该数据报文。
网络设备的控制面负责生成各类表项,并将表项下发至转发芯片,用以指导数据转发;其中,控制面下发的各类表项包括路由表项。
路由表是3层网络设备通过各路由协议学习并计算汇总,生成的一个数据库,路由表存储着指向特定网络地址的转发路径。路由表中的每条路由表项包含三个基本信息:目的地址、出接口和下一跳。
数据报文到达转发芯片后,通过数据报文的目的地址查询路由表,如果存在某一条路由表项的目的地址与该数据报文的目的地址一致,此时该数据报文命中该路由表项,则说明该数据报文将经过该路由表项中的路由转发。如果数据报文的目的地址在路由表中无法找到具有匹配的目的地址的路由表项,此时该数据报文未命中任何路由表项,则转发芯片将该数据报文丢弃。
如果上述数据报文命中了某一条路由表项,转发芯片根据该路由表项的下一跳查找ARP表,判断对应的ARP表项是否为有效状态(比如可以判断对应的ARP表项中的MAC地址是否为空);如果该ARP表项为有效状态,则将上述数据报文按照该ARP表项中的MAC地址,以及相应的出接口转发出去。
如果该ARP表项为无效状态(比如该ARP表项中的MAC地址为空),此时转发芯片可以将该数据报文上送CPU处理,CPU在查询路由表项后,发现下一跳对应的ARP表项为无效状态,则CPU可以基于ARP协议,针对该路由表项来学习对应的ARP表项。
其中,ARP协议是根据下一跳的IP地址学习MAC地址的协议,CPU在基于ARP协议学习ARP表项时,可以将包含下一跳IP地址的ARP请求广播到网络上的所有主机,然后接收包含下一跳IP地址对应的MAC地址的返回消息,收到返回消息后以下一跳IP地址和MAC地址创建ARP表项,并保留该ARP表项一段时间。
CPU在针对命中的该路由表项来学习对应的ARP表项时,还可以将该数据报文加入该ARP的缓存队列;如果在规定的时间内,成功学到该下一跳的ARP表项,则可以基于学习到的ARP表项中的MAC地址,以及相应的出接口将该数据报文转发出去,并将学习到的ARP表项下发至转发芯片。转发芯片在接收到CPU下发的ARP表项时,可以将该ARP表项更新为有效状态。
可见,现有技术中ARP表项的学习,是由流量触发的。由于ARP的流量触发学习机制,ARP表项在第一次被用到以前先是无效状态,经过流量触发后,才由转发芯片上送数据报文到CPU触发学习该ARP表项;当转发芯片接收到CPU下发的成功学习到的ARP表项后,转发芯片可以在ARP表中将该ARP表项更新为有效状态。
某条流量的首个数据报文在命中包含等价路由的路由表项的情况下,转发芯片通过等价路由选路算法确定转发路径,根据确定的下一跳查询ARP表,如果该下一跳对应的ARP表项处于无效状态,转发芯片可以将上述数据报文上送到CPU进行处理。CPU在收到转发芯片上送的数据报文后,可以进行相同的查路由操作,并通过等价路由选路算法确定转发路径,并学习确定出的下一跳对应的ARP表项,然后将学习到的ARP表项下发至转发芯片,以指导转发芯片的转发。
然而,由于CPU与转发芯片相互独立,两者的选路算法可能是不一致的,因而确定的转发路径也可能不一致;例如,假设CPU确定的转发路径是下一跳B,CPU会学习下一跳B对应的ARP表项,在成功学习到该ARP表项之后,CPU可按照该ARP表项转发首数据报文,并在成功转发后,将下一跳B对应的ARP表项下发到转发芯片。假设此时转发芯片的确定的转发路径是下一跳A,而CPU下发的ARP表项为下一跳B对应的ARP表项,因而转发芯片上的ARP表中,与下一跳A对应的ARP表项将始终处于无效状态,而在这种情况下,转发芯片将无法利用上述ARP表项转发数据报文。上述流量的后续数据报文将始终会被上送至CPU,由CPU进行软件层面的转发,这就是导致无法利用转发芯片高速转发的性能优势,浪费了CPU的处理资源。
为解决上述问题,本发明实施例的技术方案,对于包含等价路由的路由表项,采用ARP表项的预先学习的机制,主动地维护ARP表项的状态,ARP表项的学习将不再依赖流量动态触发。
参见图2,为本发明基于等价路由的报文转发方法的一个实施例流程图,该实施例的执行主体是路由设备,该路由设备包括CPU和转发芯片。其中,CPU也可以称之为控制面,用于生成各类表项,执行ARP学习。转发芯片也可以称之为数据面,可以用于基于CPU下发的各类表项转发数据报文;所述方法包括以下步骤:
步骤201:CPU学习到路由表项后,如果该路由表项包含等价路由,针对该等价路由中的每一个下一跳,分别学习对应的ARP表项。
步骤202:CPU向转发芯片下发学习到的路由表项以及ARP表项。
步骤203:当转发芯片接收到数据报文时,如果该数据报文命中包含等价路由的路由表项,基于预设的等价路由算法确定下一跳,并基于由CPU预先学习到的与该下一跳对应的ARP表项转发上述数据报文。
如前所述,在现有技术中,ARP表项的学习通常依靠流量触发的,因而对于包含等价路由的路由表项,可能由于转发芯片和CPU确定的下一跳不一致,导致数据报文将始终会被上送至CPU,由CPU进行软件层面的转发,而无法利用转发芯片高速转发的性能的问题。
在本实施例中,对于包含等价路由的路由表项,将采用预先学习ARP表项的机制,来规避由于转发芯片与CPU确定出的下一跳不一致的情况下,而造成浪费CPU的处理资源,无法利用转发芯片高速转发的性能的问题。
在本例中,CPU可以根据路由协议(比如OSPF协议),从网络设备的接口上学习路由表项,当CPU学习到包含等价路由的路由表项时,CPU可以主动学习该等价路由中每一个下一跳对应的ARP表项。
在示出的一种实施方式中,当CPU学习到上述等价路由中每一个下一跳对应的ARP表项时,还可以为学习到的ARP表项增加预设标记。其中,该预设标记表示该ARP表项被等价路由引用。
在本例中,CPU可以将学习到的路由表项,以及上述ARP表项,下发至转发芯片;转发芯片在接收到CPU下发的ARP表项后,可以将该ARP表项存储至ARP表中,后续转发芯片可以基于ARP表中的ARP表项来转发数据报文。
其中,系统规定每个ARP表项有一定的生命周期,因此ARP表中每一个ARP表项均会预设一个老化时长,到达老化时长后删除该ARP表项,以此减少ARP表中的表项,提高ARP表查询效率。ARP表项的老化时长在不同系统中的设定不同,可以通过系统注册表或网络设备的某些命令进行设置。
在示出的一种实施方式中,当某一个ARP表项到达老化时长时,此时可以检查该ARP表项是否有上述预设标记。如果没有上述预设标记,则正常老化该表项。如果该ARP表项有上述预设标记,则有CPU重新学习该ARP表项,从而确保等价路由对应的ARP表项始终处于有效状态。
在本例中,转发芯片接收到数据报文,根据数据报文的目的地址在路由表中查询包含相同目的地址的路由表项。
一方面,如果查询得到的路由表项中包含等价路由,该路由表项中的每一个下一跳对应的ARP表项都已经由CPU预先触发学习过,转发芯片根据等价路由选路算法选定的任一转发路径对应的ARP表项,转发上述数据报文。
另一方面,如果转发芯片根据数据报文的目的地址,在路由表中查询得到不包含等价路由的路由表项,此时转发芯片基于现有的转发机制针对该数据报文转发即可。
具体的,转发芯片可以在ARP表中查询与该路由表项中的下一跳对应的ARP表项。在默认情况下,ARP表项通常为无效状态,在这种情况下,转发芯片可以将该数据报文上送至CPU进行处理,CPU在进行路由查询操作后,可以触发学习上述路由表项的下一跳对应的ARP表项。
CPU在成功学习到ARP表项后,可以基于学习的该ARP表项转发数据报文,并下发该ARP表项至转发芯片。转发芯片在接收到CPU下发的该ARP表项后,此时该ARP表项处于有效状态,转发芯片收到后续的数据报文时,如果后续的数据报文命中与该ARP表项对应的路由表项,则转发芯片无需将该数据报文上送至CPU进行处理,直接根据该ARP表项转发上述数据报文。
当然,如果转发芯片根据数据报文的目的地址在路由表中无法查到具有相同目的地址的路由表项,则该数据报文未命中任何路由表项,此时转发芯片可以将该数据报文丢弃。
由上述实施例可见,该实施例通过预先触发ARP协议学习的方式,不再依赖流量动态触发,主动学习等价路由对应的ARP表项。并且对包含等价路由的路由表项中每个下一跳对应的ARP表项增加预设标记,始终维护上述ARP表项为有效状态。通过这两个措施,使得单一流量命中等价路由的情况下,规避了CPU和转发芯片因等价路由选路算法确定的转发路径不一致,导致的数据报文始终由CPU转发的情况,有效利用转发芯片高速转发的性能优势,节约了CPU的处理资源。
与本发明基于等价路由的报文转发方法的实施例相对应,本发明还提供了用于执行上述方法实施例的装置的实施例。
参见图3,为本发明基于等价路由的报文转发装置的一个实施例框图:
如图3所示,该基于等价路由的报文转发装置30包括:
学习单元310,用于在CPU学习到路由表项后,如果该路由表项包含等价路由,针对该等价路由中的每一个下一跳,分别学习对应的ARP表项。
下发单元320,用于向转发芯片下发学习到的路由表项以及ARP表项。
转发单元330,用于当转发芯片接收到数据报文时,如果该数据报文命中包含等价路由的路由表项,基于预设的等价路由选路算法确定下一跳,并基于由CPU预先学习到的与该下一跳对应的ARP表项转发所述数据报文。
在本例中,所述装置30还包括:
标记单元340,用于为学习到的所述ARP表项增加预设标记。
在本例中,所述学习单元310进一步用于:
当任一个ARP表项到达老化时长时,检查该ARP表项是否有预设标记。
若该ARP表项有预设标记,重新学习该ARP表项。
在本例中,所述学习单元310进一步用于:
当任一个ARP表项到达老化时长时,检查该ARP表项是否有预设标记。
若该ARP表项没有预设标记,正常老化该表项。
在本例中,所述装置30还包括:
上送单元350,用于如果所述数据报文命中不包含等价路由的路由表项时,上送所述数据报文至CPU,由CPU学习该数据报文对应的ARP表项,并将该ARP表项下发至转发芯片,以使转发芯片根据该ARP表项转发接收的后续数据报文。
丢弃单元360,用于在所述数据报文未命中任何路由表项时,丢弃所述数据报文。
本申请基于等价路由的报文转发装置的实施例可以应用在路由设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在路由设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本申请基于等价路由的报文转发装置所在路由设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的路由设备通常根据该基于等价路由的报文转发装置的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。