专利名称:实现数据流硬件转发的方法和系统以及网络路由设备的制作方法
技术领域:
本发明涉及网络通信技术领域,尤其涉及一种实现数据流硬件转发的方 法及系统,还涉及一种网络路由设备。
背景技术:
目前的网络路由设备(比如交换机、路由器)大多采用分布式结构,通 过设置在各个接口板的硬件转发芯片进行数据流的转发,以高效的完成IP层的转发任务;其中,常用的硬件转发芯片包括专用的ASIC (Application Specific Integrated Circuits,专用集成电路)以及NP (Network Processing,网络处理器)。虽然硬件转发芯片的采用能够提高IP层数据流转发的性能,但硬件 转发芯片对于IP层以上的业务,例如NAT (Network Address Translation, 网络地址转换)、NAT-PT (Network Address Translation-Protocol ,网络地址协议转换)、防火墙业务等,却无能为力。随着网络业务的日益丰富和路由器、交换机功能的不断升级,被要 求在路由器、交换机中进行处理的业务越来越多;为了满足上述要求, 网络设备中必须相应配置专门的业务处理引擎,以实现对数据流的业务 处理。其中,业务处理引擎最简单有效的实现方式是在接口板上配置专 门进行业务处理的CPU;该CPU可以为多核CPU,或者,是一个能够实 现控制功能和业务处理功能的芯片。在现有技术中,基于上述接口板CPU架构实现数据流转发的方案主 要有以下两种第一种,是利用硬件转发芯片的ACL (Access Control List,访问控 制列表)重定向技术,将符合条件的数据流重定向到接口板CPU,并在 CPU处理完成后重新发回硬件芯片进行三层的硬件路由转发;'其原理如 图IA所示;这种方案的缺陷在于,需要在接口板的每一个入接口处进行ACL重定向配置(事实上,由于支持出接口 ACL重定向的芯片不多,同时出接 口 ACL重定向存在报文重复上送CPU的问题,因此现有ACL重定向一 般都在入接口处进行配置)。由于路由器/交换机支持大量的入接口,同 时设备管理人员也无从了解需要进行CPU处理的业务从哪一个入接口接 入,因此必须在每一个入接口都进行ACL配置,该项配置的工作量显然 非常庞大;特别是,每一个入接口下都固定存在一些默认的ACL原始配 置,当额外配置一些特殊的ACL进行流分类和重定向时,在硬件转发芯 片只支持一级ACL的情况下必然会影响到该入接口的原有ACL配置, 导致重定向失败甚至其它更为严重的后果。第二种,是通过修改路由转发表,将发往接口板出接口的数据流转 发到CPU,由CPU在完成业务处理后根据软件路由表找到该出接口,由 出接口所在接口板的硬件转发芯片进行二层的封装和转发;其原理如图 1B所示;这种方案虽然无需在大量的入接口处配置ACL,但却需要CPU参与 到数据流转发中来,降低了数据流硬件转发的效率。这是由于接口板硬 件转发芯片的路由转发表信息已经被修改,如果继续由硬件转发芯片来 进行三层路由转发,在目的IP没有变化的情况下,数据流会被重复上送 CPU,导致陷入死循环;因此,必须由转发表项没有被修改的CPU执行 路由的软件查找,然后由硬件转发芯片执行二层硬件转发;CPU参与到数据流转发还导致了成本和复杂度的提高。具体而言, 由于CPU需要完成出接口路由査找,这就意味着该CPU必须保存有相 应接口板的路由表项信息; 一种方案是在全部接口板上都设置CPU并记 录本接口板的路由信息,这样显然不利于成本的降低,也不利于对旧有 未设置CPU的接口板的再利用;另一种方案是将各个接口板的路由信息 集中到一个或几个接口板的CPU上,但想要支持这一功能,.上述CPU 必须同步全局的出接口二层信息,因此存在一个复杂的全局接口信息同 歩过程。综上所述,现有技术在数据流硬件转发过程中面临这样一个难题,即如何简便的实现从硬件转发芯片到接口板CPU的数据流发送,并在 CPU处理完成后重新由硬件转发芯片进行三层硬件转发。发明内容本发明的实施例旨在提供能够克服上述现有技术缺陷的数据流硬件转 发方案,以简便的实现数据流的硬件三层转发。为实现上述目的,本发明的实施例提供了一种实现数据流硬件转发的方 法,包括针对接口板一出接口,对该接口板硬件转发芯片执行以下步骤刷 新该接口板硬件转发芯片的第一转发表,其中,对于真实下一跳为该出接口 的全部路由,其下一跳被修改为连接接口板CPU的接口;以及,向该硬件 转发芯片下发第二转发表,该第二转发表记录第一转发表中被修改路由的真 实下一跳;对于需要通过该出接口输出的业务报文,执行以下步骤步骤Sl:该硬件转发芯片査找第一转发表获得刷新的路由下一跳,将业务报文通过连接接口板CPU的接口发送给接口板CPU进行处理;步骤S2:接口板CPU处理后的业务报文触发硬件转发芯片查找第二转发表获得真实下一跳,通过该出接口对处理后的业务报文迸行三层硬件转发。本发明的实施例还提供了一种实现数据流硬件转发的系统,用于对 接口板出接口数据流进行转发控制,包括接口板硬件转发芯片和接口板CPU,其中,该接口板硬件转发芯片设有转发控制单元,接口板CPU用 于对业务报文加以处理并向该硬件转发芯片返回处理后的业务报文;还包括出接口配置单元,用于针对接口板出接口,刷新所述硬件转发芯片的第一转发表以及向硬件转发芯片下发第二转发表;第一转发表,对于真实下一跳为接口板一出接口的全部路由,其下 一跳被修改为连接接口板CPU的接口;第二转发表,用于记录所述第一转发表中被修改路由的真实下一跳; 设置在硬件转发芯片中的第一转发表查询单元,与该第一转发表连接,用于査找第一转发表,对于需要通过该出接口输出的业务报文获得 刷新的路由下一跳,触发转发控制单元将该业务报文通过连接接口板 CPU的接口发送给接口板CPU进行处理;设置在硬件转发芯片中的第二转发表査询单元,与该第二转发表连 接,由所述处理后的业务报文触发,用于查找第二转发表获得真实下一 跳,并触发转发控制单元通过该出接口对处理后的业务报文进行三层硬 件转发。本发明的实施例还提供了一种网络路由设备,其至少一个接口板设 有如上所述的实现数据流硬件转发的系统。由上述技术方案可知,本发明的实施例通过在硬件转发芯片中维护两份 转发表,对于需要通过已配置的出接口输出的业务报文,首次查询得到接口 板CPU路由下一跳,二次査询得到真实路由下一跳,具有以下有益效果1、 实现硬件转发芯片将数据流转发到接口板CPU进行业务处理,且处 理完成后能够重新通过硬件转发芯片进行三层转发;2、 配置简便,无需在接口下大量配置ACL;3、 CPU不参与转发,提高了转发性能。通过以下参照附图对优选实施例的说明,本发明的上述以及其它目的、 特征和优点将更加明显。
图1A为现有技术中利用ACL重定向技术实现数据流硬件转发方案的原 理示意图;图IB为现有技术中通过修改路由转发表实现数据流转发方案的原理示 意图;图2为本发明提供的实现数据流硬件转发的方法一实施例的流程图; 图3A为本发明提供的实现数据流硬件转发的方法一具体实施例的配置 流程图;图3B为本发明提供的实现数据流硬件转发的方法一具体实施例的处理 流程示意图;图4为一 NAT网络架构的示意图;图5A为本发明提供的实现数据流硬件转发的方法另一具体实施例的配 置流程图;图5B为本发明提供的实现数据流硬件转发的方法另一具体实施例的处 理流程示意图;图6为本发明提供的实现数据流硬件转发的系统一实施例的框图;图7为本发明提供的实现数据流硬件转发的系统一具体实施例的框图;图8为本发明提供的实现数据流硬件转发的系统另一具体实施例的框图。
具体实施方式
下面将详细描述本发明的具体实施例。应当注意,这里描述的实施例只 用于举例说明,并不用于限制本发明。基于规范描述和方便阅读的考虑,逐一定义本发明专利申请文件中出现 的术语如下MPLS, Multiprotocol Label Switching,多协议标签交换;VPN , Virtual Private Network,虚拟专用网;VLAN, Virtual Local Area Network,虚拟局域网;VRF , VPN Routing/Forwarding Instance , VPN路由/转发实例;需要说明的是,上述各术语仅作为指称其意指的名称之一,因此凡意指 与其相同或近似的名称均应视为其等价物。本发明的主要构思在于借鉴第二种现有技术中修改硬件转发芯片中 路由表的思路,但不采用接口板CPU进行三层的软件转发,而是通过在 硬件转发芯片维护两份转发表, 一份记录存在修改的路由表, 一份记录 真实路由表;从而对于需要通过已配置的出接口输出的业务报文,能够 在首次查询时得到接口板CPU路由下一跳,二次査询时得到真实路由下 一跳,从而解决现有技术中无法简便的利用硬件转发芯片实现数据流三 层转发的问题。这样,为帮助读者更好的理解本发明,下面将详细介绍本发明所提供的实现数据流硬件转发的方案。请参考图2,显示了本发明提供的实现数据流硬件转发方案一实施例 的流程图,包括首先,针对接口板一出接口,对接口板硬件转发芯片执行相应的歩 骤;具体包括刷新该接口板硬件转发芯片的第一转发表,也就是硬件 转发芯片原有的路由转发表;其中,对于真实下一跳为该出接口的全部路由,其下一跳被配置为 连接接口板CPU的接口,也可以简称为下一跳为接口板CPU;本领域技 术人员可以理解,该第一转发表中只有真实下一跳为该出接口的路由进 行了修改,其他的原有路由并不会被改变;以及,向该硬件转发芯片下发第二转发表,该第二转发表记录第一转发表中被修改路由的真实下一跳;需要说明的是,在硬件转发芯片中维护两套转发表是本发明的发明 点所在,下面就其与现有技术的对比分析改进之处现有技术中对于硬件转发芯片中路由转发表的修改导致了只能由CPU进行软件三层转发,否则会存在数据流对CPU的重复上送问题;而 CPU的软件三层转发又带来了软件路由表数据的采集和成本等一系列问 题;而本发明通过维护两套转发表,可以实现两次路由查询的结果不同, 保证采用硬件转发芯片来进行三层转发的可行性,从而简化软件的设计, 实现真正意义上的数据流硬件转发。具体的数据流硬件转发实现流程为,对于需要通过上述在硬件转发芯片中执行了路由刷新和下发的出接口输出的业务报文,执行以下歩骤 步骤S1:硬件转发芯片査找第一转发表获得刷新的路由下一跳,将 业务报文通过连接接口板CPU的接口发送给接口板CPU进行处理;其中,该连接接口板CPU的接口 一般是直连接口板CPU的接口 ;由于本歩骤的实现基本沿用现有技术中修改路由表的实现方案,在此不再赘述;步骤S2:接口板CPU处理后的业务报文触发硬件转发芯片査找第二 转发表获得真实下一跳,通过出接口对处理后的业务报文进行三层硬件 转发;从上述步骤S2可以看出,相对于现有技术,无需接口板CPU进行 软件转发表的査询,而是在业务处理完成后,直接回送接口板硬件转发 芯片;同时,这一步骤S2是本发明实现硬件转发的关键,通过两次不同的 路由查询,避免报文重复上送问题,保证了硬件转发芯片对数据流的硬 件转发。其中,为了保证两次路由査询不同,我们可以通过MPLS标签 方式或者VPN绑定方式实现对第二转发表的触发,具体内容将在后续实 施例中加以详细讨论。通过上述图2所示实施例可以看出,本发明提供的实现数据流硬件转发 的方法可以实现真正意义上的硬件转发,即硬件转发芯片将数据流转发到接 口板CPU进行业务处理,且处理完成后能够重新通过硬件转发芯片进行三 层转发;其配置简便,无需在接口下大量配置ACL,有效的降低了配置及维 护的工作量和复杂度,由于配置简单所以不容易出错,同时降低了资源占用; 以及,CPU不参与转发,提高了转发性能。进一步的,上述实施例是以对接口板一个出接口的处理为例加以描 述的,但在实际应用中, 一个接口板会存在不止一个出接口,对于每一 个需要进行路由表配置的出接口,按照上述实施例提供的方式加以逐一 配置即可。当然,当对N个出接口进行配置时,第一转发表中相应路由 的下一跳都会被刷新,而第二转发表中也会配置相应路由的真实下一跳。再进一步的,上述第一转发表和第二转发表在下发之后还是在不断 更新的,也就是说,以本实施例所描述的出接口为例,对于后续学习到 的新的出接口为该出接口的路由,也作同样处理,将变更后的路由下刷 到第一转发表中,将真实路由下一跳下刷到第二转发表中;也就是说, 当指向所述出接口的路由发生变化时,触发更新所述第一转发表和第二 转发表,具体的更新操作可以由相应的软件模块完成。更进一步的,本发明采用针对接口板出接口进行硬件转发芯片处理的操作,相对于现有技术中ACL在入接口处加以配置,具有简便的效果; 具体来说,现有技术中ACL配置只能对入接口生效,也就是想要进行数据流的ACL重定向分类,必须在入接口进行ACL配置;而在实际应用中,入接口数量相当可观,而且也无法实现识别到底哪一个入接口会接收到哪一类数据流,因此逐一进行入接口 ACL配置对于本领域技术人员 而言,其难度显而易见,并由此导致配置冲突问题;相对的,需要进行 业务处理的出接口数目就极其有限;例如,对于NAT业务而言,其需要 进行业务处理的出接口只有与公网相连接的接口;对于VPN与VPN相 交互的业务,所需要进行业务处理的出接口只有连接另一个VPN的接口 , 因此配置的工作量将大为降低;由于这一优势在第二种现有技术中同样 得到体现,因此不再赘述;然而,ACL配置的思路仍然可以应用于本发明对于反向数据流的处 理中。对于反向数据流来说,上述出接口就变为入接口,仍以上述举例 而言,从公网发到接口板的数据流将通过所配置的出接口 (此时是接口 板的入接口)进入接口板,而从另一个VPN发到接口板的数据流也将通 过所配置的出接口 (此时是接口板的入接口)进入接口板;同时,原来 的入接口就相应变为出接口;从上面的描述可以看出,ACL是可以对入接口生效的,而上述反向 数据流的入接口数量也是极其有限的,因此较佳的实现方案为结合现有 技术的ACL技术,在针对出接口进行处理时同时进行反向配置, 一并解 决反向报文的转发问题,这个问题在后续的具体实施例中将进一步加以 描述。下面结合具体实施例对本发明提供的实现数据流硬件转发的方法加以 进一步说明。首先,介绍实现数据流硬件转发方法的一个具体实施例,其基于 MPLS标签方式实现数据流硬件转发。请结合图3A,显示了本具体实施例中进行硬件转发配置的步骤;由 于并不需要针对每一个出接口都进行硬件转发芯片的处理,因此是对于需要上送数据流到CPU进行IP业务处理的指定出接口 ,例如进行NAT变换时接口板与公网连接的出接口,触发相应的处理操作,如下(1) 刷新接口板硬件转发芯片的第一转发表,该第一转发表为硬件 转发芯片原有的路由转发表,其中,对于真实下一跳为该出接口的全部 路由,其下一跳被修改为连接接口板CPU的接口;同时,为上述每一个下一跳分配一个预留MPLS标签,该MPLS标签对应的下一跳为真实下 一跳;需要说明,该预留MPLS标签是专门保留的,不在接口板所在网络 路由设备的有效MPLS分配标签之内,以免造成MPLS标签冲突;同时, 该预留MPLS标签数目与出接口的直连下一跳数目对应;以及,对后续学到的新的出接口为该出接口的路由,同样做上述处理;(2) 向接口板的硬件转发芯片下发第二转发表,该第二转发表为 MPLS标签转发表,记录为第一转发表中被修改路由的MPLS标签,即 该MPLS标签转发表实际记录了该修改路由的真实下一跳;较佳的,该MPLS标签转发表中设置标签动作为倒数第二跳弹出 (PHP),以实现从处理后的业务报文中剥离相应的MPLS标签;以及,对后续学到的新的出接口为该出接口的路由,同样做上述处理。在针对出接口的硬件转发芯片处理完成后,当接口板收到业务报文时执行硬件转发处理流程,请结合图3B,如下(1)硬件转发芯片查找第一转发表,对于需要通过上述出接口输出的业务报文,所获得的下一跳为刷新的路由下一跳,即连接接口板CPU 的接口;同时,硬件转发芯片将为相应真实下一跳预留的MPLS标签压 入业务报文, 一起发送给接口板CPU;其中,为了实现上述压入操作,可以采取在第一路由表中指定下一 跳动作为压入MPLS标签的方案;当然,对于不需要通过上述出接口输出的报文, 一般为数据报文, 硬件转发芯片查找第一转发表获得的是真实路由下一跳,直接进行三层硬件转发即可;(2) 接口板CPU对业务报文加以处理并保留该MPLS标签,然后 向硬件转发芯片返回处理后的、携带MPLS标签的业务报文;(3) 进入接口板硬件转发芯片的是压入MPLS标签的业务报文,即 MPLS标签报文,因此会触发硬件转发芯片査找MPLS标签转发表获得 真实路由下一跳;为了保证转发的业务报文中没有多余的信息,还需要 从处理后的业务报文中剥离MPLS标签;具体的,该剥离MPLS标签的操作可以基于在MPLS标签转发表中 设置的PHP动作执行,也可以在硬件转发芯片中进行相应剥离设置;由于剥离MPLS标签后的业务报文被发往真实路由下一跳,因此报 文能够被正确的转发出去。从上述具体实施例可以看出,通过使用MPLS标签,能够保证从CPU 处理返回的数据流触发作为第二转发表的MPLS标签转发表,从而使前 后两次路由査询结果不同,既能够支持对于数据流的CPU业务处理,又 避免了数据流的重复上送问题,实现数据流的三层硬件转发。较佳的,可以在进行出接口配置时同时进行反向配置,具体包括对于CPU处理后发生地址变换的业务,在硬件转发芯片的第一转发 表中配置变换前地址的路由,其下一跳被配置为接口板CPU;.由于该第一转发表中原本就存在变换后地址的路由,其下二跳为真 实下一跳,因此无需重新配置;以NAT业务为例,由于反向返回报文的目的地址是地址池地址,因 此在第一转发表配置地址池地址的路由下一跳为连接接口板CPU的接 口,即在第一转发表中增加地址池路由的记录;在完成IP业务处理后, CPU将报文重新送入硬件转发芯片进行三层转发,此时由于目的地址已 经变换,所以路由查询不会有问题;对于CPU处理后不会发生地址变换的业务,反向配置可以通过ACL 重定向完成,反向数据流基于ACL分类重定向到接口板CPU进行业务 处理;式不会存在直接在入接口进行配置时工作量大的问题,同时这种方式没 有修改路由表,所以不存在重复上送的问题。可以看出,在出接口进行反向配置,在保证出接口数据流实现硬件 转发的同时,保证了反向返回数据流的硬件转发。由于在接口进行ACL 配置或者指定路由配置都属于现有技术,因此不再赘述;但是需要说明的是,上述出接口反向配置的实施例仅是本领域技术 人员可采取的反向配置手段的较佳实施方案,作为替代的,地址变换的业务同样也可以通过ACL重定向实现。下面以NAT业务为例,对上述提供的基于MPLS标签方式实现数据 流硬件转发方式加以描述。如图4所示,左边为内网,右边为因特网,中间为路由器,路由器 上有公网和内网的路由;出接口为1,我们假设这个接口 l有一个下一跳 为56.0.0.1,地址池为62.0.0.1 62.0.0.255;由于内网用户通过NAT上因 特网,因此对出接口l进行配置;当针对出接口 1进行硬件转发芯片处理时,对于原有转发表中路由 出接口为该接口的全部路由,将其下一跳出接口修改为连接接口板CPU 的接口,同时为下一跳56.0.0.1分配一个保留标签10000,下一跳动作为 压入标签,后续新生成的路由也做同样修改;同时下发MPLS标签转发表,创建一个MPLS标签的转发表项10000, 标签动作为PHP,下一跳为56.0.0.1;当报文10.0.0.1访问56.0.0.1时,报文到达路由器接口板,査询第一 转发表,发现下一跳出接口是上送CPU接口 ,同时下一跳需要压入MPLS 标签10000,于是报文将MPLS标签10000压入报文后上送CPU;接口板CPU保留MPLS标签10000, IP报文进行NAT变换后,假 设源IP变成62.0.0.1,发往硬件转发芯片进行三层转发;压入了 MPLS标签10000的业务报文触发硬件转发芯片进行MPLS 标签转发表查询,发现标签动作是PHP,则弹出标签,转发到对应的真 实下一跳56.0.0.1,报文被通过该出接口 l正确的转发出去。当同时在出接口 1上进行了反向配置后,对于反向的返回报文,其目的IP是62.0.0.1 ,査询路由表发现出接口是连接接口板CPU的接口 , 因此上送CPU;进行NAT变换后,目的IP变为10.0.0.1,发回硬件转发 芯片进行转发处理,查询路由转发表得到发往10.0.0.1的真实出接口。然后,介绍实现数据流硬件转发方法的另一个具体实施例,其基于 VPN绑定方式实现数据流硬件转发。请结合图5A,显示了本具体实施例中进行硬件转发配置的步骤;同 样对于需要上送数据流到CPU进行IP业务处理的指定出接口,例如进行 NAT变换时接口板与公网连接的出接口,触发相应的硬件转发芯片处理; 假设进行配置的出接口所在VLAN为VLANA,属于VPNA,配置如下(1) 刷新接口板硬件转发芯片的第一转发表,该第一转发表为硬件 转发芯片原有的路由转发表,其中,对于真实下一跳为该出接口的全部 路由,其下一跳被配置为连接接口板CPU的接口;同时,设置该被修改 路由出口 VLAN为第二 VLAN (例如,VLAN B),并为硬件转发芯片 连接接口板CPU的接口设置一个VLAN B子接口 ,该子接口为逻辑子接 口,通过接口号+VLANID组合确定;需要指出,该第二 VLAN应该是一个未被使用过的保留VLAN,以 避免后续的识别冲突;对后续学到的新的出接口为该出接口的路由,同样做上述处理;(2) 向接口板的硬件转发芯片下发第二转发表,该第二转发表为预 留VPN(例如VPNB)的路由转发表,记录了第一转发表中被修改路由 的真实下一跳,且出口 VLAN为第一 VLAN (VLAN A);同时,将该 VLANB子接口与该预留VPNB绑定;其中,该VPNB是未被使用的保留VPN;对后续学到的新的出接口为该出接口的路由,同样做上述处理。 作为一个替代方案,对于不支持VLAN子接口的硬件转发芯片,对 出接口进行业务配置的过程可以如下刷新接口板硬件转发芯片的第一转发表,该第二转发表为硬件转发芯片原有的路由转发表,其中,对于真实下一跳为该出接口的全部路由, 其下一跳被配置为连接接口板CPU的接口;同时,设置该被修改路由出口 VLAN为第二 VLAN (例如,VLAN B),配置硬件转发芯片连接接 口板CPU的接口属于VLANB,并创建第二 VLAN的虚接口,该虚接口 是硬件转发芯片的全局接口;同样的,该第二 VLAN应该是一个未被使用过的保留VLAN,以避 免后续的识别冲突;对后续学到的新的出接口为该出接口的路由,同样做上述处理; (2)向接口板的硬件转发芯片下发第二转发表,该第二转发表为预 留VPN(例如VPNB)的路由转发表,记录了第一转发表中被修改路由 的真实下一跳,且出口 VLAN为第一 VLAN (VLAN A);同时,将该 VLAN B虚接口与该预留VPN B绑定;其中,该VPNB是未被使用的保留VPN;对后续学到的新的出接口为该出接口的路由,同样做上述处理。 无论采用子接口方式,还是采用虚接口方式,在针对出接口的硬件转发芯片处理完成后,当接口板收到业务报文时执行硬件转发处理流程,请结合图5B,如下(1) 硬件转发芯片査找第一转发表,对于需要通过上述出接口输出 的业务报文获得刷新的路由下一跳,即连接接口板CPU的接口,通过该 接口将业务报文发送给接口板CPU进行处理;(2) 接口板CPU对业务报文加以处理,然后以VLAN B通过VLAN B子接口或者VLAN B虚接口向硬件转发芯片返回处理后的业务报文;(3) 由于VLAN B子接口或者VLAN B虚接口绑定的是VPN B, 因此触发査询VPNB对应的第二转发表,获得真实路由下一跳,即被配 置的出接口,因此报文能够被正确的转发出去,而不会被重复上送接口 板CPU。从上述具体实施例可以看出,通过使用VPN绑定,硬件转发芯片进 行两次三层路由转发,且前后两次路由査询结果不同,既能够支持对于 数据流的CPU业务处理,又避免了数据流的重复上送问题,实现数据流的三层硬件转发。较佳的,可以在进行出接口配置时同时进行反向配置,具体包括 对于CPU处理后发生地址变换的业务,在硬件转发芯片的第一转发 表中配置变换前地址的路由,其下一跳为连接接口板CPU的接口;当然, 对于CPU处理后发生地址变换的业务同样也可以通过ACL重定向实现;对于CPU处理后不会发生地址变换的业务,反向配置可以通过ACL 重定向完成,反向数据流基于ACL分类重定向到接口板CPU进行业务 处理;需要指出,这种情况下,需要为硬件转发芯片连接接口板CPU的 接口设置出接口真实路由所在VLAN的子接口 ,作为公网接口 ;可以看出,在出接口进行反向配置,在保证出接口数据流实现硬件 转发的同时,保证了反向返回数据流的硬件转发。由于在接口进行ACL 配置或者指定路由配置都属于现有技术,因此不再赘述。下面以NAT业务为例,对上述提供的基于VPN绑定方式实现数据 流硬件转发方式加以描述,仍采用图4所示NAT网络架构,其中,出接 口 1为VLAN1。当对出接口 1进行硬件转发芯片处理时,刷新第一转发表中路由下 一跳为接口l的全部路由,修改其下一跳为连接口板CPU的接口,同时 设置路由出VLAN为4000,后续新生成的路由也做同样修改;.在硬件转发芯片连接接口板CPU的接口创建一个VLAN4000子接 口,以及一个VLAN 1子接口作为公网接口;创建一个VPN, VPN ID为4000,将真实路由下发到VPN ID为4000 的路由转发表中,出VLAN为VLAN 1;将VLAN4000子接口绑定VPN4000;当报文10.0.0.1访问56.0.0.1时,报文到达路由器接口板,查询第一 转发表,发现下一跳出接口是按照VLAN4000上送CPU接口 ,.报文上送 CPU;接口板CPU进行NAT变换后,假设源IP变成62.0.0.1,.报文会通 过VLAN4000子接口重新发往硬件转发芯片进行三层转发;由于VLAN4000子接口绑定VPN4000,因此会查询VPN4000的路 由转发表,即第二转发表;由于VPN4000的路由转发表有真实的路由信 息,因此报文被通过接口1正确的转发出去。当同时在出接口 1上进行了反向配置后,对于反向的从接口 1返回 的报文,其目的IP是62.0.0.1,査询路由表发现出接口是CPU端口,上 送CPU,进行NAT变换后,目的IP变为10.0.0.1,以VLAN1发回硬件 转发芯片进行转发处理,查询公网路由转发表得到10.0.0.1真实出口。本领域普通技术人员可以理解实现上述方法实施例的全部或部分 步骤可以通过程序指令相关的硬件来完成,所述的程序可以存储于一计 算机可读取存储介质中,该程序在执行时,包括如下步骤针对接口板一出接口,对所述接口板硬件转发芯片执行以下步骤刷新所述接口板硬件转发芯片的第一转发表,其中,对于真实下一跳为所述出接口的全部路由,其下一跳被修改为连接接口板CPU的接口;以 及,向所述硬件转发芯片下发第二转发表,所述第二转发表记录所述第 一转发表中被修改路由的真实下一跳;对于需要通过所述出接口输出的业务报文,执行以下步骤 步骤S1:所述硬件转发芯片查找第一转发表获得刷新的路由下一跳,将所述业务报文通过连接接口板CPU的接口发送给接口板CPU进行处理;步骤S2:所述接口板CPU处理后的业务报文触发所述硬件转发芯片 查找第二转发表获得真实下一跳,通过所述出接口对所述处理后的业务 报文进行三层硬件转发;所述的存储介质包括ROM/RAM ( Read Only Memory/ Random-Access Memory,只读存储器/随机访问内存)、磁碟或者光盘等。下面,对本发明提供的实现数据流硬件转发的系统加以描述。 请结合图6,显示了本发明提供的实现数据流硬件转发的系统一实施例的框图,该实现数据流硬件转发的系统600用于对接口板出接口数据 流进行转发控制,包括接口板硬件转发芯片610,其设有转发控制单元611;接口板CPU620,用于对业务报文加以处理并向硬件转发芯片610返 回处理后的业务报文;出接口配置单元630,用于针对接口板出接口,刷新硬件转发芯片 610中的第一转发表612以及向硬件转发芯片610下发第二转发表613;第一转发表612,对于真实下一跳为接口板一出接口的全部路由, 其下一跳被修改为连接接口板CPU620的接口;第二转发表613,用于记录第一转发表612中被修改路由的真实下 一跳;设置在硬件转发芯片610中的第一转发表查询单元614,与第一转 发表612连接,用于査找第一转发表612,对于需要通过上述出接口输出 的业务报文获得刷新的路由下一跳,触发转发控制单元611将业务报文 通过连接接口板CPU的接口发送给接口板CPU620进行处理;当然,对于不需要通过上述出接口输出的报文, 一般为数据报文, 第一转发表査询单元614査找第一转发表612获得真实路由下一跳,并 触发转发控制单元611直接进行三层硬件转发。设置在硬件转发芯片610中的第二转发表査询单元615,与第二转发 表613连接,由所述处理后的业务报文触发,用于査找第二转发表613 获得真实下一跳,并触发转发控制单元611通过该出接口对处理后的业 务报文进行三层硬件转发。从本发明提供的实现数据流硬件转发的系统600中可以看出,第一 转发表査询单元614进行三层路由查询获得的,是上送接口板CPU620 进行业务处理的路由,从而实现数据流的业务处理;第二转发表查询单 元615进行三层路由查询获得的,是真实路由下一跳,从而实现数据流 的三层硬件转发。由于配置简便,无需在接口下大量配置ACL,有效的 降低了配置及维护的工作量和复杂度,由于配置简单所以不容易出错, 同时降低了资源占用;以及,CPU不参与转发,提高了转发性能。较佳的,上述第一转发表612和第二转发表613是在不断更新的, 即当指向所述出接口的路由发生变化时,出接口配置单元630可以触发 更新第一转发表612和第二转发表613。较佳的,还可以包括出接口反向配置单元640,用于对出接口进行反 向配置;其中,对于接口板CPU620处理后发生地址变换的业务,在硬 件转发芯片610的第一转发表612中配置变换前地址的路由,其下一跳 为连接接口板CPU的接口 ;变换后地址路由本来就存在于第一转发表612 中,其下一跳为真实路由下一跳;其中,对于接口板CPU620处理后发 生地址变换的业务,同样也可以通过ACL重定向实现,在此不再赘述;以及,对于接口板CPU620处理前后不发生地址变换的业务,可以 通过ACL重定向完成数据流到接口板CPU的处理。请参见图7,显示了本发明提供的实现数据流硬件转发的系统一具体 实施例的框图,该实现数据流硬件转发的系统700用于对接口板出接口 数据流进行转发控制。其中,接口板硬件转发芯片710、接口板CPU720、出接口配置单元 730,以及,转发控制单元711、第一转发表712、第二转发表713、第一 转发表査询单元714、第二转发表査询单元715的设置与图6所示实施例 相同。作为较佳实施例,接口配置单元730可以根据出接口的路由改变触 发更新第一转发表712和第二转发表713,以及,还可以包括出接口反向 配置单元740。其中,第二转发表713为MPLS标签转发表;MPLS标签转发表记 录出接口配置单元730为每一真实下一跳分配的预留MPLS标签,该 MPLS标签对应的下一跳为真实下一跳;为了实现前后两次路由査询的结果不同,在本具体实施例中,第一 转发表712记录下一跳动作包括压入MPLS标签;以及,转发控制单元711中设有标签压入模块711A,用于将为相应真实下 一跳预留的MPLS标签压入业务报文,以一起发送给接口板CPU720,使CPU720处理返回的业务报文能够触发MPLS标签转发表;为了保证转发出去的报文没有多余的信息,转发控制单元711中还设有标签弹出模块711B,用于在第二转发表査询单元715获得真实下一跳后,从处理后的业务报文中剥离所述MPLS标签;其中,可以在MPLS标签转发表713中设置标签动作为倒数第二跳弹出PHP,以触发标签弹出模块711B从处理后的业务报文中剥离所述MPLS标签。从图7所示具体实施例可以看出,通过使用MPLS标签,能够保证 从接口板CPU720处理返回的数据流触发作为第二转发表713的MPLS 标签转发表,从而使前后两次路由查询结果不同,既能够支持对于数据 流的CPU业务处理,又避免了数据流的重复上送问题,实现数据流的三 层硬件转发。请参见图8,显示了本发明提供的实现数据流硬件转发的系统一具体 实施例的框图,该实现数据流硬件转发的系统800用于对接口板出接口 数据流进行转发控制。其中,接口板硬件转发芯片810、接口板CPU820、出接口配置单元 830,以及,转发控制单元811、第一转发表812、第二转发表813、第一 转发表查询单元814、第二转发表査询单元815的设置与图6所示实施例 相同。作为较佳实施例,接口配置单元830可以根据出接口的路由改变触 发更新第一转发表812和第二转发表813,以及,还可以包括出接口反向 配置单元840。其中,第二转发表813为预留VPN的路由转发表;还包括 出接口配置单元830还包括子接口设置模块831 ,适用于硬件转发芯 片支持VLAN子接口的情况。该子接口设置模块831用于设置第一转发 表812内对应该出接口的修改后路由出口 VLAN为第二 VLAN,当然此 时其实际下一跳已经被修改为连接接口板CPU820的接口,设置预留VPN 的路由转发表813内对应该出接口的真实路由出口 VLAN为第一VLAN,以及,为硬件转发芯片810连接接口板CPU820的接口设置一个第二 VLAN子接口并与预留VPN绑定。出接口配置单元830还包括虚接口设置模块832,适用于硬件转发芯 片不支持VLAN子接口的情况。该虚接口设置模块832用于设置第一转 发表812内对应该出接口的修改后路由出口 VLAN为第二 VLAN,设置 预留VPN的路由转发表813内对应该出接口的真实路由出口 VLAN为第 一VLAN,以及,创建第二VLAN的虚接口并与该预留VPN绑定,配置 硬件转发芯片810连接接口板CPU820的接口属于该第二 VLAN。本领域普通技术人员可以了解,子接口设置模块831和虚接口设置 模块832可以根据硬件转发芯片810的实际情况只设置其中的一个,也 可以两个模块都设置,再根据实际情况选择性激活。从图8所示具体实施例可以看出,通过使用VPN绑定,硬件转发芯 片进行两次三层路由转发,且前后两次路由查询结果不同,既能够支持 对于数据流的CPU业务处理,又避免了数据流的重复上送问题,实现数 据流的三层硬件转发。本发明还提供了一种网络路由设备,其至少一个接口板设有如上所 述的实现数据流硬件转发的系统,通过在硬件转发芯片中进行两次三层 路由査询,实现数据流的CPU业务处理和硬件转发。虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术语是 说明和示例性、而非限制性的术语。由于本发明能够以多种形式具体实施而 不脱离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细 节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利 要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。
权利要求
1.一种实现数据流硬件转发的方法,其特征在于,包括针对接口板一出接口,对所述接口板硬件转发芯片执行以下步骤刷新所述硬件转发芯片的第一转发表,其中,对于真实下一跳为所述出接口的全部路由,其下一跳被修改为连接接口板CPU的接口;以及,向所述硬件转发芯片下发第二转发表,所述第二转发表记录所述第一转发表中被修改路由的真实下一跳;对于需要通过所述出接口输出的业务报文,执行以下步骤步骤S1所述硬件转发芯片查找第一转发表获得刷新的路由下一跳,将所述业务报文通过连接接口板CPU的接口发送给接口板CPU进行处理;步骤S2所述接口板CPU处理后的业务报文触发所述硬件转发芯片查找第二转发表获得真实下一跳,通过所述出接口对所述处理后的业务报文进行三层硬件转发。
2. 根据权利要求l所述的实现数据流硬件转发的方法,其特征在于, 所述第二转发表为多协议标签交换MPLS标签转发表;所述对接口板硬件转发芯片执行的步骤还包括为每一真实下一跳 分配一预留MPLS标签并记录在所述第二转发表内,该MPLS标签对应 的下一跳为真实下一跳;所述步骤SI还包括所述硬件转发芯片将为相应真实下一跳预留的 MPLS标签压入所述业务报文;所述步骤S2中硬件转发芯片査找第二转发表获得真实下一跳具体 为压入MPLS标签的业务报文触发所述硬件转发芯片査找所述MPLS 标签转发表,以及,在所述MPLS标签转发表中获得真实下一跳后,从 所述处理后的业务报文中剥离所述MPLS标签。
3. 根据权利要求1所述的实现数据流硬件转发的方法,其特征在于, 所述第二转发表为预留VPN的路由转发表;所述对接口銜硬件转发芯片 执行的步骤还包括设置第一转发表内对应所述出接口的修改后路由出口 VLAN为第二 VLAN,并为所述硬件转发芯片连接接口板CPU的接口设置一个第二 VLAN子接口;将所述第二 VLAN子接口与所述预留VPN绑定;以及,设置所述预留VPN的路由转发表内对应所述出接口的真实路 由出口 VLAN为第一 VLAN。
4. 根据权利要求1所述的实现数据流硬件转发的方法,其特征在于, 所述第二转发表为预留VPN的路由转发表;所述对接口板硬件转发芯片 执行的步骤还包括设置第一转发表内对应所述出接口的修改后路由的出口 VLAN为第 二 VLAN,创建第二 VLAN的虚接口并配置所述硬件转发芯片连接接口 板CPU的接口属于所述第二 VLAN;将所述第二 VLAN虚接口与所述预留VPN绑定;以及,设置为预留VPN的路由转发表内对应所述出接口的真实路由 出口 VLAN为第一 VLAN。
5. 根据权利要求1到4任一所述的实现数据流硬件转发的方法,其 特征在于,还包括对于不需要通过所述出接口输出的报文,所述硬件 转发芯片査找第一转发表获得真实路由下一跳并直接进行三层硬件转 发。
6. 根据权利要求1到4任一所述的实现数据流硬件转发的方法,其 特征在于,当指向所述出接口的路由发生变化时,触发更新所述第一转 发表和第二转发表。
7. 根据权利要求1到4任一所述的实现数据流硬件转发的方法,其 特征在于,对所述出接口进行反向配置,包括对于CPU处理后发生地址变换的业务,在硬件转发芯片的第一转发 表中配置变换前地址的路由,其下一跳为连接接口板CPU的接口;对于CPU处理前后不发生地址变换的业务,通过ACL重定向完成 数据流到接口板CPU的处理。
8. —种实现数据流硬件转发的系统,用于对接口板出接口数据流进行转发控制,包括接口板硬件转发芯片和接口板CPU,其中,所述接口 板硬件转发芯片设有转发控制单元,接口板CPU用于对业务报文加以处 理并向所述硬件转发芯片返回处理后的业务报文;其特征在于,还包括出接口配置单元,用于针对接口板出接口,刷新所述硬件转发芯片的第一转发表以及向所述硬件转发芯片下发第二转发表;第一转发表,对于真实下一跳为接口板一出接口的全部路由,其下一跳被修改为连接接口板CPU的接口 ;第二转发表,用于记录所述第一转发表中被修改路由的真实下一跳; 设置在硬件转发芯片中的第一转发表査询单元,与所述第一转发表连接,用于査找第一转发表,对于需要通过所述出接口输出的业务报文获得刷新的路由下一跳,触发转发控制单元将所述业务报文通过连接接口板CPU的接口发送给接口板CPU进行处理;设置在硬件转发芯片中的第二转发表査询单元,与所述第二转发表连接,由所述处理后的业务报文触发,用于査找第二转发表获得真实下一跳,并触发转发控制单元通过所述出接口对所述处理后的业务报文进行三层硬件转发。
9. 根据权利要求8所述的实现数据流硬件转发的系统,其特征在于, 所述第二转发表为多协议标签交换MPLS标签转发表;其中,所述MPLS标签转发表记录所述出接口配置单元为每一真实 下一跳分配的预留MPLS标签,所述MPLS标签对应的下一跳为真实下 一跳。所述第一转发表记录下一跳动作包括封装MPLS标签;以及, 所述转发控制单元中设有标签压入模块,用于将为相应真实下一跳预留的MPLS标签压入所述业务报文,以使CPU处理返回的压入MPLS标签的业务报文触发所述第二转发表査询单元;所述转发控制单元中还设有标签弹出模块,用于在所述第二转发表查询单元获得真实下一跳后,从所述处理后的业务报文中剥离所述MPLS标签。
10. 根据权利要求8所述的实现数据流硬件转发的系统,其特征在于,所述第二转发表为预留VPN的路由转发表;以及,出接口配置单元还包 括子接口设置模块,用于设置第一转发表内对应所述出接口的修改后路由出口 VLAN为第二 VLAN,设置所述预留VPN的路由转发表内对应所 述出接口的真实路由出口 VLAN为第一 VLAN,以及,为所述硬件转发 芯片连接接口板CPU的接口设置一个第二 VLAN子接口并与所述预留 VPN绑定。
11. 根据权利要求8所述的实现数据流硬件转发的系统,其特征在于, 所述第二转发表为预留VPN的路由转发表;以及,出接口配置单元还包 括虚接口设置模块,用于设置第一转发表内对应所述出接口的修改后路 由出口 VLAN为第二VLAN,设置所述预留VPN的路由转发表内对应所 述出接口的真实路由出口 VLAN为第一 VLAN,以及,创建第二 VLAN 的虚接口并与所述预留VPN绑定,配置所述硬件转发芯片连接接口板 CPU的接口属于所述第二 VLAN。
12. 根据权利要求8-11任一所述的实现数据流硬件转发的系统,其特 征在于,对于不需要通过所述出接口输出的报文,所述第一转发表查询 单元査找第一转发表获得真实路由下一跳,并触发所述转发控制单元直 接进行三层硬件转发。
13. 根据权利要求8-11任一所述的实现数据流硬件转发的系统,其特 征在于,当指向所述出接口的路由发生变化时,所述出接口配置单元触 发更新第一转发表和第二转发表。 '
14. 根据权利要求8-11任一所述的实现数据流硬件转发的系统,其特 征在于,还包括出接口反向配置单元,用于对所述出接口进行反向配置; 其中,对于CPU处理后发生地址变换的业务,在硬件转发芯片的第一转 发表中配置变换前地址的路由,其下一跳为连接接口板CPU的接口;以 及,对于CPU处理前后不发生地址变换的业务,通过ACL重定向完成 数据流到接口板CPU的处理。
15. —种网络路由设备,其特征在于,其至少一个接口板设有如权利 要求8-14任一所述的实现数据流硬件转发的系统。
全文摘要
本发明公开了一种实现数据流硬件转发的方法和系统,还公开了一种网络路由设备。该方法包括针对接口板一出接口,刷新硬件转发芯片的第一转发表并下发第二转发表,以及对于需要通过已配置的出接口输出的业务报文,执行以下步骤硬件转发芯片查找第一转发表获得刷新的路由下一跳,将业务报文通过连接接口板CPU的接口发送给接口板CPU进行处理;接口板CPU处理后的业务报文触发硬件转发芯片查找第二转发表获得真实下一跳,通过该出接口对处理后的业务报文进行三层硬件转发。通过本发明,实现硬件转发芯片将数据流转发到接口板CPU进行业务处理,且处理完成后能够重新通过硬件转发芯片进行三层转发;同时,配置简便,且提高了转发性能。
文档编号H04L12/56GK101404612SQ20081018004
公开日2009年4月8日 申请日期2008年11月20日 优先权日2008年11月20日
发明者卢胜文 申请人:杭州华三通信技术有限公司