一种保障报文硬件转发的方法及装置的制作方法

文档序号:7966327阅读:101来源:国知局
专利名称:一种保障报文硬件转发的方法及装置的制作方法
技术领域
本发明涉及数据通讯技术,尤指一种保障报文硬件转发的方法及装置。
背景技术
现有的三层交换机通常可以实现报文的硬件转发和软件转发。由于硬件转发具有很高的转发速度以及转发效率,因此三层交换机优先使用硬件转发。只有在不存在相应的硬件转发信息时,才会通过软件转发发送报文,同时在软件转发的过程中学习硬件转发信息,进而在下次转发相同报文时采用硬件转发。
软件转发单元为三层交换机中实现软件转发的单元,包括转发信息表(FIB)软件转发单元和地址解析协议(ARP)软件转发单元。FIB软件转发单元中包括FIB软件路由表,ARP软件转发单元中包括ARP软件路由表。FIB软件转发单元根据报文的目的IP地址查找FIB软件路由表获得报文的出接口和下一跳信息;ARP软件转发单元再根据查找得到的出接口和下一跳信息,查找自身的ARP软件路由表获得对应的二层封装信息,包括目的MAC地址、出端口信息等,实现报文的软件转发。
硬件转发单元为三层交换机中实现硬件转发的单元。硬件转发单元中存在硬件转发表,包括路由前缀(Prefix)表和下一跳(nexthop)表。硬件转发单元根据报文的目的IP地址查找路由前缀表获得指向nexthop表的下一跳指针,根据下一跳指针查找nexthop获得二层封装信息,进而实现报文的硬件转发。这里,Prefix表和nexthop表中的表项均能称为硬件路由表项。
硬件转发单元中的Prefix表项是通过ARP软件转发单元根据自身的ARP软件路由表项、以及FIB软件转发单元根据自身的FIB软件路由表项下发添加至硬件转发单元中的。
在硬件转发单元中由目的IP地址和子网掩码的位数唯一确定一个Prefix表项。这里,子网掩码的位数为用于设置子网号的点分十进制的位数。由于由ARP软件转发单元添加至硬件转发单元的Prefix表项的子网掩码位数均为32位,因此当FIB软件转发单元添加具有相同的目的IP地址以及32位子网掩码的Prefix表项时,则硬件转发单元的一个Prefix表项同时对应着FIB软件转发单元中的FIB软件路由表项、以及ARP软件转发单元中的ARP软件路由表项。
虽然,具有相同目的IP地址和32位子网掩码的ARP软件路由表项和FIB软件路由表项对应于相同的Prefix表项,但是由ARP软件转发单元根据ARP软件路由表项添加的Prefix表项,与由FIB软件转发单元根据FIB软件路由表项添加的Prefix表项,所对应的下一跳信息有可能不一样。由FIB软件转发单元下发的Prekfix表项对应的下一跳信息,可能指向与目的IP地址不同的其他IP地址;而由ARP软件转发单元下发的Prefix表项对应的下一跳信息,必定指向与目的IP地址相同的IP地址。
在硬件转发单元的Prefix表项同时对应着FIB软件转发单元中的FIB软件路由表项、和ARP软件转发单元中的ARP软件路由表项的情况下,如果FIB软件转发单元或ARP软件转发单元要删除自身与Prefix表项对应的软件路由表项时,也会同时删除硬件转发单元中所述软件路由表项对应的Prefix表项的情况。这样就会造成FIB软件转发单元或ARP软件转发单元中的一方还存在与Prefix表项对应的软件路由表项,而硬件转发单元中已经不存在相应的Prefix表项。在这种情况下,对于该Prefix表项的报文则不能再通过硬件进行转发,而只能通过软件转发。这样,不仅降低了三层交换机的转发效率,而且也给三层交换机的中央处理器(CPU)造成了沉重的负担,特别是在该Prefix表项对应的报文流量较高的情况下,对应报文的转发效率会降低,甚至会影响三层交换机的正常工作状态。

发明内容
有鉴于此,本发明的主要目的在于提供一种保障报文硬件转发的方法,应用该方法能使软件路由表项始终存在对应的硬件路由表项,保障报文的硬件转发。
另外,本发明的又一主要目的在于提供一种保障报文硬件转发的装置,应用该装置能使软件路由表项在硬件转发单元中始终存在对应的硬件路由表项,保障报文的硬件转发。
为达到上述目的,本发明的技术方案是这样实现的一种保障报文硬件转发的方法,执行以下步骤A、删除硬件路由表项,判断所述硬件路由表项对应的软件路由表项是否存在冲突,当所述硬件路由表项对应的软件路由表项存在冲突时,确保所述存在冲突的软件路由表项存在对应的硬件路由表项。
其中,第一软件转发单元在硬件转发单元中执行所述删除硬件路由表项的步骤;当第一软件转发单元删除硬件路由表项后,该方法进一步包括第一软件转发单元指示第二软件转发单元向硬件转发单元添加所述硬件路由表项;由第二软件转发单元执行所述判断的步骤。
其中,所述第一软件转发单元在硬件转发单元中执行所述删除硬件路由表项的步骤为第一软件转发单元指示硬件转发单元删除硬件路由表项,硬件转发单元判断所述硬件路由表项是否为第一软件转发单元添加,如果是,则硬件转发单元删除所述硬件路由表项;否则,硬件转发单元不删除所述硬件路由表项,结束当前处理流程。
其中,所述第二软件转发单元判断硬件路由表项对应的软件路由表项是否存在冲突为第二软件转发单元判断自身是否存在与所述硬件路由表项对应的软件路由表项,如果是,则第二软件转发单元将所述硬件路由表项添加至硬件转发单元;否则,不添加所述硬件路由表项至硬件转发单元。
其中,第一软件转发单元在硬件转发单元中执行所述删除硬件路由表项的步骤;第一软件转发单元在删除硬件路由表项后,执行所述判断的步骤。
其中,所述确保存在对应的硬件路由表项为第一软件转发单元指示第二软件转发单元添加所述硬件路由表项至硬件转发单元。
另外,在步骤A之前,该方法进一步包括a2、添加硬件路由表项确定所述硬件路由表项存在冲突时,对所述硬件路由表项对应的软件路由表项设置冲突标记;所述第一软件转发单元判断硬件路由表项对应的软件路由表项是否存在冲突为判断硬件路由表项对应的软件路由表项是否设置冲突标记,如果设置冲突标记,则所述软件路由表项存在冲突。
其中,第一软件转发单元在硬件转发单元中执行所述删除硬件路由表项的步骤;第一软件转发单元在删除硬件路由表项之前,执行所述判断的步骤。
其中,设置第一软件转发单元和第二软件转发单元的优先级;所述确保存在对应的硬件路由表项为,执行以下步骤A31、第一软件转发单元判断自身的优先级是否高于第二软件转发单元,如果是,则执行步骤A32;否则,第一软件转发单元不删除所述硬件路由表项,结束当前处理流程。
A32、第一软件转发单元删除所述硬件路由表项,并指示第二软件转发单元重新添加所述硬件路由表项至硬件转发单元。
另外,在步骤A之前,该方法进一步包括a3、添加硬件路由表项确定所述硬件路由表项存在冲突时,确定优先级高的软件转发单元添加硬件路由表项至硬件转发单元,对所述硬件路由表项对应的软件路由表项设置冲突标记;所述第一软件转发单元判断硬件路由表项对应的软件路由表项是否存在冲突为判断硬件路由表项对应的软件路由表项是否设置冲突标记,如果设置冲突标记,则所述软件路由表项存在冲突。
其中,步骤a3中,所述确定优先级高的软件转发单元添加硬件路由表项至硬件转发单元为判断自身的优先级是否高于另一软件转发单元,如果是,则指示另一软件转发单元删除硬件转发单元中的所述硬件路由表项,并将自身所述硬件路由表项添加至硬件转发单元;否则,不执行将自身所述硬件路由表项添加至硬件转发单元的操作。
其中,步骤a2中及步骤a3中,所述确定所述硬件路由表项存在冲突为向硬件转发单元添加硬件路由表项时,硬件转发单元返回冲突响应,则确定所述硬件路由表项对应的软件路由表项存在冲突。
其中,所述第一软件转发单元为ARP软件转发单元,第二软件转发单元为FIB软件转发单元;或第一软件转发单元为FIB软件转发单元,第二软件转发单元为ARP软件转发单元。
另外,本发明还提供一种保障报文硬件转发的装置,该装置包括软件转发单元和硬件转发单元;其中,软件转发单元用于在删除硬件转发单元中的硬件路由表项时,判断所述硬件路由表项对应的软件路由表项是否存在冲突;在所述硬件路由表项对应的软件路由表项存在冲突时,确保硬件转发单元中存在所述存在冲突的软件路由表项对应的硬件路由表项。
其中,所述软件转发单元包括第一软件转发单元和第二软件转发单元;其中,第一软件转发单元,用于删除硬件转发单元中的硬件路由表项,并指示第二软件转发单元添加所述硬件路由表项至硬件转发单元;第二软件转发单元,用于判断所述硬件路由表项对应的软件路由表项是否存在冲突,在所述硬件路由表项对应的软件路由表项存在冲突时,添加所述硬件路由表项至硬件转发单元。
其中,所述软件转发单元包括第一软件转发单元和第二软件转发单元;其中,
第一软件转发单元,用于删除硬件转发单元中的硬件路由表项,并判断所述硬件路由表项对应的软件路由表项是否存在冲突;在所述硬件路由表项对应的软件路由表项存在冲突时,指示第二软件转发单元添加所述存在冲突的软件路由表项对应的硬件路由表项至硬件转发单元;第二软件转发单元,用于添加所述硬件路由表项至硬件转发单元。
其中,所述软件转发单元包括第一软件转发单元和第二软件转发单元;其中,第一软件转发单元,用于在删除硬件路由表项时,判断所述硬件路由表项对应的软件路由表项是否存在冲突、以及自身与第二软件转发单元的优先级高低;当所述硬件路由表项对应的软件路由表项不存在冲突时,删除硬件转发单元中所述硬件路由表项;当所述硬件路由表项对应的软件路由表项存在冲突,并且自身优先级高于第二软件转发单元时,删除硬件转发单元中所述硬件路由表项,并指示第二软件转发单元添加所述硬件路由表项至硬件转发单元;当所述硬件路由表项对应的软件路由表项存在冲突,并且自身优先级不高于第二软件转发单元时,不删除硬件转发单元中所述硬件路由表项;第二软件转发单元,用于根据第一软件转发单元的指示添加所述硬件路由表项至硬件转发单元。
其中,所述第一软件转发单元,进一步用于在添加硬件路由表项、确定所述硬件路由表项存在冲突时,判断自身与第二软件转发单元优先级的高低;当自身优先级高于第二软件转发单元时,则指示第二软件转发单元删除硬件转发单元中的所述硬件路由表项,并将自身所述硬件路由表项添加至硬件转发单元;当自身优先级不高于第二软件转发单元时,不执行添加所述硬件路由表项的操作;第二软件转发单元,进一步用于根据第一软件转发单元的指示删除硬件转发单元中的所述硬件路由表项。
本发明所提供的一种保障报文硬件转发的方法,通过删除硬件转发单元中的硬件路由表项时,判断所述硬件路由表项是否存在冲突,当所述硬件路由表项存在冲突时,确定硬件转发单元中存在所述硬件路由表项,始终保持软件路由表项在硬件转发单元中存在对应的硬件路由表项。另外,本发明还提供了一种保障报文硬件转发的装置。应用本发明所提供的方法及装置,能够保证软件路由表项在硬件转发单元中始终存在对应的硬件路由表项,保证报文的硬件转发,保证三层交换机的转发效率,减少CPU的负荷。


图1为本发明装置的结构图;图2为本发明第一较佳实施例方法的流程图;图3为本发明第一较佳实施例装置的结构图;图4为本发明第二较佳实施例方法的流程图;图5为本发明第二较佳实施例一添加硬件路由表项方法的流程图;图6为本发明第二较佳实施例又一添加硬件路由表项方法的流程图;图7为本发明第三较佳实施例一添加硬件路由表项方法的流程图;图8为本发明第三较佳实施例又一添加硬件路由表项方法的流程图;图9为本发明第三较佳实施例方法的流程图。
具体实施例方式
本发明的核心思想是删除硬件转发单元中的硬件路由表项时,判断所述硬件路由表项是否存在冲突,当所述硬件路由表项存在冲突时,确定硬件转发单元中存在所述硬件路由表项。
这里所述确定硬件转发单元中存在所述硬件路由表项包括两种方法第一种为第一软件转发单元删除硬件转发单元中的硬件路由表项后,指示第二软件转发单元,向硬件转发单元重新下发所述硬件路由表项;第二种为第一软件转发单元不删除所述硬件路由表项,仅删除自身对应的软件路由表项,则硬件转发单元中仍然存在所述硬件路由表项。总而言之,即当要删除的硬件路由表项存在冲突时,保障硬件转发单元中存在与软件路由表项对应的硬件路由表项。
其中,所述的第一软件转发单元和第二软件转发单元为存在冲突的硬件路由表项所对应两个软件转发单元。所述的第一软件转发单元可以是FIB软件转发单元,相应的第二软件转发单元是ARP软件转发单元;或所述的第一软件转发单元为ARP软件转发单元,相应的第二软件转发单元为FIB软件转发单元。
相应的,本发明装置的结构如图1所示,包括软件转发单元11和硬件转发单元12。这里,软件转发单元11用于在删除硬件转发单元12中的硬件路由表项时,判断所述硬件路由表项是否存在冲突;在所述硬件路由表项存在冲突时,确定硬件转发单元12中存在所述硬件路由表项。
为使本发明的目的、技术方案及优点更加清楚明白,以下举三个较佳实施例对本发明的技术方案做进一步的详细说明。
在本发明三个较佳实施例的介绍中,均以硬件路由表项为Prefix表项进行介绍。
这里,第一较佳实施例主要描述的是,当第一软件转发单元删除硬件转发单元中的Prefix表项后,指示第二软件转发单元重新添加Prefix表项,当所述Prefix表项存在冲突时,第二软件转发单元则重新添加Prefix表项至硬件转发单元。
第二较佳实施例主要描述的是在添加Prefix表项发现冲突时,针对所述Prefix表项设置冲突标记;在第一软件转发单元删除Prefix表项后,判断所述Prefix表项是否设置冲突标记,当所述Prefix表项设置了冲突标记,则第一软件转发单元指示第二软件转发单元添加所述Prefix表项至硬件转发单元。
第三较佳实施例主要描述的是设置第一软件转发单元以及第二软件转发单元的优先级,当添加Prefix表项发现冲突时,确定优先级高的软件转发单元添加的Prefix表项保存于硬件转发单元中,并针对所述Prefix表项设置冲突标记;当第一软件转发单元删除Prefix表项时,判断所述Prefix表项以及自身优先级的高低,从而确定存储于硬件转发单元的Prefix表项。
以下分别针对这三个较佳实施例进行详细说明。
第一较佳实施例在本实施例中,以ARP软件转发单元为第一软件转发单元,相应的第二软件转发单元为FIB软件转发单元,以ARP软件转发单元删除1.1.1.3/32软件路由表项对应的1.1.1.3/32Prefix表项为例进行说明。
其中,硬件转发单元由于生产厂商不一样,因此导致硬件转发单元的设置也不尽相同,主要包括添加覆盖以及删除保护。所述添加覆盖为在后添加的Prefix表项,覆盖在先添加的Prefix表项;删除保护为由第一软件转发单元添加的Prefix表项只允许由第一软件转发单元删除,不允许第二软件转发单元删除。
本实施例中不涉及添加Prefix表项的过程,因此首先介绍硬件转发单元支持删除保护的情况。
当ARP软件转发单元删除1.1.1.3/32软件路由表项时,也要在硬件转发单元中删除与1.1.1.3/32软件路由表项对应的1.1.1.3/32Prefix表项,具体过程如图2所示步骤201ARP软件转发单元指示硬件转发单元删除1.1.1.3/32Prefix表项。
步骤202硬件转发单元判断1.1.1.3/32Prefix表项是否由ARP软件转发单元添加,如果是,则执行步骤204;否则,执行步骤203。
步骤203硬件转发单元拒绝ARP软件转发单元删除1.1.1.3/32Prefix表项,并向ARP软件转发单元返回错误消息,执行步骤208。
步骤204硬件转发单元删除1.1.1.3/32Prefix表项,并向ARP软件转发单元返回成功指示。
当硬件转发单元不支持删除保护,则硬件转发单元不必执行步骤202和203,当收到ARP软件转发单元的指示后,删除所述1.1.1.3/32Prefix表项。
步骤205ARP软件转发单元指示FIB软件转发单元向硬件转发单元下发自身当前删除的1.1.1.3/32Prefix表项。
步骤206FIB软件转发单元判断1.1.1.3/32Prefix表项是否存在冲突,如果是,执行步骤207;否则,步骤208。
FIB软件转发单元判断自身是否存在与所述Prefix表项对应的软件路由表项,即判断自身是否存在目的IP地址与Prefix表项目的IP地址相同、并且具有32位子网掩码的FIB软件路由表项,如果存在,则所述Prefix表项存在冲突。
步骤207FIB软件转发单元添加1.1.1.3/32Prefix表项至硬件转发单元。
步骤208结束当前处理流程。
在本实施例的介绍中,ARP软件转发单元为第一软件转发单元,FIB软件转发单元为第二软件转发单元;当第一软件转发单元为FIB软件转发单元,第二软件转发单元为ARP软件转发单元时,同样可以使用本实施例所述的方法,在此不再详述。
与本实施例方法对应的删除Prefix表项装置的结构如图3,包括软件转发单元31和硬件转发单元32,其中软件转发单元31包括第一软件转发单元311和第二软件转发单元312。
其中,所述第一软件转发单元311,用于删除硬件转发单元32中的Prefix表项,并指示第二软件转发单元312添加所述Prefix表项至硬件转发单元32。
第二软件转发单元312,用于判断所述Prefix表项是否存在冲突,在所述Prefix表项存在冲突时,添加所述Prefix表项至硬件转发单元32。
这里,第一软件转发单元为ARP软件转发单元,相应的第二软件转发单元为FIB软件转发单元;或者第二软件转发单元为FIB软件转发单元,相应的第二软件转发单元为ARP软件转发单元。
第二较佳实施例在本实施例中,ARP软件转发单元或FIB软件转发单元在向硬件转发单元添加Prefix表项时,发现硬件转发单元中已经存在与所述要添加的Prefix表项相同的Prefix表项,则在自身与当前要添加的Prefix表项对应的软件路由表项上设置冲突标记。
在本实施例中,ARP软件转发单元为第一软件转发单元,相应的第二软件转发单元为FIB软件转发单元,以ARP软件转发单元删除1.1.1.3/32软件路由表项对应的1.1.1.3/32Prefix表项为例进行说明。在此,假设硬件转发单元支持删除保护。
本实施例方法的具体过程如图4所示,包括以下步骤步骤401ARP软件转发单元指示硬件转发单元删除1.1.1.3/32Prefix表项。
步骤402硬件转发单元判断1.1.1.3/32Prefix表项是否由ARP软件转发单元添加,如果是,则执行步骤404;否则,执行步骤403。
步骤403硬件转发单元拒绝ARP软件转发单元删除1.1.1.3/32Prefix表项,并向ARP软件转发单元返回错误消息,执行步骤408。
步骤404硬件转发单元删除1.1.1.3/32Prefix表项,并向ARP软件转发单元返回成功指示。
当硬件转发单元不支持删除保护,则硬件转发单元不必执行步骤402和403,当收到软件转发单元的指示后,删除所述1.1.1.3/32Prefix表项。
步骤405ARP软件转发单元判断当前删除的1.1.1.3/32Prefix表项对应的软件路由表项是否设置了冲突标记,如果是,执行步骤406;否则,执行步骤408。
步骤406ARP软件转发单元指示FIB软件转发单元向硬件转发单元下发自身当前删除的1.1.1.3/32Prefix表项。
步骤407FIB软件转发单元添加1.1.1.3/32Prefix表项至硬件转发单元。
步骤408结束当前处理流程。
与本实施例方法对应的删除Prefix表项装置的结构与图3所示的装置结构相同,包括软件转发单元和硬件转发单元,其中软件转发单元包括第一软件转发单元和第二软件转发单元。
其中,所述第一软件转发单元,用于删除硬件转发单元中的Prefix表项,并判断所述Prefix表项是否存在冲突;在所述Prefix表项存在冲突时,指示第二软件转发单元添加所述Prefix表项至硬件转发单元;第二软件转发单元,用于添加所述Prefix表项至硬件转发单元。
这里,第一软件转发单元为ARP软件转发单元,相应的第二软件转发单元为FIB软件转发单元;或者第二软件转发单元为FIB软件转发单元,相应的第二软件转发单元为ARP软件转发单元。
其中,本实施例中发现Prefix表项存在冲突的添加Prefix表项的方法有两种,分别如图5和图6所示。
在图5、图6所示的流程中,均以ARP软件转发单元下发1.1.1.3/32Prefix表项为例。这里主要以硬件转发单元不支持添加覆盖为例进行说明。
图5所示的流程为步骤501ARP软件转发单元在添加1.1.1.3/32Prefix表项时,检查FIB软件转发单元是否存在与当前要添加的1.1.1.3/32Prefix表项对应的软件路由表项,如果存在,执行步骤502;如果不存在,执行步骤503。
这里,ARP软件转发单元检查FIB软件转发单元是否存在与当前要添加的1.1.1.3/32Prefix表项对应的软件路由表项为,检查是否存在目的IP地址与Prefix表项目的IP地址相同、并且具有32位子网掩码的FIB软件路由表项,如果存在,执行步骤502;如果不存在,执行步骤503。
步骤502ARP软件转发单元不将1.1.1.3/32Prefix表项添加至硬件转发单元;同时,在自身与当前要添加的Prefix表项对应的软件路由表项上设置冲突标记,并指示FIB软件转发单元在所述软件路由表项上设置冲突标记。结束当前处理流程。
步骤501说明FIB软件转发单元已将1.1.1.3/32Prefix表项下发至硬件转发单元,因此在硬件转发单元不支持覆盖的情况下,ARP软件转发单元不将当前1.1.1.3/32Prefix表项添加至硬件转发单元。
如果在硬件转发单元支持添加覆盖的情况下,ARP软件转发单元可以选择将1.1.1.3/32Prefix表项添加至硬件转发单元,也可以选择不将1.1.1.3/32Prefix表项添加至硬件转发单元。
步骤503ARP软件转发单元将1.1.1.3/32Prefix表项添加至硬件转发单元。
图6的流程为步骤601ARP软件转发单元向硬件转发单元添加1.1.1.3/32Prefix表项。
步骤602硬件转发单元判断自身是否已经添加了当前ARP软件转发单元要添加的1.1.1.3/32Prefix表项,如果是,则执行步骤604;否则,执行步骤603。
步骤603硬件转发单元添加1.1.1.3/32Prefix表项,执行步骤606。
步骤604硬件转发单元不添加ARP软件转发单元当前要添加的1.1.1.3/32Prefix表项,向ARP软件转发单元返回冲突指示。
当硬件转发单元支持添加覆盖时,则处理过程为硬件转发单元不论自身是否与1.1.1.3/32Prefix表项对应的硬件路由表项,都添加1.1.1.3/32Prefix表项。但是在存在当前要添加的1.1.1.3/32Prefix表项对应的硬件路由表项时,用当前的1.1.1.3/32Prefix表项覆盖在先的硬件路由表项,并向ARP软件转发单元返回冲突指示,接着执行步骤605。
步骤605ARP软件路由表项在自身与当前要添加的Prefix表项对应的软件路由表项上设置冲突标记,并指示FIB软件转发单元在与当前Prefix表项对应的自身的软件路由表项上设置冲突标记。
步骤606结束当前处理流程。
以上对图4、5和6的介绍是以ARP软件转发单元为第一软件转发单元,FIB软件转发单元为第二软件转发单元进行说明。当第一软件转发单元为FIB软件转发单元,第二软件转发单元为ARP软件转发单元时,具体的流与图4、5和6所述的流程相同,在此不再详述。
第三较佳实施例在本实施例中,考虑到硬件转发单元只能对32位掩码路由进行直接处理,而ARP软件转发单元下发的Prefix表项均为32位掩码,因此可以进一步设置ARP软件转发单元和FIB软件转发单元的优先级,并且ARP软件转发单元的优先级高于FIB软件转发单元优先级。根据设置的ARP软件转发单元以及FIB软件转发单元的优先级确定在发生添加冲突时,保留优先级高的软件转发单元下发的Prefix表项,因此,在ARP软件转发单元的优先级高于FIB软件转发单元的优先级时,始终保留的是ARP软件转发单元添加的Prefix表项。
在本实施例中主要描述的是ARP软件转发单元的优先级高于FIB软件转发单元的情况,当然根据实际的情况还可以设置FIB软件转发单元的优先级高于ARP。
与第二较佳实施例相同,存在两种添加Prefix表项的方法。在此,以硬件转发单元不支持添加覆盖为例进行说明,具体如图7和图8所示,现分别介绍如下图7的流程为步骤701ARP软件转发单元在添加1.1.1.3/32Prefix表项时,检查FIB软件转发单元是否存在与当前要添加的1.1.1.3/32Prefix表项对应的软件路由表项,如果是,则执行步骤703;否则,执行步骤702。
步骤702ARP软件转发单元将1.1.1.3/32Prefix表项添加至硬件转发单元,执行步骤708。
步骤703ARP软件转发单元判断自身的优先级是否比FIB软件转发单元高,如果是,则执行步骤705;否则,执行步骤704。
根据步骤701的判断可知,FIB软件转发单元存在与当前要添加的1.1.1.3/32Prefix表项对应的软件路由表项,因此说明FIB软件转发单元已将1.1.1.3/32Prefix表项下发至硬件转发单元。
步骤704ARP软件转发单元取消将1.1.1.3/32Prefix表项添加至硬件转发单元。同时,ARP软件转发单元在自身与当前要添加的Prefix表项对应的软件路由表项上设置冲突标记,并指示FIB软件转发单元在与当前Prefix表项对应的自身的软件路由表项上设置冲突标记。执行步骤708。
在本实施例设置ARP软件转发单元的优先级高于FIB软件转发单元优先级时,本步骤是不会出现的。但是,在某些特殊的环境下,还是有可能将FIB软件转发单元的优先级设置高于ARP软件转发单元,因此步骤704也是可能存在的情况。
步骤705ARP软件转发单元在自身与当前要添加的Prefix表项对应的软件路由表项上设置冲突标记,指示FIB软件转发单元在所述软件路由表项上设置冲突标记,同时指示FIB软件转发单元删除1.1.1.3/32Prefix表项。
步骤706FIB软件转发单元删除1.1.1.3/32Prefix表项,并向ARP软件转发单元指示自身已经成功删除1.1.1.3/32Prefix表项。
步骤707ARP软件转发单元添加1.1.1.3/32Prefix表项至硬件转发单元。
当硬件转发单元支持添加覆盖时,ARP软件转发单元则不必执行步骤705和706,而是在自身与当前要添加的Prefix表项对应的软件路由表项上设置冲突标记,并指示FIB软件转发单元在所述软件路由表项上设置冲突标记后,直接执行步骤707。
步骤708结束当前处理流程。
图8的流程为步骤801ARP软件转发单元向硬件转发单元添加1.1.1.3/32Prefix表项。
步骤802硬件转发单元判断自身是否已经添加了当前ARP软件转发单元要添加的1.1.1.3/32Prefix表项,如果是,则执行步骤804;否则,执行步骤803。
步骤803硬件转发单元添加1.1.1.3/32Prefix表项,执行步骤810。
步骤804硬件转发单元不添加ARP软件转发单元当前要添加的1.1.1.3/32Prefix表项,向ARP软件转发单元返回冲突指示。
步骤805ARP软件转发单元判断自身的优先级是否比FIB软件转发单元优先级高,如果是,则执行步骤807;否则,执行步骤806。
根据步骤802的判断可知,FIB软件转发单元已将1.1.1.3/32Prefix表项添加至硬件转发单元。
步骤806ARP软件转发单元取消将1.1.1.3/32Prefix表项添加至硬件转发单元。同时,ARP软件转发单元在自身与当前要添加的Prefix表项对应的软件路由表项上设置冲突标记,并指示FIB软件转发单元在与当前Prefix表项对应的自身的软件路由表项上设置冲突标记。执行步骤810。
步骤807ARP软件转发单元在自身与当前要添加的Prefix表项对应的软件路由表项上设置冲突标记,指示FIB软件转发单元在所述软件路由表项上设置冲突标记,同时指示FIB软件转发单元删除1.1.1.3/32Prefix表项。
步骤808FIB软件转发单元删除1.1.1.3/32Prefix表项,并向ARP软件转发单元指示自身已经成功删除1.1.1.3/32Prefix表项。
步骤809ARP软件转发单元添加1.1.1.3/32Prefix表项至硬件转发单元。
步骤810结束当前处理流程。
在本实施例中,同样以ARP软件转发单元为第一软件转发单元,以删除1.1.1.3/32软件路由表项对应的1.1.1.3/32Prefix表项为例进行说明,相应的FIB软件转发单元为第二软件转发单元。在此,硬件转发单元是否支持删除保护不对本实施例产生影响。本实施例的具体过程如图9所示,详细介绍如下步骤901ARP软件转发单元在删除与1.1.1.3/32软件路由表项对应的1.1.1.3/32Prefix表项之前,判断该1.1.1.3/32软件路由表项是否设置了冲突标记,如果是,则执行步骤903;否则,执行步骤902。
步骤902ARP软件转发单元指示硬件转发单元删除当前1.1.1.3/32Prekfix表项,硬件转发单元删除当前ARP表项,执行步骤908。
步骤903判断自身的优先级是否高于FIB软件转发单元的优先级,如果是,则执行步骤905;否则,执行步骤904。
步骤904ARP软件转发单元取消删除硬件转发单元中的1.1.1.3/32Prefix表项,并通知FIB软件转发单元清除该1.1.1.3/32Prefix表项对应的软件路由表项的冲突标记,执行步骤908。
步骤905ARP软件转发单元指示硬件转发单元删除当前1.1.1.3/32Prefix表项,硬件转发单元删除当前ARP表项。
步骤906ARP软件转发单元通知FIB软件转发单元向硬件转发单元下发当前自身删除的1.1.1.3/32Prefix表项。
步骤907FIB软件转发单元将1.1.1.3/32软件路由表项添加至硬件转发单元中,并删除自身1.1.1.3/32软件路由表项设置的冲突标记。
步骤908结束当前处理流程。
以上对图7、8和9的介绍是以ARP软件转发单元为第一软件转发单元,FIB软件转发单元为第二软件转发单元进行说明。当第一软件转发单元为FIB软件转发单元,第二软件转发单元为ARP软件转发单元时,具体的流程与图7、8和9所述的流程相同,在此不再详述。
本实施例方法对应的装置结构与图3所示的装置结构图相同,包括软件转发单元和硬件转发单元,其中软件转发单元包括第一软件转发单元和第二软件转发单元。
其中,所述第一软件转发单元,用于判断所述Prefix表项是否存在冲突、以及自身与第二软件转发单元的优先级高低;当所述Prefix表项不存在冲突时,删除硬件转发单元中所述Prefix表项;当所述Prefix表项存在冲突,并且自身优先级高于第二软件转发单元时,删除硬件转发单元中所述Prefix表项,并指示第二软件转发单元添加所述Prefix表项至硬件转发单元;当所述Prefix表项存在冲突,并且自身优先级不高于第二软件转发单元时,不删除硬件转发单元中所述Prefix表项。
第二软件转发单元,用于根据第一软件转发单元的指示添加所述Prefix表项至硬件转发单元。
这里,为了实现根据优先级添加Prefix表项的操作,所述第一软件转发单元,进一步用于在添加Prefix表项、确定所述Prefix表项存在冲突时,判断自身与第二软件转发单元优先级的高低;当自身优先级高于第二软件转发单元时,则指示第二软件转发单元删除硬件转发单元中的所述Prefix表项,并将自身所述Prefix表项添加至硬件转发单元;当自身优先级不高于第二软件转发单元时,不执行添加所述Prefix表项的操作;第二软件转发单元,进一步用于根据第一软件转发单元的指示删除硬件转发单元中的所述Prefix表项。
这里,第一软件转发单元为ARP软件转发单元,相应的第二软件转发单元为FIB软件转发单元;或者第二软件转发单元为FIB软件转发单元,相应的第二软件转发单元为ARP软件转发单元。
在本发明中主要介绍的是,硬件转发表包括Prefix表和nexthop表的情况,主要针对Prefix表中表项发生冲突的情况。对于不同三层交换机中的硬件转发单元,其中硬件转发表的组织形式也不尽相同。本发明所述的方法及装置同样适用于其他硬件转发表的组织形式,例如硬件转发表包括Prefix表和主机路由表的情况。
在这种硬件转发表的组织形式中,主机路由表中包含二层转发信息,三层交换机在进行硬件转发时,优先查找主机路由表,如果存在相应的表项,则可以直接获得二层封装信息转发报文;如果不存在相应的表项,则在查找Prefix表,根据Prefix表指示的下一跳,再查找主机路由表,获得二层封装信息转发报文。
当硬件转发表包括Prefix表和主机路由表时,ARP软件转发单元不再Prefix表下发Prefix表项,而向主机路由表中下发Prefix表项;同时,FIB软件转发单元也将自身具有32位掩码的Prefix表项下发至主机路由表,因此主机路由表中的表项也同样会存在冲突的问题。因此,本发明所提供的删除Prefix表项的方法及装置同样适用于主机路由表中的表项。
另外,当由多个软件转发单元向硬件转发单元下发同一个硬件路由表项时,例如,存在三个软件转发单元向主机路由表下发主机路由表项,也可以按照本发明的核心思想去处理。
总之,本发明所提供的方法及装置能适用于任何删除硬件路由表项的情况,特别是删除发生冲突的硬件路由表项。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种保障报文硬件转发的方法,其特征在于,执行以下步骤A、删除硬件路由表项,判断所述硬件路由表项对应的软件路由表项是否存在冲突,当所述硬件路由表项对应的软件路由表项存在冲突时,确保所述存在冲突的软件路由表项存在对应的硬件路由表项。
2.根据权利要求1所述的方法,其特征在于,第一软件转发单元在硬件转发单元中执行所述删除硬件路由表项的步骤;当第一软件转发单元删除硬件路由表项后,该方法进一步包括第一软件转发单元指示第二软件转发单元向硬件转发单元添加所述硬件路由表项;由第二软件转发单元执行所述判断的步骤。
3.根据权利要求2所述的方法,其特征在于,所述第一软件转发单元在硬件转发单元中执行所述删除硬件路由表项的步骤为第一软件转发单元指示硬件转发单元删除硬件路由表项,硬件转发单元判断所述硬件路由表项是否为第一软件转发单元添加,如果是,则硬件转发单元删除所述硬件路由表项;否则,硬件转发单元不删除所述硬件路由表项,结束当前处理流程。
4.根据权利要求2所述的方法,其特征在于,所述第二软件转发单元判断硬件路由表项对应的软件路由表项是否存在冲突为第二软件转发单元判断自身是否存在与所述硬件路由表项对应的软件路由表项,如果是,则第二软件转发单元将所述硬件路由表项添加至硬件转发单元;否则,不添加所述硬件路由表项至硬件转发单元。
5.根据权利要求1所述的方法,其特征在于,第一软件转发单元在硬件转发单元中执行所述删除硬件路由表项的步骤;第一软件转发单元在删除硬件路由表项后,执行所述判断的步骤。
6.根据权利要求5所述的方法,其特征在于,所述确保存在对应的硬件路由表项为第一软件转发单元指示第二软件转发单元添加所述硬件路由表项至硬件转发单元。
7.根据权利要求5所述的方法,其特征在于,在步骤A之前,该方法进一步包括a2、添加硬件路由表项确定所述硬件路由表项存在冲突时,对所述硬件路由表项对应的软件路由表项设置冲突标记;所述第一软件转发单元判断硬件路由表项对应的软件路由表项是否存在冲突为判断硬件路由表项对应的软件路由表项是否设置冲突标记,如果设置冲突标记,则所述软件路由表项存在冲突。
8.根据权利要求1所述的方法,其特征在于,第一软件转发单元在硬件转发单元中执行所述删除硬件路由表项的步骤;第一软件转发单元在删除硬件路由表项之前,执行所述判断的步骤。
9.根据权利要求8所述的方法,其特征在于,设置第一软件转发单元和第二软件转发单元的优先级;所述确保存在对应的硬件路由表项为,执行以下步骤A31、第一软件转发单元判断自身的优先级是否高于第二软件转发单元,如果是,则执行步骤A32;否则,第一软件转发单元不删除所述硬件路由表项,结束当前处理流程。A32、第一软件转发单元删除所述硬件路由表项,并指示第二软件转发单元重新添加所述硬件路由表项至硬件转发单元。
10.根据权利要求9所述的方法,其特征在于,在步骤A之前,该方法进一步包括a3、添加硬件路由表项确定所述硬件路由表项存在冲突时,确定优先级高的软件转发单元添加硬件路由表项至硬件转发单元,对所述硬件路由表项对应的软件路由表项设置冲突标记;所述第一软件转发单元判断硬件路由表项对应的软件路由表项是否存在冲突为判断硬件路由表项对应的软件路由表项是否设置冲突标记,如果设置冲突标记,则所述软件路由表项存在冲突。
11.根据权利要求10所述的方法,其特征在于,步骤a3中,所述确定优先级高的软件转发单元添加硬件路由表项至硬件转发单元为判断自身的优先级是否高于另一软件转发单元,如果是,则指示另一软件转发单元删除硬件转发单元中的所述硬件路由表项,并将自身所述硬件路由表项添加至硬件转发单元;否则,不执行将自身所述硬件路由表项添加至硬件转发单元的操作。
12.根据权利要求7、10或11所述的方法,其特征在于,步骤a2中及步骤a3中,所述确定所述硬件路由表项存在冲突为向硬件转发单元添加硬件路由表项时,硬件转发单元返回冲突响应,则确定所述硬件路由表项对应的软件路由表项存在冲突。
13.根据权利要求2、3、4、6、7、9、10或11所述的方法,其特征在于,所述第一软件转发单元为ARP软件转发单元,第二软件转发单元为FIB软件转发单元;或第一软件转发单元为FIB软件转发单元,第二软件转发单元为ARP软件转发单元。
14.一种保障报文硬件转发的装置,其特征在于,该装置包括软件转发单元和硬件转发单元;其中,软件转发单元用于在删除硬件转发单元中的硬件路由表项时,判断所述硬件路由表项对应的软件路由表项是否存在冲突;在所述硬件路由表项对应的软件路由表项存在冲突时,确保硬件转发单元中存在所述存在冲突的软件路由表项对应的硬件路由表项。
15.根据权利要求14所述的装置,其特征在于,所述软件转发单元包括第一软件转发单元和第二软件转发单元;其中,第一软件转发单元,用于删除硬件转发单元中的硬件路由表项,并指示第二软件转发单元添加所述硬件路由表项至硬件转发单元;第二软件转发单元,用于判断所述硬件路由表项对应的软件路由表项是否存在冲突,在所述硬件路由表项对应的软件路由表项存在冲突时,添加所述硬件路由表项至硬件转发单元。
16.根据权利要求14所述的装置,其特征在于,所述软件转发单元包括第一软件转发单元和第二软件转发单元;其中,第一软件转发单元,用于删除硬件转发单元中的硬件路由表项,并判断所述硬件路由表项对应的软件路由表项是否存在冲突;在所述硬件路由表项对应的软件路由表项存在冲突时,指示第二软件转发单元添加所述存在冲突的软件路由表项对应的硬件路由表项至硬件转发单元;第二软件转发单元,用于添加所述硬件路由表项至硬件转发单元。
17.根据权利要求14所述的装置,其特征在于,所述软件转发单元包括第一软件转发单元和第二软件转发单元;其中,第一软件转发单元,用于在删除硬件路由表项时,判断所述硬件路由表项对应的软件路由表项是否存在冲突、以及自身与第二软件转发单元的优先级高低;当所述硬件路由表项对应的软件路由表项不存在冲突时,删除硬件转发单元中所述硬件路由表项;当所述硬件路由表项对应的软件路由表项存在冲突,并且自身优先级高于第二软件转发单元时,删除硬件转发单元中所述硬件路由表项,并指示第二软件转发单元添加所述硬件路由表项至硬件转发单元;当所述硬件路由表项对应的软件路由表项存在冲突,并且自身优先级不高于第二软件转发单元时,不删除硬件转发单元中所述硬件路由表项;第二软件转发单元,用于根据第一软件转发单元的指示添加所述硬件路由表项至硬件转发单元。
18.根据权利要求17所述的装置,其特征在于,所述第一软件转发单元,进一步用于在添加硬件路由表项、确定所述硬件路由表项存在冲突时,判断自身与第二软件转发单元优先级的高低;当自身优先级高于第二软件转发单元时,则指示第二软件转发单元删除硬件转发单元中的所述硬件路由表项,并将自身所述硬件路由表项添加至硬件转发单元;当自身优先级不高于第二软件转发单元时,不执行添加所述硬件路由表项的操作;第二软件转发单元,进一步用于根据第一软件转发单元的指示删除硬件转发单元中的所述硬件路由表项。
全文摘要
本发明公开了一种保障报文硬件转发的方法,删除硬件转发单元中与删除了的软件路由表项对应的硬件路由表项时,判断所述硬件路由表项是否存在冲突,当所述硬件路由表项存在冲突时,确保硬件转发单元中存在所述软件路由表项对应的硬件路由表项。另外,本发明还提供了一种保障报文硬件转发的装置。应用本发明所提供的方法及装置,能够保证软件路由表项在硬件转发单元中始终存在对应的硬件路由表项,保证报文的硬件转发,保证三层交换机的转发效率,减少CPU的负荷。
文档编号H04L29/08GK1921442SQ20061011122
公开日2007年2月28日 申请日期2006年8月15日 优先权日2006年8月15日
发明者王飓, 赵丽娜, 潘凝, 苏兴山 申请人:杭州华为三康技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1