一种报文传输方法和装置与流程

文档序号:14612726发布日期:2018-06-05 21:14阅读:144来源:国知局
一种报文传输方法和装置与流程

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



背景技术:

如图1所示,为NUMA(Non-Uniform Memory Architecture,非统一内存架构)的组网示意图,网络设备A可以包括NUMA节点1和NUMA节点2,每个NUMA节点包含一组处理器资源(如图中CPU(Central Processing Unit,中央处理器)包括的多个核)、内存资源和多个接口,且NUMA节点1和NUMA节点2之间通过CSI(Common System Interface,公共系统接口)总线连接。

针对网络设备B发送给网络设备A、再由网络设备A发送给网络设备C的报文,当NUMA节点1通过接口1接收到该报文后,为了实现负载分担,NUMA节点1可以从接口2、接口3、接口4、接口5中随机选择一个接口,假设选择接口4,则NUMA节点1将报文发送给NUMA节点2,由NUMA节点2通过接口4转发报文给网络设备C。

显然,在上述方式下,NUMA节点1需要跨CSI总线转发报文给NUMA节点2,从而降低了报文转发效率,而且会浪费CSI总线的带宽开销。



技术实现要素:

本申请提供一种报文传输方法,应用于网络设备包括的非统一内存架构NUMA节点,且所述网络设备包括至少两个NUMA节点,所述方法包括:

在接收到报文后,通过所述报文的目的IP地址查询转发表;

若查询到与所述目的IP地址匹配的至少两个出接口,则从所述转发表中获取所述至少两个出接口所属的NUMA节点对应的节点信息;

利用所述节点信息确定所述至少两个出接口中位于本NUMA节点上的出接口;

通过所述位于本NUMA节点上的出接口发送所述报文。

本申请提供一种报文传输装置,应用于网络设备包括的非统一内存架构NUMA节点,且所述网络设备包括至少两个NUMA节点,所述装置包括:

查询模块,用于在接收到报文后,通过所述报文的目的IP地址查询转发表;

获取模块,用于当查询到与所述目的IP地址匹配的至少两个出接口时,则从所述转发表中获取所述至少两个出接口所属的NUMA节点对应的节点信息;

确定模块,用于利用所述节点信息确定所述至少两个出接口中位于本NUMA节点上的出接口;

发送模块,用于通过所述位于本NUMA节点上的出接口发送所述报文。

基于上述技术方案,本申请实施例中,本NUMA节点在收到报文后,当目的IP地址对应至少两个出接口时,则本NUMA节点可以基于每个出接口所属的NUMA节点对应的节点信息,确定位于本NUMA节点上的出接口,并通过位于本NUMA节点上的出接口发送报文。这样,可以通过位于本NUMA节点上的出接口发送报文,而不是通过位于另一个NUMA节点上的出接口发送报文,从而减少了跨NUMA节点转发报文的情况,提高了报文转发效率,并减少NUMA节点之间的CSI总线的带宽开销,并提升网络设备整体的吞吐能力(即报文转发的能力)。

附图说明

为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是NUMA的组网示意图;

图2是本申请一种实施方式中的报文传输方法的流程图;

图3是本申请一种实施方式中的NUMA节点的硬件结构图;

图4是本申请一种实施方式中的报文传输装置的结构图。

具体实施方式

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

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

本申请实施例中提出一种报文传输方法,该方法可以应用于网络设备(如路由器、交换机等)包括的NUMA节点,且该网络设备可以包括至少两个NUMA节点,每个NUMA节点包含一组处理器资源、内存资源和多个接口,且NUMA节点之间通过CSI总线连接。参见图2所示,为该报文传输方法的流程图。

步骤201,在接收到报文后,通过该报文的目的IP地址查询转发表。

在一个例子中,在通过该报文的目的IP地址查询转发表之前,可以先维护转发表,该转发表用于记录IP地址与出接口的对应关系。针对转发表的维护过程,NUMA节点在生成该目的IP地址对应的转发表时,若获知该目的IP地址对应至少两个出接口,则在转发表中记录该目的IP地址、该目的IP地址对应的至少两个出接口、以及该至少两个出接口所属的NUMA节点对应的节点信息的对应关系。

步骤202,若查询到与该目的IP地址匹配的至少两个出接口,则从该转发表中获取该至少两个出接口所属的NUMA节点对应的节点信息。

在一个例子中,由于转发表中记录了该目的IP地址、该目的IP地址对应的至少两个出接口、以及该至少两个出接口所属的NUMA节点对应的节点信息的对应关系,因此,NUMA节点可以从该转发表中获取到该至少两个出接口所属的NUMA节点对应的节点信息。

步骤203,利用该节点信息确定所述至少两个出接口(即与该目的IP地址匹配的至少两个出接口)中位于本NUMA节点上的出接口。

在一个例子中,针对“利用该节点信息确定所述至少两个出接口中位于本NUMA节点上的出接口”的过程,可以包括但不限于如下方式:方式一、确定该报文的入接口所属的NUMA节点的节点信息,若出接口所属的NUMA节点的节点信息与该入接口所属的NUMA节点的节点信息相同,则可以确定该出接口是位于本NUMA节点上的出接口。或者,方式二、确定本NUMA节点的节点信息,若出接口所属的NUMA节点的节点信息与本NUMA节点的节点信息相同,则可以确定该出接口是位于本NUMA节点上的出接口。

步骤204,通过位于本NUMA节点上的出接口发送报文。

在一个例子中,针对“通过位于本NUMA节点上的出接口发送报文”的过程,可以包括:若位于本NUMA节点上的出接口为一个出接口,则可以通过位于本NUMA节点上的一个出接口发送该报文;或者,若位于本NUMA节点上的出接口为至少两个出接口,则基于预设负载分担策略,从位于本NUMA节点上的至少两个出接口中选择一个出接口,并通过选择的出接口发送该报文。

在一个例子中,在从转发表中获取至少两个出接口所属的NUMA节点对应的节点信息(即步骤202)之后,若利用该节点信息确定这至少两个出接口均不是位于本NUMA节点上的出接口,则本NUMA节点可以基于预设负载分担策略,从这至少两个出接口中选择一个出接口,并通过选择的出接口发送该报文。

基于上述技术方案,本申请实施例中,本NUMA节点在收到报文后,当目的IP地址对应至少两个出接口时,则本NUMA节点可以基于每个出接口所属的NUMA节点对应的节点信息,确定位于本NUMA节点上的出接口,并通过位于本NUMA节点上的出接口发送报文。这样,可以通过位于本NUMA节点上的出接口发送报文,而不是通过位于另一个NUMA节点上的出接口发送报文,从而减少了跨NUMA节点转发报文的情况,提高了报文转发效率,并减少NUMA节点之间的CSI总线的带宽开销,并提升网络设备整体的吞吐能力。

以下结合图1所示的应用场景,对本申请实施例的技术方案进行详细说明。本应用场景下,在网络设备A与网络设备C之间部署四条链路,这四条链路就形成ECMP(Equal-Cost MultiPath,等价多路径)。当所有链路均正常时,则可以在所有链路之间进行报文的负载分担,从而提高传输性能。当有链路发生故障时,则可以通过未发生故障的链路发送报文,从而提高稳定性和可靠性。

在传统方式中,当ECMP的出接口位于多个NUMA节点时,若接收报文的入接口与发送报文的出接口位于不同NUMA节点,则报文需要跨NUMA节点转发,从而影响网络设备的转发性能,降低报文转发效率。而本申请实施例中,当ECMP的出接口位于多个NUMA节点时,根据出接口与NUMA节点的对应关系,NUMA节点可以尽量使发送报文的出接口位于本NUMA节点上,避免报文跨NUMA节点转发,提高网络设备的转发性能,提高报文转发效率。

在一个例子中,以网络设备B下的主机1(图1中未示出)通过网络设备A向网络设备C下的主机2(图1中未示出)发送报文为例,假设主机2的IP地址为100.100.100.100,则网络设备C可以通过四条链路发布携带IP地址100.100.100.100的路由,且网络设备A会从接口2、接口3、接口4和接口5上接收到这个路由,并在转发表(即路由表)中记录IP地址100.100.100.100与接口的对应关系,如表1所示,为转发表的一个示例。

表1

与表1不同的是,本申请实施例中,网络设备A生成IP地址100.100.100.100对应的转发表时,由于IP地址100.100.100.100对应有4个出接口,因此,网络设备A会在转发表中记录IP地址100.100.100.100、这4个出接口、以及这4个出接口所属的NUMA节点对应的节点信息的对应关系,如表2所示的一个示例。

表2

在一个例子中,可以从网络设备A的所有核中确定出控制核,如确定NUMA节点1的核0为控制核。上述从接口2、接口3、接口4和接口5接收到的路由,均会发送给控制核。控制核在接收到这些路由后,可以生成表2所示的转发表,并将该转发表存储到内存1中。在后续过程中,所有NUMA节点内的核均可以访问到内存1中的转发表。

在一个例子中,为了生成表2所示的转发表,可以在网络设备A上预先配置每个接口与该接口所属的NUMA节点对应的节点信息的对应关系,如接口1与NUMA节点1的对应关系、接口2与NUMA节点1的对应关系、接口3与NUMA节点1的对应关系、接口4与NUMA节点2的对应关系、接口5与NUMA节点2的对应关系、接口6与NUMA节点2的对应关系。基于此,控制核在生成转发表时,通过查询该对应关系,就可以得到接口2所属的NUMA节点对应的节点信息是NUMA节点1,接口3所属的NUMA节点对应的节点信息是NUMA节点1,接口4所属的NUMA节点对应的节点信息是NUMA节点2,接口5所属的NUMA节点对应的节点信息是NUMA节点2,从而生成表2。

在上述应用场景下,本申请实施例中提出的报文传输方法,包括以下步骤:

步骤1,NUMA节点1(如NUMA节点1内的某个核,后续以NUMA节点1的处理为例)接收到报文,该报文的目的IP地址为100.100.100.100。

步骤2,NUMA节点1通过该目的IP地址100.100.100.100查询表2所示的转发表,得到与该目的IP地址匹配的出接口为接口2、接口3、接口4和接口5。

步骤3,NUMA节点1从表2所示的转发表中,获取到各个出接口所属的NUMA节点所对应的节点信息。例如,NUMA节点1获取到接口2所属的NUMA节点对应的节点信息为NUMA节点1,接口3所属的NUMA节点对应的节点信息是NUMA节点1,接口4所属的NUMA节点对应的节点信息是NUMA节点2,接口5所属的NUMA节点对应的节点信息是NUMA节点2。

步骤4,NUMA节点1根据各个出接口所属的NUMA节点所对应的节点信息,确定接口2、接口3、接口4和接口5中,位于本NUMA节点上的出接口,如位于本NUMA节点上的出接口可以为接口2和接口3。

方式一、NUMA节点1确定接收到报文的入接口为接口1,基于在网络设备A上预先配置的每个接口与该接口所属的NUMA节点对应的节点信息的对应关系,NUMA节点1可以确定接口1所属的NUMA节点的节点信息为NUMA节点1。基于此,由于接口2、接口3所属的NUMA节点的节点信息与接口1所属的NUMA节点的节点信息相同,因此,NUMA节点1可以确定接口2、接口3是位于本NUMA节点上的出接口。由于接口4、接口5所属的NUMA节点的节点信息与接口1所属的NUMA节点的节点信息不同,因此,NUMA节点1可以确定接口4、接口5不是位于本NUMA节点上的出接口。

方式二、NUMA节点1确定本NUMA节点的节点信息,即NUMA节点1。由于接口2、接口3所属的NUMA节点的节点信息与本NUMA节点的节点信息相同,则NUMA节点1确定接口2、接口3是位于本NUMA节点上的出接口。由于接口4、接口5所属的NUMA节点的节点信息与本NUMA节点的节点信息不同,则NUMA节点1确定接口4、接口5不是位于本NUMA节点上的出接口。

在实际应用中,可能会存在如下两种情况:情况一、在每个NUMA节点内,均包含接收核(用于接收其它网络设备发送的报文)和转发核(用于向其它网络设备发送报文),如图1所示,CPU1内的核0为控制核,核1为接收核,核2-核n为转发核,CPU2内的核0为接收核,核1-核n为转发核。情况二、NUMA节点内可能没有接收核或者转发核,如图1所示,CPU1内的核0为控制核,核1-核n为转发核,CPU2内的核0、核1为接收核,核2-核n为转发核。

针对情况一,CPU1/CPU2内的接收核在接收到报文后,只会将报文交给同一NUMA节点内的转发核,该转发核在接收到报文后,针对确定位于本NUMA节点上的出接口的过程,可以采用上述方式一或者方式二处理。

针对情况二,CPU2内的接收核在接收到报文后,将报文交给同一NUMA节点内的转发核或者另一个NUMA节点内的转发核,该转发核在接收到报文后,针对确定位于本NUMA节点上的出接口的过程,可以采用上述方式二处理。

步骤5,NUMA节点1通过位于本NUMA节点上的出接口发送报文。

在一个例子中,针对“NUMA节点1通过位于本NUMA节点上的出接口发送报文”的过程,可以包括:若位于本NUMA节点上的出接口为一个出接口,则NUMA节点1可以通过位于本NUMA节点上的一个出接口发送该报文。若位于本NUMA节点上的出接口为至少两个出接口,则NUMA节点1可以基于预设负载分担策略(如轮询策略或者hash策略等),从位于本NUMA节点上的这至少两个出接口中选择一个出接口,并通过选择的出接口发送该报文。

例如,由于接口2、接口3是位于本NUMA节点上的出接口,因此,NUMA节点1可以基于预设负载分担策略(如轮询策略或者hash策略等),从接口2和接口3中选择一个出接口,并通过选择的出接口发送该报文。

在一个例子中,当预设负载分担策略为轮询策略时,则相应的转发流程可以为:针对主机1发送给主机2的第一个报文,NUMA节点1先轮询到接口2,由于接口2是位于本NUMA节点上的出接口,因此,NUMA节点1通过接口2发送第一个报文。针对主机1发送给主机2的第二个报文,NUMA节点1轮询到接口3,由于接口3是位于本NUMA节点上的出接口,因此,NUMA节点1通过接口3发送第二个报文。针对主机1发送给主机2的第三个报文,NUMA节点1轮询到接口4,由于接口4不是位于本NUMA节点上的出接口,因此,NUMA节点1轮询到下一个接口5,由于接口5不是位于本NUMA节点上的出接口,因此,NUMA节点1轮询到下一个接口2,由于接口2是位于本NUMA节点上的出接口,因此,NUMA节点1通过接口2发送第三个报文。以此类推。

在一个例子中,当预设负载分担策略为hash策略时,则相应的转发流程可以为:针对主机1发送给主机2的第一个报文,根据报文的源IP地址和目的IP地址随机生成一个散列值,具体生成方式不再赘述,然后将散列值对数量2(即位于本NUMA节点上的出接口数量)取余。若余数为0,则NUMA节点1通过接口2发送第一个报文,若余数为1,则NUMA节点1通过接口3发送第一个报文。以此类推,针对主机1发送给主机2的每个报文,均采用上述方式处理。

上述过程是以有位于本NUMA节点上的出接口为例进行说明的,在另一个例子中,若目的IP地址对应的所有出接口均不是位于本NUMA节点上的出接口,则NUMA节点1还可以基于预设负载分担策略(如轮询策略或者hash策略等),从目的IP地址对应的所有出接口(即位于其它NUMA节点上的出接口)中选择一个出接口,并通过选择的出接口发送该报文,具体选择过程不再赘述。

基于上述技术方案,本申请实施例中,本NUMA节点在收到报文后,当目的IP地址对应至少两个出接口时,则本NUMA节点可以基于每个出接口所属的NUMA节点对应的节点信息,确定位于本NUMA节点上的出接口,并通过位于本NUMA节点上的出接口发送报文。这样,可以通过位于本NUMA节点上的出接口发送报文,而不是通过位于另一个NUMA节点上的出接口发送报文,从而减少了跨NUMA节点转发报文的情况,提高了报文转发效率,并减少NUMA节点之间的CSI总线的带宽开销,并提升网络设备整体的吞吐能力。

基于与上述方法同样的申请构思,本申请实施例中还提供了一种报文传输装置,该报文传输装置可以应用在网络设备包括的NUMA节点上,且该网络设备可以包括至少两个NUMA节点。其中,该报文传输装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的NUMA节点的处理器,读取非易失性存储器中对应的计算机程序指令形成的。从硬件层面而言,如图3所示,为本申请提出的报文传输装置所在的NUMA节点的一种硬件结构图,除了图3所示的处理器、非易失性存储器外,NUMA节点还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,该NUMA节点还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。

如图4所示,为本申请提出的报文传输装置的结构图,所述装置包括:

查询模块11,用于在接收到报文后,通过报文的目的IP地址查询转发表;

获取模块12,用于当查询到与所述目的IP地址匹配的至少两个出接口时,从所述转发表中获取所述至少两个出接口所属的NUMA节点对应的节点信息;

确定模块13,用于利用所述节点信息确定所述至少两个出接口中位于本NUMA节点上的出接口;

发送模块14,用于通过所述位于本NUMA节点上的出接口发送所述报文。

在一个例子中,所述装置还包括(在图中未体现):记录模块,用于在所述查询模块11通过所述报文的目的IP地址查询转发表之前,在生成所述目的IP地址对应的转发表时,若获知所述目的IP地址对应至少两个出接口,则在所述转发表中记录所述目的IP地址、所述目的IP地址对应的至少两个出接口、以及该至少两个出接口所属的NUMA节点对应的节点信息的对应关系。

在一个例子中,所述确定模块13,具体用于在利用所述节点信息确定所述至少两个出接口中位于本NUMA节点上的出接口的过程中,确定所述报文的入接口所属的NUMA节点的节点信息,若出接口所属的NUMA节点的节点信息与所述入接口所属的NUMA节点的节点信息相同,则确定该出接口是位于本NUMA节点上的出接口;或者,确定本NUMA节点的节点信息,若出接口所属的NUMA节点的节点信息与本NUMA节点的节点信息相同,则确定该出接口是位于本NUMA节点上的出接口。

在一个例子中,所述发送模块14,具体用于在通过所述位于本NUMA节点上的出接口发送所述报文的过程中,若位于本NUMA节点上的出接口为一个出接口,则通过位于本NUMA节点上的所述一个出接口发送所述报文;或者,若位于本NUMA节点上的出接口为至少两个出接口,则基于预设负载分担策略,从位于本NUMA节点上的所述至少两个出接口中选择一个出接口,并通过选择的出接口发送所述报文。

在一个例子中,所述发送模块14,还用于在所述获取模块12从所述转发表中获取所述至少两个出接口所属的NUMA节点对应的节点信息之后,若利用所述节点信息确定所述至少两个出接口均不是位于本NUMA节点上的出接口,则基于预设负载分担策略,从所述至少两个出接口中选择一个出接口,并通过选择的出接口发送所述报文。

本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

以上公开的仅为本申请的几个具体实施例,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。

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