掌桥专利:专业的专利平台
掌桥专利
首页

转发报文的方法、装置、存储介质和计算机程序产品

文献发布时间:2023-06-19 19:30:30


转发报文的方法、装置、存储介质和计算机程序产品

技术领域

本申请涉及计算机技术领域,特别涉及一种转发报文的方法、装置、存储介质和计算机程序产品。

背景技术

计算机集群网络系统是由多台计算机设备通过局域网连接组成的网络系统,具有较强的并行数据处理能力和计算能力,可以应用于组建超算平台、商业服务器系统等。计算机集群网络系统中设备主要包括服务器与网络设备等,如交换机与路由器等。服务器用于数据处理,网络设备用于在服务器之间进行数据转发(通过报文形式)。

网络设备一般的转发报文的逻辑是,通过到达报文目的地址的最短路径所对应的出端口,转发报文。

因为一般网络架构是固定不变的,所以,任意两个设备间的最短路径也是固定不变的。相应的,在负责报文转发的网络设备中,对于发送至某个目的地址的报文,为报文选择的出端口也是固定不变的。那么,当系统中发送至个别目的地址的数据量比较大,而发送至其他目的地址的数据量比较小时,有可能导致某些链路非常拥堵,而某些链路却比较空闲,从而,影响了整个计算机集群网络系统的数据传输效率。

发明内容

本申请实施例提供了一种转发报文的方法、装置、存储介质和计算机程序产品,可以解决现有技术中计算机集群网络系统的数据传输效率较低的问题。所述技术方案如下:

第一方面,提供了一种转发报文的方法,该方法应用于网络设备,该方法包括:接收第一报文。确定第一报文的目的地址对应的至少一个出端口中每个出端口的权重。确定每个出端口的链路负载值。基于每个出端口的权重和链路负载值,选取待使用的第一出端口。通过第一出端口转发第一报文。

其中,出端口的权重与出端口到达目的地址的最短路径长度负相关。

本申请实施例所示的方案,关于确定第一报文的目的地址对应的至少一个出端口中每个出端口的权重的处理,可以有很多种可能的情况。例如,网络设备可以查询预先存储的第一路由表,确定第一报文的目的地址对应的至少一个出端口中每个出端口的权重。第一路由表中可以记录有目的地址、端口和权重的对应关系。

确定每个出端口的链路负载值的处理方式有很多种,下面对其中两种方式进行介绍:

确定方式一,对于在路由表中查找到的每个出端口,网络设备可以查询当前出端口发送队列的缓存的待发送报文的数量,从而确定出端口的队列深度,然后将其作为出端口的链路负载值。或者,可以查询当前出端口的以报文进入队列的时刻为开始时刻、以报文发送完毕接收到对端反馈的信用证的时刻为结束时刻的时延,从而确定出端口的信用证返回时延,然后将其作为出端口的链路负载值。又或者,可以查询当前出端口的数据传输速率与该出端口的数据传输速率上限的比值,从而确定出端口的带宽占用率,然后将其作为出端口的链路负载值。

确定方式二,可以构建与出端口的队列深度、信用证返回时延或带宽占用率这三种参数中的部分或全部参数相关的链路负载值函数,将出端口的队列深度、信用证返回时延或带宽占用率这三种参数中的部分或全部参数输入链路负载值函数,得到链路负载值。

基于每个出端口的权重和链路负载值,选取待使用的第一出端口的处理方式有很多种,下面对其中两种方式进行介绍:

选取方式一,对于确定出的每种权重,确定权重对应的至少一个出端口中链路负载值最小的出端口,作为待选出端口。然后,基于每个待选出端口的权重和链路负载值,确定每个待选出端口的选取分值。进而,基于每个待选出端口的选取分值,选取待使用的第一出端口。

选取方式二,基于每个出端口的权重和链路负载值,确定每个出端口的选取分值。然后,基于每个出端口的选取分值,选取待使用的第一出端口。

这样,在选择出端口的过程中,综合考虑了路径长度和链路的拥堵情况,能够有效地利用空闲的链路,从而,提高了整个计算机集群网络系统的数据传输效率。

在一种可能的实现方式中,网络设备是dragonfly+网络中的叶交换机或脊交换机。

dragonfly+网络是由多个机组(group)全互连组成,每个机组内部包括服务器(host)、叶交换机(leaf)、脊交换机(spine)。服务器可以存储或处理数据,叶交换机可以在机组内部与服务器或脊交换机进行数据传输,脊交换机可以与机组内部的叶交换机进行数据传输,也可以与机组外部的其他脊交换机进行数据传输。机组内的叶交换机之间不建立直接连接,脊交换机之间也不建立直接连接,而在任一叶交换机与任一脊交换机之间均建立直接连接,由此形成两层交换机结构。交换机可以是三层交换机,或称高性能交换机。

在一种可能的实现方式中,在确定第一报文的目的地址对应的至少一个出端口中每个出端口的权重之前,可以先确定第一报文的源机组与第一报文的目的机组不同。

网络设备首先可以获取第一报文的源地址和目的地址,在第一报文的源地址中获取源机组地址,并在第一报文的目的地址中获取目的机组地址,然后比较源机组地址和目的机组的地址,如果源机组地址和目的机组地址不同,则确定第一报文的源机组和目的机组不同。

这样,报文进行跨机组路由时,可以采用本方法,能够综合考虑路径长度和链路的拥堵情况,有效地利用空闲的链路,从而,提高了整个计算机集群网络系统的数据传输效率。对报文在同一机组内进行路由时,可以采用一般的路由方式,能够有效地避免路由环路。

在一种可能的实现方式中,在确定第一报文的目的地址对应的至少一个出端口中每个出端口的权重之前,可以先确定第一报文的源机组与网络设备所属的机组相同。

网络设备首先可以获取第一报文的源地址和网络设备的地址,在第一报文的源地址中获取源机组地址,并在网络设备的地址中获取网络设备所属机组的机组地址,然后比较源机组地址和网络设备所属机组的机组地址,如果源机组地址与网络设备所属机组的机组地址相同,则确定第一报文的源机组与网络设备所属的机组相同。

这样,在跨机组路由的过程中,当执行主体是源机组的脊节点时,可以在上行出端口中选择出端口转发报文,能够避免将报文转发至源机组的叶节点,从而有效地避免形成路由环路。

在一种可能的实现方式中,网络设备是dragonfly+网络中的脊交换机,目的地址对应的至少一个出端口为网络设备的上行出端口。

脊交换机可以预先存储有每个出端口的类型,出端口的类型包括上行出端口和下行出端口。可以根据通过出端口到达的下一节点,对出端口进行分类。对于脊节点来说,上行出端口为通过本出端口到达的下一节点为其他脊节点的出端口,下行出端口为通过本出端口到达的下一节点为叶节点的出端口。出端口的类型可以记录在网络设备的配置文件中,或者记录在网络设备的每个出端口的寄存器中。

这样,在跨机组路由的过程中,当执行主体是源机组的脊节点时,可以在上行出端口中选择出端口转发报文,能够避免选择下行出端口,从而将报文转发至源机组的叶节点,进而可以有效地避免形成路由环路。

在一种可能的实现方式中,基于网络设备的路由表中记录的目的地址、出端口和权重的对应关系,确定第一报文的目的地址对应的至少一个出端口中每个出端口的权重。

网络设备可以预先存储有第一路由表,第一路由表中可以记录有目的地址、出端口和权重的对应关系。

这样,采用路由表记录目的地址、出端口和权重的对应关系,可以避免网络设备实时计算目的地址对应的出端口的权重,从而节约了处理资源。

在一种可能的实现方式中,基于每个出端口的权重和链路负载值,确定每个出端口的选取分值,其中,出端口的选取分值与出端口的链路负载值负相关,出端口的选取分值与出端口的权重正相关,或者,选取分值与出端口的链路负载值正相关,出端口的选取分值与出端口的权重负相关。根据选取分值函数的具体形式,选取具有最小选取分值或最大选取分值的出端口,作为待选出端口。如果选取分值与出端口的链路负载值负相关,出端口的选取分值与出端口的权重正相关,则可以选取具有最大选取分值的出端口作为待使用的第一出端口,如果选取分值与出端口的链路负载值正相关,出端口的选取分值与出端口的权重负相关,则可以选取具有最小选取分值的出端口作为待使用的第一出端口。

这样,可以针对实际需求设置不同的选取分值函数,从而更灵活地根据路径长度和链路的拥堵情况来选择出端口,提高了路由策略的灵活性。

在一种可能的实现方式中,对于确定出的每种权重,确定权重对应的至少一个出端口中链路负载值最小的出端口,作为待选出端口。基于每个待选出端口的权重和链路负载值,确定每个待选出端口的选取分值,其中,待选出端口的选取分值与待选出端口的链路负载值负相关,待选出端口的选取分值与待选出端口的权重正相关。基于每个待选出端口的选取分值,选取待使用的第一出端口。

多个出端口的权重可能相同。对于确定出的每种权重,可以确定权重对应的至少一个出端口中链路负载值最小的出端口,作为待选出端口。然后,可以将每个待选出端口的权重和链路负载值输入选取分值函数,得到每个待选出端口的选取分值。

这样,对于存在多个权重相同的出端口的情况,选取分值函数只需计算待选出端口的选取分值,从而减小了处理资源,提高了处理效率。

在一种可能的实现方式中,出端口的链路负载值为出端口的队列深度、信用证返回时延或带宽占用率。

队列深度为端口发送队列缓存的待发送报文的数量。信用证返回时延为以报文进入队列的时刻为开始时刻、以报文发送完毕接收到对端反馈的信用证的时刻为结束时刻的时延。带宽占用率为出端口当前的数据传输速率与该出端口的数据传输速率上限的比值。

可选的,可以基于出端口的队列深度、信用证返回时延或带宽占用率这三种参数中的部分或全部参数确定出端口的链路负载值。可以构建与出端口的队列深度、信用证返回时延或带宽占用率这三种参数中的部分或全部参数相关的链路负载值函数,将出端口的队列深度、信用证返回时延或带宽占用率这三种参数中的部分或全部参数输入链路负载值函数,得到链路负载值。

这样,链路负载值可以准确地表示链路的拥堵情况。

在一种可能的实现方式中,接收第二报文。确定第二报文的源机组与网络设备所属的机组不同。确定第二报文的目的地址对应的至少一个出端口中每个出端口的权重。基于第二报文的目的地址对应的至少一个出端口中每个出端口的权重,选取待使用的第二出端口。通过第二出端口转发第二报文。

关于确定第二报文的目的地址对应的至少一个出端口中每个出端口的权重的处理,可以有很多种可能的情况。例如,网络设备可以查询预先存储的第二路由表,确定第二报文的目的地址对应的至少一个出端口中每个出端口的权重。第二路由表中可以记录有目的地址、端口和权重的对应关系。

基于第二报文的目的地址对应的至少一个出端口中每个出端口的权重,选取待使用的第二出端口,可以根据每个出端口的权重,在第二报文的目的地址对应的至少一个出端口中,确定权重最大的出端口,并选取具有最大权重的出端口,作为待使用的第二出端口。如果存在一个权重最大的出端口,则选取权重最大的出端口,作为待使用的第二出端口。如果存在多个权重最大的出端口,则获取每个权重最大的出端口的链路负载值,在多个权重最大的出端口中,选取链路负载值最小的出端口,作为待使用的第二出端口。

这样,在选择出端口的过程中,优先考虑了路径长度,并在最短路径长度相同的场景考虑链路的拥堵情况,能够有效地利用最短的路径和空闲的链路,从而,提高了整个计算机集群网络系统的数据传输效率。

在一种可能的实现方式中,在第二报文的目的地址对应的至少一个出端口中,确定权重最大的出端口。如果存在多个权重最大的出端口,则获取每个权重最大的出端口的链路负载值,在多个权重最大的出端口中,选取链路负载值最小的出端口,作为待使用的第二出端口。

这样,在选择出端口的过程中,优先考虑了路径长度,并在最短路径长度相同的场景考虑链路的拥堵情况,能够有效地利用最短的路径和空闲的链路,从而,提高了整个计算机集群网络系统的数据传输效率。

第二方面,提供了一种转发报文的装置,该装置包括一个或多个模块,该一个或多个模块用于实现第一方面及其可能的实现方式的方法。

第三方面,提供了一种计算机设备,计算机设备包括存储器和处理器,存储器用于存储计算机指令,处理器用于执行存储器存储的计算机指令,以使计算机设备执行第一方面及其可能的实现方式的方法。

第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序代码,当计算机程序代码被计算机设备执行时,计算机设备执行第一方面及其可能的实现方式的方法。

第五方面,提供了一种计算机程序产品,计算机程序产品包括计算机程序代码,在计算机程序代码被计算机设备执行时,计算机设备执行第一方面及其可能的实现方式的方法。

本申请实施例提供的技术方案带来的有益效果是:

本申请实施例,首先网络设备接收报文,确定报文的目的地址对应的每个出端口的权重,并确定每个出端口的链路负载值,然后基于每个出端口的权重和链路负载值,选取待使用的出端口,进而通过待使用的出端口转发报文。这样,在选择出端口的过程中,综合考虑了路径长度和链路的拥堵情况,能够有效地利用空闲的链路,从而,提高整个计算机集群网络系统的数据传输效率。

附图说明

图1是本申请实施例提供的一种dragonfly网络的结构示意图;

图2是本申请实施例提供的一种dragonfly+网络的结构示意图;

图3是本申请实施例提供的一种网络设备的结构示意图;

图4是本申请实施例提供的一种转发报文的方法流程图;

图5是本申请实施例提供的一种最短路径的示意图;

图6是本申请实施例提供的一种多条最短路径的示意图;

图7是本申请实施例提供的一种转发报文的示意图;

图8是本申请实施例提供的一种转发报文的示意图;

图9是本申请实施例提供的一种转发报文的方法流程图;

图10是本申请实施例提供的一种转发报文的示意图;

图11是本申请实施例提供的一种转发报文的示意图;

图12是本申请实施例提供的一种转发报文的方法流程图;

图13是本申请实施例提供的一种转发报文的示意图;

图14是本申请实施例提供的一种转发报文的示意图;

图15是本申请实施例提供的一种转发报文的装置示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先,对本申请实施例中涉及的若干个名词进行介绍:

节点:组成集群网络中的单台计算机设备称为节点。

链路:相互直连的两个节点之间的数据传输线路称为链路。

路径:任意两个节点之间的数据传输线路称为路径,一条路径可以包括一条或多条链路。

路径长度:路径包括的链路的数量。

队列深度:端口发送队列缓存的待发送报文的数量。

信用证返回时延:是以报文进入队列的时刻为开始时刻、以报文发送完毕接收到对端反馈的信用证的时刻为结束时刻的时延。

带宽占用率:出端口当前的数据传输速率与该出端口的数据传输速率上限的比值。

路由环路:报文在一系列网络设备之间不断循环传输始终无法被传输到这些网络设备之外的网络设备的一种现象。

跳数:用于指出路由的成本,通常情况下代表到达目的地址所需要经过的转发次数,一跳表示一次数据转发。

机组(group):也被称为数据传输单元(point of delivery,POD),是由网络设备和网络设备连接的服务器构成的设备组,这个设备组一般安装在同一个机柜里。机组是数据中心的基本组成单位。

本申请实施例提供了一种自适应路由方法,该方法可以应用在计算机集群网络(后简称集群网络)中。该计算机集群网络可以是各种类型的拓扑网络,例如胖树(fat-tree)拓扑网络、蜻蜓(dragonfly)拓扑网络和蜻蜓拓展(dragonfly+)拓扑网络等。

图1是dragonfly网络的一种示例,如图1所示,dragonfly网络由多个机组全互连组成,每个机组内部包括服务器(host)、交换机(switch)。服务器可以存储或处理数据,交换机(switch)可以与机组内部的服务器或其他交换机进行数据传输,也可以与机组外部的其他交换机进行数据传输。机组内的交换机之间全互连,由此形成一层交换机结构。

图2是dragonfly+网络的一种示例,如2所示,dragonfly+网络由多个机组(group)全互连组成,每个机组内部包括服务器(host)、叶交换机(leaf)、脊交换机(spine)。服务器可以存储或处理数据,叶交换机可以在机组内部与服务器或脊交换机进行数据传输,脊交换机可以与机组内部的叶交换机进行数据传输,也可以与机组外部的其他脊交换机进行数据传输。机组内的叶交换机之间不建立直接连接,脊交换机之间也不建立直接连接,而在任一叶交换机与任一脊交换机之间均建立直接连接,由此形成两层交换机结构。dragonfly+网络内的每台设备都是一个网络节点,服务器可以称为服务器节点,叶交换机可以称为叶节点,脊交换机可以称为脊节点。

当集群网络中的服务器需要发送报文至其他服务器时,首先将报文发送至相互直连的叶节点。叶节点根据报文携带的目的地址将报文发送至下一节点,下一节点根据报文携带的目的地址进行报文转发,依此类推,直至将报文发送至目的地址。

本申请实施例以dragonfly+网络为例进行说明,其他情况与之类似,本申请实施例不再赘述。

基于上述应用场景,本申请实施例提供了一种转发报文的方法,该方法可以由计算机设备实现。该计算机设备可以是集群网络中的网络设备等,网络设备可以是转发设备等,例如交换机或路由器等,交换机可以是三层交换机。

图3是本申请实施例提供的一种网络设备的结构示意图,从硬件组成上来看,网络设备300的结构可以如图2所示,包括处理器301、存储器302和通信部件303。

处理器301可以是中央处理器(central processing unit,CPU)或系统级芯片(system on chip,SoC)等,处理器301可以用于确定报文的目的地址对应的每个出端口的权重,还可以用于确定每个出端口的链路负载值、选取待使用的目标出端口,等等。

存储器302可以包括各种易失性存储器或非易失性存储器,如固态硬盘(solidstate disk,SSD)、动态随机存取存储器(dynamic random access memory,DRAM)内存等。存储器302可以用于存储记录有目的地址、出端口和权重的对应关系的路由表等。

通信部件303(即端口)可以是有线网络连接器、无线保真(wireless fidelity,WiFi)模块、蓝牙模块、蜂巢网通信模块等。本申请实施例的上述应用场景下,通信部件303一般为优先网络连接器。通信部件303可以用于与其他设备进行数据传输,其他设备可以是服务器、也可以是网络设备等。例如,某一端口可以接收服务器发送的报文,另一端口可以将该报文转发给下一跳的网络设备。

基于上述应用场景,本申请实施例以dragonfly+组网中的叶节点或脊节点的网络设备为例进行说明,其他情况与之类似,本申请实施例不再赘述。下面将结合具体实施方式,对图4所示的处理流程进行详细的说明,内容可以如下:

401,网络设备接收第一报文。

其中,第一报文的报文头中可以记录有第一报文的源地址和目的地址,源地址和目的地址可以均为集群网络中的服务器地址,源地址和目的地址可以采用互联网协议(internet protocol,IP)地址,或者端点编码(endpoint identity,EID)地址,或者本地编码(local identity,LID)地址。服务器地址中可以记录有服务器所属的机组的地址,即源地址中记录有源服务器所属的机组(源机组)的地址,目的地址中记录有目的服务器所属的机组(目的机组)的地址。服务器地址可以由多个字段组成,服务器所属的机组的地址可以记录在服务器地址的部分字段中。例如,以服务器地址为EID地址为例,服务器地址为198.162.00,其中“198”可以指示服务器所属的机组的地址。报文头中还可以记录有该报文的转发方法标识,网络设备获取该转发方法标识后,可以按照该转发方法标识对应的转发报文的方法转发该报文。例如,第一转发方法标识(如0)对应方法一,方法一可以是图4、图9、图12所示的方法。

在实施中,与本网络设备直连的源服务器或其他网络设备将第一报文发送至本网络设备,本网络设备接收第一报文。本网络设备是叶节点时,可以接收与该叶节点直连的服务器发送的第一报文,这种情况该服务器就是第一报文的源服务器,该叶节点是第一报文的第一跳的网络设备,该叶节点与该服务器属于相同的机组。本网络设备是脊节点时,可以接收与该脊节点直连的叶节点发送的第一报文,这种情况该脊节点和该叶节点属于相同的机组。

402,网络设备确定第一报文的源机组与第一报文的目的机组不同。

在实施中,网络设备首先可以获取第一报文的源地址和目的地址,在第一报文的源地址中获取源机组地址,并在第一报文的目的地址中获取目的机组地址,然后比较源机组地址和目的机组的地址,如果源机组地址和目的机组地址不同,则确定第一报文的源机组和目的机组不同,这种情况可以继续执行步骤403以及后面的处理步骤。如果源机组地址和目的机组地址相同,则确定第一报文的源机组和目的机组相同,这种情况的处理在后面图12所示的处理流程中会详细说明。

可选的,也可以不进行步骤402的判断确定处理,也即,无论第一报文的源机组和目的机组是否相同,都进行本流程后面的处理步骤。

403,网络设备确定第一报文的源机组与网络设备所属的机组相同。

其中,网络设备可以预先存储有本网络设备的地址,网络设备的地址可以采用IP地址,或者EID地址,或者LID地址。网络设备的地址中记录有网络设备所属机组的地址。网络设备的地址可以由多个字段组成,网络设备所属的机组的地址可以记录在网络设备地址的部分字段中。例如,以转发地址是EID地址为例,网络设备地址为198.65.00,其中“198”可以指示网络设备所属的机组的地址。

在实施中,网络设备首先可以获取第一报文的源地址和网络设备的地址,在第一报文的源地址中获取源机组地址,并在网络设备的地址中获取网络设备所属机组的机组地址,然后比较源机组地址和网络设备所属机组的机组地址,如果源机组地址与网络设备所属机组的机组地址相同,则确定第一报文的源机组与网络设备所属的机组相同,这种情况可以继续执行步骤404以及后面的处理步骤。如果源机组地址与网络设备所属机组的机组地址不同,则确定第一报文的源机组与网络设备所属的机组不同,这种情况的处理在后面图9所示的处理流程中会详细说明。

可选的,也可以不进行步骤403的判断确定处理,也即,无论第一报文的源机组和网络设备所属的机组是否相同,都进行本流程后面的处理步骤。

404,网络设备确定第一报文的目的地址对应的至少一个出端口中每个出端口的权重。

其中,出端口的权重与出端口到达目的地址的最短路径长度负相关,即出端口到达目的地址的最短路径长度越小,则该出端口的权重越大。例如,如图5所示,对于报文的目的地址为EID1,EID1指示的服务器为502的情况,叶节点501可以通过出端口5011或出端口5012,将报文发送至下一节点。通过出端口5011到达目的地址的最短路径为R1,通过出端口5012到达目的地址的最短路径为R2,R1包括4条链路,对应的权重可以为3;R2包括7条链路,对应的权重可以为1。

在实施中,网络设备可以预先存储有第一路由表,如表1所示,第一路由表中可以记录有目的地址、出端口和权重的对应关系。

表1

在设置第一路由表时,可以根据每个出端口到达目的地址的最短路径长度,确定每个出端口对应的权重。设置的方式可以是查询预先存储的第一对应关系表,确定出端口到达目的地址的最短路径长度对应的权重。如表2所示,第一对应关系表可以记录有最短路径长度和权重的对应关系。然后将出端口到达目的地址的最短路径长度对应的权重,作为出端口的权重。例如,出端口A到达目的地址的最短路径长度为4,则确定出端口到达目的地址的最短路径长度对应的权重为3,将3作为出端口A的权重。

表2

在接收第一报文并获取第一报文的目的地址后,网络设备可以查询预先存储的第一路由表,确定第一报文的目的地址对应的至少一个出端口中每个出端口的权重。如确定出端口A的权重为3,出端口B的权重为1。

可选的,对于网络设备是脊节点的情况,步骤404的具体处理可以是:脊节点可以确定第一报文的目的地址对应的至少一个出端口中每个上行出端口的权重。

在实施中,脊节点可以预先存储有每个端口的类型,端口的类型包括上行和下行。可以根据通过出端口到达的下一节点,对出端口进行分类。对于脊节点来说,上行出端口为通过本出端口到达的下一节点为其他脊节点的出端口,下行出端口为通过本出端口到达的下一节点为叶节点的出端口。出端口的类型可以记录在网络设备的配置文件中,或者记录在网络设备的每个出端口的寄存器中。

在接收第一报文并获取第一报文的目的地址后,脊节点可以确定第一报文的目的地址对应的至少一个上行出端口中每个出端口的权重。

确定方式一:脊节点可以预先存储有第二路由表,第二路由表中可以记录有目的地址、端口和权重的对应关系,确定出端口的权重的方式可以参见上述方式。在接收第一报文并获取第一报文的目的地址后,脊节点可以查询预先存储的第二路由表,确定第一报文的目的地址对应的每个出端口的权重。确定第一报文的目的地址对应的每个出端口的权重后,可以查询目的地址对应的每个出端口的配置文件,确定每个出端口的类型。然后,可以在每个出端口的权重中,选取端口类型为上行的出端口的权重。例如,查询预先存储的第二路由表,确定第一报文的目的地址对应的出端口E、F、G、H的权重分别为1、2、2、3,然后查询目的地址对应的出端口E、F、G、H的配置文件,确定出端口E、F、G、H的类型分别为上行、下行、上行、下行,然后选取端口类型为上行的出端口E、G的权重。

或者,网络设备可以获取每个出端口的寄存器中记录的端口类型,然后,可以在每个出端口的权重中,选取端口类型为上行的出端口的权重。例如,查询预先存储的第二路由表,确定第一报文的目的地址对应的出端口E、F、G、H的权重分别为1、2、2、3,然后获取出端口E、F、G、H的寄存器中记录的端口类型,确定出端口E、F、G、H的类型分别为上行、下行、上行、下行,然后选取端口类型为上行出端口的出端口E、G的权重。

确定方式二:脊节点可以预先存储有第三路由表,第三路由表中可以记录有目的地址、出端口、端口类型和权重的对应关系。第三路由表可以如表3所示。确定出端口的权重的方式可以参见上述方式。在接收第一报文并获取第一报文的目的地址后,脊节点可以查询预先存储的第三路由表,确定第一报文的目的地址对应的每个上行出端口的权重。例如,第一报文的目的地址为198.56.03,查询预先存储的第三路由表,确定第一报文的目的地址对应的上行出端口I的权重为2。

表3

可选的,对于网络设备是叶节点的情况,步骤404的具体处理与脊节点的情况类似,可以参见网络设备是脊节点的情况的具体处理。叶节点也可以预先存储有每个出端口的端口类型,端口类型包括上行和下行。根据通过出端口到达的下一节点,可以对出端口进行分类。对于叶节点来说,上行出端口为通过本出端口到达的下一节点为脊节点的出端口,下行出端口为通过本出端口到达的下一节点为服务器的出端口。

405,网络设备确定每个出端口的链路负载值。

其中,出端口的链路负载值为出端口的队列深度、信用证返回时延或带宽占用率。

在实施中,对于在路由表中查找到的每个出端口,网络设备可以查询当前出端口发送队列的缓存的待发送报文的数量,从而确定出端口的队列深度,然后将其作为出端口的链路负载值。或者,可以查询当前出端口的以报文进入队列的时刻为开始时刻、以报文发送完毕接收到对端反馈的信用证的时刻为结束时刻的时延,从而确定出端口的信用证返回时延,然后将其作为出端口的链路负载值。又或者,可以查询当前出端口的数据传输速率与该出端口的数据传输速率上限的比值,从而确定出端口的带宽占用率,然后将其作为出端口的链路负载值。

可选的,可以基于出端口的队列深度、信用证返回时延或带宽占用率这三种参数中的部分或全部参数确定出端口的链路负载值。

在实施中,可以对出端口的队列深度、信用证返回时延或带宽占用率这三种参数中的部分或全部参数分别进行加权后求和,从而得到链路负载值。

406,网络设备基于每个出端口的权重和链路负载值,选取待使用的第一出端口。

方式一,对于确定出的每种权重,确定权重对应的至少一个出端口中链路负载值最小的出端口,作为待选出端口。然后,基于每个待选出端口的权重和链路负载值,确定每个待选出端口的选取分值。进而,基于每个待选出端口的选取分值,选取待使用的第一出端口。

其中,待选出端口的选取分值与待选出端口的链路负载值负相关,待选出端口的选取分值与待选出端口的权重正相关,即待选出端口的链路负载值越大,待选出端口的选取分值越小,待选出端口的权重越大,待选出端口的选取分值越大。

对于网络设备来说,可能存在多个权重相同的出端口。例如,如图6所示,叶节点602接收源服务器601发送的第一报文,对于第一报文的目的地址为EID2,EID2指示的服务器为603的情况,叶节点602可以通过出端口6021、出端口6022或出端口6023将第一报文发送至下一节点。通过出端口6021到达目的地址的最短路径为Q1,通过出端口6022到达目的地址的最短路径为Q2,通过出端口6023到达目的地址的最短路径为Q3。Q1包括7条链路,对应的权重可以为1;Q2包括4条链路,对应的权重可以为3;Q3包括7条链路,对应的权重可以为1。即出端口6021和出端口6023的权重相同。

在实施中,对于确定出的每种权重,可以确定权重对应的至少一个出端口中链路负载值最小的出端口,作为待选出端口。例如,出端口K的权重为2,链路负载值为2;出端口L的权重为2,链路负载值为8。则对于确定出的数值为2的权重,可以确定权重为2的出端口L和出端口K中,选取链路负载值最小的出端口,即出端口L,作为权重为2的待选出端口。同理,可以在其他权重相同的端口中,确定待选出端口,如在权重均为1的出端口中确定待选出端口P。

确定每种权重对应的待选出端口后,可以将每个待选出端口的权重和链路负载值输入选取分值函数,得到每个待选出端口的选取分值。选取分值函数可以有多种形式,选取分值可以与出端口的链路负载值正相关,出端口的选取分值与出端口的权重负相关。根据选取分值函数的具体形式,选取具有最小选取分值或最大选取分值的出端口,作为待选出端口。如果选取分值与出端口的链路负载值负相关,出端口的选取分值与出端口的权重正相关,则可以选取具有最大选取分值的出端口作为待使用的第一出端口,如果选取分值与出端口的链路负载值正相关,出端口的选取分值与出端口的权重负相关,则可以选取具有最小选取分值的出端口作为待使用的第一出端口。

例如,选取分值函数可以为:

其中,f

以上述选取分值函数为例,可以将每个待选出端口的权重和链路负载值输入该选取分值函数,得到每个待选出端口的选取分值。例如,待选出端口L的权重为2,链路负载值为8,调整值δ

得到每个待选出端口的选取分值后,可以选取具有最大选取分值的待选出端口,作为待使用的第一出端口。例如,得到待选出端口L的选取分值f

方式二,基于每个出端口的权重和链路负载值,确定每个出端口的选取分值。然后,基于每个出端口的选取分值,选取待使用的第一出端口。

其中,出端口的选取分值与出端口的链路负载值负相关,出端口的选取分值与出端口的权重正相关。

在实施中,可以将每个出端口的权重和链路负载值输入选取分值函数,得到每个出端口的选取分值。选取分值函数可以有多种形式,相关说明可以参见方式一。例如,选取分值函数可以为:

其中,f

以上述选取分值函数为例,可以将每个出端口的权重和链路负载值输入该选取分值函数,得到每个出端口的选取分值。例如,出端口M的权重为2,链路负载值为8,调整值δ

得到每个出端口的选取分值后,可以选取具有最大选取分值的出端口,作为待使用的第一出端口。例如,得到出端口M的选取分值f

407,网络设备通过第一出端口转发第一报文。

可选的,在某些情况下,例如集群网络整体链路负载非常低的情况,步骤404确定的出端口的权重除了包括上行出端口的权重,也可以包括下行出端口的权重。步骤404中仅使用上行出端口是为了在网络拥堵的情况下防止形成报文环路,报文环路会带来很大的网络传输资源浪费。

下面针对图4的流程给出具体示例。

如图7所示,对于源服务器701将报文发送至目的服务器703,网络设备是叶节点702的情况:

首先,与叶节点702直连的源服务器701将报文发送至叶节点702,叶节点702接收报文。

然后,叶节点702获取报文的源地址和目的地址,并在报文的源地址中获取源机组地址,在报文的目的地址中获取目的机组地址。进而比较源机组地址和目的机组的地址,确定源机组地址和目的机组地址不同,从而确定报文的源机组和目的机组不同。

随后,叶节点702获取叶节点702自身的地址,并在叶节点702自身的地址中获取叶节点702所属机组的机组地址。进而比较源机组地址和叶节点702所属机组的机组地址,确定源机组地址与网络设备所属机组的机组地址相同,从而确定报文的源机组与叶节点702所属的机组相同。

接着,叶节点702可以查询预先存储的路由表,确定报文的目的地址对应的出端口的权重。

之后,对于在路由表中查找到的每个出端口,叶节点702可以查询当前出端口发送队列的缓存的待发送报文的数量,从而确定出端口的队列深度,然后将其作为出端口的链路负载值。

再后,对于确定出的每种权重,叶节点702可以确定每种权重对应的出端口中链路负载值最小的出端口,作为待选出端口。

随后,将每个待选出端口的权重和链路负载值分别输入选取分值函数,得到每个待选出端口的选取分值。选取具有最大选取分值的待选出端口,作为待使用的出端口。

最后,通过待使用的出端口转发报文。

如图8所示,对于源服务器801将报文发送至目的服务器804,网络设备是脊节点803的情况:

首先,与脊节点803直连的叶节点802将报文发送至脊节点803,脊节点803接收报文。

然后,脊节点803获取报文的源地址和目的地址,并在报文的源地址中获取源机组地址,在报文的目的地址中获取目的机组地址。进而比较源机组地址和目的机组的地址,确定源机组地址和目的机组地址不同,从而确定报文的源机组和目的机组不同。

随后,脊节点803获取脊节点803自身的地址,并在脊节点803自身的地址中获取脊节点803所属机组的机组地址。进而比较源机组地址和脊节点803所属机组的机组地址,确定源机组地址与网络设备所属机组的机组地址相同,从而确定报文的源机组与脊节点803所属的机组相同。

接着,脊节点803可以查询预先存储的路由表,确定报文的目的地址对应的出端口的权重。并查询目的地址对应的每个出端口的配置文件,确定每个出端口的端口类型。进而可以在每个出端口的权重中,选取端口类型为上行的出端口的权重,从而得到每个上行出端口的权重。

之后,对于每个上行出端口,脊节点803可以查询当前上行出端口发送队列的缓存的待发送报文的数量,从而确定上行出端口的队列深度,然后将其作为上行出端口的链路负载值。

再后,对于确定出的每种权重,脊节点803可以确定每种权重对应的上行出端口中链路负载值最小的出端口,作为待选出端口。

随后,将每个待选出端口的权重和链路负载值分别输入选取分值函数,得到每个待选出端口的选取分值。选取具有最大选取分值的待选出端口,作为待使用的出端口。

最后,通过待使用的出端口转发报文。

上述处理过程针对的是报文的源服务器与网络设备所属的机组相同的情况,对于报文的源服务器与网络设备所属的机组不同的情况,可以采用如图9所示的处理流程。该处理流程可以包括以下步骤:

901,网络设备接收第二报文

其中,第二报文可以记录有第二报文的源地址和目的地址,报文头中还可以记录有该报文的转发方法标识。源地址、目的地址和转发方法标识的相关说明可以参见401,在此不做赘述。

在实施中,与本网络设备直连的其他网络设备将第二报文发送至该网络设备,该网络设备接收第二报文。本网络设备是叶节点时,可以接收与该叶节点直连的脊节点发送的第二报文,这种情况该叶节点与该脊节点属于相同的机组。本网络设备是脊节点时,可以接收与该脊节点直连的叶节点,这种情况该脊节点和该叶节点属于相同的机组。或者,可以接收与该脊节点直连的其他脊节点,这种情况该脊节点和其他脊节点属于不同的机组。

902,网络设备确定第二报文的源机组与第二报文的目的机组不同。

在实施中,该步骤相应的处理过程与902的处理过程类似,可以参考902的相关说明。与402不同的是,902处理的是第二报文,如果第二报文的源机组地址和目的机组地址不同,则确定第二报文的源机组和目的机组不同,这种情况可以继续执行步骤903以及后面的处理步骤。如果第二报文的源机组地址和目的机组地址相同,则确定第二报文的源机组和目的机组相同,这种情况的处理在后面图12所示的处理流程中会详细说明。

可选的,也可以不进行步骤902的判断确定处理,也即,无论第二报文的源机组和目的机组是否相同,都进行本流程后面的处理步骤。

903,确定第二报文的源机组与网络设备所属的机组不同。

其中,网络设备可以预先存储有本网络设备的地址,相关说明可以参见403。

在实施中,该步骤相应的处理过程与403的处理过程类似,可以参考403的相关说明。与403不同的是,如果源机组地址与网络设备所属机组的机组地址不同,则确定第二报文的源机组与网络设备所属的机组不同,这种情况可以继续执行步骤904以及后面的处理步骤。如果源机组地址与网络设备所属机组的机组地址相同,则确定第二报文的源机组与网络设备所属的机组相同,这种情况的处理在前面图4所示的处理流程中有详细说明。

可选的,也可以不进行步骤903的判断确定处理,也即,无论第二报文的源机组和网络设备所属的机组是否相同,都进行本流程后面的处理步骤。

904,确定第二报文的目的地址对应的至少一个出端口中每个出端口的权重。

其中,出端口的权重与出端口到达目的地址的最短路径长度负相关。相关说明可以参见404。

在实施中,网络设备可以预先存储有第二路由表,第二路由表中可以记录有目的地址、端口和权重的对应关系。路由表的作用、设置权重的方式可以参见404,在此不做赘述。在接收第二报文并获取第二报文的目的地址后,网络设备可以查询预先存储的第二路由表,确定第二报文的目的地址对应的至少一个出端口中每个出端口的权重。

905,基于第二报文的目的地址对应的至少一个出端口中每个出端口的权重,选取待使用的第二出端口。

在实施中,首先可以根据每个出端口的权重,在第二报文的目的地址对应的至少一个出端口中,确定权重最大的出端口,并选取具有最大权重的出端口,作为待使用的第二出端口。

如果存在一个权重最大的出端口,则选取权重最大的出端口,作为待使用的第二出端口。例如,出端口S的权重为2,出端口T的权重为3,则选取出端口T作为待使用的第二出端口。

如果存在多个权重最大的出端口,则获取每个权重最大的出端口的链路负载值,在多个权重最大的出端口中,选取链路负载值最小的出端口,作为待使用的第二出端口。例如,出端口U的权重为1,链路负载值为2;出端口V的权重为2,链路负载值为3;出端口W的权重为2,链路负载值为6。则在V出端口和W出端口中,选取出端口V作为待使用的第二出端口。

906,通过第二出端口转发第二报文。

下面针对图9的流程给出具体示例。

如图10所示,对于源服务器1001将报文发送至目的服务器1005,网络设备是脊节点1004的情况:

首先,与脊节点1004直连的脊节点1003将报文发送至脊节点1004,脊节点1004接收第一报文。

然后,脊节点1004获取报文的源地址和目的地址,并在报文的源地址中获取源机组地址,在报文的目的地址中获取目的机组地址。进而比较源机组地址和目的机组的地址,确定源机组地址和目的机组地址不同,从而确定报文的源机组和目的机组不同。

随后,脊节点1004获取脊节点1004自身的地址,并在脊节点1004自身的地址中获取脊节点1004所属机组的机组地址。进而比较源机组地址和脊节点1004所属机组的机组地址,确定源机组地址与脊节点1004所属机组的机组地址不同,从而确定报文的源机组与脊节点1004所属的机组不同。

接着,脊节点1004可以查询预先存储的路由表,确定报文的目的地址对应的出端口的权重。

之后,对于每个出端口,如果存在一个权重最大的出端口,则脊节点1004可以选取权重最大的出端口,作为待使用的第二出端口。如果存在多个权重最大的出端口,则脊节点1004可以获取每个权重最大的出端口的链路负载值,在多个权重最大的出端口中,选取链路负载值最小的出端口,作为待使用的出端口。

最后,通过待使用的出端口转发报文。

如图11所示,对于源服务器1101将报文发送至目的服务器1106,网络设备是叶节点1105的情况:

首先,与叶节点1105直连的脊节点1104将报文发送至叶节点1105,叶节点1105接收报文。

然后,叶节点1105获取报文的源地址和目的地址,并在报文的源地址中获取源机组地址,在报文的目的地址中获取目的机组地址。进而比较源机组地址和目的机组的地址,确定源机组地址和目的机组地址不同,从而确定报文的源机组和目的机组不同。

随后,叶节点1105获取叶节点1105自身的地址,并在叶节点1105自身的地址中获取叶节点1105所属机组的机组地址。进而比较源机组地址和叶节点1105所属机组的机组地址,确定源机组地址与网络设备所属机组的机组地址不同,从而确定报文的源机组与叶节点1105所属的机组不同。

接着,叶节点1105可以查询预先存储的路由表,确定报文的目的地址对应的出端口的权重。

之后,对于每个出端口,如果存在一个权重最大的出端口,则叶节点1105可以选取权重最大的出端口,作为待使用的第二出端口。如果存在多个权重最大的出端口,则叶节点1105可以获取每个权重最大的出端口的链路负载值,在多个权重最大的出端口中,选取链路负载值最小的出端口,作为待使用的出端口。

最后,通过待使用的出端口转发报文。

上述两个处理过程针对的是确定报文的源机组与报文的目的机组不同的情况,对于报文的源地址与报文的目的机组相同的情况,可以采用如图12所示的处理流程。该处理流程可以包括以下步骤:

1201,网络设备接收第三报文

其中,第三报文可以记录有第三报文的源地址和目的地址,报文头中还可以记录有该报文的转发方法标识。源地址、目的地址和转发方法标识的相关说明可以参见401,在此不做赘述。

在实施中,与本网络设备直连的源服务器或其他网络设备将第三报文发送至本网络设备,本网络设备接收第三报文。本网络设备是叶节点时,可以接收与该叶节点直连的服务器发送的第三报文,这种情况该服务器就是第三报文的源服务器,该叶节点是第三报文的第一跳的网络设备,该叶节点与该服务器属于相同的机组。本网络设备是脊节点时,可以接收与该脊节点直连的叶节点发送的第三报文,这种情况该脊节点和该叶节点属于相同的机组。

1202,网络设备确定第三报文的源机组与第三报文的目的机组相同。

在实施中,该步骤相应的处理过程与402的处理过程类似,可以参考402的相关说明。与402不同的是,1202处理的是第三报文,如果第三报文的源机组地址和目的机组地址相同,则确定第三报文的源机组和目的机组相同,这种情况可以继续执行步骤1203以及后面的处理步骤。如果第三报文的源机组地址和目的机组地址不同,则确定第三报文的源机组和目的机组不同,这种情况的处理在前面图4和图9所示的处理流程中有详细说明。

1203,网络设备基于预先存储的第三路由表,选取待使用的第三出端口。

在实施中,可以查询预先存储的第三路由表,第三路由表中可以记录有目的地址和出端口的对应关系。例如,目的地址为198.162.02,对应的出端口为出端口X。然后将目的地址对应的出端口作为待使用的第三出端口。例如,将出端口X作为待使用的第三出端口。

1204,网络设备通过第三出端口转发第三报文。

下面针对图12的流程给出具体示例。

如图13所示,对于源服务器1301将报文发送至目的服务器1303,网络设备是叶节点1302的情况:

首先,与叶节点1302直连的源服务器1301将报文发送至叶节点1302,叶节点1302接收报文。

然后,叶节点1302获取报文的源地址和目的地址,并在报文的源地址中获取源机组地址,在报文的目的地址中获取目的机组地址。进而比较源机组地址和目的机组的地址,确定源机组地址和目的机组地址相同,从而确定报文的源机组和目的机组相同。

随后,叶节点1302可以查询预先存储的路由表,确定报文的目的地址对应的出端口。将目的地址对应的出端口作为待使用的出端口。

最后,通过待使用的出端口转发报文。

如图14所示,对于源服务器1401将报文发送至目的服务器1404,网络设备是脊节点1403的情况:

首先,与脊节点1403直连的叶节点1402将报文发送至脊节点1403,脊节点1403接收报文。

然后,脊节点1403获取报文的源地址和目的地址,并在报文的源地址中获取源机组地址,在报文的目的地址中获取目的机组地址。进而比较源机组地址和目的机组的地址,确定源机组地址和目的机组地址相同,从而确定报文的源机组和目的机组相同。

随后,脊节点1403可以查询预先存储的路由表,确定报文的目的地址对应的出端口。将目的地址对应的出端口作为待使用的出端口。

最后,通过待使用的出端口转发报文。

可选的,对于网络设备接收的第四报文中,报文头记录的转发方法标识(如1)对应的转发方法为方法二的情况,网络设备可以获取第四报文中的目的地址,并查询预先存储的第四路由表。第四路由表中可以记录有目的地址和出端口的对应关系。例如,目的地址为198.182.02,对应的出端口为出端口Y。然后将目的地址对应的出端口作为待使用的第四出端口。例如,将出端口Y作为待使用的第四出端口。进而可以通过第四出端口转发第四报文。

上述三个处理流程以dragonfly+网络为例进行说明,本申请提供的转发报文的方法应用在dragonfly网络中的相应的处理流程与上述三个处理流程类似,可以参考上述处理流程的相关说明。与上述处理流程不同的是,在确定报文的源机组与报文的目的机组不同之后,dragonfly网络中的相应的步骤为:确定报文的源地址与向本网络设备发送该报文的地址相同。

基于相同的技术构思,本申请实施例还提供了一种转发报文的装置,该装置可以应用于上述实施例提到的转发报文的方法中,如图15所示,该装置包括:

接收模块1501,用于接收第一报文。具体可以实现上述步骤401、901、1201中的接收功能,以及其他隐含步骤。

确定模块1502,用于确定第一报文的目的地址对应的至少一个出端口中每个出端口的权重,确定每个出端口的链路负载值。具体可以实现上述步骤402、403、404、405、902、903、904、1202中的确定功能,以及其他隐含步骤;

选取模块1503,用于基于每个出端口的权重和链路负载值,选取待使用的第一出端口。具体可以实现上述步骤406、905、1203中的选取功能,以及其他隐含步骤。

转发模块1504,用于通过第一出端口转发第一报文。具体可以实现上述步骤407、906、1204中的转发功能,以及其他隐含步骤。

在一种可能的实现方式中,网络设备是dragonfly+网络中的叶交换机或脊交换机。

在一种可能的实现方式中,确定模块1502,还用于:确定第一报文的源机组与第一报文的目的机组不同。

在一种可能的实现方式中,确定模块1502,还用于:确定第一报文的源机组与网络设备所属的机组相同。

在一种可能的实现方式中,网络设备是dragonfly+网络中的脊交换机,目的地址对应的至少一个出端口为网络设备的上行出端口。

在一种可能的实现方式中,确定模块1502,用于:基于网络设备的路由表中记录的目的地址、出端口和权重的对应关系,确定第一报文的目的地址对应的至少一个出端口中每个出端口的权重。

在一种可能的实现方式中,确定模块1502,用于:基于每个出端口的权重和链路负载值,确定每个出端口的选取分值,其中,出端口的选取分值与出端口的链路负载值负相关,出端口的选取分值与出端口的权重正相关;基于每个出端口的选取分值,选取待使用的第一出端口。

在一种可能的实现方式中,选取模块1503,用于:对于确定出的每种权重,确定权重对应的至少一个出端口中链路负载值最小的出端口,作为待选出端口;基于每个待选出端口的权重和链路负载值,确定每个待选出端口的选取分值,其中,待选出端口的选取分值与待选出端口的链路负载值负相关,待选出端口的选取分值与待选出端口的权重正相关;基于每个待选出端口的选取分值,选取待使用的第一出端口。

在一种可能的实现方式中,出端口的链路负载值为出端口的队列深度、信用证返回时延或带宽占用率。

在一种可能的实现方式中,接收模块1501,还用于接收第二报文;确定模块1502,还用于确定第二报文的源机组与网络设备所属的机组不同;确定第二报文的目的地址对应的至少一个出端口中每个出端口的权重;选取模块1503,还用于基于第二报文的目的地址对应的至少一个出端口中每个出端口的权重,选取待使用的第二出端口;发送模块,还用于通过第二出端口转发第二报文。

在一种可能的实现方式中,选取模块1503,用于:在第二报文的目的地址对应的至少一个出端口中,确定权重最大的出端口;如果存在多个权重最大的出端口,则获取每个权重最大的出端口的链路负载值,在多个权重最大的出端口中,选取链路负载值最小的出端口,作为待使用的第二出端口。

需要说明的是,上述接收模块1501、确定模块1502、选取模块1503和转发模块1504,可以由处理器实现,或者由处理器配合存储器、收发器来实现。

需要说明的是:上述实施例提供的转发报文的装置在执行转发报文处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的转发报文的装置与转发报文的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在设备上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是设备能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(digital video disk,DVD)等),或者半导体介质(如固态硬盘等)。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

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

相关技术
  • 基于网络融合的报文转发方法、设备、存储介质及装置
  • 报文转发方法及装置、计算机可读存储介质、电子设备
  • 图像分类方法及装置、电子设备、计算机程序及存储介质
  • 一种报文调度方法、装置及存储介质
  • 报文处理方法、装置、计算机设备和存储介质
  • 快转发报文方法、网络设备、存储介质及计算机程序产品
  • 报文转发方法、装置、设备、可读介质和计算机程序产品
技术分类

06120115936721