CN117978737A - 报文传输方法、设备、存储介质和程序产品 - Google Patents

报文传输方法、设备、存储介质和程序产品 Download PDF

Info

Publication number
CN117978737A
CN117978737A CN202211318945.9A CN202211318945A CN117978737A CN 117978737 A CN117978737 A CN 117978737A CN 202211318945 A CN202211318945 A CN 202211318945A CN 117978737 A CN117978737 A CN 117978737A
Authority
CN
China
Prior art keywords
network device
data message
link
message
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211318945.9A
Other languages
English (en)
Inventor
陈天翔
黄志远
林伟彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211318945.9A priority Critical patent/CN117978737A/zh
Publication of CN117978737A publication Critical patent/CN117978737A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开的实施例提供了报文传输方法、设备、存储介质和程序产品。该方法由网络设备执行。网络设备响应于接收到业务流的第一数据报文,确定业务流的已经由网络设备发送的数据报文中是否存在未到达目的地设备的数据报文。如果不存在未到达目的地设备的数据报文,则该网络设备基于其输出链路的负载确定发送第一数据报文的第一链路,并且通过该第一链路发送第一数据报文。基于与网络设备相关联的链路负载状态来发送数据报文。由此,本公开的方案可以在网络设备上进行精准到每流和每一跳的端到端精准流控制,从而在使用较小的开销来保证接收端“零乱序”的同时在网络设备上进行自适应路由,实现报文保序的分布式负载均衡。

Description

报文传输方法、设备、存储介质和程序产品
技术领域
本公开总体上涉及网络技术领域,更具体地,涉及报文传输方法、网络设备、计算机存储介质和程序产品。
背景技术
随着人工智能(Artificial intelligence,AI)和高性能计算(High performancecomputing,HPC)等需要大量计算资源的场景应用规模和用户需求量的增加,越来越多的计算集群出现,以实现多租户的分布式AI训练或多租户的分布式超级计算机应用。这些计算集群由多个计算节点通过大型网络连接而形成。在真实多租户的应用运行过程中,网络中往往会存在多种类型的、来自不同任务的负载流量。
发明内容
本公开的实施例提供了一种报文传输的方案。
在第一方面,提供了一种报文传输方法,由网络设备执行,该方法包括:响应于接收到业务流的第一数据报文,确定该业务流的已经由该网络设备发送的第二数据报文中是否存在未到达目的地设备的第三数据报文;如果不存在第三数据报文,则基于该网络设备的输出链路的负载确定发送第一数据报文的第一链路;以及通过第一链路发送第一数据报文。如此,可以基于经过网络设备的数据报文,来确定在该网络设备处执行更改业务流的下一跳是否会引起潜在的业务流的数据报文在接收端的乱序,从而能够确定网络设备是否应当执行负载均衡动作,而无需探测和感知整网负载状态。
在第一方面的一些实施例中,该方法还包括:如果存在第三数据报文,则从网络设备的第二链路发送第一数据报文,第二链路为发送第四数据报文的链路,第四数据报文为与第一数据报文连续的上一个数据报文。如此,网络设备可以在换路可能导致流的数据报文乱序到达目的地时继续使用当前路径来传输数据报文,从而能够实现流报文的保序。
在第一方面的一些实施例中,确定是否存在第三数据报文包括:对第三数据报文计数,当第三数据报文的计数值不为0时,确定存在第三数据报文。如此,网络设备能够通过简单地检查关于未到达报文的计数值来判断流的数据报文到达目的地的情况。
在第一方面的一些实施例中,对第三数据报文计数包括:响应于发送一个第二数据报文,将计数值加一;响应于接收到第二数据报文的确认报文,将计数值减少。如此,网络设备可以在流的报文经过自身时进行计数,使得其记录的未到达报文计数基本反映经其发送但尚未确认到达目的地的数据报文数目,从而能够为追踪该流的数据报文的发送状态提供基础。
在第一方面的一些实施例中,在基于网络设备的输出链路的负载确定发送第一数据报文的第一链路之前方法还包括:根据第二数据报文的确认报文中携带的报文队列深度,确定网络设备的输出链路的负载,该报文队列深度指示网络设备所连接的针对该业务流的当前下一级设备中的报文队列深度。如此,网络设备可以获得各业务流的下一级网络设备处的拥塞状况,从而能够利用该信息来执行每跳、每流粒度的负载均衡。
在第一方面的一些实施例中,基于所述网络设备的输出链路的负载确定发送第一数据报文的第一链路包括:对第一数据报文执行第一哈希算法以获取第一结果;基于第一结果,确定第三链路;如果第三链路不拥塞,则确定第三链路为第一链路;如果第三链路拥塞,则对第一结果执行第二哈希算法以获取第二结果;基于第二结果,确定第四链路;以及如果第四链路不拥塞,则确定第四链路为第一链路。如此,网络设备可以改进多级哈希的路由的灵活性,针对不同流使用不同级数的哈希来选路,将拥塞出口的流重新分配,从而能够提升整体的负载均衡情况。
在第二方面,提供了一种报文传输装置,该装置包括:第一确定模块,响应于接收到业务流的第一数据报文,确定该业务流的已经由该网络设备发送的第二数据报文中是否存在未到达目的地设备的第三数据报文;第二确定模块,被配置为如果不存在第三数据报文,则基于该网络设备的输出链路的负载确定发送第一数据报文的第一链路;以及发送模块,通过第一链路发送第一数据报文。
在第二方面的一些实施例中,该装置还包括第二发送模块,第二发送模块被配置为:如果存在第三数据报文,则从网络设备的第二链路发送第一数据报文,第二链路为发送第四数据报文的链路,第四数据报文为与第一数据报文连续的上一个数据报文。
在第二方面的一些实施例中,第一确定模块包括计数模块,计数模块被配置为:对第三数据报文计数,当第三数据报文的计数值不为0时,确定存在第三数据报文。
在第二方面的一些实施例中,计数模块包括:计数增加模块,被配置为响应于发送一个第二数据报文,将计数值加一;计数减少模块,响应于接收到第二数据报文的确认报文,将计数值减少。
在第二方面的一些实施例中,该装置还包括负载确定模块,负载确定模块被配置为:根据第二数据报文的确认报文中携带的报文队列深度,确定网络设备的输出链路的负载,该报文队列深度指示网络设备所连接的针对该业务流的当前下一级设备中的报文队列深度。
在第一方面的一些实施例中,第二确定模块包括:第一哈希模块,被配置为对第一数据报文执行第一哈希算法以获取第一结果;第一链路确定模块,被配置为基于第一结果确定第三链路;第一结果模块,被配置为如果第三链路不拥塞,则确定第三链路为第一链路;第二哈希模块,被配置为如果第三链路拥塞,则对第一结果执行第二哈希算法以获取第二结果;第二链路确定模块,被配置为基于第二结果,确定第四链路;以及,第二结果模块,被配置为如果第四链路不拥塞,则确定第四链路为第一链路。
在第三方面,提供了一种网络设备。该网络设备包括处理器和存储器,存储器上存储有计算机指令,当计算机指令被处理器执行时,使得该网络设备执行以下动作:响应于接收到业务流的数据报文,确定该业务流的已经由网络设备发送的数据报文中是否存在未到达目的地设备的数据报文;以及如果不存在未到达目的地设备的数据报文,则基于与网络设备相关联的链路负载状态来发送该数据报文。
在第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机可执行指令,该计算机可执行指令被网络设备的处理器执行时实现根据上述第一方面或其任一实施例中的方法的操作。
在第五方面,提供了一种芯片或芯片系统。该芯片或芯片系统包括处理电路,被配置为执行根据上述第一方面或其任一实施例中的方法的操作。
在第六方面,提供了一种计算机程序或计算机程序产品。该计算机程序或计算机程序产品被有形地存储在计算机可读介质上并且包括计算机可执行指令,计算机可执行指令在被执行时实现根据上述第一方面或其任一实施例中的方法的操作。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:
图1示出了本公开的多个实施例能够在其中实现的示例环境的示意图;
图2示出了根据本公开的一些实施例的示例报文传输方法的流程图;
图3A示出了根据本公开的一些实施例的数据报文传输过程的示例图;
图3B示出了根据本公开的一些实施例的确认报文传输过程的示例图;
图4示出了在根据本公开的一些实施例的数据报文和确认报文的示例传输过程的一部分中的交互图;
图5A示出了根据本公开的一些实施例的数据报文传输过程的示例图;
图5B示出了根据本公开的一些实施例的确认报文传输过程的示例图;
图6示出了在根据本公开的一些实施例的数据报文和确认报文的示例传输过程的一部分中的交互图;。
图7示出了根据本公开的一些实施例的示例报文传输方法的流程图;
图8示出了根据本公开的一些实施例的网络设备处的流队列的简化示意图解;
图9示出了根据本公开的一些实施例的基于链路负载状态来发送数据报文的示例方法的流程图;
图10示出了根据本公开的一些实施例的报文传输装置的示意性框图;以及
图11示出了可以用来实施本公开的实施例的示例设备的示意性框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
在多租户的网络应用运行过程中,网络中往往会存在来自不同任务的负载流量。一般而言,每个上层应用的任务,在网络中表现为一条从源节点到目的节点的有标识(例如,与任务相关联的标识符)的业务流(或简称为流,为说明起见,在本文中业务流和流(flow)可互换使用)。业务流在网络中可以由多个含有该流的数据的报文(packet)组成,这些报文依次从源节点被发送至到目的节点。
在多任务的情况下,网络中的交换机上可能会存在多条流,并且每条流在网络中可以被传输的路经常不是唯一的,这在大规模组网中经常出现。在这种情况下,需要为多条流选择网络路径,以使得不同流相对公平地被传输,并且同时提供负载均衡,以将每条路径的网络带宽利用率达到最大。
接收端接收到的流的报文通常需要按顺序到达。在一些传统的解决方案中,为了保证业务流从不同路径被发送到接收端的报文的顺序,通常需要在流的源端感知整网不同路径的负载情况。这为源端带来较大的资源开销,并且用于感知负载的探测信息时延较大,使得路由决策滞后。另一些传统方案为了整网的负载均衡在转发设备上使用自适应路由,这可能导致接收端的报文乱序。在这些方案中,需要在接收乱来处理乱序问题,这给接收端带来显著的资源开销并且引入了额外时延。
为了解决上述问题以及其他问题,本公开提供了一种报文传输方法。该方法包括网络设备响应于接收到业务流的数据报文,确定该业务流的已经由该网络设备发送的数据报文中是否存在未到达目的地设备的数据报文。如果不存在未到达目的地设备的数据报文,则网络设备可以基于与网络设备相关联的链路负载状态来发送数据报文。由此,本公开的方案可以在网络设备上进行精准到每流和每一跳的端到端精准流控制,从而在使用较小的开销来保证接收端“零乱序”的同时在网络设备上进行自适应路由,实现保序的分布式负载均衡。
为了解决上述问题以及其他问题,本公开提供了一种报文传输方法。该方法包括网络设备响应于接收到业务流的数据报文,确定该业务流的已经由该网络设备发送的数据报文中是否存在未到达目的地设备的数据报文。如果不存在未到达目的地设备的数据报文,则网络设备可以基于网络设备的输出链路负载状态来发送数据报文。由此,本公开的方案可以在网络设备上进行精准到每流和每一跳的端到端精准流控制,从而在使用较小的开销来保证接收端“零乱序”的同时在网络设备上进行自适应路由,实现保序的分布式负载均衡。
图1示出了本公开的多个实施例能够在其中实现的示例环境100的示意图。如图1所示,示例环境100中包括多个端点设备110-1、110-2、110-3、…、以及端点设备110-M(在本文中统称为或单独称为端点设备110)。端点设备110可以包括能够接收、生成、存储、处理和/或提供与特定应用、任务或会话相关联的网络业务流的一个或多个设备。端点设备的示例可以包括但不限于台式计算机、膝上型计算机、平板计算机、手持式计算机、智能电话、以及云平台等。
如图所示,端点设备110连接到网络120。作为某个业务流的源设备,端点设备110可以通过网络120向作为该业务流的目的地的端点设备发送该业务流的数据。网络120可以包括有线网络、无线网络、和/或有线与无线网络的组合。
网络120中包括互相连接的网络设备130-1、网络设备130-2、…、以及网络设备130-N等(在本文中统称为或单独称为网络设备130)。网络设备120可以是能够在端点设备之间传输业务流的报文的一个或多个设备。每个网络设备130可以与多于一个其他网络设备130直接连接。应理解,在本文中,“直接连接”表示两个网络设备130可以作为数据报文传输路径上的相邻的跳。网络设备130的示例可以包括但不限于交换机、路由器或者类似设备。在一些实施例中,端点设备110也可以包括网络设备的功能。
网络设备130可以从端点设备110接收源自该端点设备的业务流的数据报文,以及从另一网络设备接收该另一网络设备所发送的报文。在接收到报文时,网络设备130可以确定应向直接连接的哪个设备发送该报文。例如,网络设备130可以确定其直接连接到数据报文的目的地设备,并且将该数据报文发送给目的地设备。例如,网络设备130还可以将接收到的报文通过相应的输出链路发送给该链路连接到的其他中间网络设备,以进行进一步的转发。在一些实施例中,网络设备130可以向不同的网络设备发送同一业务流的不同数据报文。此外,在一些实施例中,网络设备130还可以具有报文生成功能。例如,网络设备130可以生成关于数据报文发送状态(例如,指示数据报文已到达目的地)的报文以及向数据报文传输路径上的上一级网络设备发送该报文。
为说明起见,在下文中通常使用具有交换数据报文的能力的交换机作为网络设备的示例。但是应理解,本文所指的网络设备也可以是能够接收和发送数据报文的其他网络设备。
图2示出了根据本公开的一些实施例的示例报文传输方法200的流程图。示例方法200可以例如由如图1所示的网络设备130执行。应当理解,方法200还可以包括未示出的附加动作,本公开的范围在此方面不受限制。以下结合图1的示例环境100来详细描述方法200。
在框210处,接收业务流的数据报文。例如,网络设备130可以接收特定业务流的数据报文。响应于接收到业务流的数据报文,在框220处,确定该业务流的已经由该网络设备发送的报文中是否存在未到达目的地设备的报文。例如,网络设备130可以响应于接收到业务流的数据报文,确定该业务流的已经由该网络设备发送的报文中是否存在未到达目的地设备的报文。
在一些实施例中,在接收到数据报文之后,网络设备130可以根据该报文的报头中的信息(例如,关于该报头的源和目的地的标识信息)来标识其属于哪个流。在一些实施例中,可以基于流的属性(例如,源标识符(Source ID)、目的地标识符(Destination ID)等)来为流分配统一的编号或标识符,使得网络设备130可以基于该编号或标识符来存储和与其他设备交流特定于流的信息。
在一些实施例中,网络设备130可以对业务流的已从其发送但未到达目的地设备的数据报文计数。例如,在网络设备130处可以存储有针对业务流的未到达报文计数。网络设备130可以基于针对该报文计数来确定该业务流的已经由该网络设备130发送的报文中是否存在未到达目的地设备的报文。例如,在首次接收到某个业务流中的数据报文时,网络设备130可以存储针对该业务流的信息条目(诸如,由流的编号或标识符来标识),并且在条目中记录未到达报文计数。
在一些实施例中,如果业务流的目的地设备直接连接到网络设备130,网络设备130可以将数据报文发送给目的地设备,并且在该数据报文被发送给目的地设备之后,生成关于该业务流的确认(Acknowledgement,ACK)报文。该确认报文指示该数据报文已经到达目的地设备。然后,网络设备130可以将确认报文发送给向该网络设备130发送该数据报文的上一级网络设备。在上一级网络设备接收到该确认报文时,可以继续向业务流传输路径上的更上一级网络设备发送该确认报文,并且可以对该确认报文进行相应地更新,并且依此类推,直到该确认报文到达业务流的源端侧的网络设备。
以这种方式,根据接收到的业务流的数据报文和确认报文,网络设备130可以相应地更新其存储的针对业务流的未到达报文计数,使得该计数可以指示该业务流的如下数据报文的数目:这样的数据报文已经从网络设备130被发送,但是网络设备130尚未得知该数据报文已经到达目的地。在此基础上,网络设备130可以通过简单地检查该计数的值而确定是否存在未到达目的地设备的报文。稍后将根据图3A至图6更详细地描述记录和更新未到达报文计数的方法。
继续描述图2。如果在框220处确定不存在未到达目的地设备的报文,则方法200进行到框230。在框230,基于网络设备的输出链路的负载确定发送该数据报文的链路。例如,如果在框220处确定了不存在未到达目的地设备的报文,网络设备130可以基于其输出链路的负载来确定应从哪个链路发送该数据报文。在这种情况下,网络设备130可以执行负载均衡动作,以根据链路负载状态选择连接到该数据报文传输路径上的下一跳(即该数据报文应被发送给的下一级网络设备)的链路。该下一级网络设备可以与先前该业务流的下一级网络设备相同或不同。
在一些实施例中,网络设备130可以采用常用的自适应路由策略来进行选路,以确定通过哪个链路向相应相邻设备发送该数据报文。在其他一些实施例中,网络设备130还可以根据精确到每个流的负载状态来进行选路。稍后将根据图7和图8更详细地描述基于链路负载状态来选择发送数据报文的链路的方法。
此后,在框240处,通过在框220处所选择的第一链路来发送数据报文。例如,网络设备可以通过第一链路将数据报文发送给所连接的下一级设备。
另一方面,如果存在未到达目的地设备的报文,则网络设备130不执行基于与其相关联的链路负载状态来发送数据报文的负载均衡动作。在这样的实施例中,方法200可以进行到250。在框250。网络设备130可以通过业务流在网络设备130处的当前输出链路发送业务流的数据报文。该当前输出链路是与待发送的数据报文连续的上一个数据报文从网络设备被发送的链路。
由此,网络设备业务流在网络设备130处的当前下一级网络设备发送接收到的数据报文,而不改变该业务流从网络设备130被发送的方向。换言之,网络设备130可以向其上一次发送该业务流的数据报文的设备发送该数据报文。
使用方法200,可以基于经过网络设备的数据报文,来确定在该网络设备处执行更改业务流的下一跳是否会引起潜在的业务流的数据报文在接收端的乱序。由此,网络设备可以确定其是否应当执行负载均衡动作,在无需探测和感知整网负载状态。这样,网络设备可以以较小的开销避免不必要地执行负载均衡计算,以及避免由于在该网络设备处更改业务流的路径而导致的接收端的数据报文乱序。
在一些实施例中,在网络设备130处可以存储有针对业务流的下一级指示符,例如,在针对该业务流的信息条目中。该下一级指示符指示当前该业务流传输路径上的下一跳,即当前(例如,最近一次)该业务流从网络设备130被发送给的网络设备。例如,作为交换机的网络设备130可以将数据报文通过相应端口的链路发送给该端口连接的对端设备。在这样的示例中,网络设备130可以将端口号作为下一级指示符存储。针对特定流的该端口号指示网络设备130最近一次用于发送该流的数据报文的端口。由此,网络设备130可以标识针对业务流的下一级网络设备,以用于发送业务流的数据报文。
在这些实施例中,在接收到针对某个业务流的数据报文之后,如果确定不执行前述负载均衡动作,网络设备130可以获取该网络设备130处针对该业务流的下一级指示符,例如,通过访问其存储的针对该业务流的信息条目。然后,网络设备130可以向下一级指示符当前指示的网络设备发送该数据报文。
在这些实施例中,如果确定执行前述负载均衡动作,网络设备130可以基于该网络设备130的输出链路的负载状态,确定使用哪个链路来发送数据报文。然后,网络设备130可以将数据报文通过所确定的链路发送给相应的对端设备,以及将网络设备130处针对该业务流的下一级指示符更新为指示所确定的网络设备。再次以前述交换机为例,网络设备130可以确定数据报文将通过某个端口被发送给该端口连接的对端设备,并且将该网络设备130处指示输出该业务流的端口的指示符更新为指示所确定的端口。根据实际链路负载情况,该端口可以与更新前的端口相同或不同。由此,网络设备130可以对保持针对业务流的下一级网络设备的最新记录。
以这种方式,每个网络设备130可以基于关注流经自身的业务流的数据报文和对应的上下级相邻设备来执行自适应路由动作。应理解,网络中的多个网络设备130可以各自执行根据本公开的实施例的方法,例如方法200。从而联合地在整个网络中实现报文保序的分布式负载均衡,而无需集中式的控制和对整网的负载感知,也无需在业务流的端侧进行保序处理。
图3A图示了根据本公开的一些实施例的数据报文传输过程的示例图(graph)300A。在该过程中,业务流的数据报文通过多个网络设备被发送给目的地设备310。在图300A中,被表示为图节点的多个网络设备330-1、330-2、330-3以及330-4(在本文中统称为或单独称为网络设备330)形成网络的一部分。网络设备330中的每个网络设备可以视为图1中网络设备130的示例实现,并且每个网络设备330各自执行根据本公开的实施例的方法(例如,方法200)的示例实现。图3A中的设备彼此通信连接,设备之间的链路如图节点之间的边所示。
为说明清楚起见,图3A中仅示出了四个网络设备,但是应理解,在网络设备330所处的网络中还可以包括更多未示出的网络设备,并且这些网络设备也可以执行根据本公开的实施例的方法的示例实现。
在图3A的示例中,每个网络设备330存储针对经过该网络设备330的业务流的信息条目,以用于执行根据本公开的实施例的各种动作。为便于说明,以作为交换机的网络设备330为例。该网络设备330可以存储流表,流表中的每个条目与一个流对应。表1示出了流表条目中包括的一些内容项。
在表1中,每个经业务流由项“Flow_ID(流ID)”标识。交换机可以将接收到的报文缓存在对应输入口的队列中,并且通过相应输出口将报文输出给下一级的网络设备。因此,在该示例中,网络设备330将接收/输入流的端口和发送/输出流的端口分别记录在项“In_port(入端口)”和“Out_port(出端口)”中,作为上一级指示符和下一级指示符。如表1所示,该网络设备330最近从端口P1接收到由ID 1标识的流的数据报文并且通过端口P2的对应链路将该数据报文发送给下一跳。例如,P1和P2可以是端口号。此外,网络设备330将前文所述的未到达报文计数N记录在项“OST(Outstanding,未结)”中。在接收到关于业务流的报文时,网络设备330相应地更新该计数,如稍后将关于图4描述的。
表1
Flow_ID In_port Out_port OST
ID 1 P1 P2 N
在此基础上,如有向边320-1至有向边330-3所示,响应于接收到针对特定业务流的数据报文340(例如,从该业务流的源设备310’或者另一中间网络设备),网络设备330-1和网络设备330-2可以各自执行根据本公开的实施例的方法,从而将数据报文340经由网络设备330-2发送到网络设备330-3处。然后,网络设备330-3可以执行根据本公开的实施例的方法,以将数据报文340发送给该业务流的目的地设备310,如有向边320-4所示。源设备310’和目的地设备310可以视为图1中端点设备110的示例实现。
应理解,表1中的条目仅作为示例,并且网络设备还可以存储和维护针对业务流的其他内容项。在具体的实现中,网络设备330也可以将针对业务流的信息组织为其他数据结构。例如,网络设备330可以将不同的内容项存储在多个表中。本公开的实施例对关于业务流的信息的具体实现方式不做限制。
图3B图示了根据本公开的一些实施例的确认报文传输过程的示例图300B。在该过程中,在图3A中的数据报文340被发送给目的地设备310之后,确认报文350沿着数据报文的340的传输路径被发送给路径上的设备。
在数据报文340被发送给目的地设备310之后,网络设备330-3可以生成确认报文350,确认报文350指示数据报文340已经到达目的地设备310。在一些实施例中,目的地设备310也可以在接收到向网络设备330-3发送某种形式的确认(例如初始生成的确认报文),使得网络设备330-3可以确保在生成确认报文350时数据报文340已经到达目的地。
然后,如有向边320-3’、有向边320-2’和有向边320-1’所示,网络设备330-3、网络设备330-2和网络设备330-1各自执行根据本公开的实施例的方法,从而将确认报文350沿着数据报文被传输的路径的反方向来逐跳向上一级的设备发送。由此,数据报文340在传输期间经过的设备可以得到关于数据报文340已经到达目的地的通知。
确认报文350的字段中包括可以标识数据报文340所属的业务流的字段(例如,业务流的流ID),或者包括可以联合地标识业务流的一组字段(例如,源和目的地的地址或ID等)。此外,确认报文350中还包括指示数据报文340中已经到达目的地设备的字段。
在一些实施例中,网络设备330-3可以在每个数据报文到达目的地之后生成和发送确认报文。在这种情况下,每个确认报文指示相应的数据报文已经到达目的地。在其他一些实施例中,网络设备可以在某个流的一个或多个数据报文被发送给目的地之后生成和发送针对该流的确认报文,例如,每隔一段时间,或者在该流的每i个数据报文被发送给目的地之后。
在后一种情况下,指示数据报文340到达目的地的确认报文350还可能指示同一流的一个或多个其他数据报文已经到达目的地。例如,确认报文350可以包括含有整数的字段,该整数指示自从上一个针对同一流的确认报文被发送以来,该流的被发送给目的地设备(例如,发送给端侧的网卡)的数据报文的数目。由此,将关于多个数据报文的确认信息合并到一个确认报文中,可以减少对链路带宽的影响,节约通信资源。
图4示出了在图3A和图3B的示例中数据报文340和确认报文350的传输过程的一部分中的交互图。下面将结合图4和表1来更详细地说明图3A和图3B中的示例过程。
在405,响应于接收到数据报文340,网络设备330-1可以检查其流表中数据报文340所属流的条目中的OST项。在该示例中,网络设备330-1查明该流的OST项中记录的未到达报文数大于零,表示该经过网络设备330-1被发送给下一跳的数据报文中仍然存在未到达目的地的报文。此外,网络设备330-1还检查该流的入端口项。在此,假设网络设备330-1上次接收到该流数据报文是通过同一端口,因此该流的条目中的入端口项保持不变。
在仍存在未到达报文数的情况下,如果在网络设备330-1处改变该流的下一跳,可能会导致接收端的报文乱序。因此,在410,网络设备330-1获取该流的出端口项中当前指示的出端口,并且在415通过该端口的链路将数据报文340发送给端口连接的网络设备,在该示例中为网络设备330-2。然后,在420,网络设备330-1将其流表中该流的OST计数增加一,以反映刚才被发送的数据报文340。
类似地,如425至440所示,网络设备330-2检查其流表中相应流的OST项,并且基于该项的计数大于零而将数据报文通过该流在网络设备330-2处的当前出端口的链路发送给相应的下一级设备(在此为网络设备330-3),以及将该流的OST项的计数增加一。
接下来,在445,网络设备330-3检查数据报文340,并且确定自己与数据报文340的目的地设备310直接连接。于是,在450,网络设备330-3将数据报文340发送给目的地设备。至此,图300A中所示的数据报文340的传输完成。
应理解,由于在网络设备330-3处还可能具有需要发送的其他数据报文,在被发送前,数据报文340也可能在网络设备330-3被缓存一定时间。此外,取决于具体实现,目的地设备310可以可选地向网络设备330-3发送已经接收到数据报文340的某种形式的确认,使得网络设备330-3可以被通知数据报文340的确已经到目的地,如虚线箭头455所示。总之,在数据报文340被发送目的地设备310之后,网络设备330-3在460生成图3B中的确认报文350,该确认报文350指示数据报文340已经到达目的地设备310。如前所述,确认报文350还可以指示同一流中的其他一个或多个数据报文已经到达目的地,例如,以包含整数i的字段的形式。
在465,网络设备330-3获取确认报文350所属流的入端口项。此时,该入端口项指示网络设备330-3接收到该流的上一个数据报文(即数据报文340)的端口。基于此,在470,网络设备330-3通过该端口将确认报文350发送给数据报文340传输路径上的上一级网络设备,即网络设备330-2。
在475,根据确认报文350中指示数据报文340已经到达目的地的字段,网络设备330-2更新其流表中数据报文340所属流的OST项。例如,当该字段指示该流的包括数据报文340的i个数据报文已经到达目的地时,网络设备330-2可以将OST项中的计数减少i。然后,在480,网络设备330-2获取该流的入端口项,并且在490基于该入端口项指示的端口而将确认报文350发送给网络设备330-1。
可选地,网络设备330-2接收到的确认报文350中还可以包括关于网络设备330-3的信息。在这种情况下,在向上一级设备发送确认报文350之前,网络设备330-2还可以对确认报文350进行处理,以将相关信息修改为关于网络设备330-2的信息,如485所示。由此,每个网络设备在传输确认报文时可以向上一级设备提供关于自身的链路负载等状态,以帮助上一级设备在适用时进行选路。稍后将关于图9更详细地确认报文中此类信息的处理和使用。
此时,确认报文350已经沿着数据报文340传输路径的反方向到达网络设备330-1处。应理解,网络设备330-1可以类似地更新其OST项并且基于入端口项来继续向上一级设备返回确认报文350,依此类推,使得发送数据报文340的各网络设备能够接收到数据报文340到达目的地的确认。
图5A图示了根据本公开的一些实施例的数据报文传输过程的示例图500A。在该过程中,在数据报文340和确认报文350的传输之后,网络设备330-1再次接收到同一流的数据报文540(从该流的源设备310’或另一中间网络设备)。然后,网络设备330-1、网络330-4和网络设备330-3可以各自执行根据本公开的实施例的方法,从而将数据报文540沿着有向边320-5、有向边320-6和有向边320-4所示的路径发送给该业务流的目的地设备310。
图5B图示了根据本公开的一些实施例的确认报文传输过程的示例图500B。在该过程中,在图5B中的数据报文540被发送给目的地设备310之后,确认报文550沿着数据报文的540的传输路径的反方向被发送给路径上的设备。
在数据报文540被发送给目的地设备310之后,网络设备330-3可以生成确认报文550,确认报文550指示数据报文540已经到达目的地设备310。然后,如有向边320-6’、有向边320-5’和有向边320-1’所示,网络设备330-3、网络设备330-2和网络设备330-1各自执行根据本公开的实施例的方法,从而将确认报文550沿着数据报文被传输的路径的反方向来逐跳向上一级的设备发送。由此,数据报文540在传输期间经过的设备可以得到关于数据报文540已经到达目的地的通知。
图6示出了在图5A和图5B的示例中数据报文540和确认报文550的传输过程的一部分中的交互图。下面将结合图6和表1来更详细地说明图5A和图5B中的示例过程。
在605,响应于接收到与数据报文340属于同一流的数据报文540,网络设备330-1可以检查其流表中该流的条目中的OST项。此外,网络设备330-1还检查流表的入端口项。假设在该示例中,网络设备330-1再次通过同一端口接收到数据报文540,因此该流的条目中的入端口项不变。
在该示例中,网络设备330-1在605处查明数据报文540所属流的OST计数等于零,表示该流经过网络设备330-1被发送给下一跳的数据报文都已经达到目的地。因此,在610处,网络设备330-1基于其输出链路的负载(例如,网络设备330-1各个端口的队列深度等)来执行负载均衡动作,这在稍后将根据图7和图8更详细地描述。在该示例中,设网络设备330-1由此确定数据报文540应当被发送给网络设备330-4。因此,网络设备330-1将其流表中该流的出端口项更新为指示对应于网络设备330-4的端口。
网络设备330-1在615将数据报文540通过更新的出端口的链路发送给网络设备330-4,并且然后在620将其流表中数据报文540所属流的OST项的值增加一,以记录数据报文540的发送。在625,响应于从网络设备330-1接收到数据报文540,网络设备330-4将网络设备330-4处针对数据报文540所属流的上一级指示符更新为指示网络设备330-1,即,将网络设备330-4的流表中该流的入端口更新为指示与网络设备330-1对应的端口。
由于该流的路径刚刚被切换到网络设备330-4,通常此时网络设备330-4的流表中该流的OST项为0。例如,网络设备330-4可能是首次接收到该流的数据,并且为该流添加信息条目并将OST项初始化为0。因此,在625,网络设备330-4基于其相关联的链路负载状态来确定数据报文540将被发送给的下一级网络设备(在该示例中为网络设备330-3),并且相应地更新该流的出端口项。然后,在635,网络设备330-4将数据报文540发送给网络设备330-3,并且然后在640将其流表中数据报文540所属流的OST项增加一。
在645,响应于从网络设备330-4接收到数据报文540,网络设备330-3将其流表中数据报文540所属流的入端口更新为指示与网络设备330-4对应的端口。接下来,网络设备330-3在645确定自己与数据报文540的目的地设备310直接连接,并且在655将数据报文540发送给目的地设备310。至此,图500A中所示的数据报文340的传输完成。
在数据报文540被发送目的地设备310之后,网络设备330-3在665生成图5B中的确认报文550,该确认报文550指示数据报文540已经到达目的地设备310。与前类似,在660,目的地设备310可以可选地向网络设备330-3发送已经接收到数据报文540的确认。
如前文关于确认报文350所述,网络设备330-3可以在同一流的其他一些后续数据报文被发送给目的地设备310之后才生成确认报文550。在这种情况下,确认报文550指示多个数据报文已达到目的地。此外,由于在此期间没有确认报文沿着数据报文540的传输路径被回传,该路径上的各级网络设备处针对该流的OST不会被减少并因而清零。因此,这些后续数据报文将与确认报文550沿着同一路径被传输到目的地设备310,并且路径上的网络设备在数据报文经过自身时使相应的OST项递增一。
在670,网络设备330-3获取确认报文350所属流的入端口项。此时,该入端口项已经(在645)被更新为指示网络设备330-4对应的端口。基于此,在675,网络设备330-3通过该端口将确认报文350发送给网络设备330-4。
在680,根据确认报文550中指示数据报文540已经到达目的地的字段,网络设备330-2更新其流表中数据报文540所属流的OST项。然后,在475,网络设备330-2获取该流的入端口项,并且基于该入端口项而将确认报文550发送给网络设备330-1(如在625所更新的)。可选地,在690,网络设备330-4还可以对确认报文550进行处理,以将相关信息修改为关于网络设备330-4的信息。
此时,确认报文550已经沿着数据报文540传输路径的反方向到达网络设备330-1处。此后,确认报文350可以继续被逐级发送给该传输路径上的网络设备,并且这些网络设备可以相应地减少其流表中相应的OST项的值。
图3A至图6的示例中所示的方式提供了网络设备记录和更新业务流的信息的实现方式,使得网络设备可以在与业务流相关联的报文经过自身时更新所记录的流的相关信息,从而保持对业务流传输情况的跟踪,建立到端的流通道。由此,网络设备可以在需要时检查其记录流的信息,来获取执行根据本公开的实施例的报文传输动作所需的基础信息,从而实现网络设备上以未到达报文为零时作为切片点的边长流切片技术。相比传统的在网络设备上执行的负载均衡方法,这种方式对感知网络负载的开销需求较小,并且可以达成数据报文的保序。
图7示出了根据本公开的一些实施例的示例报文传输方法700的流程图。方法700可以例如由如图1所示的网络设备130执行,并且可以视为方法200的示例实现。以下结合图1的示例环境100来详细描述方法700。
在传统的等价多路径(Equal Cost Multi-Path,ECMP)路由中,当网络设备选择报文的下一跳时,其可以使用N元组哈希(N-Tuple HASH)方法。使用这种方法,网络设备可以针对报文中特定于流的N个字段来依次执行一组哈希函数,并且根据哈希计算的结果来选择输出链路(例如,对应的输出口),以将数据报文发送给相应的下一级网络设备。
在这种情况下,同一流的数据报文一直通过同一链路被发送。然而,如果有多条流使用同样的哈希函数进行选路,则可能因为HASH冲突导致分配给不同下一级设备的流数目不均衡,导致一部分链路负载较高。与此相对,由于存在前述针对记录未到达数据报文和逐跳反馈确认报文的机制来保证流的不乱序,因此,方法700对传统的N-Tuple HASH方法做出改进,使得网络设备130可以根据输出链路的负载情况重新选择应向哪个网络设备发送该数据报文,以解决HASH冲突导致链路拥塞的问题。
在这样的一些实施例中,在选择链路时,网络设备130可以对接收到的数据报文执行第一哈希算法,并且基于执行第一哈希算法的结果确定一个链路。例如,网络设备130可以针对数据报文中特定于流的一组字段来执行第一哈希算法。如果所选择的链路不拥塞,则网络设备130可以通过该链路来发送数据报文。如果该链路拥塞,则网络设备130对执行第一哈希算法的结果继续执行第二哈希算法以获取另一结果,并且基于该结果来确定另一链路。如果该另一链路不拥塞,则网络设备130通过该另一链路来发送数据报文。进而,在所确定的另一链路仍然拥塞的情况下,网络设备130可以继续对当前的哈希执行结果来执行第三、第四以及更多哈希哈数,直到选择出不拥塞的链路为止。
在这样的一些实施例中,网络设备130可以使用实现哈希算法的哈希函数的序列来确定所接收到的数据报文应被继续发送给哪个网络设备。在具体的实现中,网络设备130可以根据芯片资源、时延等来评估序列中包括多少个哈希函数。在针对数据报文确定下一级网络设备时,网络设备130可以针对数据报文中特定于流的一组字段依次执行序列中的一个或多个哈希函数,并且根据执行结果来选择连接对应的下一级网络设备的链路。
在这些实施例中,网络设备130处所记录的流的下一级指示符(例如,作为前文所述的流表中的出端口项)可以只记录数目,该数目指示在网络设备130确定流的数据报文的当前下一级网络设备时,应当执行哈希函数序列中的多少个哈希函数。由此,可以节省在网络设备130处存储流信息的开销。
在此基础上,响应于在710接收到业务流的数据报文,在720,网络设备130可以确定该业务流的已经由该网络设备130发送的报文中是否存在未到达目的地设备的报文。网络设备130可以以前文关于未到达报文计数所述的方式来执行该确定,在此不再赘述。
如果存在未到达报文(例如,基于网络设备130处针对该业务流的OST计数大于零),网络设备130不应当改变业务流的下一跳,因此方法700进行到730。在730,网络设备130可以基于该流的下一级指示符中的哈希数目为N来确定当前下一级设备。
具体而言,网络设备130可以查明哈希数目为N。然后,网络设备130可以针对数据报文中特定于流的一组字段,来依次计算前述哈希函数序列中的前N个哈希函数。基于该前N个哈希函数被执行的结果,网络设备130可以确定相应的目标网络设备,即当前下一级网络设备。用于计算哈希值的字段和哈希函数取决于具体实现,本公开对此不作限制。
然后,在740,网络设备740通过对应链路将数据报文发送给当前的下一级网络设备。例如,作为交换机的网络设备130可以将数据报文分配给相应的出端口以等待仲裁输出。
另一方面,如果不存在未到达报文(例如,基于网络设备130处针对该业务流的OST计数大于零),网络设备130可以基于输出链路的负载状态来保持或更改业务流的下一跳,因此方法700进行到750。在750,网络设备130以与关于730所述的方式类似的方式来确定由哈希数目指示的目标网络设备,即当前的下一级网络设备。
接下来,在760,基于链路负载状态,网络设备130可以确定与当前的下一级网络设备相关联的输出链路是否处于拥塞状态。例如,交换机可以基于检查和比较端口处待发送的报文的数目来判断链路是否拥塞。网络设备130也可以使用其他网络链路状态指标来判断链路是否拥塞。
如果当前链路不拥塞,网络设备130可以继续使用数据报文的当前传输路径。于是,方法700跳转到740,在此网络设备130可以将数据报文发送给在750确定的下一级网络设备。否则,网络设备130可以在770处检查用于路由的哈希函数序列中是否存在下一哈希函数,该哈希函数在确定当前的下一级网络设备时尚未被执行。如果不存在这样的哈希函数(例如,序列中包括N个函数,并且在750处都已经被执行),网络设备130可以继续使用当前传输路径,并且方法跳转到740,以向当前下一级设备发送数据报文。
如果序列中存在下一哈希函数(例如,第N+1个哈希函数),方法700进行到780。在此,网络设备130可以对先前哈希函数的执行结果继续执行下一哈希函数,以更新该结果。然后,在790,基于已更新的结果,网络设备130可以重新确定其指示的目标网络设备,即新的当前下一级网络设备。
此后,方法700跳转回760,并且,网络设备130可以继续迭代地执行链路状态的判断、下一哈希函数的执行以及目标网络设备的更新,直到哈希函数序列中的所有哈希函数已经被执行、或者与最新确定的目标网络设备相关联的链路不处于拥塞状态为止。然后,如740所示,网络设备130将最新确定的目标网络设备作为下一级设备并且向其发送数据报文。此后,网络设备130可以将相应下一级指示符中的哈希数目更新为确定该下一级设备所执行的哈希函数总数。
使用方法700,在支持流报文保序的前提下,网络设备130可以考虑到链路的拥塞情况,改变用于确定流被发送给的下一级网络设备的哈希函数执行。由此,网络设备130可以提高基于多级哈希的路由的灵活性,将拥塞出口的流重新分配,从而提升整体的负载均衡情况。
在本公开的一些实施例中,网络设备在执行负载均衡动作(例如,基于未到达报文计数为零)时,可以按每流的粒度来考虑负载情况。在这样的实施例中,网络设备可以将接收到的数据报文存储在所属流的专属队列中。图8图示了根据本公开的一些实施例的网络设备处的流队列的简化示意图解800。
在图解800中,以交换机830作为网络设备的示例。交换机830将接收到的不同流的数据报文存储在不同的流队列805-1、805-2、…、以及805-N中,其中每个流队列存储一个流的数据报文。这样,交换机830可以了解待其发送的每个流的报文队列深度(换言之,该流在交换机830处待发送的数据报文数目,也称为流队列深度)。该报文队列深度深度反映了交换机830处流的拥塞情况。
交换机830可以将流分配给相应出端口,以通过该端口的输出链路发送给相应的下一级网络设备(例如,另一交换机)。例如,交换机830可以通过端口825将与流队列805-1的数据报文815发送给端口825连接的对端设备。此外,交换机830还可以在向上一级网络设备发送确认报文时在其中传递自身处业务流的报文队列深度。
在此基础上,当诸如交换机830的网络设备需要执行负载均衡路由时,可以考虑到下一级的网络设备(例如,与交换机的出端口对应的对端交换机)处各流的拥塞情况。图9示出了根据本公开的一些实施例的基于链路负载状态来发送数据报文的示例方法900的流程图。方法900可以例如由如图1所示的网络设备130执行,并且可以视为方法200的框220的示例实现。以下结合图1的示例环境100来详细描述方法900。
在利用流队列的一些实施例中,在向上一级网络设备发送关于流的确认报文(例如,确认报文350或确认报文550时)时,网络设备130可以在确认报文中包括该流在该网络设备130处的流队列深度(例如,在预定义的字段中)。
以这种方式,每个网络设备130接收到的确认报文中包括下一级的流队列深度,该流队列深度指示相应业务流在下一级的网络设备处待发送的数据报文的数目。网络设备可以将下一级的流深度存储在针对该业务流的拥塞计数中,并且在每次接收到确认报文时,根据其中的下一级流深度更新该拥塞计数。
在继续向再上一级的网络设备发送确认报文之前,网络设备130可以将确认报文中的下一级的流深度更新为其自身待发送的该流的数据报文数目,以通知再上一级的网络设备。由此,网络设备可以各自跟踪流经自身的业务流在其下一级的网络设备处的拥塞情况。以交换机为例,该拥塞计数可以被记录在流表的相应条目中。在另一些示例中,网络设备130还可以为每个出端口创建流拥塞表,以便于针对端口查询。本公开的实施例对拥塞计数的具体实现格式不作限制。
在此基础上,方法900开始于网络设备130(例如,根据未到达报文计数)针对所接收到的数据报文(例如,数据报文340或数据报文540)确定下一级网络设备。在910,网络设备130可以基于其路由表来确定一组候选网络设备。网络设备130可以将数据报文发送给该一组候选网络设备中的网络设备,使得该数据报文最终能够抵达目的地。
在920,网络设备130可以确定网络设备130处针对多个业务流中的业务流的拥塞计数。如前所述,该拥塞计数通过各业务流的数据报文的确认报文而被确定。由此,网络设备130可以了解潜在下一级网络设备的拥塞情况。例如,网络设备130可以查询当前被分配给每个候选网络设备(例如,由流的出端口项指示)的业务流的拥塞计数,从而获取每个候选网络设备处的拥塞情况。通过该查询,网络设备130可以了解每个潜在下一级网络设备的拥塞情况。
在930,网络设备130可以确定在该网络设备130处待发送给每个候选网络设备的报文总数。再次以交换机为例,网络设备130可以确定被分配到每个候选出端口的待发送报文总数。例如,网络设备130可以查询被分配给出端口的流的队列深度并且求和。例如,网络设备130还可以计入诸如确认报文的其他报文数目。通过该确定,网络设备130可以了解在从该网络设备130到每个可能的下一级网络设备的链路拥塞情况,即本级的拥塞情况。
然后,在940,根据在920和930确定的拥塞计数和报文总数中的至少一项,网络设备130可以从该一组候选网络设备中确定数据报文应被发送给的下一级网络设备。例如,网络设备130可以选择与其相关联的本级和下一级的拥塞程度都较轻的候选网络设备。网络设备130也可以使用其他适当规则来根据拥塞程度选择下一级网络设备。
在940,网络设备130可以通过连接所确定的下一级网络设备的链路来向该下一级网络设备发送数据报文。例如,交换机可以将数据报文分配到所选择的处端口以等待仲裁输出。应理解,方法900可以与本公开所描述的其他方法结合使用。例如,网络设备130在发送数据报文之后可以相应地刷新该数据报文所属流的下一级指示符。
使用方法900,网络设备可以在执行负载均衡时实现每跳、每流粒度的控制。相比例如传统交换机中可以执行的端口粒度的报文交换,这种负载均衡对报文传输的控制更加精细。在具体实现中,可以基于评估缓冲报文和存储关于流的信息的芯片开销来选择是否使用基于流的精准控制。
图10示出了根据本公开的一些实施例的报文传输装置1000的示意框图。装置1000可以被实现为或者被包括在图1的网络设备130中。装置900可以包括多个模块,以用于执行例如方法200、方法700和方法900中的对应动作。
如图10所示,装置1000包括:第一确定模块1010,响应于接收到业务流的第一数据报文,确定该业务流的已经由该网络设备发送的第二数据报文中是否存在未到达目的地设备的第三数据报文;第二确定模块1020,被配置为如果不存在第三数据报文,则基于该网络设备的输出链路的负载确定发送第一数据报文的第一链路;以及发送模块1030,通过第一链路发送第一数据报文。
在一些实施例中,装置1000还包括第二发送模块,第二发送模块被配置为:如果存在第三数据报文,从网络设备的第二链路发送第一数据报文,第二链路为发送第四数据报文的链路,第四数据报文为与第一数据报文连续的上一个数据报文。
在一些实施例中,第一确定模块1010包括计数模块,计数模块被配置为:对第三数据报文计数,当第三数据报文的计数值不为0时,确定存在第三数据报文。
在一些实施例中,计数模块包括:计数增加模块,被配置为响应于发送一个第二数据报文,将计数值加一;计数减少模块,响应于接收到第二数据报文的确认报文,将计数值减少。
在一些实施例中,装置1010还包括负载确定模块,负载确定模块被配置为:根据第二数据报文的确认报文中携带的报文队列深度,确定网络设备的输出链路的负载,该报文队列深度指示网络设备所连接的针对该业务流的当前下一级设备中的报文队列深度。
在一些实施例中,第二确定模块1020包括:第一哈希模块,被配置为对第一数据报文执行第一哈希算法以获取第一结果;第一链路确定模块,被配置为基于第一结果确定第三链路;第一结果模块,被配置为如果第三链路不拥塞,则确定第三链路为第一链路;第二哈希模块,被配置为如果第三链路拥塞,则对第一结果执行第二哈希算法以获取第二结果;第二链路确定模块,被配置为基于第二结果,确定第四链路;以及,第二结果模块,被配置为如果第四链路不拥塞,则确定第四链路为第一链路。
图11示出了可以用来实施本公开的实施例的示例设备1100的示意性框图。设备1100可以被实现为或者被包括在图1所示的端点设备410或网络设备130中。
如图所示,设备1100包括中央处理单元(Central Processing Unit,CPU)1101、只读存储器(Read-Only Memory,ROM)1102以及随机存取存储器(Random Access Memory,RAM)1103。CPU 1101可以根据存储在RAM 1102和/或RAM 1103中的计算机程序指令或者从存储单元1108加载到ROM 1102和/或RAM 1103中的计算机程序指令,来执行各种适当的动作和处理。在ROM 1102和/或RAM 1103中,还可存储设备1100操作所需的各种程序和数据。CPU 1101和ROM 1102和/或RAM 1103通过总线1104彼此相连。输入/输出(Input/Output,I/O)接口1105也连接至总线1104。
设备1100中的多个部件连接至I/O接口1105,包括:输入单元1106,例如键盘、鼠标等;输出单元1107,例如各种类型的显示器、扬声器等;存储单元1108,例如磁盘、光盘等;以及通信单元1109,例如网卡、调制解调器、无线通信收发机等。通信单元1109允许设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
CPU 1101可以是各种具有处理和计算能力的通用和/或专用处理组件。可以被实现为的一些示例包括但不限于图形处理单元(Graphics Processing Unit,GPU)、各种专用的人工智能(Artificial Intelligence,AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(Digital Signal Processor,DSP)、以及任何适当的处理器、控制器、微控制器等,相应地可以被称为计算单元。CPU 1101执行上文所描述的各个方法和处理。例如,在一些实施例中,上文所描述的过程可被实现为计算机软件程序,其被有形地包含于计算机可读介质,例如存储单元1108。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1102和/或RAM 1103和/或通信单元1109而被载入和/或安装到设备1100上。当计算机程序加载到ROM 1102和/或RAM 1103并由CPU 1101执行时,可以执行上文描述的过程的一个或多个步骤。备选地,在其他实施例中,CPU 1101可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上文所描述的过程。
示例性地,图11中的设备1100可以被实现为计算设备,或者可以被实现为计算设备中的芯片或芯片系统,本公开的实施例对此不限定。
本公开的实施例还提供了一种芯片,该芯片可以包括输入接口、输出接口和处理电路。在本公开的实施例中,可以由输入接口和输出接口完成信令或数据的交互,由处理电路完成信令或数据信息的生成以及处理。
本公开的实施例还提供了一种芯片系统,包括处理器,用于支持计算设备以实现上述任一实施例中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,用于存储必要的程序指令和数据,当处理器运行该程序指令时,使得安装该芯片系统的设备实现上述任一实施例中所涉及的方法。示例性地,该芯片系统可以由一个或多个芯片构成,也可以包含芯片和其他分立器件。
本公开的实施例还提供了一种处理器,用于与存储器耦合,存储器存储有指令,当处理器运行所述指令时,使得处理器执行上述任一实施例中涉及的方法和功能。
本公开的实施例还提供了一种包含指令的计算机程序产品,其在计算机上运行时,使得计算机执行上述各实施例中任一实施例中涉及的方法和功能。
本公开的实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,当处理器运行所述指令时,使得处理器执行上述任一实施例中涉及的方法和功能。
通常,本公开的各种实施例可以以硬件或专用电路、软件、逻辑或其任何组合来实现。一些方面可以用硬件实现,而其他方面可以用固件或软件实现,其可以由控制器,微处理器或其他计算设备执行。虽然本公开的实施例的各个方面被示出并描述为框图,流程图或使用一些其他图示表示,但是应当理解,本文描述的框,装置、系统、技术或方法可以实现为,如非限制性示例,硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某种组合。
本公开还提供有形地存储在非暂时性计算机可读存储介质上的至少一个计算机程序产品。该计算机程序产品包括计算机可执行指令,例如包括在程序模块中的指令,其在目标的真实或虚拟处理器上的设备中执行,以执行如上参考附图的过程/方法。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。在各种实施例中,可以根据需要在程序模块之间组合或分割程序模块的功能。用于程序模块的机器可执行指令可以在本地或分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质中。
用于实现本公开的方法的计算机程序代码可以用一种或多种编程语言编写。这些计算机程序代码可以提供给通用计算机、专用计算机或其他可编程的数据处理装置的处理器,使得程序代码在被计算机或其他可编程的数据处理装置执行的时候,引起在流程图和/或框图中规定的功能/操作被实施。程序代码可以完全在计算机上、部分在计算机上、作为独立的软件包、部分在计算机上且部分在远程计算机上或完全在远程计算机或服务器上执行。
在本公开的上下文中,计算机程序代码或者相关数据可以由任意适当载体承载,以使得设备、装置或者处理器能够执行上文描述的各种处理和操作。载体的示例包括信号、计算机可读介质、等等。信号的示例可以包括电、光、无线电、声音或其它形式的传播信号,诸如载波、红外信号等。
计算机可读介质可以是包含或存储用于或有关于指令执行系统、装置或设备的程序的任何有形介质。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统、装置或设备,或其任意合适的组合。计算机可读存储介质的更详细示例包括带有一根或多根导线的电气连接、便携式计算机磁盘、硬盘、随机存储存取器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光存储设备、磁存储设备,或其任意合适的组合。
此外,尽管在附图中以特定顺序描述了本公开的方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在很好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各个实现方式。

Claims (10)

1.一种报文传输方法,其特征在于,由网络设备执行,所述方法包括:
响应于接收到业务流的第一数据报文,确定所述业务流的已经由所述网络设备发送的第二数据报文中是否存在未到达目的地设备的第三数据报文;
如果不存在所述第三数据报文,则基于所述网络设备的输出链路的负载确定发送所述第一数据报文的第一链路;以及
通过所述第一链路发送所述第一数据报文。
2.根据权利要求1所述的方法,其特征在于,还包括:
如果存在所述第三数据报文,则从所述网络设备的第二链路发送所述第一数据报文,所述第二链路为发送第四数据报文的链路,所述第四数据报文为与所述第一数据报文连续的上一个数据报文。
3.根据权利要求1所述的方法,其特征在于,其中确定是否存在所述第三数据报文包括:
对所述第三数据报文计数,当所述第三数据报文的计数值不为0时,确定存在所述第三数据报文。
4.根据权利要求3所述的方法,其特征在于,其中对所述第三数据报文计数包括:
响应于发送一个所述第二数据报文,将所述计数值加一;
响应于接收到所述第二数据报文的确认报文,将所述计数值减少。
5.根据权利要求4所述的方法,其特征在于,在基于所述网络设备的输出链路的负载确定发送所述第一数据报文的第一链路之前所述方法还包括:
根据所述第二数据报文的确认报文中携带的报文队列深度,确定所述网络设备的输出链路的负载,所述报文队列深度指示所述网络设备所连接的针对所述业务流的当前下一级设备中的报文队列深度。
6.根据权利要求1所述的方法,其特征在于,其中基于所述网络设备的输出链路的负载确定发送所述第一数据报文的第一链路包括:
对所述第一数据报文执行第一哈希算法以获取第一结果;
基于所述第一结果,确定第三链路;
如果所述第三链路不拥塞,则确定所述第三链路为所述第一链路;
如果所述第三链路拥塞,则对所述第一结果执行第二哈希算法以获取第二结果;
基于所述第二结果,确定第四链路;以及
如果所述第四链路不拥塞,则确定所述第四链路为所述第一链路。
7.一种网络设备,其特征在于,包括处理器和存储器,所述存储器上存储有计算机指令,当所述计算机指令被所述处理器执行时,使得所述网络设备执行权利要求1至6中任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被网络设备的处理器执行时实现根据权利要求1至6中任一项所述的方法。
9.一种计算机程序产品,其特征在于,所述计算机程序产品上包含计算机可执行指令,所述计算机可执行指令在被执行时实现根据权利要求1至6中任一项所述的方法。
10.一种报文传输装置,其特征在于,包括:
第一确定模块,被配置为响应于接收到业务流的第一数据报文,确定所述业务流的已经由所述网络设备发送的第二数据报文中是否存在未到达目的地设备的第三数据报文;
第二确定模块,被配置为如果不存在所述第三数据报文,则基于所述网络设备的输出链路的负载确定发送所述第一数据报文的第一链路;以及
发送模块,被配置为通过所述第一链路发送所述第一数据报文。
CN202211318945.9A 2022-10-26 2022-10-26 报文传输方法、设备、存储介质和程序产品 Pending CN117978737A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211318945.9A CN117978737A (zh) 2022-10-26 2022-10-26 报文传输方法、设备、存储介质和程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211318945.9A CN117978737A (zh) 2022-10-26 2022-10-26 报文传输方法、设备、存储介质和程序产品

Publications (1)

Publication Number Publication Date
CN117978737A true CN117978737A (zh) 2024-05-03

Family

ID=90860056

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211318945.9A Pending CN117978737A (zh) 2022-10-26 2022-10-26 报文传输方法、设备、存储介质和程序产品

Country Status (1)

Country Link
CN (1) CN117978737A (zh)

Similar Documents

Publication Publication Date Title
JP6093867B2 (ja) インターコネクトにおける不均一なチャネル容量
US9185047B2 (en) Hierarchical profiled scheduling and shaping
US9900255B2 (en) System and method for link aggregation group hashing using flow control information
CN109104373B (zh) 网络拥塞的处理方法、装置及系统
EP3186928B1 (en) Bandwidth-weighted equal cost multi-path routing
US20170078207A1 (en) Network prioritization based on node-level attributes
CN108234320B (zh) 报文传输方法及交换机
US10341224B2 (en) Layer-3 flow control information routing system
CN114553760B (zh) 路径权重分配方法以及装置
CN106851769A (zh) 生成路由信息及确定传输路径的方法、装置
CN113328953B (zh) 网络拥塞调整的方法、装置和存储介质
CN113746751A (zh) 一种通信方法及装置
Liang et al. Low-latency service function chain migration in edge-core networks based on open Jackson networks
CN112714081B (zh) 一种数据处理方法及其装置
CN117978737A (zh) 报文传输方法、设备、存储介质和程序产品
WO2022166348A1 (zh) 路由方法、路由装置、控制器和计算机可读存储介质
CN110213170A (zh) 一种报文传输的方法及装置
CN114285790A (zh) 数据处理方法、装置、电子设备和计算机可读存储介质
KR102128417B1 (ko) 무선 센서 네트워크를 위한 다중 경로 우선순위 라우팅 방법 및 이를 수행하는 라우팅 장치
CN107592269B (zh) 传输路径的负载信息的方法和网络节点
WO2019210948A1 (en) Controller and switch for traffic engineering in a software defined network
CN117938750B (zh) 调度路由信息的处理方法、装置、设备、存储介质及产品
US11570084B2 (en) Path routing with delay constraints
JP2012050025A (ja) 経路制御装置、経路制御方法、およびプログラム
CN116938831A (zh) 一种基于可靠连接的通信方法、通信系统及相关装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination