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

文档序号:14993404发布日期:2018-07-20 22:58阅读:267来源:国知局

本发明涉及报文发送领域,具体而言,涉及一种报文发送方法及装置。



背景技术:

linkaggregation(也称链路聚合,简称linkagg),linkagg是将多个低带宽端口捆绑成一个高带宽的链路使用,这样可以增加带宽也可以实现链路的负载平衡,同时还能做到冗余备份。

由于网络规模的不断提高,单台交换机很难满足需求,于是出现了堆叠技术。堆叠技术就是将多台交换机设备组合在一起使用,从逻辑上组合成一台整体的交换设备。如果是在堆叠系统中,linkagg组中既有本地成员端口也有远端成员端口,在发送报文时就有可能选择从远端设备的成员口发送出去。从远端设备成员口发送时,报文需要先从本地设备转发到远端设备,然后再从远端设备的出口转发出去。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种报文发送方法及装置,以至少解决在堆叠系统中,从本地设备进入的报文由远端设备发送造成的流量浪费和对宽带消耗的技术问题。

根据本发明实施例的一个方面,提供了一种报文发送方法,包括:获取待发送的报文;判断当前链路聚合组中是否存在本地成员端口;在判断结果指示存在本地成员端口时,确定用于发送报文的出口索引;以及通过出口索引所指示的本地成员端口发送报文。

进一步地,判断当前链路聚合组中是否存在本地成员端口,包括:基于本地成员端口列表获取当前链路聚合组中本地成员端口的数量,其中,本地成员端口列表专用于存储当前链路聚合中的本地成员端口信息;在数量不为零时,确定当前链路聚合组中存在本地成员端口。

进一步地,确定用于发送报文的出口索引,包括:依据报文的内容确定第一哈希值;依据第一哈希值对当前链路聚合组中本地成员端口的数量进行取余运算,得到运算结果;依据运算结果和当前链路聚合组中本地成员端口的基地址确定出口索引。

进一步地,在判断结果指示不存在本地成员端口时,方法还包括:从当前链路聚合组中的远端成员端口中确定用于发送报文的端口。

进一步地,从当前链路聚合组中的远端成员端口中确定用于发送报文的端口,包括:依据报文的内容确定第二哈希值;基于远端成员列表确定当前链路聚合组中远端成员端口的数量和基地址,其中,远端成员端口列表专用于存储当前链路聚合中的远端成员端口信息;基于第二哈希值和确定的远端成员端口的数量和基地址确定当前链路聚合组中用于发送报文的远端成员端口。

根据本发明实施例的另一个方面,提供了一种报文发送方法,包括:获取待发送的报文;判断当前链路聚合组中第一类端口组合和第二类端口组合的优先级;依据判断结果从第一类端口组合和第二类端口组合中确定用于发送报文的端口组合;从确定的端口组合中选择用于发送报文的端口。

进一步地,第一类端口组合包括:本地成员端口;第二类端口组合包括:远端成员端口。

进一步地,第一类端口组合的优先级高于第二类组合的优先级。

根据本发明实施例的另一个方面,提供了一种报文发送方法,包括:获取待发送的报文;从当前链路聚合组的第一类端口组合和第二类端口组合中确定用于发送报文的端口组合;从确定的端口组合中选择用于发送报文的端口。

根据本发明实施例的另一个方面,提供了一种报文发送装置,包括:第一获取模块,用于获取待发送的报文;第一判断模块,用于判断当前链路聚合组中是否存在本地成员端口;第一确定模块,用于在判断结果指示存在本地成员端口时,确定用于发送报文的出口索引;以及第一发送模块,用于通过出口索引所指示的本地成员端口发送报文。

根据本发明实施例的另一个方面,提供了一种报文发送装置,包括:第二获取模块,用于获取待发送的报文;第二判断模块,用于判断当前链路聚合组中第一类端口组合和第二类端口组合的优先级;第二确定模块,用于依据判断结果从第一类端口组合和第二类端口组合中确定用于发送报文的端口组合;第二选择模块,用于从确定的端口组合中选择用于发送报文的端口。

根据本发明实施例的另一个方面,提供了一种报文发送装置,包括:第三获取模块,用于获取待发送的报文;第三确定模块,用于从当前链路聚合组的第一类端口组合和第二类端口组合中确定用于发送报文的端口组合;第三选择模块,用于从确定的端口组合中选择用于发送报文的端口。

根据本发明实施例的另一个方面,提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述的报文发送方法。

根据本发明实施例的另一个方面,提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述的报文发送方法。

在本发明实施例中,通过获取待发送的报文;判断当前链路聚合组中是否存在本地成员端口;在判断结果指示存在本地成员端口时,确定用于发送报文的出口索引;以及通过出口索引所指示的本地成员端口发送报文,达到了在堆叠系统中,从本地设备进入的报文优先从本地设备发送的目的,从而实现了减少跨设备之间的流量,减少对堆叠宽带的消耗的技术效果,进而解决了在堆叠系统中,从本地设备进入的报文由远端设备发送造成的流量浪费和对宽带消耗的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本申请实施例的一种报文发送方法的流程图;

图2是普通链路聚合选择成员端口的流程图;

图3是根据本申请实施例的一种可选的堆叠系统中链路聚合成员端口的流程图;

图4是根据本申请实施例的另一种报文发送方法的流程图;

图5是根据本申请实施例的另一种报文发送方法的流程图;

图6是根据本申请实施例的一种报文发送装置的结构图;

图7是根据本申请实施例的另一种报文发送装置的结构图;以及

图8是根据本申请实施例的另一种报文发送装置的结构图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,本申请实施例中所涉及的存储介质或存储器,不仅包括设备本地的用于存储数据的设备,也可以体现为云网络上的存储节点,但不限于此。

根据本发明实施例,提供了一种报文发送的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的报文发送方法,如图1所示,该方法包括如下步骤:

步骤s102,获取待发送的报文。

步骤s104,判断当前链路聚合组中是否存在本地成员端口。

在步骤s104中,链路聚合是指将多个物理端口捆绑在一起,成为一个逻辑端口,以实现出/入流量在各成员端口中的负荷负担,交换机根据用户配置的端口负荷分担策略决定报文从哪一个成员端口发送到对端的交换机。

其中,上述链路聚合组可以包括多个本地成员端口和远程成员端口,判断当前链路聚合组中是否存在本地成员端口,如果判断结果为存在本地成员端口,则控制报文从本地成员端口发送。相比于相关技术中报文需要先从本地设备转发到远端设备,然后再从远端设备的出口转发出去,本申请中的报文发送方法减少了堆叠系统中设备之间传送的流量,减轻了对系统宽带的消耗。

本申请实施例中,判断当前链路聚合组中是否存在本地成员端口的方法包括但不限于:基于本地成员端口列表获取当前链路聚合组中本地成员端口的数量,其中,本地成员端口列表专用于存储当前链路聚合中的本地成员端口信息,在端口数量不为零时,确定当前链路聚合组中存在本地成员端口。

可选地,步骤s104为判断当前链路聚合组中是否存在本地成员端口,步骤s104有两种判断结果,当判断结果指示存在本地成员端口时,从当前链路聚合组中的本地成员端口中确定用于发送报文的端口;在判断结果指示不存在本地成员端口时,从当前链路聚合组中的远端成员端口中确定用于发送报文的端口。

具体地,从当前链路聚合组中的远端成员端口中确定用于发送报文的端口包括:依据报文的内容确定第二哈希值,基于远端成员列表确定当前链路聚合组中远端成员端口的数量和基地址,其中,远端成员端口列表专用于存储当前链路聚合中的远端成员端口信息,基于第二哈希值和确定的远端成员端口的数量和基地址确定当前链路聚合组中用于发送报文的远端成员端口,其中,可以依据第二哈希值对当前链路聚合组中远端成员端口的数量进行取余运算,得到第二运算结果;依据第二运算结果和当前链路聚合组中远端成员端口的基地址确定第二出口索引,通过出口索引从而得到用于发送报文的远端成员端口。在一个可选实施例中,由于第一哈希值和第二哈希值均是基于相同的报文内容确定的,因此,上述第一哈希值和第二哈希值可以是相同的哈希值。

步骤s106,在判断结果指示存在本地成员端口时,确定用于发送报文的出口索引。

可选地,确定用于发送报文的出口索引包括:依据报文的内容确定第一哈希值;依据第一哈希值对当前链路聚合组中本地成员端口的数量进行取余运算,得到运算结果,依据运算结果和当前链路聚合组中本地成员端口的基地址确定出口索引。

步骤s108,通过出口索引所指示的本地成员端口发送报文。

可选地,通过报文的哈希值对当前链路聚合组中本地成员端口的数量取余得到第一运算结果,即确定了报文要从第几个本地成员端口转发出去,依据第一运算结果和当前链路聚合组中本地成员端口的基地址可以得到出口索引,从而可以得到发送报文的本地成员端口。

本申请通过上述步骤,采用通过分别保存本地成员端口列表和远端成员端口列表的方式,能够实现在堆叠系统中优先从本地成员端口转发,极大地减少了跨设备之间的流量,减轻对堆叠带宽的消耗。

本申请实施例提供一种在asic芯片中linkagg组选择一个成员端口的方法,但本申请实施例中的芯片不限于asic(又称专用集成电路)芯片,还可以是fpga(又称现场可编程门阵列)、np(又称网络处理器)等,图2是普通linkagg选择成员端口的流程图,如图2所示,该方法包括:

s202:根据报文内容,计算哈希值;

在计算得到哈希值之后,执行步骤s208。

s204:查找转发表确定linkagg组中成员端口,asic芯片会以linkagg组的id作为索引,得到linkagg组中成员端口数量;

s206:得到成员端口数量以及成员端口的基地址,通过linkagg组id作为索引,除了可以得到成员端口数量,也可以得到linkagg组中成员端口的基地址;

s208:成员端口基地址+哈希值%成员端口数量;

根据报文的内容计算出的哈希值对成员端口数量取余,即确定了报文要从第几个成员端口转发出去,在linkagg组中的成员端口的基地址再加上是第几个成员端口得到报文发送端口的最终地址,并执行步骤s210,其中,步骤s208的计算数据可以通过步骤s206和步骤s202中得到。

s210:得到linkagg出口,计算出口的索引,以此来确定linkagg出口。

而图3是根据本发明实施例的一种可选的堆叠系统中linkagg成员端口的流程图,如图3所示,该方法包括:

s302:根据报文内容,计算哈希值;

对本地成员端口或者远端成员端口的哈希值进行计算,在计算得到哈希值之后,执行步骤s310,或者执行步骤s312;

s304:查找转发表确定linkagg组中成员端口;

s306:得到本地成员端口基地址,本地成员端口数量,远端成员端口基地址,远端成员端口数量;

s308:判断本地成员端口数量是否为0;

即根据本地成员端口的数量判断是否有本地成员端口,如果判断结果为是,则执行步骤s310;如果判断结果为否,则执行步骤s312。

s310:远端成员端口基地址+哈希值%远端成员端口数量;

如果有本地成员口,通过哈希值对本地成员端口数量取余,并和本地成员端口的基地址相加,得到出口的索引,执行步骤s314。

s312:本地成员端口基地址+哈希值%本地成员端口数量;

如果没有本地设备的成员,通过哈希值对远端成员端口数量取余,并和远端成员端口的基地址相加,得到远端设备出口的索引,执行步骤s314。

s314:得到linkagg出口;

以出口的索引去取另外一张保存出口的表,得到最终linkagg的出口。

上述过程中,在堆叠系统中,通过分别保存本地芯片中的出口的基地址,端口数量以及远端芯片出口的基地址,实现了报文优先从本地设备的端口发送,达到了在堆叠系统中,从本地设备进入的报文优先从本地设备发送的目的,从而实现了减少跨设备之间的流量,减少对堆叠宽带的消耗的技术效果,进而解决了在堆叠系统中,从本地设备进入的报文由远端设备发送造成的流量浪费和对宽带消耗的技术问题。

本申请实施例提供另一种报文发送方法,图4是根据本申请实施例的另一种报文发送方法的流程图,如图4所示,该报文发送方法包括:

步骤s402,获取待发送的报文;

步骤s404,判断当前链路聚合组中第一类端口组合和第二类端口组合的优先级;

可选地,步骤s404中的第一类端口组合包括:本地成员端口,第二类端口组合包括:远端成员端口,其中,第一类端口组合的优先级高于第二类组合的优先级。

步骤s406,依据判断结果从第一类端口组合和第二类端口组合中确定用于发送报文的端口组合;

步骤s408,从确定的端口组合中选择用于发送报文的端口。

可选地,如果第一类端口组合的优先级高于第二类端口组合的优先级,则从第一类端口组合发送报文,即从本地成员端口发送报文;如果第二类端口组合的优先级高于第一类端口组合的优先级,则可以从第二类端口组合发送报文,即从远端成员端口发送报文。

本申请实施例提供一种报文发送方法,图5是根据本申请实施例的另一种报文发送方法的流程图,如图5所示,该报文发送方法包括:

步骤s502,获取待发送的报文;

步骤s504,从当前链路聚合组的第一类端口组合和第二类端口组合中确定用于发送报文的端口组合;

步骤s506,从确定的端口组合中选择用于发送报文的端口。

可选地,第一类端口组合和第二类端口组合可以分别是本地成员端口组合和远端成员端口组合,其中,上述端口组合可以由一个或多个相应的成员端口组成,确定用于发送报文的端口组合的方法包括但不限于以下两种方法:1)通过判断当前链路聚合组是否存在第一类端口组合,即当前链路聚合组是否存在本地成员端口,例如,如果当前链路聚合组存在第一类端口组合,则从第一类端口组合中的其中一个本地成员端口发送报文;2)可以通过判断第一类端口组合和第二类端口组合优先级的方式,使用优先级更高的端口组合中确定发送报文,例如,如果判断出第一类端口组合的优先级高于第二类端口组合,则从第一类端口组合发送报文。

本申请实施例提供一种报文发送装置,图6是根据本申请实施例的一种报文发送装置的结构图,如图6所示,该报文发送装置包括:

第一获取模块60,用于获取待发送的报文;第一判断模块62,用于判断当前链路聚合组中是否存在本地成员端口;第一确定模块64,用于在判断结果指示存在本地成员端口时,确定用于发送报文的出口索引;第一发送模块66,用于通过出口索引所指示的本地成员端口发送报文。

本申请实施例提供一种报文发送装置,图7是根据本申请实施例的另一种报文发送装置的结构图,如图7所示,该报文发送装置包括:

第二获取模块70,用于获取待发送的报文;第二判断模块72,用于判断当前链路聚合组中第一类端口组合和第二类端口组合的优先级;第二确定模块74,用于依据判断结果从第一类端口组合和第二类端口组合中确定用于发送报文的端口组合;第二选择模块76,用于从确定的端口组合中选择用于发送报文的端口。

本申请实施例提供一种报文发送装置,图8是根据本申请实施例的另一种报文发送装置的结构图,如图8所示,该报文发送装置包括:

第三获取模块80,用于获取待发送的报文;第三确定模块82,用于从当前链路聚合组的第一类端口组合和第二类端口组合中确定用于发送报文的端口组合;第三选择模块84,用于从确定的端口组合中选择用于发送报文的端口。

本申请实施例提供一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述报文发送方法。

本申请实施例提供一种处理器,处理器用于运行程序,其中,程序运行时执行上述报文发送方法。

此处需要说明的是,上述装置模块对应于方法实施例,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。

上述本发明实施例仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

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

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

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

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

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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