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

文档序号:17355775发布日期:2019-04-09 21:39阅读:199来源:国知局
报文转发方法及装置与流程

本发明涉及通信技术领域,具体而言,涉及一种报文转发方法及装置。



背景技术:

在数据通信设备,其常将多条物理链路捆包聚合成一条逻辑链路,通过这条逻辑链路中的各链路,多核网络设备才能够将报文分别转发至各链路对应的各设备。

目前,网络设备可以通过多核cpu(centralprocessingunit,中央处理器)来转发每个报文。cpu每一个转发核在转发报文时,为保证转发的正确性,每一个转发核在转发报文的过程中,均需要通过获取报文转发累加数来确定该报文的转发链路,并进行原子保护操作。但是当cpu报文转发的转发核的数目越来越多以后,这些转发核对该报文转发累加数的访问竞争越来越严重,导致报文的转发效率严重降低。



技术实现要素:

有鉴于此,本发明的目的在于提供一种报文转发方法及装置,以有效改善上述缺陷。

本发明的实施例通过如下方式实现:

第一方面,本发明实施例提供了一种报文转发方法,应用于多核网络设备中,所述多核网络设备包括多个转发核。所述方法包括:转发核获取待转发报文后,从其对应的存储区读取当前已发送的报文数;所述转发核基于所述当前已发送的报文数从对应的多条转发链路中选择出目标转发链路;所述转发核将所述待转发报文发送到所述目标转发链路。

第二方面,本发明实施例提供了一种报文转发装置,应用于多核网络设备中。所述装置包括:获取模块,用于所述转发核获取待转发报文后,从其对应的存储区读取当前已发送的报文数。选择模块,用于所述转发核基于所述当前已发送的报文数从对应的多条转发链路中选择出目标转发链路。发送模块,用于所述转发核将所述待转发报文发送到所述目标转发链路。

本发明实施例的有益效果是:

当转发核获取待转发报文时,转发核从对应的存储区中读取到该转发核的当前已发送的报文数,进而根据当前已发送的报文数从多条转发链路中选择出目标转发链路,便能够再将该待转发报文从目标转发链路转发。因此,每个转发核均通过访问与自身对应的一个存储区来获取该转发核的当前已发送的报文数,从而在实现报文转发的同时,有效避免了转发核与其它转发核之间的访问竞争,极大的提高了报文的转发效率。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明第一实施例提供的一种报文转发方法的流程图;

图2示出了本发明第一实施例提供的一种报文转发方法中步骤s200的子流程图;

图3示出了本发明第二实施例提供的一种报文转发装置的第一功能模块图;

图4示出了本发明第二实施例提供的一种报文转发装置中选择模块的功能模块图;

图5示出了本发明第二实施例提供的一种报文转发装置的第二功能模块图;

图6示出了本发明第二实施例提供的一种报文转发装置的第三功能模块图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。能够

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

第一实施例

本实施提供的报文转发方法应用于一多核网络设备中,该多核网络设备包括至少一个线卡,每个线卡包括:多个转发核。每个转发核均在该多核网络设备中分配有一一对应的存储区。每个转发核对应的存储区用于存储该转发核的当前已发送的报文数。每个转发核还连接有一通过将多条物理的转发链路捆包聚合形成的逻辑转发链路,该逻辑转发链路还连接了各负载或各端口。每个转发核均将获取的每个报文均转发至逻辑转发链路内对应的一条转发链路,以通过每条转发链路将每个报文均转发至对应的一负载或一端口。

请参阅图1,图1示出了本发明第一实施例提供的一种报文转发方法的方法流程图。该报文转发方法包括:步骤s100、步骤s200和步骤s300。

步骤s100:转发核获取待转发报文后,从其对应的存储区读取当前已发送的报文数。

在该多核网络设备中,一转发核获取到待转发报文时,转发核需要确定该待转发报文需要被转发至哪一条转发链路。本实施例中,转发核对应设有一存储区。该对应的存储区存储有该转发核的当前已发送的报文数。转发核基于与存储区之间的对应关系,从对应的存储区中读取存储的当前已发送的报文数,以获得当前已发送的报文数。

需要说明的是,在执行每个转发核转发待转发报文之前,需要在多核网络设备为每个转发核分配一一对应的存储区。每个存储区则均用于保存对应的转发核的当前已发送的报文数。其中,每个存储区的数据结构均可以为数组元素。

此外,每个转发核被分配的一存储区应当与该转发核建立对应关系。当转发核获取待转发报文后,转发核则可根据对应关系从对应的存储区中获得当前已发送的报文数。具体的,对应关系可以为每个存储区的设置具有先后顺序,转发核根据先后顺序建立与对应的存储区的对应关系。则获取的方式可以为:转发核直接按照先后顺序的对应关系,去对应的存储区读取当前已发送的报文数。对应关系也可以为每个存储区的标识与转发核的id匹配。对应关系还可以为每个存储区与对应的转发核建立链接关系。则获取的方式可以为:转发核根据链接关系直接去对应的存储区读取当前已发送的报文数。

可以理解到,按照预设读取规则的上述多种读取方式为本实施例可选的实施方式,本实施包括但不限定与上述读取方式。

步骤s200:所述转发核基于所述当前已发送的报文数从对应的多条转发链路中选择出目标转发链路。

转发核中预先设有报文转发数据与多条转发链路的数量之间的运算规则。当转发核获取到当前已发送的报文数后,转发核基于该运算规则,根据当前已发送的报文数,从与转发核对应的多条转发链路中选择出转发该待转发报文的目标转发链路。

需要说明的是,为保证每条转发链路在转发报文时的负荷能够与其他的转发链路保证平均,以实现转发报文时的负荷均匀分担。在按照运算规则转发每一个待转发报文时,若上一次转发的待转发报文被转发至了转发链路1,则本次转发的待转发报文被转发至了转发链路2,进而下一次转发的待转发报文则被转发至了转发链路3。通过按照运算对每条待转发报文的依次转发,则实现了转发报文时的负载均匀分担。

步骤s300:所述转发核将所述待转发报文发送到所述目标转发链路。

转发核选择出相应的一条转发链路作为该待转发报文的目标转发链路时,转发核则将该待转发报文转发送到该目标转发链路,以通过该目标转发链路将待转发报文发送至对应的端口所在链路。

请参阅图2,图2示出了本发明第一实施例提供的一种报文转发方法中步骤s200的方法子流程图。步骤s200的方法子流程包括:步骤s210和步骤s220。

步骤s210:所述转发核将所述当前已发送的报文数与所述多条转发链路的数量取余,获得余数值。

转发核中预先存储的了与该转发核对应的多条转发链路的数量,转发核还预先设有当前已发送的报文数与多条转发链路的数量之间的运算规则。转发核基于该运算规则,将当前已发送的报文数和多条转发链路的数量进行取余运算,便可获得运算后的余数值。

步骤s220:所述转发核基于所述余数值与所述目标转发链路的编号之间的对应关系,在所述多条转发链路中选择出与所述余数值对应的目标转发链路。

本实施例中,每条目标转发链路均具有一编号,转发核中预先建立每条目标转发链路的编号与一余数值的对应关系。其中,每条目标转发链路的编号与一余数值的对应关系可以为每条目标转发链路的编号与一余数值相同,以及相差预设值。进而转发核根据余数值的对应关系,在多条转发链路中选择出与余数值对应的目标转发链路。

例如,转发核对应的转发链路数量4,其分别为:转发链路1、转发链路2、转发链路3和转发链路4。余数值0与转发链路1对应,余数值1与转发链路2对应,余数值2与转发链路3对应,余数值3与转发链路4对应。当该当前已发送的报文数为0时,则转发核第一次获取到待转发报文,通过计算0除4,余数值为0,进而将该待转发报文转发至目标转发链路1。又当该当前已发送的报文数为3时,通过计算3除4,余数值为3,进而将该待转发报文转发至目标转发链路4。

此外,为保证转发核在开始转发的初始阶段,每个待转发报文能够均匀的转发到每个转发链路上。在本实施例中,作为一种可选的实施方式,对应的储存区内存储的当前已发送的报文数的初始值应当与该转发核的id相同。

例如,第1个转发核的id为0,对应当前已发送的报文数的初始值为0,第2个转发核的id为1,对应当前已发送的报文数的初始值为1,第3个转发核的id为2,对应当前已发送的报文数的初始值为2,第4个转发核的id为3,对应当前已发送的报文数的初始值为3,此外,转发链路也为4条。通过上述的简单设定,当第1个转发核初次转发待转发报文时,则转发到转发链路1;当第2个转发核初次转发待转发报文时,则转发到转发链路2;当第3个转发核初次转发待转发报文时,则转发到转发链路3;当第4个转发核初次转发待转发报文时,则转发到转发链路4,进而有效的保证了在初始转发时每条转发链路的负载均匀。

再者,在待转发报文的转发过程中,转发核可实时的判断多条转发链路的当前数量是否有更新。具体的,当转发核可实时检测多条转发链路的当前数量。如无更新时,转发核检测到多条转发链路的当前数量无变化,则转发核判定为否,并保持当前的转发状态。如有更新时,检测到多条转发链路的当前数量有增减,则转发核判定为是,并将当前已发送的报文数的当前已发送的报文数初始化为与该转发核的id相同的初始值,以保证多条转发链路变化后,每条转发链路的负荷任能够得到均匀。

需要说明的是,在根据当前已发送的报文数确定出目标转发链路至获得下一次待转发报文的时间段内,转发核可对当前已发送的报文数进行更新,即可将当前已发送的报文数自加1。

第二实施例

请参阅图3,本发明第二实施例提供了一种报文转发装置100,该报文转发装置100应用于多核网络设备,报文转发装置100包括:

获取模块110,用于转发核获取待转发报文后,从其对应的存储区读取当前已发送的报文数。

选择模块120,用于所述转发核基于所述当前已发送的报文数从对应的多条转发链路中选择出目标转发链路。

发送模块130,用于所述转发核将所述待转发报文发送到所述目标转发链路。

请参阅图4,在本发明第二实施例提供的一种报文转发装置100中,选择模块120包括:

取余单元121,用于所述转发核将所述当前已发送的报文数与所述多条转发链路的数量取余,获得余数值。

选择单元122,用于所述转发核基于所述余数值与所述目标转发链路的编号之间的对应关系,在所述多条转发链路中选择出与所述余数值对应的目标转发链路。

请参阅图5,在本发明第二实施例提供的一种报文转发装置100中,报文转发装置100还包括:

分配模块140,用于为每个所述转发核分配一一对应的所述存储区,所述存储区用于保存该所述转发核当前已发送的报文数。

请参阅图6,在本发明第二实施例提供的一种报文转发装置100中,报文转发装置100还包括:

判断模块160,用于所述转发核判断所述对应的所述多条转发链路的当前数量是否有更新。

更新模块170,用于如有更新时,将所述转发核对应所述存储区中的所述当前已发送的报文数初始化为与所述转发核的id对应的值。

需要说明的是,由于所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本发明实施例所提供的进行处理器可执行的非易失的程序代码的计算机可读存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

综上所述,本发明实施例提供了一种报文转发方法及装置,报文转发方法应用于多核网络设备中,多核网络设备包括多个转发核。方法包括:转发核获取待转发报文后,从其对应的存储区读取当前已发送的报文数;转发核基于当前已发送的报文数从对应的多条转发链路中选择出目标转发链路;转发核将待转发报文发送到目标转发链路。

当转发核获取待转发报文时,转发核从对应的存储区中读取到该转发核的当前已发送的报文数,进而根据当前已发送的报文数从多条转发链路中选择出目标转发链路,便能够再将该待转发报文从目标转发链路转发。因此,每个转发核均通过访问与自身对应的一个存储区来获取该转发核的当前已发送的报文数,从而在实现报文转发的同时,有效避免了转发核与其它转发核之间的访问竞争,极大的提高了报文的转发效率。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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