CN119697231A - 在高性能计算中解耦拥塞管理状态与连接管理状态 - Google Patents
在高性能计算中解耦拥塞管理状态与连接管理状态 Download PDFInfo
- Publication number
- CN119697231A CN119697231A CN202410452987.4A CN202410452987A CN119697231A CN 119697231 A CN119697231 A CN 119697231A CN 202410452987 A CN202410452987 A CN 202410452987A CN 119697231 A CN119697231 A CN 119697231A
- Authority
- CN
- China
- Prior art keywords
- connection
- congestion
- state
- data structure
- identifier
- 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
Links
- 238000000034 method Methods 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 18
- 230000000873 masking effect Effects 0.000 claims description 4
- 239000004744 fabric Substances 0.000 description 15
- 239000003999 initiator Substances 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000003491 array Methods 0.000 description 6
- 238000001152 differential interference contrast microscopy Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003362 replicative effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 101100150905 Caenorhabditis elegans ham-3 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开涉及在高性能计算中解耦拥塞管理状态与连接管理状态。第一网络端点通过发送控制包来建立与第二网络端点的连接,该控制包包括与该连接和该第一网络端点相关联的第一标识符。该第一网络端点基于第一标识符将与连接相关联的第一连接状态存储在第一数据结构中,并且基于第一连接状态将与该连接相关联的第一拥塞状态存储在第二数据结构中。该第一网络端点针对与第一标识符相关联的数据流通过以下操作来识别与数据流相对应的拥塞状态:通过基于第一标识符搜索第一数据结构来获得第一连接状态;以及通过基于所获得的第一连接状态搜索第二数据结构来识别第一拥塞状态。
Description
相关申请的交叉引用
本申请要求由发明人Keith D.Underwood和Robert L.Alverson于2023年9月22日提交的名称为“DECOUPLING CONGESTION MANAGEMENT STATE AND CONNECTION STATE IN AHIGH PERFORMANCE NIC[在高性能NIC中解耦拥塞管理状态与连接状态]”的美国临时申请号63/584,676(代理人案卷号P173311USPRV)的权益。
背景技术
技术领域
拥塞管理可以是现代高性能数据中心中的基本过程。这些数据中心中的高带宽网络可能例如在中平面处或在端点处经历拥塞。为了管理拥塞,网络端点(例如,网络接口控制器(NIC))可以维持拥塞管理状态,该拥塞管理状态可以包括关于可以允许多少数据进入网络中以及通过网络的路径质量的信息。在大多数当前解决方案中,拥塞管理状态与连接状态相关联,其中,每个连接可以独立地维持其连接状态。在一些情况下,网络可以包括单对端点之间的两个或更多个连接,其中,每个连接与其自身的拥塞管理状态相关联。因此,复制拥塞管理状态可能带来空间成本。此外,当来自一个NIC的两个流彼此竞争NIC的带宽时,拥塞管理可能不会高效地执行。
附图说明
图1图示了根据本申请的一方面的示例性网络架构。
图2A图示了根据本申请的一方面的伪代码,该伪代码用于基于间接索引来创建并访问用于连接状态和拥塞状态的两个数据结构。
图2B图示了根据本申请的一方面的描绘在图2A中所示出的连接数组和拥塞数组中存储和访问的信息的图。
图3A图示了根据本申请的一方面的伪代码,该伪代码用于基于标识符的编码来创建并访问用于连接状态和拥塞状态的两个数据结构。
图3B图示了根据本申请的一方面的描绘在图3A中所示出的连接数组和拥塞数组中存储和访问的信息的图。
图4A图示了根据本申请的一方面的伪代码,该伪代码用于基于标识符的编码来创建并访问用于连接状态和拥塞状态的两个数据结构、并且包括嵌入在拥塞状态中的多个连接状态。
图4B图示了根据本申请的一方面的描绘在图4A中所示出的连接数组和拥塞数组中存储和访问的信息的图。
图5呈现了根据本申请的一方面的图示促进在NIC中解耦拥塞管理与连接状态的方法的流程图。
图6图示了根据本申请的一方面的促进在NIC中解耦拥塞管理状态与连接状态的计算机系统。
图7图示了根据本申请的一方面的促进在NIC中解耦拥塞管理状态与连接状态的计算机可读介质。
在这些附图中,相似的附图标记指代相同的附图元素。
具体实施方式
以下描述被呈现以使得本领域的任何技术人员能够制造和使用各方面和示例,并且在特定应用及其要求的上下文中被提供。对所公开方面的各种修改对于本领域技术人员来说将是显而易见的,并且在不脱离本公开的精神和范围的情况下,本文中定义的一般原理可以应用于其他方面和应用。因此,本文中描述的各方面不限于所示出的方面,而旨在符合与本文中公开的原理和特征一致的最大范围。
所描述的方面通过将拥塞管理状态与连接状态解耦并且将连接状态和拥塞状态维持在不同的数据结构中来解决当网络中的端点之间的每个连接必须维持其自身的拥塞管理状态时产生的效率损失和性能损失。
如上文所描述的,拥塞管理可以是现代高性能数据中心中的基本过程。这些数据中心中的高带宽网络可能在网络端点处(例如,NIC)经历拥塞。为了管理拥塞,网络端点可以维持拥塞管理状态,该拥塞管理状态可以包括关于可以允许多少数据进入网络(例如,“窗口大小”)中以及通过网络的路径质量的信息。在大多数当前解决方案中,拥塞管理状态与连接状态相关联,其中,每个连接可以独立地维持其连接状态。
在一些情况下,网络可以包括单对端点之间的两个或更多个连接,其中,每个连接与其自身的拥塞管理状态相关联。包括多个连接的一个原因可能是出于性能考虑,例如,可能需要多个数据包来维持满包率。包括多个连接的另一原因可能是由于数据流中需要并发性。两个或更多个不同应用程序可能希望在没有干扰的情况下在同一对端点之间发送数据,这是因为例如存在不同类型的流量,这些流量可能根本不需要连接。例如,目标节点可以响应于来自发起方节点的读取请求而发送“大量数据”。可能期望针对作为响应所传输(即,从目标节点到发起方节点)的大量数据进行拥塞控制,但可能不存在在反方向(例如,从发起方节点到目标节点)上流动的连接。
当两个或更多个连接(每个连接各自具有它们自身的拥塞管理状态)在一对端点之间(例如,在一对NIC之间)共享单个数据路径时,这可能导致效率损失和性能损失。类似地,当一个或多个连接与在一对端点之间不需要连接的数据流共享单个数据路径时,这也可能导致效率损失和性能损失。在一个示例中,HPE Cray Slingshot网络可以不使用响应于对数据的请求而发送的数据的连接。在这个示例中,发起方节点(第一NIC)可以向目标节点(第二NIC)发出“获取”或“读取”操作。目标节点可以响应于“获取”或“读取”操作而提供所请求的数据,但响应的传输可以不使用连接。
一些当前解决方案可能缺乏将响应数据(即,从目标节点流动到发起方节点)的拥塞管理状态与在同一方向上流动的请求(即,从目标节点到发起方节点的请求)的拥塞管理状态联系在一起的能力。类似地,由于针对单独连接具有独立拥塞管理状态会导致效率损失和性能损失,因此一些当前解决方案可能仅限于一对NIC之间的单个连接。
在效率损失的一个示例中,复制拥塞管理状态可能带来空间成本。拥塞管理状态可以构成32个字节或更多信息,并且复制这些信息可能带来硅面积方面的成本。在性能损失的一个示例中,当来自一个NIC的两个流彼此竞争NIC的带宽时,拥塞管理可能不会高效地执行。
此外,网络中的“连接”可以是动态的和瞬态的。网络中的连接可以被建立以便传输数据并且可以在没有任何数据传输的情况下在一定时间段之后被拆除。可以适合于静态、长期、持久连接的技术在动态、瞬态的连接领域可能不那么有效。
所描述的方面通过使用可以将连接状态和拥塞状态维持在不同的数据结构中的三种主要解决方案来将拥塞管理状态与连接状态解耦,以解决上文所描述的挑战。在第一解决方案中,连接状态表可以包括“间接索引”,即,到拥塞状态表的对应元素中的索引。在第二解决方案中,对连接标识符的编码可以用于直接索引到拥塞状态表中并且识别与连接状态相关联的拥塞状态。在基于第二解决方案的第三解决方案中,编码可以用于直接索引到拥塞状态中,其中包括拥塞状态的对应连接状态作为拥塞状态表中的子元素。
因此,所描述的方面可以消除每个连接的拥塞管理状态的低效复制并且提供用于确定以下项的解决方案:连接或数据流可以如何识别其相关联的拥塞管理状态、以及调度器(该调度器基于拥塞管理状态来调度数据包)可以如何识别与该连接管理状态相关联的所有连接。
示例性网络架构
图1图示了根据本申请的一方面的示例性网络架构的图100。图100可以包括交换机的网络110(可以被称为“交换机结构”)并且可以包括交换机112、114、116、118和120。每个交换机可以在交换机结构110内具有唯一的地址或标识符。各种类型的设备和网络可以耦接到交换机结构。例如,存储阵列130可以经由交换机112耦接到交换机结构110;高性能计算(HPC)网络(例如,无限带宽、弹弓(Slingshot)或任何其他的高性能网络)132可以经由交换机114耦接到交换机结构110;多个终端主机(如主机136和主机138)可以经由交换机118耦接到交换机结构110;并且因特网协议(IP)/以太网网络134可以经由交换机120耦接到交换机结构110。HPC网络可以包括同时运行程序的多个联网计算机和存储设备以完成不同的复杂且性能密集型任务。IP/以太网网络可以包括物理以太网布线和基于IP的网络设备之间的应用层协议,包括经由传输通信协议(TCP)/IP和用户数据报协议(UDP)数据包的通信。通常,交换机可以具有边缘端口和结构端口。边缘端口可以耦接到在结构外部的设备。结构端口可以经由结构链路耦接到结构内的另一个交换机。通常,流量可以经由边缘交换机的入口端口注入到交换机结构110中,并且可以经由另一个(或同一个)边缘交换机的出口端口离开交换机结构110。入口链路可以将边缘设备(例如,HPC终端主机)的NIC耦接到边缘交换机的入口边缘端口。然后,交换机结构100可以将流量发送到出口边缘交换机,该出口边缘交换机进而可以经由另一个NIC将流量传递到目的地边缘设备。
第一解决方案:连接状态表到拥塞状态表的间接索引
当在两个网络端点或NIC(例如,第一NIC和第二NIC)之间建立连接时,第一NIC可以是“发起方节点”或“发送端”并且第二NIC可以是“目标节点”或“接收端”。第一NIC可以通过发送控制包来建立与第二NIC的连接,该控制包包括针对第一NIC的连接标识符(也被称为“连接ID”或“connection_ID”)和针对第二NIC的连接ID。一对NIC中的每一个可以维持其自身的连接状态(被称为“连接数组”或“connection_array”)和对应的拥塞管理状态(被称为“拥塞数组”或“congestion_array”)。本文中描述的网络端点或NIC可以指例如图1的网络110或交换机结构110中的交换机。
在第一解决方案中,连接状态表可以包括如本文中使用的“间接索引”、如下文关于图2A描述的到拥塞状态表的对应元素中的索引。
图2A图示了根据本申请的一方面的伪代码200,该伪代码用于基于间接索引来创建并访问用于连接状态和拥塞状态的两个数据结构。伪代码200可以包括定义connection_array的数据结构或表的区段202、以及定义congestion_array的数据结构或表的区段204。伪代码200也可以包括:创建数据结构的行206;针对给定连接ID获得连接状态的行208;以及针对所获得的连接状态识别对应的拥塞状态的行210。
区段202可以使用第一解决方案(被称为“solution1_connection_state(解决方案1连接状态)”)表示connection_array的结构的定义,其中:“next_sequence_number(下一序列号)”指示要发送的下一序列号(如果结构在发送端)或预期的下一序列号(如果结构在接收端);“*pending packets(待处理数据包)”指示待由给定节点处理的数据包;“congestion_index(拥塞索引)”(203)指示congestion_array中对应条目的索引;以及“active(活动的)”指示连接的状态,例如,条目是活动的还是不活动的。
区段204可以使用第一解决方案(被称为“solution1_congestion_state(解决方案1拥塞状态)”)表示congestion_array的结构的定义,其中:“congestion_window_size(拥塞窗口大小)”指示一次或在接收确认之前可以发送的数据包或字节的最大数量;“total_outstanding_data(总未完成数据)”指示已经发送但尚未确认的数据包或数据字节的数量;“congestion_rate(拥塞率)”指示数据可以沿着路径移动的最大速率或路径的总容量;“path_quality[64](路径质量[64])”指示路径传输数据的能力;“connection_indices[8](连接索引[8])”(205)指示与给定congestion_state数组相对应的连接ID的数组;以及“active”指示状态,例如条目是活动的还是不活动的。
行206可以指示以下内容:connection_array可以基于在202中定义的solution1_connection_state数据结构被定义为具有例如32768个元素;并且congestion_array可以基于在204中定义的solution1_congestion_state数据结构被定义为具有例如4096个元素。
可以通过使用connection_ID作为到connection_array的索引来获得表示连接状态的适当条目(如由行208所指示的)。随后,可以通过使用所获得的连接状态条目中的拥塞索引作为到congestion_array的索引来识别对应的拥塞状态(如由行210所指示的)。行208和行210演示第一解决方案可以如何使用connection_array中的拥塞索引(203)作为到congestion_array的间接索引。
图2B图示了根据本申请的一方面的描绘在图2A中所示出的连接数组和拥塞数组中存储和访问的信息的图220。图200描绘了具有索引0到M(用虚线圆圈指示)处的条目的connection_array 230,其中M可以是例如32768。connection_array 230中的条目可以是如图2A的区段202中所定义的。例如,在索引“1”处(即,在connection_ID为“1”时)的条目231可以包括以下元素:“next_sequence_number”232;“*pending packets”233;值为“3”的“congestion_index”234(如由标签236所指示的);以及“active”的状态235,其值被设定为“1”,指示由这个条目231指示的连接状态是活动的。
多个连接可以共享相同的拥塞状态。例如,在索引“M”处(即,在connection_ID为“M”时)的条目241可以包括以下元素:“next_sequence_number”242;“*pending packets”243;值为“3”的“congestion_index”244(如由标签246所指示的);以及“active”的状态245,其值被设定为“1”,指示由这个条目241指示的连接状态是活动的。
图220也描绘了具有索引0到N(用虚线圆圈指示)处的条目的congestion_array250,其中N可以是例如4096。congestion_array 250中的条目可以是如图2A的区段204中所定义的。例如,在索引“3”处的条目251可以包括以下元素:“congestion_window_size”252;“total_outstanding_data”253;“congestion_rate”254;“path_quality[64]”255;“connection_indices[8]”256数组的值为“[1,4,…M]”(如由标签258所指示的);以及“active”状态257,该状态的值被设定为“1”,这指示由这个条目251指示的拥塞管理状态是活动的。
如由congestion_index 234所指示的,congestion_array 250中的条目251可以与connection_array 230中的条目231相对应(由箭头260所指示)。因此,针对发起方节点与目标节点之间的给定数据流,connection_ID(例如,发起方节点的connection_ID)可以用于获得给定数据流的连接状态(例如,connection_array 230中的条目231)。在获得连接状态(条目231)之后,连接状态(条目231)中的拥塞索引(例如,如由标签236所指示的值为“3”的congestion_index 234)可以用作索引以供识别对应的拥塞状态(例如,congestion_array 250中的索引为“3”的条目251)。
所获得的连接状态和识别出的拥塞管理状态可以由调度器(该调度器可以基于拥塞管理来调度数据包)用来识别与给定拥塞管理状态相关联的所有连接。调度可以在活动的拥塞数组上进行。当拥塞数组中的元素指示准备调度时,则调度器可以从拥塞数组中取得可用的连接。响应于所发送或所接收的数据而发送的确认可以用于访问连接数组以完成一个或多个待决数据包(233)。在访问连接数组之后,调度器可以使用拥塞索引以更新拥塞数组,例如,总计未完成数据(253)。
例如,调度器可以确定某个拥塞元素已准备好进行调度。在识别连接状态(条目231)和对应的拥塞状态(条目241)之后,调度器可以检查“connection_indices[8]”中指示的索引处的连接条目的状态(例如,如标签258所指示的值为“[1,4,…,M]”的元素256)。针对元素256中列出的索引(即,1,4,…,M)中的每一个,调度器可以查看connection_array230中的对应元素以确定状态是否是活动的(例如,元素“active”的值是表示不活动的“0”还是表示活动的“1”)。如果元素是活动的(或其布尔值“active”元素被设定值为“1”),则调度器可以调度给定连接状态条目中指示的待决数据包。
在图200的示例中,用于congestion_array条目251的connection_indices被列为“[1,4,…M]”,这指示调度器查找connection_array 230中的那些索引处的条目、检查状态并且如果状态是活动的则调度待决数据包。条目231与索引1相对应并且指示活动状态(235),因此调度器可以调度在要处理的条目231中指示的待决数据包(233)。条目241与索引M相对应并且指示活动状态(245),因此调度器可以调度在要处理的条目241中指示的待决数据包(243)。注意,尽管在connection_array 230中仅描绘了索引1和索引M的条目(而未描绘索引4的条目),但是调度器可以以类似的方式查看每个列出的索引中的活动状态,以确定是否调度给定条目中指示的待决数据包。
在这个第一解决方案中,可以动态地分配拥塞数组的元素。作为在发起方节点与目标节点之间建立连接的一部分,系统可以确定目标节点是否存在拥塞数组元素。如果拥塞数组元素确实存在,则系统可以使用该拥塞数组元素。如果拥塞数组元素不存在,则系统可以在拥塞数组中分配新的元素。
连接可以预期存在至少几微秒。一般来说,解决方案可以不需要在每个周期建立一个连接。因此,各种数据结构可以用于跟踪所分配的拥塞状态元素并且在建立连接之后识别拥塞状态元素。在建立连接之后,访问拥塞状态可以是简单的静态随机存取存储器(SRAM)访问,这可以在每个周期的一个元素处进行。
在第一解决方案中,第一网络端点通过发送控制包来建立与第二网络端点的连接,该控制包包括与连接和第一网络端点相关联的第一标识符。第一网络端点基于第一标识符将与连接相关联的第一连接状态存储在第一数据结构中。第一网络端点基于第一连接状态将与连接相关联的第一拥塞状态存储在第二数据结构中。系统针对与第一标识符相关联的数据流识别与数据流相对应的拥塞状态。识别对应的拥塞状态包括:通过基于第一标识符搜索第一数据结构来获得第一连接状态;以及通过基于所获得的第一连接状态搜索第二数据结构来识别第一拥塞状态。第一网络端点将第一连接状态存储在第一数据结构中的第一条目中,第一数据结构包括与第一网络端点和至少第二网络端点之间的连接相关联的连接状态;以及第一网络端点将第一拥塞状态存储在第二数据结构中的第二条目中,第二数据结构包括与第一网络端点和至少第二网络端点之间的连接相关联的拥塞状态。第一条目至少指示与连接相关联的第一标识符、待发送的一个或多个数据包、与连接相关联的第一状态、和与存储在第二数据结构中的第一拥塞状态相关联的拥塞索引。系统通过进一步基于在第一条目中指示的拥塞索引搜索第二数据结构来识别第一拥塞状态。
第二解决方案:对连接ID进行编码以直接索引拥塞状态表
在第二解决方案中,对连接标识符(ID)的编码可以用于直接索引到拥塞状态表中并且用于识别与连接状态相关联的拥塞状态。如上文所描述的,当建立连接时,连接ID可以用于网络中。一般来说,数据包可以包括发起方节点(或源)连接ID和目标节点(或目的地)连接ID。第二解决方案可以利用这些连接ID来直接索引连接数组和拥塞数组,从而移除在第一解决方案中使用的链接索引。
图3A图示了根据本申请的一方面的伪代码300,该伪代码用于基于标识符的编码来创建并访问用于连接状态和拥塞状态的两个数据结构。伪代码300可以包括区段302和区段304,这些区段分别定义connection_array和congestion_array的数据结构或表。伪代码300也可以包括:创建数据结构的行306;基于第一编码来获得连接状态并且识别对应的拥塞状态的行308至行309;以及基于第二编码来获得连接状态并且识别对应的拥塞状态的行310至行311。
区段302可以使用第二解决方案(被称为“solution2_connection_state(解决方案2连接状态)”)表示connection_array的结构的定义,其中:“next_sequence_number”指示要发送的下一序列号(如果结构在发送端)或预期的下一序列号(如果结构在接收端);“*pending packets”指示待由给定节点处理的数据包;以及“active”指示连接的状态,例如,条目是活动的还是不活动的。
区段304可以使用第二解决方案(被称为“solution2_congestion_state(解决方案2拥塞状态)”)表示congestion_array的结构的定义,其中:“congestion_window_size”指示一次或在接收确认之前可以发送的数据包或字节的最大数量;“total_outstanding_data”指示已经发送但尚未确认的数据包或数据字节的数量;“congestion_rate”指示数据可以沿着路径移动的最大速率或路径的总容量;“path_quality[64]”指示路径传输数据的能力;以及“active”指示状态,例如条目是活动的还是不活动的。
行306可以指示以下内容:connection_array可以基于在302中定义的solution2_connection_state数据结构定义为具有例如32768个元素;以及congestion_array可以基于在304中定义的solution2_congestion_state数据结构定义为具有例如4096个元素。
系统可以利用适当的连接ID(包括在数据包中作为发起方连接ID和目标连接ID)来直接索引连接数组和拥塞数组两者。作为一个示例,行308至行309指示如何基于connection_ID和connection_ID的第一编码来访问连接状态和对应的拥塞状态。可以通过使用connection_ID作为到connection_array的直接索引来获得表示连接状态的适当条目(如由行308所指示的)。随后,可以通过使用(而非如第一解决方案中的拥塞索引)对connection_ID的编码(即,第一编码)作为到congestion_array的索引来识别对应的拥塞状态(如由行309所指示的)。编码可以是例如使connection_ID向右移位三个位。在connection_ID含有15个位的情况下,所编码索引(在309中)可以含有12个位,这可以导致两个索引之间的最大重叠量(即,共有12个位)。
在行308至行309中指示的连接ID的第一编码可以表示连续线性空间。包括使用相同大小的数据结构的其他变型也可以是可能的。作为另一示例,行310至行311指示如何基于connection_ID或connection_ID的第二编码访问连接状态和对应的拥塞状态。可以通过使用connection_ID的某些位作为到connection_array的索引来获得表示连接状态的适当条目(如由行310所指示的)。随后,可以通过使用(而非在如第一解决方案中的拥塞索引)对connection_ID的编码(即,第二编码)作为到congestion_array的索引来识别对应的拥塞状态(如由行311所指示的)。编码可以是例如使位隔离或掩蔽在connection_ID之外并且使用底部15个位作为用于connection_array的索引(如由行310所指示的)并且使用上部12个位作为用于congestion_array的索引(如由行311所指示的)。在connection_ID含有27个或更多个位的情况下,所编码索引(在311中)可以含有12个位,这可以导致两个索引之间的零重叠量(即,0个共有位)。
提供行308至行309和行310至行311的示例仅用于说明性目的。可以使用其他变型。即,对connection_ID的任何编码或编码序列的组合可以用于直接索引connection_array和congestion_array中的一个或多个相关部分。通过使用这样的编码,由系统(例如,调度器)执行的查找不需要被序列化并且可以同时被执行。
图3B图示了根据本申请的一方面的描绘在图3A中所示出的连接数组和拥塞数组中存储和访问的信息的图320。图320描绘了具有索引0到M(由虚线圆圈指示)处的条目的connection_array 330,其中M可以是例如32768。connection_array 330中的条目可以是如图3A的区段302中所定义的。例如,条目331可以包括以下元素:“next_sequence_number”332;“*pending packets”333;以及“active”的状态335,其值被设定为“1”,指示由这个条目331指示的连接状态是活动的。
图320也描绘了具有索引0到N(用虚线圆圈指示)处的条目的congestion_array350,其中N可以是例如4096。congestion_array 350中的条目可以是如图3A的区段304中所定义的。例如,条目351可以包括以下元素:“congestion_window_size”352;“total_outstanding_data”353;“congestion_rate”354;“path_quality[64]”355;以及“active”的状态357,其值被设定为“1”,指示由这个条目351指示的拥塞管理状态是活动的。
connection_array 330中用于条目331的索引可以是例如“conn_ID_1”341(如由图3A的行308所指示的)。系统可以将第一编码应用到索引341以获得congestion_array350中的对应索引“enc1(conn_ID_1)”361(如由图3A的行309所指示的)。可以用箭头370来指示从连接状态查找和取得对应的拥塞状态。
系统也可以将不同的编码应用到连接ID。connection_array 330中用于条目331的索引可以是例如“conn_ID_2”342并且索引342本身可以被编码(如由图3A的行310所指示的)。系统可以将第二编码应用到索引342以获得congestion_array 350中的对应索引“enc2(conn_ID_2)”362(如由图3A的行311所指示的)。可以用箭头370来指示从连接状态查找和取得对应的拥塞状态。
在一些方面中,仅两种类型的数据流可以被复用到单个拥塞状态上。第一类型的数据流可以包括请求(包括具有数据的请求)并且第二类型的数据流可以包括具有数据的响应。例如,第一网络端点(“A”)可以将数据传输到第二网络端点(“B”)(作为第一类型的数据流),并且第一网络端点也可以响应于来自第二网络端点的对数据的请求而将数据传输到第二网络端点。在这样的情况下,系统可以使用连接标识符的一部分(例如,一个位)以区分第一类型的数据流(例如,请求)与第二类型的数据流(例如,响应)。即,第一网络端点可以使用连接标识符的一部分(例如,向右移位一位的连接标识符或连接标识符的上部分或下部分)作为索引,将连接状态(针对从A到B的请求)存储在数据结构中,该数据结构包括与作为传输实体的第一网络端点相关联的连接状态(例如,“发送”连接数组)。第一网络端点也可以使用相同索引部分将连接状态(针对从A到B的响应)存储在另一数据结构中,该数据结构包括与作为接收实体的第一网络端点相关联的连接状态(例如,“接收”连接数组)。相同的索引部分可以用于索引到拥塞数组中。连接标识符的剩余部分(例如,一个位)可以用于识别数据流是第一类型(请求)还是第二类型(响应),并且可以基于该剩余部分(例如,一个位)在拥塞数组中存储和访问对应的拥塞状态。
在第二解决方案中,第一网络端点通过发送控制包来建立与第二网络端点的连接,该控制包包括与连接和第一网络端点相关联的第一标识符。第一网络端点基于第一标识符将与连接相关联的第一连接状态存储在第一数据结构中。第一网络端点基于第一连接状态将与连接相关联的第一拥塞状态存储在第二数据结构中。系统针对与第一标识符相关联的数据流识别与数据流相对应的拥塞状态。识别对应的拥塞状态包括:通过基于第一标识符搜索第一数据结构来获得第一连接状态;以及通过基于所获得的第一连接状态搜索第二数据结构来识别第一拥塞状态。第一网络端点将第一连接状态存储在第一数据结构中的第一条目中,第一数据结构包括与第一网络端点和至少第二网络端点之间的连接相关联的连接状态;以及第一网络端点将第一拥塞状态存储在第二数据结构中的第二条目中,第二数据结构包括与第一网络端点和至少第二网络端点之间的连接相关联的拥塞状态。第一数据结构中的第一条目至少指示与连接相关联的第一标识符、待发送的一个或多个数据包、与连接相关联的第一状态,并且第二数据结构中的第二条目至少指示与第一拥塞状态相关联的第二状态以及拥塞窗口大小和拥塞率中的一个或多个。系统通过进一步基于与第一标识符相关联的编码搜索第二数据结构来识别第一拥塞状态。
第三解决方案:对连接ID进行解码以直接索引拥塞状态表并且将连接状态嵌入拥
塞状态中
在基于第二解决方案的第三解决方案中,编码可以用于直接索引到拥塞状态中,其中拥塞状态的对应连接状态可以作为子元素包括在拥塞状态表中。拥塞管理状态的大小可以主导存储装置的大小,例如,因为与拥塞数组的其他元素相比,路径质量的度量(64字节)可能较大。因此,单个拥塞状态条目可以嵌入或包括连接状态的多个状态,即,通过包括对应连接状态作为拥塞数组中的子元素。
图4A图示了根据本申请的一方面的伪代码400,该伪代码用于基于标识符的编码来创建并访问用于连接状态和拥塞状态的两个数据结构、并且包括嵌入在拥塞状态中的多个连接状态。伪代码400可以包括区段402和区段404,这些区段分别定义connection_array和congestion_array的数据结构或表。伪代码400也可以包括:创建单个congestion_state数据结构的行406;以及基于编码识别拥塞状态并且获得对应连接状态的行408至行409。
区段402可以使用第三解决方案(被称为“solution3_connection_state(解决方案3连接状态)”)表示connection_array的结构的定义,其中:“next_sequence_number”指示要发送的下一序列号(如果结构在发送端)或预期的下一序列号(如果结构在接收端);“*pending packets”指示待由给定节点处理的数据包;以及“active”指示连接的状态,例如,条目是活动的还是不活动的。
区段404可以使用第三解决方案(被称为“solution3_congestion_state(解决方案2拥塞状态)”)表示congestion_array的结构的定义,其中:“congestion_window_size”指示一次或在接收确认之前可以发送的数据包或字节的最大数量;“total_outstanding_data”指示已经发送但尚未确认的数据包或数据字节的数量;“congestion_rate”指示数据可以沿着路径移动的最大速率或路径的总容量;“path_quality[64]”指示路径传输数据的能力;“conn_state[8]”指示“solution2_connection_state”的结构数组;以及“active”指示状态,例如条目是活动的还是不活动的。
行406可以指示congestion_array可以基于在404中定义的“solution3_congestion_state”数据结构定义为具有例如4096个元素。如上文所描述的,“solution3_congestion_state”数据结构包含多个连接状态条目(仅出于说明性目的描绘为高达8个连接状态条目)。即,连接状态信息可以嵌入在拥塞状态条目中,并且连接状态可以是拥塞状态的子元素。
因此,行408至行409指示如何识别和获得拥塞状态和连接状态。因为第三解决方案是基于仅使用一个数据结构(拥塞数组),所以可以通过使用connection_ID的编码(例如,使connection_ID向右移位三个位)来识别表示拥塞状态的适当条目(如由行408所指示的)。随后,可以通过掩蔽和选择connection_ID的较低三个位来获得对应连接状态(如由行409所指示的)。在这个示例中,到连接数组子元素中的索引可以包括三个位以涵盖连接数组中的高达八个条目(如在区段404中所定义的)。
因此,尽管第三解决方案以与第二解决方案相反的顺序执行查找以获得和识别连接和拥塞信息,但如关于图3B和图4B所描述的,第二解决方案和第三解决方案都可以通过解析查找中的数据来在单个的查找中实现访问。
图4B图示了根据本申请的一方面的描绘在图4A中所示出的连接数组和拥塞数组中存储和访问的信息的图420。图420描绘了具有索引0到7(用虚线圆圈指示)处的八个条目的嵌入式connection_array 430。嵌入式connection_array 430中的条目可以是如图3A的区段302和图4A的区段402中所定义的。例如,条目431可以包括以下元素:“next_sequence_number”432;“*pending packets”433;以及“active”的状态435,其值被设定为“1”,指示由这个条目431指示的连接状态是活动的。
图420也描绘了可以嵌入到connection_arrays(如嵌入式connection_array430)的数组中的congestion_array 450。Congestion_array 450可以包括索引0到N(用虚线圆圈指示)处的条目,其中N可以是例如4096。congestion_array 450中的条目可以是如图4A的区段404中所定义的。例如,条目451可以包括以下元素:“congestion_window_size”452;“total_outstanding_data”453;“congestion_rate”454;“path_quality[64]”455;“solution2_connection_state”数组456的数组,每个数组被定义为“conn_state[8]”(例如,嵌入式connection_array 430);以及“active”的状态457,其值被设定为“1”,指示由这个条目451指示的拥塞管理状态是活动的。
系统可以将第一编码应用到connection_ID以确定在congestion_array 450中用于识别拥塞状态的条目451的索引,例如,“enc1(conn_ID)”461(如由图4A的行408所指示的)。在识别条目451之后,系统可以将第二编码应用到connection_ID以获得在嵌入式congestion_array 450(条目451的子元素456)中的对应索引“enc2(conn_ID)”462(如由图4A的行409所指示的)。可以用箭头470来指示基于识别出的拥塞状态来查找和取得对应连接状态。
仅出于说明性目的描绘在区段202、204、302、304、402和404的结构中的元素。区段202、204、302、304、402和404可以包括比如所描绘的元素更少或更多的元素并且可以包括所描绘元素中的一个或多个或所描绘元素的任何组合。
类似于第二解决方案,在第三解决方案中,第一网络端点通过发送控制包来建立与第二网络端点的连接,该控制包包括与连接和第一网络端点相关联的第一标识符。第一网络端点基于第一标识符将与连接相关联的第一连接状态存储在第一数据结构中。第一网络端点基于第一连接状态将与连接相关联的第一拥塞状态存储在第二数据结构中。系统针对与第一标识符相关联的数据流识别与数据流相对应的拥塞状态。识别对应的拥塞状态包括:通过基于第一标识符搜索第一数据结构来获得第一连接状态;以及通过基于所获得的第一连接状态搜索第二数据结构来识别第一拥塞状态。第一网络端点将第一连接状态存储在第一数据结构中的第一条目中,第一数据结构包括与第一网络端点和至少第二网络端点之间的连接相关联的连接状态;以及第一网络端点将第一拥塞状态存储在第二数据结构中的第二条目中,第二数据结构包括与第一网络端点和至少第二网络端点之间的连接相关联的拥塞状态。第一数据结构中的第一条目至少指示与连接相关联的第一标识符、待发送的一个或多个数据包、与连接相关联的第一状态,并且第二数据结构中的第二条目至少指示与第一拥塞状态相关联的第二状态以及拥塞窗口大小和拥塞率中的一个或多个。系统通过进一步基于与第一标识符相关联的编码搜索第二数据结构来识别第一拥塞状态。
此外,在第三解决方案中,第二数据结构中的第二条目进一步指示包括来自第一数据结构的连接状态条目的数组,第二条目包括第一拥塞状态。第一网络端点包括与连接相关联的连接状态作为拥塞状态的子元素。系统通过进一步基于与第一标识符相关联的第一编码搜索第二数据结构来识别第一拥塞状态并且系统通过基于与第一标识符相关联的第二编码搜索数组来获得第一连接状态。
促进在NIC中解耦拥塞管理状态与连接状态的方法
图5呈现了根据本申请的一方面的图示促进在NIC中解耦拥塞管理状态与连接状态的方法的流程图500。在操作期间,该系统通过第一网络端点通过发送控制包来建立与第二网络端点的连接(操作502),该控制包包括与连接和第一网络端点相关联的第一标识符。第一标识符可以是例如当建立连接时在网络中使用的连接ID。如上文所描述的,数据包可以包括发起方节点(或源)连接ID和目标节点(或目的地)连接ID。在第一解决方案中,连接ID可以用于直接索引连接数组,而间接索引可以用于访问拥塞数组。在第二解决方案和第三解决方案中,可以利用连接ID(例如,基于一个或多个编码)来直接索引到连接数组和拥塞数组两者中。
系统通过第一网络端点基于第一标识符将与连接相关联的第一连接状态存储在第一数据结构中(操作504)。第一连接状态可以存储在第一数据结构中的第一条目中,并且第一数据结构可以包括与第一网络端点和至少第二网络端点之间的连接相关联的连接状态,如上文关于图2A的数据结构202(“solution1_connection_state”)和图2B的条目231和条目241所描述的。系统通过第一网络端点基于第一连接状态将与连接相关联的第一拥塞状态存储在第二数据结构中(操作506)。第一拥塞状态可以存储在第二数据结构中的第二条目中,并且第二数据结构可以包括与第一网络端点和至少第二网络端点之间的连接相关联的拥塞状态,如上文关于图2A的数据结构204(“solution1_congestion_state”)和图2B的条目251所描述的。
系统针对与第一标识符相关联的数据流识别与数据流相对应的拥塞状态(操作508)。操作508可以包括操作510和操作512的步骤。即,系统通过以下操作识别对应的拥塞状态:通过基于第一标识符搜索第一数据结构来获得第一连接状态(操作510);以及通过基于所获得的第一连接状态搜索第二数据结构来识别第一拥塞状态(操作512)。例如,如上文在图2B中所描述的,系统可以使用连接ID来搜索connection_array 230,这使得能够获得包括congestion_index 234的连接状态条目231。系统随后可以使用所获得的congestion_index 234来搜索congestion_array 250,这使得能够识别拥塞状态条目251。此外,系统基于识别出的第一拥塞状态的状态或所获得的第一连接状态的状态来确定是否调度与第一标识符相关联的数据包(操作514)。例如,调度器或调度部件可以使用图2B的congestion_array 250中的状态257元素的值或图2B的connection_array 230中的状态235元素的值来确定是否调度对应数据包。元素235/257的值可以指示被设定为值“0”的“inactive(不活动的)”,或指示被设定为值“0”的“active(活动的)”,如上文关于图2B所描述的并且如上文针对图3B的元素335/357和图4B的元素435/457类似地描述的。调度器或调度部件可以使用这些值作为调度算法的一部分来确定调度对应数据包的顺序。
促进在NIC中解耦拥塞管理状态与连接状态的计算机系统
图6图示了根据本申请的一方面的促进在NIC中解耦拥塞管理状态与连接状态的计算机系统600。计算机系统600包括处理器602、存储器604和存储设备606。存储器604可以包括易失性存储器(例如随机存取存储器(RAM)),该易失性存储器用作管理存储器并且可以用于存储一个或多个存储器池。此外,计算机系统600可以耦接到外围I/O用户设备610(例如,显示设备611、键盘612和定点设备613)。存储设备606包括非暂态计算机可读存储介质并且存储操作系统616、内容处理系统618和数据628。计算机系统600可以包括比图6中所示出的那些实体或指令更少或更多的实体或指令。
存储设备606的内容处理系统618可以包括指令,这些指令当由计算机系统600(例如由计算机系统600的处理资源,如处理器602)执行时,可以使计算机系统600执行本公开中描述的方法和/或过程。具体来说,内容处理系统618可以包括由第一网络端点发送控制包的指令620,该控制包包括与第一网络端点(N/E)和要与第二网络端点(N/E)建立的连接相关联的第一标识符(ID)。内容处理系统618可以包括由第一网络端点基于第一标识符存储与连接相关联的第一连接状态的指令622。内容处理系统618也可以包括由第一网络端点基于第一连接状态存储与连接相关联的第一拥塞状态的指令624。内容处理系统618可以包括针对与第一标识符相关联的数据流,例如通过执行以下操作来识别与数据流相对应的拥塞状态的指令626:使用所述第一标识符在存储与连接相关联的连接状态的第一结构中进行第一搜索,所述第一搜索返回第一连接状态;以及使用所返回的第一连接状态在存储与连接状态相关联的拥塞状态的第二数据结构中进行第二搜索,第二搜索识别第一拥塞状态。
内容处理系统618可以包括比图6中所示出的那些指令更少或更多的指令。例如,内容处理系统618也可以存储用于执行上文关于以下操作所描述的操作的指令:存储和访问图2B、图3B和图4B的数组;图5的流程图500中描绘的操作;以及图7的计算机可读存储介质/设备700的指令。内容处理系统618也可以存储执行与使用上文所描述的分别关于图2A至图2B(针对第一解决方案)、图3A至图3B(针对第二解决方案)以及图4A至图4B(针对第三解决方案)三种解决方案中的任何一个相关联的操作的指令。
数据628可以包括由本公开中描述的方法、操作、通信和/或过程所需作为输入或生成作为输出的任何数据。具体地,数据628可以至少存储:请求;标识符;连接标识符;网络端点的标识符;数组;表;数据结构;数据结构中的条目;数据包;数据流;连接状态;拥塞管理状态或拥塞状态;连接数组;拥塞数组;状态;确定是否调度数据包;索引;拥塞索引;间接索引;连接索引的数组;嵌入式数组或数据结构;编码;位数;对位数的编码。
图7图示了根据本申请的一方面的促进在NIC中解耦拥塞管理状态与连接状态的计算机可读介质/设备700。设备700可以是存储当由计算机执行时使该计算机执行方法的指令的非暂态计算机可读介质。设备700可以存储通过发送包括与连接和第一网络端点相关联的第一标识符的控制包来建立第一网络端点(N/E)与第二网络端点(N/E)之间的连接的指令710。设备700可以存储基于第一标识符将与连接相关联的第一连接状态存储在第一数据结构中的第一条目中的指令712。设备700可以存储基于第一连接状态将与连接相关联的第一拥塞状态存储在第二数据结构中的第二条目中的指令714。
设备700可以进一步存储针对与第一标识符相关联的数据流来识别与数据流相对应的拥塞状态的指令720。指令720可以包括:通过基于第一标识符搜索第一数据结构来获得第一连接状态的指令722;以及通过基于所获得的第一连接状态搜索第二数据结构来识别第一拥塞状态的指令724。设备700也可以存储基于识别出的第一拥塞状态的状态或所返回的第一连接状态的状态来确定是否调度与第一标识符相关联的数据包的指令730。
设备700可以包括比图7中所示出的那些指令更多的指令。例如,设备700也可以存储用于执行上文关于以下操作所描述的操作的指令:存储和访问图2B、图3B和图4B的数组;图5的流程图500中描绘的操作;以及图6中的内容处理系统618的指令。设备700还可以存储执行与使用上文描述的分别关于图2A至图2B(针对第一解决方案)、图3A至图3B(针对第二解决方案)以及图4A至图4B(针对第三解决方案)三种解决方案中的任何一个相关联的操作的指令。
各种方面
一般来说,所公开的方面提供一种用于在HPC环境中(例如,在网络端点或NIC中)解耦拥塞管理状态与连接状态的方法、计算机系统以及非暂态计算机可读存储介质。在一个方面,该系统通过第一网络端点通过传输控制包来建立与第二网络端点的连接,该控制包包括与连接和第一网络端点相关联的第一标识符。该系统通过第一网络端点基于第一标识符将与连接相关联的第一连接状态存储在第一数据结构中。该系统通过第一网络端点基于第一连接状态将与连接相关联的第一拥塞状态存储在第二数据结构中。系统针对与第一标识符相关联的数据流识别与数据流相对应的拥塞状态。识别对应的拥塞状态包括:通过基于第一标识符搜索第一数据结构来获得第一连接状态;以及通过基于所获得的第一连接状态搜索第二数据结构来识别第一拥塞状态。
在本方面的变型中,系统识别要调度的数据包。数据包与第一标识符相关联。系统基于以下各项中的至少一项来确定是否调度数据包:所述识别出的第一拥塞状态的状态;所述获得的第一连接状态的状态;或与识别出的第一拥塞状态相关联的连接的一个或多个状态。
在本方面的进一步的变型中,系统将第一连接状态存储在第一数据结构中的第一条目中。第一数据结构包括与第一网络端点和至少第二网络端点之间的连接相关联的连接状态。系统将第一拥塞状态存储在第二数据结构中的第二条目中。第二数据结构包括与第一网络端点和至少第二网络端点之间的连接相关联的拥塞状态。
在本方面的又一变型中,第一条目至少指示与连接相关联的第一标识符、待发送的一个或多个数据包、与连接相关联的第一状态、和与存储在第二数据结构中的第一拥塞状态相关联的拥塞索引。系统通过进一步基于在第一条目中指示的拥塞索引搜索第二数据结构来识别第一拥塞状态。
在另一变型中,第二数据结构中的第二条目至少指示与第一拥塞状态相关联的第二状态、与第一数据结构中的元素相对应的一个或多个连接索引、以及拥塞窗口大小和拥塞率中的一个或多个。连接索引至少包括用于所述连接的第一标识符并且对应于与所述第一拥塞状态相关联的连接。
在另一变型中,第一数据结构中的第一条目至少指示与连接相关联的第一标识符、待发送的一个或多个数据包、和与连接相关联的第一状态。第二数据结构中的第二条目至少指示与第一拥塞状态相关联的第二状态以及拥塞窗口大小和拥塞率中的一个或多个。系统通过进一步基于与第一标识符相关联的编码搜索第二数据结构来识别第一拥塞状态。
在另一变型中,在第二数据结构中的第二条目进一步指示包括来自第一数据结构的连接状态条目的数组,第二条目包括第一拥塞状态。系统包括与连接相关联的连接状态作为所述拥塞状态的子元素。系统通过进一步基于与第一标识符相关联的第一编码搜索第二数据结构来识别第一拥塞状态。系统通过基于与所述第一标识符相关联的第二编码搜索所述数组来获得所述第一连接状态。
在另一变型中,系统基于以下各项中的至少一项对第一标识符进行编码:通过使所述第一标识符的一个或多个位移位来获得用于所述第二数据结构的第一索引,所述第一标识符和所述第一索引包括完全重叠的位;通过使所述第一标识符的一个或多个位移位来获得用于所述第二数据结构的第二索引,所述第一标识符和所述第二索引不包括重叠的位;或通过在使一个或多个位移位之前掩蔽第一标识符来获得第一索引或第二索引。
在进一步的变型中,系统确定数据流至少包括:从所述第一网络端点传输到所述第二网络端点的第一数据;以及响应于来自第二网络端点的请求从第一网络端点传输到第二网络端点的第二数据。系统通过第一网络端点响应于包括第一数据的数据流而使用第一标识符的一部分将第一连接状态存储在第一数据结构中,第一数据结构进一步包括与作为传输实体的第一网络端点相关联的连接状态。系统通过第一网络端点响应于包括第二数据的数据流而使用第一标识符的相同部分将第一连接状态存储在第三数据结构中,第三数据结构包括与作为接收实体的第一网络端点相关联的连接状态。系统通过第一网络端点使用第一标识符的剩余部分将第一拥塞状态存储在第二数据结构中。
另一方面提供了一种包括处理资源和非暂态计算机可读存储设备的计算机系统,该非暂态计算机可读存储设备存储可由处理资源执行的指令以:由第一网络端点发送包括控制包,该控制包与所述第一网络端点和要与第二网络端点建立的连接相关联的第一标识符;由所述第一网络端点基于所述第一标识符存储与所述连接相关联的第一连接状态;由所述第一网络端点基于所述第一连接状态存储与所述连接相关联的第一拥塞状态;以及针对与所述第一标识符相关联的数据流,通过执行以下操作识别与所述数据流相对应的拥塞状态:使用所述第一标识符在存储与连接相关联的连接状态的第一结构中进行第一搜索,所述第一搜索返回第一连接状态;以及使用所返回的第一连接状态在存储与连接状态相关联的拥塞状态的第二数据结构中进行第二搜索,第二搜索识别第一拥塞状态。可由处理资源执行的指令可以进一步包括:存储并访问图2B、图3B和图4B的数组的指令;图5的流程图500中描绘的操作;以及图7的计算机可读存储介质/设备700的指令。
又一方面提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质包括可由处理资源执行以进行以下操作的指令:通过传输包括与连接和第一网络端点相关联的第一标识符的控制包来建立所述第一网络端点与第二网络端点之间的连接;基于所述第一标识符将与所述连接相关联的第一连接状态存储在第一数据结构中的第一条目中;基于所述第一连接状态将与所述连接相关联的第一拥塞状态存储在第二数据结构中的第二条目中;针对与所述第一标识符相关联的数据流,通过以下操作识别与所述数据流相对应的拥塞状态:通过基于第一标识符搜索第一数据结构来获得第一连接状态;以及通过基于所获得的第一连接状态搜索第二数据结构来识别第一拥塞状态;以及基于识别出的第一拥塞状态的状态或所返回的第一连接状态的状态来确定是否调度与第一标识符相关联的数据包。可由处理资源执行的指令可以进一步包括:存储并访问图2B、图3B和图4B的数组的指令;图5的流程图500中描绘的操作;以及图6的内容处理系统618的指令。
已经仅出于说明和描述的目的呈现了各方面的前述描述。这些描述并非旨在是穷举的或将本文描述的各方面限制为所公开的形式。相应地,对于本领域普通技术人员而言,许多的修改和变化将是显而易见的。另外,以上公开内容并非旨在限制本文描述的各方面。本文描述的各方面的范围由所附权利要求限定。
Claims (20)
1.一种计算机实施的方法,包括:
由第一网络端点通过发送控制包来建立与第二网络端点的连接,所述控制包包括与所述连接和所述第一网络端点相关联的第一标识符;
由所述第一网络端点基于所述第一标识符将与所述连接相关联的第一连接状态存储在第一数据结构中;
由所述第一网络端点基于所述第一连接状态将与所述连接相关联的第一拥塞状态存储在第二数据结构中;以及
针对与所述第一标识符相关联的数据流识别与所述数据流对应的拥塞状态,识别所述对应的拥塞状态包括:
通过基于所述第一标识符搜索所述第一数据结构来获得所述第一连接状态;以及
通过基于所获得的第一连接状态搜索所述第二数据结构来识别所述第一拥塞状态。
2.如权利要求1所述的方法,进一步包括:
识别要调度的数据包,所述数据包与所述第一标识符相关联;以及
基于以下各项中的至少一项来确定是否调度所述数据包:
所识别出的第一拥塞状态的状态;
所获得的第一连接状态的状态;或
与所识别出的第一拥塞状态相关联的连接的一个或多个状态。
3.如权利要求1所述的方法,进一步包括:
将所述第一连接状态存储在所述第一数据结构中的第一条目中,所述第一数据结构包括与所述第一网络端点和至少所述第二网络端点之间的连接相关联的连接状态;以及
将所述第一拥塞状态存储在所述第二数据结构中的第二条目中,所述第二数据结构包括与所述第一网络端点和至少所述第二网络端点之间的所述连接相关联的拥塞状态。
4.如权利要求3所述的方法,
所述第一条目至少指示与所述连接相关联的所述第一标识符、待发送的一个或多个数据包、与所述连接相关联的第一状态、以及与存储在所述第二数据结构中的所述第一拥塞状态相关联的拥塞索引,以及
所述方法进一步包括通过进一步基于在所述第一条目中指示的所述拥塞索引搜索所述第二数据结构来识别所述第一拥塞状态。
5.如权利要求4所述的方法,
所述第二数据结构中的所述第二条目至少指示与所述第一拥塞状态相关联的第二状态、与所述第一数据结构中的元素相对应的一个或多个连接索引、以及拥塞窗口大小和拥塞率中的一个或多个,以及
所述连接索引至少包括用于所述连接的第一标识符并且对应于与所述第一拥塞状态相关联的连接。
6.如权利要求3所述的方法,
所述第一数据结构中的所述第一条目至少指示与所述连接相关联的所述第一标识符、待发送的一个或多个数据包、和与所述连接相关联的第一状态,
所述第二数据结构中的所述第二条目至少指示与所述第一拥塞状态相关联的第二状态以及拥塞窗口大小和拥塞率中的一个或多个,以及
所述方法进一步包括通过进一步基于与所述第一标识符相关联的编码搜索所述第二数据结构来识别所述第一拥塞状态。
7.如权利要求6所述的方法,
所述第二数据结构中的所述第二条目进一步指示包括来自所述第一数据结构的连接状态条目的数组,所述第二条目包括所述第一拥塞状态,以及
所述方法进一步包括:
包括与所述连接相关联的所述连接状态作为所述拥塞状态的子元素;
通过进一步基于与所述第一标识符相关联的第一编码搜索所述第二数据结构来识别所述第一拥塞状态;以及
通过基于与所述第一标识符相关联的第二编码搜索所述数组来获得所述第一连接状态。
8.如权利要求7所述的方法,进一步包括基于以下各项中的至少一项对所述第一标识符进行编码:
通过使所述第一标识符的一个或多个位移位来获得用于所述第二数据结构的第一索引,所述第一标识符和所述第一索引包括完全重叠的位;
通过使所述第一标识符的一个或多个位移位来获得用于所述第二数据结构的第二索引,所述第一标识符和所述第二索引不包括重叠的位;或
通过在使所述一个或多个位移位之前对所述第一标识符进行掩码来获得所述第一索引或所述第二索引。
9.如权利要求7所述的方法,进一步包括:
确定所述数据流至少包括以下各项:
从所述第一网络端点发送到所述第二网络端点的第一数据;以及
响应于来自所述第二网络端点的请求从所述第一网络端点发送到所述第二网络端点的第二数据;
由所述第一网络端点响应于包括所述第一数据的所述数据流而使用所述第一标识符的一部分将所述第一连接状态存储在所述第一数据结构中,所述第一数据结构进一步包括与作为发送实体的所述第一网络端点相关联的连接状态;
由所述第一网络端点响应于包括所述第二数据的所述数据流而使用所述第一标识符的相同部分将所述第一连接状态存储在第三数据结构中,所述第三数据结构包括与作为接收实体的所述第一网络端点相关联的连接状态;以及
由所述第一网络端点使用所述第一标识符的剩余部分将所述第一拥塞状态存储在所述第二数据结构中。
10.一种计算机系统,包括:
处理资源;和
存储指令的非暂态机器可读存储设备,所述指令能够由所述处理资源执行以进行以下操作:
由第一网络端点发送控制包,所述控制包包括与所述第一网络端点和要与第二网络端点建立的连接相关联的第一标识符;
由所述第一网络端点基于所述第一标识符存储与所述连接相关联的第一连接状态;
由所述第一网络端点基于所述第一连接状态存储与所述连接相关联的第一拥塞状态;以及
针对与所述第一标识符相关联的数据流,通过执行以下操作识别与所述数据流相对应的拥塞状态:
使用所述第一标识符在存储与连接相关联的连接状态的第一数据结构中进行第一搜索,所述第一搜索返回所述第一连接状态;以及
使用所返回的第一连接状态在存储与连接状态相关联的拥塞状态的第二数据结构中进行第二搜索,所述第二搜索识别所述第一拥塞状态。
11.如权利要求10所述的计算机系统,所述指令能够由所述处理资源执行以进一步进行以下操作:
基于以下各项中的至少一项来确定是否调度与所述第一标识符相关联的数据包:
所识别出的第一拥塞状态的状态;
所返回的第一连接状态的状态;或
与所识别出的第一拥塞状态相关联的连接的一个或多个状态。
12.如权利要求10所述的计算机系统,所述指令能够由所述处理资源执行以进一步进行以下操作:
将所述第一连接状态存储在所述第一数据结构中的第一条目中,所述第一数据结构包括与所述第一网络端点和至少所述第二网络端点之间的连接相关联的连接状态;以及
将所述第一拥塞状态存储在所述第二数据结构中的第二条目中,所述第二数据结构包括与所述第一网络端点和至少所述第二网络端点之间的所述连接相关联的拥塞状态。
13.如权利要求12所述的计算机系统,所述指令能够由所述处理资源执行以进一步进行以下操作:
在所述第一数据结构中的所述第一条目中至少指示与所述连接相关联的所述第一标识符、待发送的一个或多个数据包、与所述连接相关联的第一状态、以及与存储在所述第二数据结构中的所述第一拥塞状态相关联的拥塞索引;以及
基于在所述第一条目中指示的所述拥塞索引执行所述第二搜索。
14.如权利要求13所述的计算机系统,所述指令能够由所述处理资源执行以进一步进行以下操作:
在所述第二数据结构中的所述第二条目中至少指示与所述第一拥塞状态相关联的第二状态、与所述第一数据结构中的元素相对应的一个或多个连接索引、以及拥塞窗口大小和拥塞率中的一个或多个;以及
在所述连接索引中至少包括用于所述连接的所述第一标识符,所述连接索引对应于与所述第一拥塞状态相关联的连接。
15.如权利要求12所述的计算机系统,所述指令能够由所述处理资源执行以进一步进行以下操作:
在所述第一数据结构中的所述第一条目中至少指示与所述连接相关联的所述第一标识符、待发送的一个或多个数据包、和与所述连接相关联的第一状态;
在所述第二数据结构中的所述第二条目中至少指示与所述第一拥塞状态相关联的第二状态以及拥塞窗口大小和拥塞率中的一个或多个;以及
基于与所述第一标识符相关联的编码执行所述第二搜索。
16.如权利要求15所述的计算机系统,所述指令能够由所述处理资源执行以进一步进行以下操作:
在所述第二数据结构中的所述第二条目中指示包括来自所述第一数据结构的连接状态条目的数组,所述第二条目包括所述第一拥塞状态;
包括与所述连接相关联的所述连接状态作为所述拥塞状态的子元素;
通过基于与所述第一标识符相关联的第一编码搜索所述第二数据结构来识别所述第一拥塞状态;以及
通过基于与所述第一标识符相关联的第二编码搜索所述数组来获得所述第一连接状态。
17.如权利要求16所述的计算机系统,所述指令能够由所述处理资源执行以进一步通过以下操作中的至少一项对所述第一标识符进行编码:
通过使所述第一标识符的一个或多个位移位来获得用于所述第二数据结构的第一索引,所述第一标识符和所述第一索引包括完全重叠的位;
通过使所述第一标识符的一个或多个位移位来获得用于所述第二数据结构的第二索引,所述第一标识符和所述第二索引不包括重叠的位;或
通过在使所述一个或多个位移位之前对所述第一标识符进行掩码来获得所述第一索引或所述第二索引。
18.一种包括指令的非暂态计算机可读存储介质,所述指令能够由处理资源执行以进行以下操作:
通过发送包括与连接和第一网络端点相关联的第一标识符的控制包来建立所述第一网络端点与第二网络端点之间的连接;
基于所述第一标识符将与所述连接相关联的第一连接状态存储在第一数据结构中的第一条目中;
基于所述第一连接状态将与所述连接相关联的第一拥塞状态存储在第二数据结构中的第二条目中;
针对与所述第一标识符相关联的数据流,通过以下操作识别与所述数据流相对应的拥塞状态:
通过基于所述第一标识符搜索所述第一数据结构来获得所述第一连接状态;以及
通过基于所述获得的第一连接状态搜索所述第二数据结构来识别所述第一拥塞状态;以及
基于所识别出的第一拥塞状态的状态或所返回的第一连接状态的状态来确定是否调度与所述第一标识符相关联的数据包。
19.如权利要求18所述的非暂态计算机可读存储介质,
所述第一条目至少指示与所述连接相关联的所述第一标识符、待发送的一个或多个数据包、与所述连接相关联的第一状态、以及与存储在所述第二数据结构中的所述第一拥塞状态相关联的拥塞索引,以及
所述指令能够由所述处理资源执行以进一步通过进一步基于在所述第一条目中指示的所述拥塞索引搜索所述第二数据结构来识别所述第一拥塞状态。
20.如权利要求18所述的非暂态计算机可读存储介质,
所述第一数据结构中的所述第一条目至少指示与所述连接相关联的所述第一标识符、待发送的一个或多个数据包、和与所述连接相关联的第一状态,
所述第二数据结构中的所述第二条目至少指示与所述第一拥塞状态相关联的第二状态以及拥塞窗口大小和拥塞率中的一个或多个,以及
所述指令能够由所述处理资源执行以进一步进行以下操作:
通过进一步基于与所述第一标识符相关联的编码搜索所述第二数据结构来识别所述第一拥塞状态;以及
进一步基于所述第一状态和所述第二状态来调度所述数据包。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202363584676P | 2023-09-22 | 2023-09-22 | |
US63/584,676 | 2023-09-22 | ||
US18/408,288 US20250106161A1 (en) | 2023-09-22 | 2024-01-09 | Decoupling congestion management state and connection management state in high performance computing |
US18/408,288 | 2024-01-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN119697231A true CN119697231A (zh) | 2025-03-25 |
Family
ID=94875550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410452987.4A Pending CN119697231A (zh) | 2023-09-22 | 2024-04-16 | 在高性能计算中解耦拥塞管理状态与连接管理状态 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20250106161A1 (zh) |
CN (1) | CN119697231A (zh) |
DE (1) | DE102024108649A1 (zh) |
-
2024
- 2024-01-09 US US18/408,288 patent/US20250106161A1/en active Pending
- 2024-03-26 DE DE102024108649.1A patent/DE102024108649A1/de active Pending
- 2024-04-16 CN CN202410452987.4A patent/CN119697231A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20250106161A1 (en) | 2025-03-27 |
DE102024108649A1 (de) | 2025-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108476208B (zh) | 多路径传输设计 | |
US6976174B2 (en) | Secure multiprotocol interface | |
US7502826B2 (en) | Atomic operations | |
TWI430102B (zh) | 網路卡資源配置方法、儲存媒體、及電腦 | |
KR20120030340A (ko) | 패킷 라우팅을 위한 방법 및 장치 | |
US20080016216A1 (en) | Method and system for data-structure management | |
KR20120027171A (ko) | 네트워크 디바이스를 위한 어드레싱 스킴과 메시지 라우팅 | |
KR20120026482A (ko) | 유닛들로 그룹화된 노드들의 계층적 구조를 포함하는 네트워크 토폴로지 | |
US8756270B2 (en) | Collective acceleration unit tree structure | |
EP1657633A1 (en) | Routing and forwarding table management for network processor architectures | |
WO2017000593A1 (zh) | 报文处理方法及装置 | |
US20140328341A1 (en) | Communication path selection | |
US11277339B2 (en) | Packet forwarding method and apparatus | |
KR100464195B1 (ko) | 데이터를 전송하기 위한 신뢰성 있는 프로토콜을 제공하는방법 및 장치 | |
CN1881945A (zh) | 改进型分布式核心操作系统 | |
TW583543B (en) | Infiniband work and completion queue management via head only circular buffers | |
US9906443B1 (en) | Forwarding table updates during live packet stream processing | |
CN113746749A (zh) | 网络连接设备 | |
CN105556916A (zh) | 网络流的信息统计方法和装置 | |
JP5527216B2 (ja) | 識別情報管理システム、識別情報の生成方法及び管理方法、端末、並びに生成及び管理プログラム | |
Pedretti et al. | Using the Cray Gemini Performance Counters. | |
JPH0728728A (ja) | 計算機システム | |
CN1700665A (zh) | 分布式数据模型 | |
US20060167922A1 (en) | Method and apparatus for managing data object size in a multi-user environment | |
CN112968919A (zh) | 一种数据处理方法、装置、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |