报文转发方法及装置与流程

文档序号:12161832阅读:137来源:国知局
报文转发方法及装置与流程

本申请涉及通信技术领域,尤其涉及一种报文转发方法及装置。



背景技术:

网络设备主要用于转发报文,对于数据流量的首个报文,通常包含两个转发环节,第一转发环节是网络设备的转发芯片环节,第二转发环节是网络设备的处理器环节,即在转发芯片中查找路由表,确定转发路径之后,若由该转发路径获取到的ARP(Address Resolution Protocol,地址解析协议)表项的状态为无效,则将报文上送至处理器,由处理器将报文转发出去。

然而,如果该报文查找路由表之后,获取到的路由表项为等价路由表项,由于转发芯片与处理器的转发环节是相对独立的,两者利用的等价路由选路算法可能不同,确定的转发路径不同,例如,等价路由表项包括有出接口A、下一跳A、出接口B、下一跳B,转发芯片环节选择的是出接口A和下一跳A,处理器环节选择的是出接口B和下一跳B,处理器在利用下一跳B获取到对应的MAC(Media Access Control,媒体访问控制)地址之后,将该MAC地址添加到出接口B和下一跳B对应的ARP表项中,并将该ARP表项的状态更新为有效,并将该ARP表项下发到转发芯片中。最终导致该数据流量后续的报文均无法由转发芯片转发,需要全部上送至处理器转发,这样即无法实现转发芯片高速转发的效果,也浪费处理器资源。



技术实现要素:

有鉴于此,本申请提供一种报文转发方法及装置,以解决现有转发方式无法实现转发芯片高速转发的效果,且浪费处理器资源的问题。

根据本申请实施例的第一方面,提供一种报文转发方法,所述方法应用在包括转发芯片和处理器的网络设备上,所述方法包括:

所述转发芯片接收报文,并在确定所述报文对应的ARP表项的状态标识为无效标识之后,将所述报文发送至所述处理器;

所述处理器在接收到所述报文时,从路由表中获取所述报文对应的路由表项,并判断所述路由表项中是否有多条转发路径;若是,则确定所述路由表项中的所有转发路径,针对每条转发路径,若该条转发路径对应的ARP表项的状态标识为无效标识,则获取所述ARP表项对应的MAC地址,并将所述MAC地址和有效标识添加到所述ARP表项中,并将所述ARP表项下发至所述转发芯片;根据预设选路算法从所述路由表项中获取一条转发路径,并利用该条转发路径对应的ARP表项转发所述报文。

根据本申请实施例的第二方面,提供一种报文转发装置,所述装置应用在包括转发芯片和处理器的网络设备上,所述装置包括:应用在所述转发芯片上的接收模块和发送模块,以及应用在所述处理器上的处理模块和转发模块;

所述接收模块,用于接收报文;

所述发送模块,用于在确定所述报文对应的ARP表项的状态标识为无效标识之后,将所述报文发送至所述处理器;

所述处理模块,用于在接收到所述报文时,从路由表中获取所述报文对应的路由表项,并判断所述路由表项中是否有多条转发路径;若是,则确定所述路由表项中的所有转发路径,针对每条转发路径,若该条转发路径对应的ARP表项的状态标识为无效标识,则获取所述ARP表项对应的MAC地址,并将所述MAC地址和有效标识添加到所述ARP表项中,并将所述ARP表项下发至所述转发芯片;

所述转发模块,用于根据预设选路算法从所述路由表项中获取一条转发路径,并利用该条转发路径对应的ARP表项转发所述报文。

应用本申请实施例,当网络设备的转发芯片在接收到报文,并确定该报文对应的ARP表项的状态标识为无效标识之后,将该报文发送至处理器;然后处理器从路由表中获取该报文对应的路由表项,并判断该路由表项中是否有多条转发路径;若是,则确定该路由表项中的所有转发路径,针对每条转发路径,若该条转发路径对应的ARP表项的状态标识为无效标识,则获取该ARP表项对应的MAC地址,并将该MAC地址和有效标识添加到ARP表项中,并将该ARP表项下发至转发芯片;最后处理器再根据预设选路算法从该路由表项中获取一条转发路径,并利用该条转发路径对应的ARP表项转发该报文。基于上述实现方式,由于处理器在确定路由表项有多条转发路径之后,会将所有转发路径对应的状态标识为无效标识的ARP表项均更新一次,并将更新之后的ARP表项下发至转发芯片,此时,在转发芯片中,该路由表项中所有转发路径对应的ARP表项均是可用的,因此,即使转发芯片中的等价路由选路算法与处理器中的预设选路算法不同,在接收到数据流量的后续报文时,转发芯片也可以实现报文的转发。而不需要将数据流量的后续报文全部上送至处理器转发,实现了报文在转发芯片的高速转发,也节省了处理器资源。

附图说明

图1为本申请根据一示例性实施例示出的一种报文转发方法的实施例流程图;

图2为本申请根据一示例性实施例示出的一种网络设备的硬件结构图;

图3为本申请根据一示例性实施例示出的一种报文转发装置的实施例结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1为本申请根据一示例性实施例示出的一种报文转发方法的实施例流程图,该实施例应用在包括转发芯片和处理器的网络设备上,该网络设备可以是路由器,也可以是交换机,如图1所示,该实施例包括以下步骤:

在本申请实施例中,网络设备的处理器根据路由协议(例如OSPF(Open Shortest Path First,开放式最短路径优先)协议)从各个接口上学习路由表项,并将学习到的路由表项记录到路由表中,然后将路由表下发至转发芯片。此外,处理器还会根据该路由表项生成对应的ARP表项,并将该ARP表项下发至转发芯片,此时,该ARP表项在处理器和转发芯片上的状态均为无效,即不可用。只有当转发芯片接收到数据流量的报文,并选中该路由表项时,将报文上送到处理器,处理器才触发ARP协议学习该ARP表项对应的MAC地址,如果学习到MAC地址,则将MAC地址添加到ARP表项中,并更新ARP表项为有效状态,然后处理器利用该ARP表项转发报文,并将ARP表项下发到转发芯片,以使转发芯片在接收到该数据流量的后续报文时,利用该ARP表项转发报文。

步骤101:转发芯片接收报文,并在确定该报文对应的ARP表项的状态标识为无效标识之后,将该报文发送至处理器。

网络设备从其它网络设备(例如客户端、路由设备等)接收到的报文,先是由转发芯片接收,转发芯片在确定该报文对应的ARP表项的状态标识为无效标识时,表示该报文为数据流量的首报文,需要将该报文发送至处理器进行转发。

针对确定该报文对应的ARP表项的状态为无效的过程,转发芯片可以先查找路由表中是否存在与该报文携带的目的地址匹配的路由表项;若存在,则获取对应的路由表项;然后再根据该路由表项确定转发路径,并获取该转发路径对应的ARP表项;若该ARP表项中的状态标识为无效标识,则确定该ARP表项的状态为无效。

其中,路由表中可以记录有目的网段、出接口以及下一跳地址的对应关系,如表1所示,为一种示例性的路由表,其中,转发路径指的是出接口与下一跳地址,当报文携带的目的地址匹配到某一目的网段时,转发芯片可以获取该目的网段对应的路由表项,如果路由表项中的转发路径有多条,则可以根据本地的等价路由选路算法(例如基于源IP与目的IP的哈希散列算法、基于源IP、目的IP、源端口、目的端口以及协议号的哈希散列算法、基于链路使用率的哈希散列算法等)确定一条转发路径;如果路由表项中只有一条转发路径,则可以直接确定该条转发路径,然后转发芯片根据转发路径可以从ARP缓存表中获取到对应的ARP表项,如表2所示,为一种示例性的ARP缓存表。其中,状态标识可以是字符或者数字,也可以是字符和数字的组合,在此并不限定,如果ARP表项中的状态标识为无效标识,表示该ARP表项中的MAC地址已经老化,需要重新获取MAC地址,或者该ARP表项是处理器刚下发下来的,表项中还没有MAC地址,需要获取MAC地址,结合表1和表2,下面以一个例子进行说明。

例如,转发芯片接收到的报文携带的目的地址为10.1.3.0,通过最长匹配原则可以匹配到目的网段10.1.0.0/16。由于该路由表项中的转发路径有2条,因此可以根据本地的等价路由选路算法确定一条转发路径,假设确定的转发路径为出接口C与下一跳C,由于出接口C与下一跳C对应的ARP表项中的状态标识为0,可以确定该ARP表项的状态为无效。

表1

表2

需要说明的是,转发芯片获取到转发路径对应的ARP表项之后,若该ARP表项中的状态标识为有效标识,则直接利用该ARP表项记录的MAC地址和出接口转发该报文。

步骤102:处理器在接收到该报文时,从路由表中获取该报文对应的路由表项,并判断该路由表项中是否有多条转发路径,若否,则执行步骤103,若是,则执行步骤104。

针对处理器从路由表中获取该报文对应的路由表项的过程,如步骤101中转发芯片查找路由表中是否存在与所述报文携带的目的地址匹配的路由表项的过程所述,不再赘述。如果路由表项中有多条转发路径,即出接口与下一跳地址的对应关系不止一对,则表示该路由表项的路由类型为等价路由表项,如果路由表项中只有一条转发路径,则表示该路由表项的路由类型为单跳路由表项。

步骤103:处理器获取该路由表项中的转发路径对应的ARP表项,并获取该ARP表项对应的MAC地址,并将该MAC地址和有效标识添加到该ARP表项中,并利用该ARP表项转发该报文,并将该ARP表项下发至转发芯片。

当路由表项中只有一条转发路径时,处理器可以直接获取转发路径对应的ARP表项,由于在转发芯片中查找到的路由表项相同,并且路由表项中也只有一条转发路径,即路由表项的路由类型为单跳路由表项,因此,处理器和转发芯片确定的转发路径对应的ARP表项的状态肯定为无效,处理器不需要判断ARP表项的状态,可以直接获取该ARP表项对应的MAC地址。

针对获取该ARP表项对应的MAC地址的过程,处理器可以根据该ARP表项记录的IP地址以广播方式发送ARP请求;接收针对该ARP请求的ARP响应,并获取该ARP响应中携带的MAC地址,并将该MAC地址确定为ARP表项对应的MAC地址。

其中,处理器发送的ARP请求,其头部携带的源地址和源MAC地址为本网络设备的IP地址和MAC地址,目的地址和目的MAC地址为广播地址。即255.255.255.255和FF:FF:FF:FF:FF:FF,其报文内容携带的是ARP表项记录的IP地址。其它网络设备在接收到该ARP请求之后,利用报文内容中携带IP地址查找本地ARP缓存表,如果查找到该IP地址对应的MAC地址,则将该IP地址与MAC地址添加到ARP响应中,并将ARP请求的源地址和源MAC地址作为ARP响应的目的地址和目的MAC地址,将本地的IP地址和MAC地址作为ARP响应的源地址和源MAC地址。

基于步骤103的描述可知,处理器在获取到ARP表项对应的MAC地址,并将MAC地址和有效标识添加到ARP表项中之后,将该ARP表项下发至转发芯片,以使转发芯片利用该ARP表项转发属于该数据流量的后续报文。由于转发芯片具有高速转发的特性,因此可以提高报文的转发效率。

步骤104:处理器确定该路由表项中的所有转发路径,针对每条转发路径,若该条转发路径对应的ARP表项的状态标识为无效标识,则获取该ARP表项对应的MAC地址,并将该MAC地址和有效标识添加到该ARP表项中,并将该ARP表项下发至转发芯片。

当路由表项为等价路由表项时,处理器可以对每条转发路径进行一次处理,如果对应的ARP表项的状态标识为有效标识,则不需要获取MAC地址,如果对应的ARP表项的状态标识为无效标识,则需要获取一次MAC地址,并将获取到的MAC地址和有效标识添加到该ARP表项中,并将该ARP表项下发至转发芯片。

针对获取该ARP表项对应的MAC地址的过程,如步骤103中所述,不再赘述。下面以一个例子进行说明。

如步骤101中转发芯片的表1和表2所示,由于转发芯片中的路由表和ARP缓存表为处理器下发的,因此,处理器中的路由表和ARP缓存表也可以是表1和表2所示,报文携带的目的地址为10.1.3.0,可以得到表2中的第二条路由表项,转发路径有两条:出接口B与下一跳B、出接口C与下一跳C,并且这两条转发路径对应的ARP表项中的状态标识均为无效标识,因此,处理器分别利用下一跳B和下一跳C,发送ARP请求,并获取到下一跳B对应的MAC地址3,下一跳C对应的MAC地址4,然后将MAC地址3和有效标识添加到下一跳B对应的ARP表项中,将MAC地址4和有效标识添加到下一跳C对应的ARP表项中,并将下一跳B对应的ARP表项和下一跳C对应的ARP表项下发至转发芯片,从而转发芯片和处理器中的ARP缓存表可以如表3所示。

表3

步骤105:处理器根据预设选路算法从该路由表项中获取一条转发路径,并利用该条转发路径对应的ARP表项转发该报文。

其中,处理器的预设选路算法与转发芯片的等价路由选路算法可能相同,也可能不相同,处理器在从路由表项中选取一条转发路径之后,根据该条转发路径再获取对应的ARP表项,然后可以根据ARP表项中记录的出接口和MAC地址将报文转发出去。如步骤104所述,处理器根据预设选路算法为该报文选择的转发路径可以是下一跳B与出接口B,由表3所示,下一跳B与出接口B对应的MAC地址为MAC地址3,因此处理器可以从接口B将该报文转发到MAC地址3指向的网络设备上。

基于步骤104和步骤105的描述可知,对于等价路由表项,由于处理器会将所有转发路径对应的状态标识为无效标识的ARP表项均更新一次,并下发至转发芯片,此时,在转发芯片中,该路由表项中所有转发路径对应的ARP表项均是可用的,因此,即使转发芯片的等价路由选路算法与处理器的预设选路算法不同,在接收到数据流量的后续报文时,也可以实现报文的转发,不需要设置处理器的预设选路算法与转发芯片的等价路由选路算法完全相同,避免了处理器与转发芯片的相互限制。

由上述实施例可知,当网络设备的转发芯片在接收到报文,并确定该报文对应的ARP表项的状态标识为无效标识之后,将该报文发送至处理器;然后处理器从路由表中获取该报文对应的路由表项,并判断该路由表项中是否有多条转发路径;若是,则确定该路由表项中的所有转发路径,针对每条转发路径,若该条转发路径对应的ARP表项的状态标识为无效标识,则获取该ARP表项对应的MAC地址,并将该MAC地址和有效标识添加到ARP表项中,并将该ARP表项下发至转发芯片;最后处理器再根据预设选路算法从该路由表项中获取一条转发路径,并利用该条转发路径对应的ARP表项转发该报文。基于上述实现方式,由于处理器在确定路由表项有多条转发路径之后,会将所有转发路径对应的状态标识为无效标识的ARP表项均更新一次,并将更新之后的ARP表项下发至转发芯片,此时,在转发芯片中,该路由表项中所有转发路径对应的ARP表项均是可用的,因此,即使转发芯片中的等价路由选路算法与处理器中的预设选路算法不同,在接收到数据流量的后续报文时,转发芯片也可以实现报文的转发。而不需要将数据流量的后续报文全部上送至处理器转发,实现了报文在转发芯片的高速转发,也节省了处理器资源。

与前述报文转发方法的实施例相对应,本申请还提供了报文转发装置的实施例。

本申请报文转发装置的实施例可以应用在网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图2所示,为本申请根据一示例性实施例示出的一种网络设备的硬件结构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。

图3为本申请根据一示例性实施例示出的一种报文转发装置的实施例结构图,该实施例应用在包括转发芯片和处理器的网络设备上,如图3所示,该装置包括:应用在转发芯片上的接收模块310和发送模块320,以及应用在处理器上的处理模块330和转发模块340;

所述接收模块310,用于接收报文;

所述发送模块320,用于在确定所述报文对应的地址解析协议ARP表项的状态标识为无效标识之后,将所述报文发送至所述处理器;

所述处理模块330,用于在接收到所述报文时,从路由表中获取所述报文对应的路由表项,并判断所述路由表项中是否有多条转发路径;若是,则确定所述路由表项中的所有转发路径,针对每条转发路径,若该条转发路径对应的ARP表项的状态标识为无效标识,则获取所述ARP表项对应的媒体访问控制MAC地址,并将所述MAC地址和有效标识添加到所述ARP表项中,并将所述ARP表项下发至所述转发芯片;

所述转发模块340,用于根据预设选路算法从所述路由表项中获取一条转发路径,并利用该条转发路径对应的ARP表项转发所述报文。

在一个可选的实现方式中,所述发送模块320,具体用于在确定所述报文对应的ARP表项的状态标识为无效标识的过程中,查找路由表中是否存在与所述报文携带的目的地址匹配的路由表项;若存在,则获取所述目的地址对应的路由表项;根据所述路由表项确定转发路径,并获取所述转发路径对应的ARP表项;若所述ARP表项中的状态标识为无效标识,则确定所述ARP表项的状态为无效。

在另一个可选的实现方式中,所述处理模块330,还用于在判断所述路由表项中是否有多条转发路径之后,若所述路由表项中只有一条转发路径,则获取该条转发路径对应的ARP表项;获取所述ARP表项对应的MAC地址,并将所述MAC地址和有效标识添加到所述ARP表项中,并利用所述ARP表项转发所述报文,并将所述ARP表项下发至所述转发芯片。

在另一个可选的实现方式中,所述处理模块330,具体用于在获取所述ARP表项对应的MAC地址的过程中,根据所述ARP表项记录的IP地址以广播方式发送ARP请求;接收针对该ARP请求的ARP响应;获取所述ARP响应中携带的MAC地址,并将所述MAC地址确定为所述ARP表项对应的MAC地址。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

由上述实施例可知,当网络设备的转发芯片在接收到报文,并确定该报文对应的ARP表项的状态标识为无效标识之后,将该报文发送至处理器;然后处理器从路由表中获取该报文对应的路由表项,并判断该路由表项中是否有多条转发路径;若是,则确定该路由表项中的所有转发路径,针对每条转发路径,若该条转发路径对应的ARP表项的状态标识为无效标识,则获取该ARP表项对应的MAC地址,并将该MAC地址和有效标识添加到ARP表项中,并将该ARP表项下发至转发芯片;最后处理器再根据预设选路算法从该路由表项中获取一条转发路径,并利用该条转发路径对应的ARP表项转发该报文。基于上述实现方式,由于处理器在确定路由表项有多条转发路径之后,会将所有转发路径对应的状态标识为无效标识的ARP表项均更新一次,并将更新之后的ARP表项下发至转发芯片,此时,在转发芯片中,该路由表项中所有转发路径对应的ARP表项均是可用的,因此,即使转发芯片中的等价路由选路算法与处理器中的预设选路算法不同,在接收到数据流量的后续报文时,转发芯片也可以实现报文的转发。而不需要将数据流量的后续报文全部上送至处理器转发,实现了报文在转发芯片的高速转发,也节省了处理器资源。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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