CN110324257A - 用于定向流控制复原的技术 - Google Patents
用于定向流控制复原的技术 Download PDFInfo
- Publication number
- CN110324257A CN110324257A CN201910144572.XA CN201910144572A CN110324257A CN 110324257 A CN110324257 A CN 110324257A CN 201910144572 A CN201910144572 A CN 201910144572A CN 110324257 A CN110324257 A CN 110324257A
- Authority
- CN
- China
- Prior art keywords
- message
- source
- equipment
- computing device
- destination computing
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
-
- 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/10—Flow control; Congestion control
- H04L47/29—Flow control; Congestion control using a combination of thresholds
-
- 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/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- 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/32—Flow control; Congestion control by discarding or delaying data units, e.g. packets or frames
-
- 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/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
用于定向流控制复原的技术包括目标计算设备,其检测目标计算设备的资源是否足够用于处理来自至少一个源计算设备的接收到的消息,并且响应于确定资源不足够,(i)丢弃来自(多个)受影响的源计算设备的(多个)接收到的消息,并且(ii)确定是否发出定向流控制复原(即,在源计算设备中的一个处)或全局定向流控制复原(即,在所有源计算设备处)以指示(多个)源计算设备停止向目标计算设备发送消息。在完成流控制复原时,目标计算设备原子地启用已经针对其分配了用于处理(多个)接收到的消息的资源的表条目,并且向(多个)源计算设备发送定向恢复传输消息或全局恢复传输消息以指示源计算设备恢复向目标计算设备发送消息。
Description
背景技术
现代计算设备已经成为用于个人、商业和社交用途的普遍存在的工具。因此,许多现代计算设备能够连接到包括互联网在内的各种数据网络,以便以不同的速率通过各种数据网络发送和接收数据通信。为了促进计算设备之间的通信,数据网络典型地包括一个或多个网络计算设备(例如,计算服务器、存储服务器等),以(例如,经由交换机、路由器等)路由进入/离开网络的通信(例如,南-北网络业务)以及在网络中的网络计算设备之间的通信(例如,东-西向网络业务)。在当前的分组交换网络架构中,数据以网络分组的形式在联网的计算设备之间传输。在高级别,在源计算设备处将数据打包到网络分组中,然后将该数据发送到负责通过网络将网络分组分派给目标计算设备的传输组件(例如,相应源计算设备的网络接口控制器(NIC))。
应用(例如,消息传递接口(MPI)应用)可以以各种模式发送和接收网络分组,并且在一些情况下,可能在单个目标计算设备处以高消息速率从若干源计算设备接收网络分组,这可能耗尽目标计算设备的资源而导致溢出。为了解决这些问题,已经实现了各种流控制技术。然而,特定应用具有以下要求:来自单个源计算设备的消息在目标计算设备处以源计算设备发送这些消息的顺序被接收或匹配。
通常期望在这种条件下使用的流控制技术防止由于丢弃的分组或其他原因而无序地递送消息。这通常通过丢弃所有未按顺序到达的分组并且要求以原始顺序重新发送丢弃的分组来实现。换言之,在重传网络分组时,必须以原始顺序重新发送包括任何丢弃的网络分组和在任何丢弃的网络分组之后的所有网络分组。此外,现有的流控制技术典型地是面向连接的(即,多种每连接状态),其可以包括在每个主机可能与大量对等体通信的情况下在应用中往往不能很好地扩展的信用、拥塞窗口、状态机等。
附图说明
本文中描述的概念在附图中通过示例的方式而不是通过限制的方式示出。为了说明的简单和清楚,附图中示出的元素不一定按比例绘制。在认为合适的情况下,在附图中重复附图标记以指示对应或类似的元素。
图1是用于定向流控制复原的系统的至少一个实施例的简化框图,该系统包括通信地耦合到多个源计算设备的目标计算设备;
图2是图1系统的计算设备的至少一个实施例的简化框图;
图3是图1系统的源计算设备中的一个源计算设备的环境的至少一个实施例的简化框图;
图4是图1的系统的目标计算设备的环境的至少一个实施例的简化框图;
图5是可以由图3的源计算设备执行的用于处理接收到的流控制指示的方法的至少一个实施例的简化流程图;并且
图6A-6C是可以由图4的目标计算设备执行的用于定向流控制复原的方法的至少一个实施例的简化框图。
具体实施方式
虽然本公开的概念易于具有各种修改和替代形式,但是其具体实施例已经通过示例的方式在附图中示出并且将在本文中详细描述。然而,应当理解,并不旨在将本公开的概念限制于所公开的特定形式,而是相反,意图是覆盖与本公开和所附权利要求一致的所有修改、等同物和替代方案。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以一定或可以不一定包括该特定特征、结构或特性。此外,这些短语不一定指代同一实施例。此外,当结合实施例描述特定特征、结构或特性时,认为结合其他实施例实现这样的特征、结构或特性在本领域技术人员的知识范围内,而无论是否未明确描述。另外,应当认识到,以“A、B和C中的至少一个”的形式包括在列表中的项目可以表示(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。类似地,以“A、B或C中的至少一个”的形式列出的项目可以表示(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以实现为由一种或多种暂时性或非暂时性机器可读(例如,计算机可读)存储介质携带或存储在其上的指令,这些指令可以由一个或多个处理器读取和执行。机器可读存储介质可以体现为用于以机器可读形式存储或传输信息的任何存储设备、机构或其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应当认识到,可能不要求这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定附图中包含结构或方法特征并不意味着暗示在所有实施例中都要求这样的特征,并且在一些实施例中,可以不包括这些特征或者可以将这些特征与其他特征组合。
现在参考图1,在说明性实施例中,用于定向流控制复原的系统100包括经由网络104通信地耦合到目标计算设备106的多个源计算设备102。在使用中,目标计算设备106接收并处理从源计算设备102接收的消息(例如,分组网络、以太网帧等)(即,一对多关系)。如说明性地示出的,系统100包括指定为源计算设备(1)102a的第一源计算设备102、指定为源计算设备(2)102b的第二源计算设备102以及指定为源计算设备(N)102c的第三源计算设备102(例如,其中源计算设备(N)102c表示“第N”源计算设备102,并且其中“N”是正整数)。
在诸如资源耗尽之类的特定条件下,目标计算设备106可以实现流控制过程,以阻止受影响的源计算设备102发送消息(即,数据传输),直到该条件可以检测到并解决为止。否则,可能发生数据溢出,并且接收到的数据可能丢失(例如,由于丢弃接收到的消息)并且要求重传。为此,目标计算设备106被配置为:通过将流控制局限于接收到的消息已经由于资源耗尽而被目标计算设备106丢弃的源计算设备102,将流控制复原仅定向到那些受影响的流。因此,与采用全局流控制复原技术的现有流控制技术不同,目标计算设备106可以减少拥塞而不影响那些未受丢失/丢弃的消息影响的源计算设备102。
源计算设备102可以体现为能够执行本文描述的功能的任何类型的计算设备或计算机设备,包括但不限于包括用于支持移动架构和便携性的移动硬件(例如,处理器、存储器、存储装置、无线通信电路等)和软件(例如,操作系统)的便携式计算设备(例如,智能电话、平板电脑、膝上型电脑、笔记本电脑、可穿戴设备等)、计算机、服务器(例如,独立式、机架安装式、刀片式等)、网络装置(例如,物理的或虚拟的)、web装置、分布式计算系统、基于处理器的系统和/或多处理器系统。目标计算设备106可以体现为能够执行本文描述的功能的任何类型的计算设备或计算机设备,包括但不限于服务器(例如,独立式、机架安装式、刀片式、托架式等)、交换机(例如,分解的交换机、机架安装式交换机、独立式交换机、完全管理的交换机、部分管理的交换机、全双工交换机和/或半双工通信模式使能的交换机)、路由器、网络装置(例如,物理的或虚拟的)、web装置、分布式计算系统、基于处理器的系统和/或多处理器系统。
现在参考图2,说明性计算设备108(例如,源计算设备102或目标计算设备106中的一个)包括计算引擎200、I/O子系统206、一个或多个数据存储设备208、通信电路210,并且在一些实施例中,包括一个或多个外围设备212。应当认识到,在其他实施例中,计算设备108可以包括其他组件或附加组件,例如,在典型计算设备中常见的那些组件(例如,各种输入/输出设备和/或其他组件)。另外,在一些实施例中,说明性组件中的一个或多个可以并入另一组件中,或者以其他方式形成另一组件的一部分。
计算引擎200可以体现为能够执行如本文描述的各种计算功能的任何类型的设备或设备集合。在一些实施例中,计算引擎200可以体现为单个设备,例如,集成电路、嵌入式系统、现场可编程门阵列(FPGA)、片上系统(SoC)、专用集成电路(ASIC)、可重新配置的硬件或硬件电路或者其他专用硬件,以用于促进执行本文描述的功能。另外,在一些实施例中,计算引擎200可以包括或可以体现为一个或多个处理器202(即,一个或多个中央处理单元(CPU))和存储器204。
(多个)处理器202可以体现为能够执行本文描述的功能的任何类型的处理器。例如,(多个)处理器202可以体现为一个或多个单核心处理器、一个或多个多核心处理器、数据信号处理器、微控制器或者其他处理器或(多个)处理/控制电路。在一些实施例中,(多个)处理器202可以体现为、包括或以其他方式耦合到现场可编程门阵列(FPGA)、专用集成电路(ASIC)、可重新配置的硬件或硬件电路或者其他专用硬件,以用于促进执行本文描述的功能。
存储器204可以体现为能够执行本文描述的功能的任何类型的易失性存储器或数据存储装置(例如,动态随机存取存储器(DRAM)等)或非易失性存储器或数据存储装置。应当认识到,存储器204可以包括主存储器(即,主要存储器)和/或高速缓冲存储器(即,可以比主存储器更快地存取的存储器)。易失性存储器可以是要求电力来对由介质存储的数据的状态进行维持的存储介质。易失性存储器的非限制性示例可以包括各种类型的随机存取存储器(RAM),例如,动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。
计算引擎200经由I/O子系统206通信地耦合到计算设备108的其他组件,I/O子系统206可以体现为促进与处理器202、存储器204以及计算设备108的其他组件的输入/输出操作的电路和/或组件。例如,I/O子系统206可以体现为或以其他方式包括存储器控制器中心、输入/输出控制中心、集成传感器中心、固件设备、通信链路(例如,点对点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或用于促进输入/输出操作的其他组件和子系统。在一些实施例中,I/O子系统206可以形成片上系统(SoC)的一部分,并且与处理器202、存储器204以及计算设备108的其他组件中的一个或多个一起合并在单个集成电路芯片上。
一个或多个数据存储设备208可以体现为被配置用于短期或长期存储数据的任何类型的(多个)存储设备,例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备。每个数据存储设备208可以包括存储用于数据存储设备208的数据和固件代码的系统分区。每个数据存储设备208还可以包括存储用于操作系统的数据文件和可执行文件的操作系统分区。
通信电路210可以体现为能够实现计算设备108与其他计算设备之间的通信的任何通信电路、设备或其集合,以及诸如接入点、网络交换机/路由器等之类的任何网络通信使能设备,以允许通过网络104进行通信。因此,通信电路210可以被配置为使用任何一种或多种通信技术(例如,无线通信技术或有线通信技术)和相关联的协议(例如,以太网、WiMAX、LTE、5G等)来实现此类通信。
应当认识到,在一些实施例中,通信电路210可以包括专用电路、硬件或其组合,以执行用于执行本文描述的功能的流水线逻辑(例如,硬件算法),包括处理网络分组(例如,解析接收到的网络分组,确定每个接收到的网络分组的目的地计算设备,将网络分组转发到计算设备108的相应主机缓冲器的特定缓冲队列等),执行计算功能等。
在一些实施例中,如本文描述的通信电路210的功能中的一个或多个功能的执行可以由通信电路210的专用电路、硬件或其组合来执行,通信电路210可以体现为片上系统(SoC)或以其他方式形成计算设备108的SoC的一部分(例如,与处理器202、存储器204和/或计算设备108的其他组件一起合并在单个集成电路芯片上)。可替代地,在一些实施例中,专用电路、硬件或其组合可以体现为计算设备108的一个或多个分立处理单元,其中的每个分立处理单元能够执行本文描述的功能中的一个或多个功能。
说明性通信电路210包括网络接口控制器(NIC)212,在一些实施例中(例如,高性能计算(HPC)环境)通常也称为主机结构接口(HFI)。NIC 212可以体现为一个或多个插件板、子卡、网络接口卡、控制器芯片、芯片组或可以由计算设备108使用的其他设备。在一些实施例中,NIC 212可以体现为包括一个或多个处理器的片上系统(SoC)的一部分,或者NIC212包括在还包含一个或多个处理器的多芯片封装上。在一些实施例中,NIC 212可以包括本地处理器(未示出)和/或本地存储器(未示出),它们都在NIC 212本地。在这样的实施例中,NIC 212的本地处理器能够执行本文描述的处理器202的功能中的一个或多个功能。
另外地或可替代地,在这样的实施例中,NIC 212的本地存储器可以在板级、插座级、芯片级和/或其他级别集成到计算设备108的一个或多个组件中。例如,在一些实施例中,NIC 212可以与处理器202集成在一起,体现为通过扩展总线(例如,快速PCI)耦合到I/O子系统206的扩展卡、包括一个或多个处理器的SoC的一部分,或包括在还包含一个或多个处理器的多芯片封装上。另外地或可替代地,在一些实施例中,NIC 212的功能可以在板级、插座级、芯片级和/或其他级别集成到计算设备108的一个或多个组件中。
返回参考图1,网络104可以体现为任何类型的有线或无线通信网络,包括但不限于无线局域网(WLAN)、无线个域网(WPAN)、蜂窝网络(例如,全球移动通信系统(GSM)、长期演进(LTE)等)、电话网络、数字订户线(DSL)网络、电缆网络、局域网(LAN)、广域网(WAN)、全球网络(例如,互联网)或其任何组合。应当认识到,在这样的实施例中,网络104可以用作集中式网络,并且在一些实施例中,可以通信地耦合到另一个网络(例如,互联网)。因此,网络104可以根据需要包括各种其他虚拟和/或物理网络计算设备(例如,路由器、交换机、网络中心、服务器、存储设备、计算设备、(高速)互连等),以促进源计算设备102与目标计算设备106之间的通信,这些设备未示出以保持描述清晰。
现在参考图3,在使用中,源计算设备102(即,图1的源计算设备102中的一个)在操作期间建立环境300。说明性环境300包括网络业务入口/出口管理器304、消息传输队列管理器306和流控制模式管理器308。环境300的各种组件可以体现为硬件、固件、软件或其组合。因此,在一些实施例中,环境300的组件中的一个或多个组件可以体现为电路或电子设备的集合(例如,网络业务入口/出口管理电路304、消息传输队列管理电路306、流控制模式管理电路308等)。
应当认识到,在这样的实施例中,网络业务入口/出口管理电路304、消息传输队列管理电路306和流控制模式管理电路308中的一个或多个可以形成计算引擎200、I/O子系统206、通信电路210(例如,通信电路210的NIC 212,如说明性地示出的)和/或源计算设备102的其他组件中的一个或多个的一部分。因此,在一些实施例中,说明性组件中的一个或多个可以形成另一组件的一部分和/或说明性组件中的一个或多个可以彼此独立。此外,在一些实施例中,环境300的组件中的一个或多个组件可以体现为虚拟化硬件组件或仿真架构,其可以由计算引擎200或源计算设备102的其他组件建立和维护。应当认识到,源计算设备102可以包括在计算设备中常见的其他组件、子组件、模块、子模块、逻辑、子逻辑和/或设备,其为了描述的清楚而未在图3中示出。
在说明性环境300中,源计算设备102另外包括消息数据302,其可以由源计算设备102的各种组件和/或子组件访问。另外,应当认识到,在一些在实施例中,存储在消息数据302中或以其他方式由消息数据302表示的数据的至少一部分可以存储在附加或替代存储位置(例如,源计算设备102的主机存储器)。因此,虽然源计算设备102使用的各种数据在本文中被描述为特定的离散数据,但是在其他实施例中,这样的数据可以组合、聚合和/或以其他方式形成单个或多个数据集的部分,包括重复的副本。
如上面讨论的可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的网络业务入口/出口管理器304被配置为接收入站网络业务和路由/发送出站网络业务。为此,网络业务入口/出口管理器304被配置为促进去往和来自源计算设备102的入站/出站网络通信(例如,网络业务、网络分组、网络流等)。例如,网络业务入口/出口管理器304被配置为管理(例如,创建、修改、删除等)与源计算设备102的物理和虚拟的网络端口(即,虚拟网络接口)的连接(例如,经由通信电路210),以及与其相关联的入口/出口缓冲器/队列。在一些实施例中,与网络通信(例如,消息、数据等)的(多个)报头和/或有效载荷相关联的信息可以存储在消息数据302中。
如上面讨论的可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的消息传输队列管理器306被配置为管理要发送(例如,到目标计算设备106)的消息的队列。为此,消息传输队列管理器306被配置为识别哪个出口缓冲器与适用的目标计算设备106相关联。消息传输队列管理器306另外被配置为跟踪目标计算设备106是否已经成功接收到发送的消息(例如,基于接收到的确认消息、超时等)。应当认识到,在一些实施例中,在本文中描述为由消息传输队列管理器306执行的功能中的一个或多个功能的至少一部分可以由网络业务入口/出口管理器304执行,反之亦然。
如上面讨论的可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的流控制模式管理器308被配置为管理源计算设备102的流控制模式。例如,在特定条件下,在正常消息传输操作期间,流控制模式管理器308可以接收指示已经分配给源计算设备102的、目标计算设备106的资源已经耗尽的指示(例如,流控制消息)。换言之,目标计算设备106已经指示:由于目标计算设备106具有不足够的资源以成功处理由源计算设备102发送的一个或多个消息,一个或多个消息被目标计算设备106丢弃。
另外,流控制模式管理器308被配置为暂停向受影响的目标计算设备106传输附加消息(例如,准备好进行传输的由消息传输队列管理器306排队的那些消息)。流控制模式管理器308还被配置为确定从受影响的目标计算设备106接收的流控制消息是否已经指示流控制操作是定向流控制或全局同步流控制。取决于流控制操作的类型,流控制模式管理器308可以被配置为发送对接收到的流控制消息的确认(参见例如图5的方法500)。流控制模式管理器308另外被配置为在已经接收到对流控制已经被解决的指示时恢复队列消息的传输。
现在参考图4,在使用中,目标计算设备106在操作期间建立环境400。说明性环境400包括网络业务入口/出口管理器406、资源管理器408、接收消息队列管理器410、表条目管理器412和流控制管理器414。环境300的各种组件可以体现为硬件、固件、软件或其组合。因此,在一些实施例中,环境400的组件中的一个或多个组件可以体现为电路或电子设备的集合(例如,网络业务入口/出口管理电路406、资源管理电路408、接收消息队列管理电路410、表条目管理电路412、流控制管理电路414等)。
应当认识到,在这样的实施例中,网络业务入口/出口管理电路406、资源管理电路408、接收消息队列管理电路410、表条目管理电路412和流控制管理电路414中的一个或多个可以形成计算引擎200、I/O子系统206、通信电路210(例如,通信电路210的NIC 212,如说明性地示出的)和/或目标计算设备106的其他组件中的一个或多个的一部分。另外,在一些实施例中,说明性组件中的一个或多个可以形成另一组件的一部分和/或说明性组件中的一个或多个可以彼此独立。此外,在一些实施例中,环境400的组件中的一个或多个组件可以体现为虚拟化硬件组件或仿真架构,其可以由计算引擎200或目标计算设备106的其他组件建立和维护。应当认识到,目标计算设备106可以包括在计算设备中常见的其他组件、子组件、模块、子模块、逻辑、子逻辑和/或设备,其为了描述的清楚而未在图4中示出。
在说明性环境400中,目标计算设备106另外包括消息数据402和计数器数据404,其中的每一个可以由目标计算设备106的各种组件和/或子组件访问。另外,应当认识到,在一些实施例中,存储在消息数据402和/或计数器数据404中或以其他方式由消息数据402和/或计数器数据404表示的数据的至少一部分可以存储在附加或替代存储位置(例如,目标计算设备106的主机存储器)。应进一步认识到,在一些实施例中,存储在消息数据402和计数器数据404中的每一个中或以其他方式由消息数据402和计数器数据404中的每一个表示的数据可以相对于彼此不相互排斥。例如,在一些实现方式中,存储在消息数据402中的数据也可以存储为计数器数据404的一部分。因此,虽然目标计算设备106使用的各种数据在本文中被描述为特定的离散数据,但是在其他实施例中,这样的数据可以组合、聚合和/或以其他方式形成单个或多个数据集的部分,包括重复的副本。
如上面讨论的可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的网络业务入口/出口管理器406被配置为接收入站网络业务和路由/发送出站网络业务。为此,网络业务入口/出口管理器406被配置为促进去往和来自目标计算设备106的入站/出站网络通信(例如,网络业务、网络分组、网络流等)。例如,网络业务入口/出口管理器406被配置为管理(例如,创建、修改、删除等)与目标计算设备106的物理和虚拟的网络端口(即,虚拟网络接口)的连接(例如,经由通信电路210),以及与其相关联的入口/出口缓冲器/队列。在一些实施例中,与接收到的网络通信(例如,消息、数据等)的(多个)报头和/或有效载荷相关联的信息可以存储在消息数据402中。
如上面讨论的可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的资源管理器408被配置为管理目标计算设备106的资源(例如,计算、存储等)的分配和利用。为此,资源管理器408被配置为随时间跟踪资源的遥测数据和利用数据。因此,资源管理器408可以适当地针对特定流(例如,与特定源计算设备102相关联的)、流类型等分配资源。另外,资源管理器408可以被配置为确定是否有足够的资源可用于分配用于处理接收到的消息(例如,基于是否足够的资源可用来确定分组是应该丢弃还是处理)。
如上面讨论的可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的接收消息队列管理器410被配置为管理从各种源计算设备102接收的消息的队列。例如,队列可以持有要由目标计算设备106处理的接收到的消息。因此,接收消息队列管理器410可以被配置为确定是处理消息还是丢弃消息,例如,这可以基于是否有足够的资源可用于处理消息来确定(例如,如可以由资源管理器408确定的)。应当认识到,在一些实施例中,在本文中描述为由接收消息队列管理器410执行的功能中的一个或多个功能的至少一部分可以由网络业务入口/出口管理器406执行,反之亦然。
如上面讨论的可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的表条目管理器412被配置为管理一个或多个表,其中的每个表包括多个表条目,表条目由表条目管理器412管理。在说明性实施例中,表条目中的每个表条目包括一个或多个数据结构(例如,列表),其可以用于将资源映射到数据结构的条目。换言之,表条目管理器412被配置为识别、更新、启用和禁用表的表条目(例如,经由对应的索引)。在使用门户(Portal)(例如,门户4)的说明性示例中,表条目管理器412可以识别、更新、启用和禁用门户表条目(PTE)或门户表(例如,匹配的或不匹配的),其附有若干数据结构,包括优先级列表、溢出列表、非预期列表,以及可选地事件队列。
应当认识到,每个表条目(例如,门户中的匹配条目或不匹配条目)可以包括可用于识别先前分配和关联的(例如,指派给)每个表条目的存储器区域以及可选计数事件的信息。应进一步认识到,这样的存储器区域典型地指定在处理接收到的消息的至少一部分时要使用的存储器。另外,计数事件可以可选地用于记录这种消息处理操作的发生。在一些实施例中,关于这种消息处理操作的信息可以记录在附到相应表条目的事件队列中。表条目管理器412还被配置为原子地启用/禁用表条目。表条目管理器412另外被配置为将与接收到的消息相关联的所确定的表条目的标识符返回给请求实体(例如,如果消息已经被丢弃)。
如上面讨论的可以体现为硬件、固件、软件、虚拟化硬件、仿真架构和/或其组合的流控制管理器414被配置为确定是否发起目标计算设备106的流控制机制。因此,流控制管理器414被配置为对于一个或多个源计算设备102确定使得要采取流控制措施的条件是否存在(例如,资源耗尽)。响应于确定这样的条件存在,流控制管理器414被配置为确定是否发起定向流控制复原或全局同步流控制复原。
为此,流控制管理器414被配置为将禁用事件计数器(例如,NUM_PTL_DISABLED_EVENT计数器)与受影响源门限进行比较。受影响源门限可以是预先确定的值、动态变化的值(例如,基于当前连接到目标计算设备106的源计算设备102的数量、源计算设备102的连接集群的大小等)、适应比例的数学函数等。如果流控制管理器414确定禁用事件计数器小于受影响源门限,则流控制管理器414被配置为发起定向流控制复原,其中源禁用响应消息被发送到适用的源计算设备102。
流控制管理器414还被配置为监视禁用事件计数器的值,直到禁用事件计数器等于受影响源门限,此时流控制管理器414被配置为向源计算设备102中的每一个提供其可以恢复消息传输的指示。另外,如果流控制管理器414确定禁用事件计数器小于受影响源门限,则流控制管理器414被配置为使禁用事件计数器递增。否则,如果禁用事件计数器大于或等于受影响源门限,则流控制管理器414被配置为发起全局同步流控制复原,其中流控制管理器414被配置为向通信地耦合到目标计算设备的每个源计算设备102发送全局同步流控制消息。
现在参考图5,示出了用于处理接收到的流控制指示的方法500,其可以由源计算设备(例如,图1和图3的源计算设备102中的一个)执行,或者更具体地由源计算设备的NIC(例如,图3的说明性NIC 212)执行。方法500开始于框502,其中源计算设备102确定是否向目标计算设备(例如,图1和图4的目标计算设备106)发送消息。如果向目标计算设备发送消息,则方法500前进到框504,其中源计算设备102识别目标计算设备106。在框506中,源计算设备102确定在所识别的目标计算设备106上流控制复原当前是否是活动的。如果不是活动的,则方法500前进到框508,如下面描述的;否则,方法500返回到框502以再次确定是否发送消息(即,一旦已经从目标计算设备106接收到可以恢复传输的指示,则消息被重新排队并且传输可以恢复)。
在框508中,源计算设备102向所识别的目标计算设备106发送消息。在框510中,源计算设备102确定是否已经从目标计算设备106接收到流控制消息(即,全局同步恢复传输消息或定向恢复传输消息中的一个)。应当认识到,方法500可以在等待接收流控制消息或确认以确定是否已经从目标计算设备106接收到流控制消息时根据需要迭代先前的框。如果源计算设备102确定尚未从目标计算设备106接收到流控制消息(例如,由于接收到响应确认,预先确定的超时已经过去等),则方法500返回到框502以再次确定是否发送消息;否则,方法500前进到框512。应当认识到,多个流控制消息可以在任何给定时间在飞行中(in-flight),并且在这样的条件下,源计算设备102可以被配置为等待任何未完成的消息成功、失败或被取消。
在框512中,源计算设备102暂停对用于传输到所识别的目标计算设备106的任何新的消息或当前排队的消息的传输。在框514中,源计算设备102确定在框510中接收到的流控制消息是否指示全局同步流控制(即,接收到的流控制消息是全局同步流控制消息)。如果不指示全局同步流控制,则方法500前进到框516,其中源计算设备102向目标计算设备106发送禁用确认消息。否则,方法500跳转到框518,其中源计算设备102确定是否恢复向目标计算设备106发送消息。换言之,源计算设备102确定是否已经从目标计算设备106接收到全局同步恢复传输消息或定向恢复传输消息(取决于实际上的流控制)。
现在参考图6A-6C,示出了用于定向流控制复原的方法600,其可以由目标计算设备(例如,图1和图4的目标计算设备106)执行,或者更具体地由目标计算设备的NIC(例如,图4的说明性NIC 212)执行。方法600在图6A中开始于框602,其中目标计算设备106确定是否已经从源计算设备(例如,图1的源计算设备102中的一个)接收到消息。如果已经从源计算设备接收到消息,则方法600前进到框604,其中目标计算设备106识别表的对应于接收到的消息的表条目,例如,通过使用一组匹配比特或与接收到的消息相关联的一些其他信息。在框606中,目标计算设备106确定所识别的表条目是否被启用。如果未被启用,则方法600分支到框616,在图6B中示出,其在下面进一步详细描述。否则,如果目标计算设备106确定所识别的表条目被启用,则方法600前进到框608。
在框608中,目标计算设备106确定是否有与所识别的表条目相关联(即,分配给所识别的表条目)的足够量的资源可用于处理接收到的消息。如果目标计算设备106确定足够的资源可用,则方法600分支到框610,其中目标计算设备106处理接收到的消息(例如,将接收到的消息的至少一部分存储在目标计算设备106的存储器中,对接收到的消息的至少一部分执行某种计算,等等)。否则,如果目标计算设备106确定没有足够的资源可用,则方法600分支到框612。
在图6B的框612中,目标计算设备106在前进到框616之前禁用所识别的表条目(例如,经由触发门户中的PTL_NI_PT_DISABLED事件)。例如,在框614中,目标计算设备106禁用所识别的表条目,以确保将丢弃任何传入的事件或消息并且向发起源计算设备102返回故障通知。应当认识到,在特定条件下(例如,在处理接收到的消息期间),可能遇到资源耗尽。换言之,在这样的条件下,目标计算设备106可以在接收与表条目相关联的用于处理的另一消息之前原子地禁用相关联的表条目。
如先前描述的,如果目标计算设备106在框606中确定所识别的表条目被禁用,则方法600分支到框616。在框616中,目标计算设备106丢弃接收到的消息。在框618中,目标计算设备106将禁用事件计数器的值与受影响源门限的值进行比较。如先前描述的,受影响源门限可以是预先确定的值、动态变化的值(例如,基于当前连接到目标计算设备106的源计算设备102的数量、源计算设备102的连接集群的大小等)、适应比例的数学函数等。在框620中,目标计算设备106确定禁用事件计数器是否小于受影响源门限。如果禁用事件计数器小于受影响源门限,则方法600分支到框632,在图6C中示出,其在下面进一步详细描述;否则,方法600分支到框622。
在框622中,目标计算设备106向通信地耦合到目标计算设备106的所有源计算设备102发送全局同步流控制消息,并且等待所有源计算设备已经停止发送消息的通知(这些将继续等待,直到目标发送全局同步恢复消息)。在框624中,目标计算设备106确定是否已经使足够的资源可用(例如,通过处理接收到的消息的积压中的一些或全部)以恢复接受新的消息,例如,已经清空或充分清空接收队列。如果已经使足够的资源可用以恢复接受新的消息,则方法600前进到框626,其中目标计算设备106启用由于流控制复原而先前被禁用的任何表条目。在框628中,目标计算设备106向所有源计算设备102发送全局同步恢复传输消息(即,向源计算设备102中的每一个的其可以恢复向目标计算设备106进行消息传输的指示)。另外,在框630中,目标计算设备106将禁用事件计数器和禁用事件确认计数器的值重置为零。
如先前描述的,如果目标计算设备106在框618中确定禁用事件计数器小于受影响源门限,则方法600分支到图6C的框632。在框632中,目标计算设备106确定源禁用响应消息是否已经被发送到在框602中从其接收消息的源计算设备。换言之,目标计算设备106确定这是自从目标计算设备106进入流控制复原以来从源计算设备接收的第一条消息还是后续消息。如果先前已经发送了源禁用响应消息,则方法600分支到框634,其中目标计算设备106向源计算设备102发送源禁用消息,之后方法600前进到框650,其在下面描述。
应当认识到,源禁用消息与源禁用响应消息的区别在于,在接收到源禁用消息时不请求来自源计算设备102的确认,而在接收到源禁用响应消息时请求来自源计算设备102的确认。如果目标计算设备106在框632中确定先前尚未发送源禁用响应消息,则方法600分支到框636。在框636中,目标计算设备106向在框602中从其接收消息的源计算设备发送源禁用响应消息。在框638中,目标计算设备106将接收到的消息的识别信息存储在目标计算设备106的主机存储器(例如,图2的存储器204或数据存储设备208)中的位置。为此,在框640中,目标计算设备106存储接收到的消息的消息数据和/或源标识符信息。另外,在框642中,目标计算设备106存储可用于识别在框604中识别的表条目的表条目识别信息。
在框644中,目标计算设备106使禁用事件计数器递增。在框646中,目标计算设备106确定是否已经从源计算设备接收到禁用事件确认(即,响应于在框634中发送到源计算设备的源禁用响应消息)。如果已经从源计算设备接收到禁用事件确认,则方法600前进到框648,其中目标计算设备106使禁用事件确认计数器递增。在框650中,目标计算设备106确定与所识别的表条目相关联的接收队列是否已经被清空,以及与所识别的表条目相关联的资源(即,消息处理资源)是否已经被释放。如果与所识别的表条目相关联的接收队列已经被清空,并且与所识别的表条目相关联的资源已经被释放,则方法500前进到框652,其中目标计算设备106将禁用事件计数器的值与禁用事件确认计数器的值进行比较。
在框654中,目标计算设备106确定禁用事件计数器的值是否等于禁用事件确认计数器的值。如果禁用事件计数器的值不等于禁用事件确认计数器的值,则方法600返回到框652以再次比较计数器值;否则,该方法前进到框656。应当认识到,在框646处执行的确定可以针对来自多个源计算设备102的多个禁用事件确认并行执行。此外,如果新的网络业务到达,目的地为禁用门户,则目标计算设备106可以被配置为发送附加的门户禁用消息(例如,如果已经从新的源计算设备102接收到新的网络业务)并且使禁用事件计数器递增。在这样的条件下,如果目标计算设备106接收到禁用事件确认,则目标计算设备106还被配置为使禁用事件确认计数器递增并检查再次比较计数器值。
在一些实施例中,方法600可以在等待从源计算设备接收禁用事件确认时前进到框650-654。因此,应当认识到,方法600可以直到满足条件框646、650和654才前进到框656。在框656中,目标计算设备106关于禁用事件计数器和禁用事件确认计数器相等以及接收逻辑确定表条目是否被启用而原子地启用表条目。在框658中,目标计算设备106将定向恢复传输消息(即,向源计算设备102的其可以恢复向目标计算设备106进行消息传输的指示)发送到在框602中从其接收消息的源计算设备。
示例
下面提供本文公开的技术的说明性示例。这些技术的实施例可以包括下面描述的示例中的任何一个或多个以及其任何组合。
示例1包括一种用于定向流控制复原的目标计算设备,该目标计算设备包括:计算引擎;以及网络接口控制器(NIC),其用于:接收来自通信地耦合到目标计算设备的多个源计算设备中的源计算设备的消息;基于接收到的消息,识别由目标计算设备管理的表的表条目,其中,表条目包括表的多个表条目中的一个表条目,并且其中,表条目识别可用于处理接收到的消息的一个或多个资源;确定所识别的可用于处理接收到的消息的一个或多个资源是否足够用于处理接收到的消息;响应于确定分配给表条目的资源不足够用于处理接收到的消息,丢弃接收到的消息;禁用所识别的表条目;向源计算设备发送源禁用响应消息,其中,源禁用响应消息指示目标计算设备正处于定向流控制复原中并且命令源计算设备停止向目标计算设备发送消息;在发送源禁用响应消息之后,使禁用事件计数器值递增;响应于已经发送源禁用响应消息,接收来自源计算设备的确认消息;响应于已经接收到确认消息,使禁用事件确认计数器值递增;确定是否有目标计算设备的足够的资源可用于恢复接收消息;响应于确定有目标计算设备的足够的资源可用于恢复接收消息,将禁用事件确认计数器值与禁用事件计数器值进行比较;响应于确定禁用事件计数器值等于禁用事件确认计数器值,原子地启用所识别的表条目;以及向源计算设备发送定向恢复传输消息,以命令源计算设备恢复向目标计算设备发送消息。
示例2包括示例1的主题,并且其中,NIC还用于:在已经丢弃接收到的消息之后,确定禁用事件计数器值是否小于受影响源门限值;以及响应于确定禁用事件计数器值大于受影响源门限值,向源计算设备发送源禁用响应消息。
示例3包括示例1和2中任一项的主题,并且其中,受影响源门限包括预先确定的值、动态变化的值或适应比例的数学函数中的一个。
示例4包括示例1-3中任一项的主题,并且其中,NIC还用于:在所识别的表条目被禁用之后并且在所识别的表条目被原子地启用之前,接收来自源计算设备的另一消息;丢弃另一接收到的消息;以及向源计算设备发送指示另一接收到的消息已经被丢弃的指示。
示例5包括示例1-4中任一项的主题,并且其中,NIC还用于:在已经丢弃接收到的消息之后,确定禁用事件计数器值是否大于或等于受影响源门限值;以及响应于确定禁用事件计数器值大于或等于受影响源门限值,向多个源计算设备中的每个源计算设备发送全局同步流控制消息,其中,全局同步流控制消息指示目标计算设备正处于全局同步流控制复原中。
示例6包括示例1-5中任一项的主题,并且其中,NIC还用于:确定全局同步流控制复原是否已经完成;响应于确定全局同步流控制复原已经完成,原子地启用被禁用的列表表;以及向多个源计算设备中的每个源计算设备发送全局同步恢复传输消息,其中,全局同步恢复传输消息指示全局同步流控制复原已经完成。
示例7包括示例1-6中任一项的主题,并且其中,确定流控制复原是否已经完成包括:确定是否多个消息接收队列中的每个消息接收队列已经被清空并且与所识别的表条目相关联的消息处理资源已经被释放。
示例8包括一种或多种机器可读存储介质,包括存储在其上的多个指令,该多个指令响应于被执行而使得目标计算设备进行以下操作:由目标计算设备的网络接口控制器(NIC)接收来自通信地耦合到目标计算设备的多个源计算设备中的源计算设备的消息;由NIC基于接收到的消息,识别由目标计算设备管理的表的表条目,其中,表条目包括表的多个表条目中的一个表条目,并且其中,表条目识别可用于处理接收到的消息的一个或多个资源;由NIC确定所识别的可用于处理接收到的消息的一个或多个资源是否足够用于处理接收到的消息;由NIC响应于确定分配给表条目的资源不足够用于处理接收到的消息,丢弃接收到的消息;由NIC禁用所识别的表条目;由NIC向源计算设备发送源禁用响应消息,其中,源禁用响应消息指示目标计算设备正处于定向流控制复原中并且命令源计算设备停止向目标计算设备发送消息;由NIC在发送源禁用响应消息之后,使禁用事件计数器值递增;由NIC响应于已经发送源禁用响应消息,接收来自源计算设备的确认消息;由NIC响应于已经接收到确认消息,使禁用事件确认计数器值递增;由NIC确定是否有目标计算设备的足够的资源可用于恢复接收消息;由NIC响应于确定有目标计算设备的足够的资源可用于恢复接收消息,将禁用事件确认计数器值与禁用事件计数器值进行比较;由NIC响应于确定禁用事件计数器值等于禁用事件确认计数器值,原子地启用所识别的表条目;以及由NIC向源计算设备发送定向恢复传输消息,以命令源计算设备恢复向目标计算设备发送消息。
示例9包括示例8的主题,并且其中,多个指令还使得NIC进行以下操作:由NIC在已经丢弃接收到的消息之后,确定禁用事件计数器值是否小于受影响源门限值;以及由NIC响应于确定禁用事件计数器值大于受影响源门限值,向源计算设备发送源禁用响应消息。
示例10包括示例8和9中任一项的主题,并且其中,受影响源门限包括预先确定的值、动态变化的值或适应比例的数学函数中的一个。
示例11包括示例8-10中任一项的主题,并且其中,多个指令还使得NIC进行以下操作:由NIC在所识别的表条目被禁用之后并且在所识别的表条目被原子地启用之前,接收来自源计算设备的另一消息;由NIC丢弃另一接收到的消息;以及由NIC向源计算设备发送指示另一接收到的消息已经被丢弃的指示。
示例12包括示例8-11中任一项的主题,并且其中,多个指令还使得NIC进行以下操作:由NIC在已经丢弃接收到的消息之后,确定禁用事件计数器值是否大于或等于受影响源门限值;以及由NIC响应于确定禁用事件计数器值大于或等于受影响源门限值,向多个源计算设备中的每个源计算设备发送全局同步流控制消息,其中,全局同步流控制消息指示目标计算设备正处于全局同步流控制复原中。
示例13包括示例8-12中任一项的主题,并且其中,多个指令还使得NIC进行以下操作:由NIC确定全局同步流控制复原是否已经完成;由NIC响应于确定全局同步流控制复原已经完成,原子地启用被禁用的列表表;以及由NIC向多个源计算设备中的每个源计算设备发送全局同步恢复传输消息,其中,全局同步恢复传输消息指示全局同步流控制复原已经完成。
示例14包括示例8-13中任一项的主题,并且其中,确定流控制复原是否已经完成包括:确定是否多个消息接收队列中的每个消息接收队列已经被清空并且与所识别的表条目相关联的消息处理资源已经被释放。
示例15包括一种用于定向流控制复原的目标计算设备,该目标计算设备包括:用于接收来自通信地耦合到目标计算设备的多个源计算设备中的源计算设备的消息的电路;用于基于接收到的消息来识别由目标计算设备管理的表的表条目的单元,其中,表条目包括表的多个表条目中的一个表条目,并且其中,表条目识别可用于处理接收到的消息的一个或多个资源;用于确定所识别的可用于处理接收到的消息的一个或多个资源是否足够用于处理接收到的消息的单元;用于响应于确定分配给表条目的资源不足够用于处理接收到的消息而丢弃接收到的消息的电路;用于禁用所识别的表条目的单元;用于向源计算设备发送源禁用响应消息的单元,其中,源禁用响应消息指示目标计算设备正处于定向流控制复原中并且命令源计算设备停止向目标计算设备发送消息;用于在发送源禁用响应消息之后使禁用事件计数器值递增的单元;用于响应于已经发送源禁用响应消息而接收来自源计算设备的确认消息的单元;用于响应于已经接收到确认消息而使禁用事件确认计数器值递增的单元;用于确定是否有目标计算设备的足够的资源可用于恢复接收消息的单元;用于响应于确定有目标计算设备的足够的资源可用于恢复接收消息而将禁用事件确认计数器值与禁用事件计数器值进行比较的单元;用于响应于确定禁用事件计数器值等于禁用事件确认计数器值而原子地启用所识别的表条目的单元;以及用于向源计算设备发送定向恢复传输消息以命令源计算设备恢复向目标计算设备发送消息的电路。
示例16包括示例15的主题,并且还包括:用于在已经丢弃接收到的消息之后确定禁用事件计数器值是否小于受影响源门限值的单元;以及用于响应于确定禁用事件计数器值小于受影响源门限值而向源计算设备发送源禁用响应消息的电路。
示例17包括示例15和16中任一项的主题,并且其中,受影响源门限包括预先确定的值、动态变化的值或适应比例的数学函数中的一个。
示例18包括示例15-17中任一项的主题,并且还包括:用于在所识别的表条目被禁用之后并且在所识别的表条目被原子地启用之前接收来自源计算设备的另一消息的电路;以及用于丢弃另一接收到的消息的电路;用于向源计算设备发送指示另一接收到的消息已经被丢弃的指示的电路。
示例19包括示例15-18中任一项的主题,并且还包括:用于在已经丢弃接收到的消息之后,确定禁用事件计数器值是否大于或等于受影响源门限值的单元;以及用于响应于确定禁用事件计数器值大于或等于受影响源门限值而向多个源计算设备中的每个源计算设备发送全局同步流控制消息的电路,其中,全局同步流控制消息指示目标计算设备正处于全局同步流控制复原中。
示例20包括示例15-19中任一项的主题,并且还包括:用于确定全局同步流控制复原是否已经完成的单元;用于响应于确定全局同步流控制复原已经完成而原子地启用被禁用的列表表的单元;以及用于向多个源计算设备中的每个源计算设备发送全局同步恢复传输消息的电路,其中,全局同步恢复传输消息指示全局同步流控制复原已经完成。
示例21包括示例15-20中任一项的主题,并且其中,用于确定流控制复原是否已经完成的单元包括:用于确定是否多个消息接收队列中的每个消息接收队列已经被清空并且与所识别的表条目相关联的消息处理资源已经被释放的单元。
Claims (21)
1.一种用于定向流控制复原的目标计算设备,所述目标计算设备包括:计算引擎;以及
网络接口控制器(NIC),其用于:
接收来自通信地耦合到所述目标计算设备的多个源计算设备中的源计算设备的消息;
基于接收到的消息,识别由所述目标计算设备管理的表的表条目,其中,所述表条目包括所述表的多个表条目中的一个表条目,并且其中,所述表条目识别可用于处理所述接收到的消息的一个或多个资源;
确定所识别的可用于处理所述接收到的消息的一个或多个资源是否足够用于处理所述接收到的消息;
响应于确定分配给所述表条目的资源不足够用于处理所述接收到的消息,丢弃所述接收到的消息;
禁用所识别的表条目;
向所述源计算设备发送源禁用响应消息,其中,所述源禁用响应消息指示所述目标计算设备正处于定向流控制复原中并且命令所述源计算设备停止向所述目标计算设备发送消息;
在发送所述源禁用响应消息之后,使禁用事件计数器值递增;
响应于已经发送所述源禁用响应消息,接收来自所述源计算设备的确认消息;
响应于已经接收到所述确认消息,使禁用事件确认计数器值递增;
确定是否有所述目标计算设备的足够的资源可用于恢复接收消息;
响应于确定有所述目标计算设备的足够的资源可用于恢复接收消息,将所述禁用事件确认计数器值与所述禁用事件计数器值进行比较;
响应于确定所述禁用事件计数器值等于所述禁用事件确认计数器值,原子地启用所识别的表条目;以及
向所述源计算设备发送定向恢复传输消息,以命令所述源计算设备恢复向所述目标计算设备发送消息。
2.如权利要求1所述的目标计算设备,其中,所述NIC还用于:
在已经丢弃所述接收到的消息之后,确定所述禁用事件计数器值是否小于受影响源门限值;以及
响应于确定所述禁用事件计数器值大于所述受影响源门限值,向所述源计算设备发送所述源禁用响应消息。
3.如权利要求2所述的目标计算设备,其中,所述受影响源门限包括预先确定的值、动态变化的值或适应比例的数学函数中的一个。
4.如权利要求1所述的目标计算设备,其中,所述NIC还用于:
在所识别的表条目被禁用之后并且在所识别的表条目被原子地启用之前,接收来自所述源计算设备的另一消息;
丢弃另一接收到的消息;以及
向所述源计算设备发送指示所述另一接收到的消息已经被丢弃的指示。
5.如权利要求1所述的目标计算设备,其中,所述NIC还用于:
在已经丢弃所述接收到的消息之后,确定所述禁用事件计数器值是否大于或等于受影响源门限值;以及
响应于确定所述禁用事件计数器值大于或等于所述受影响源门限值,向所述多个源计算设备中的每个源计算设备发送全局同步流控制消息,其中,所述全局同步流控制消息指示所述目标计算设备正处于全局同步流控制复原中。
6.如权利要求5所述的目标计算设备,其中,所述NIC还用于:
确定所述全局同步流控制复原是否已经完成;
响应于确定所述全局同步流控制复原已经完成,原子地启用被禁用的列表表;以及
向所述多个源计算设备中的每个源计算设备发送全局同步恢复传输消息,其中,所述全局同步恢复传输消息指示所述全局同步流控制复原已经完成。
7.如权利要求6所述的目标计算设备,其中,确定所述流控制复原是否已经完成包括:确定是否多个消息接收队列中的每个消息接收队列已经被清空并且与所识别的表条目相关联的消息处理资源已经被释放。
8.一种用于目标计算设备的定向流控制复原的方法,所述方法包括:
由所述目标计算设备的网络接口控制器(NIC)接收来自通信地耦合到所述目标计算设备的多个源计算设备中的源计算设备的消息;
由所述NIC基于接收到的消息,识别由所述目标计算设备管理的表的表条目,其中,所述表条目包括所述表的多个表条目中的一个表条目,并且其中,所述表条目识别可用于处理所述接收到的消息的一个或多个资源;
由所述NIC确定所识别的可用于处理所述接收到的消息的一个或多个资源是否足够用于处理所述接收到的消息;
由所述NIC响应于确定分配给所述表条目的资源不足够用于处理所述接收到的消息,丢弃所述接收到的消息;
由所述NIC禁用所识别的表条目;
由所述NIC向所述源计算设备发送源禁用响应消息,其中,所述源禁用响应消息指示所述目标计算设备正处于定向流控制复原中并且命令所述源计算设备停止向所述目标计算设备发送消息;
由所述NIC在发送所述源禁用响应消息之后,使禁用事件计数器值递增;
由所述NIC响应于已经发送所述源禁用响应消息,接收来自所述源计算设备的确认消息;
由所述NIC响应于已经接收到所述确认消息,使禁用事件确认计数器值递增;
由所述NIC确定是否有所述目标计算设备的足够的资源可用于恢复接收消息;
由所述NIC响应于确定有所述目标计算设备的足够的资源可用于恢复接收消息,将所述禁用事件确认计数器值与所述禁用事件计数器值进行比较;
由所述NIC响应于确定所述禁用事件计数器值等于所述禁用事件确认计数器值,原子地启用所识别的表条目;以及
由所述NIC向所述源计算设备发送定向恢复传输消息,以命令所述源计算设备恢复向所述目标计算设备发送消息。
9.如权利要求8所述的方法,还包括:
由所述NIC在已经丢弃所述接收到的消息之后,确定所述禁用事件计数器值是否小于受影响源门限值;以及
由所述NIC响应于确定所述禁用事件计数器值大于所述受影响源门限值,向所述源计算设备发送所述源禁用响应消息。
10.如权利要求9所述方法,其中,所述受影响源门限包括预先确定的值、动态变化的值或适应比例的数学函数中的一个。
11.如权利要求8所述的方法,还包括:
由所述NIC在所识别的表条目被禁用之后并且在所识别的表条目被原子地启用之前,接收来自所述源计算设备的另一消息;
由所述NIC丢弃另一接收到的消息;以及
由所述NIC向所述源计算设备发送指示所述另一接收到的消息已经被丢弃的指示。
12.如权利要求8所述的方法,还包括:
由所述NIC在已经丢弃所述接收到的消息之后,确定所述禁用事件计数器值是否大于或等于受影响源门限值;以及
由所述NIC响应于确定所述禁用事件计数器值大于或等于所述受影响源门限值,向所述多个源计算设备中的每个源计算设备发送全局同步流控制消息,其中,所述全局同步流控制消息指示所述目标计算设备正处于全局同步流控制复原中。
13.如权利要求12所述的方法,还包括:
由所述NIC确定所述全局同步流控制复原是否已经完成;
由所述NIC响应于确定所述全局同步流控制复原已经完成,原子地启用被禁用的列表表;以及
由所述NIC向所述多个源计算设备中的每个源计算设备发送全局同步恢复传输消息,其中,所述全局同步恢复传输消息指示所述全局同步流控制复原已经完成。
14.如权利要求13所述方法,其中,确定所述流控制复原是否已经完成包括:确定是否多个消息接收队列中的每个消息接收队列已经被清空并且与所识别的表条目相关联的消息处理资源已经被释放。
15.一种用于定向流控制复原的目标计算设备,所述目标计算设备包括:
用于接收来自通信地耦合到所述目标计算设备的多个源计算设备中的源计算设备的消息的电路;
用于基于接收到的消息来识别由所述目标计算设备管理的表的表条目的单元,其中,所述表条目包括所述表的多个表条目中的一个表条目,并且其中,所述表条目识别可用于处理所述接收到的消息的一个或多个资源;
用于确定所识别的可用于处理所述接收到的消息的一个或多个资源是否足够用于处理所述接收到的消息的单元;
用于响应于确定分配给所述表条目的资源不足够用于处理所述接收到的消息而丢弃所述接收到的消息的电路;
用于禁用所识别的表条目的单元;
用于向所述源计算设备发送源禁用响应消息的单元,其中,所述源禁用响应消息指示所述目标计算设备正处于定向流控制复原中并且命令所述源计算设备停止向所述目标计算设备发送消息;
用于在发送所述源禁用响应消息之后使禁用事件计数器值递增的单元;
用于响应于已经发送所述源禁用响应消息而接收来自所述源计算设备的确认消息的单元;
用于响应于已经接收到所述确认消息而使禁用事件确认计数器值递增的单元;
用于确定是否有所述目标计算设备的足够的资源可用于恢复接收消息的单元;
用于响应于确定有所述目标计算设备的足够的资源可用于恢复接收消息而将所述禁用事件确认计数器值与所述禁用事件计数器值进行比较的单元;
用于响应于确定所述禁用事件计数器值等于所述禁用事件确认计数器值而原子地启用所识别的表条目的单元;以及
用于向所述源计算设备发送定向恢复传输消息以命令所述源计算设备恢复向所述目标计算设备发送消息的电路。
16.如权利要求15所述的目标计算设备,还包括:
用于在已经丢弃所述接收到的消息之后确定所述禁用事件计数器值是否小于受影响源门限值的单元;以及
用于响应于确定所述禁用事件计数器值大于所述受影响源门限值而向所述源计算设备发送所述源禁用响应消息的电路。
17.如权利要求16所述的目标计算设备,其中,所述受影响源门限包括预先确定的值、动态变化的值或适应比例的数学函数中的一个。
18.如权利要求15所述的目标计算设备,还包括:
用于在所识别的表条目被禁用之后并且在所识别的表条目被原子地启用之前接收来自所述源计算设备的另一消息的电路;
用于丢弃另一接收到的消息的电路;以及
用于向所述源计算设备发送指示所述另一接收到的消息已经被丢弃的指示的电路。
19.如权利要求15所述的目标计算设备,还包括:
用于在已经丢弃所述接收到的消息之后,确定所述禁用事件计数器值是否大于或等于受影响源门限值的单元;以及
用于响应于确定所述禁用事件计数器值大于或等于所述受影响源门限值而向所述多个源计算设备中的每个源计算设备发送全局同步流控制消息的电路,其中,所述全局同步流控制消息指示所述目标计算设备正处于全局同步流控制复原中。
20.如权利要求19所述的目标计算设备,还包括:
用于确定所述全局同步流控制复原是否已经完成的单元;
用于响应于确定所述全局同步流控制复原已经完成而原子地启用被禁用的列表表的单元;以及
用于向所述多个源计算设备中的每个源计算设备发送全局同步恢复传输消息的电路,其中,所述全局同步恢复传输消息指示所述全局同步流控制复原已经完成。
21.如权利要求20所述的目标计算设备,其中,用于确定所述流控制复原是否已经完成的单元包括:用于确定是否多个消息接收队列中的每个消息接收队列已经被清空并且与所识别的表条目相关联的消息处理资源已经被释放的单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/941,490 | 2018-03-30 | ||
US15/941,490 US20190044872A1 (en) | 2018-03-30 | 2018-03-30 | Technologies for targeted flow control recovery |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110324257A true CN110324257A (zh) | 2019-10-11 |
Family
ID=65230036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910144572.XA Pending CN110324257A (zh) | 2018-03-30 | 2019-02-27 | 用于定向流控制复原的技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190044872A1 (zh) |
CN (1) | CN110324257A (zh) |
DE (1) | DE102019105065A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111416776A (zh) * | 2019-01-07 | 2020-07-14 | 华为技术有限公司 | 传输数据的方法和网络设备 |
DE112020002497T5 (de) | 2019-05-23 | 2022-04-28 | Hewlett Packard Enterprise Development Lp | System und verfahren zur dynamischen zuweisung von reduktionsmotoren |
-
2018
- 2018-03-30 US US15/941,490 patent/US20190044872A1/en not_active Abandoned
-
2019
- 2019-02-27 CN CN201910144572.XA patent/CN110324257A/zh active Pending
- 2019-02-28 DE DE102019105065.0A patent/DE102019105065A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102019105065A1 (de) | 2019-10-02 |
US20190044872A1 (en) | 2019-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11876701B2 (en) | System and method for facilitating operation management in a network interface controller (NIC) for accelerators | |
US11546189B2 (en) | Access node for data centers | |
US10965586B2 (en) | Resilient network communication using selective multipath packet flow spraying | |
Birrittella et al. | Intel® omni-path architecture: Enabling scalable, high performance fabrics | |
EP2406723B1 (en) | Scalable interface for connecting multiple computer systems which performs parallel mpi header matching | |
US9935899B2 (en) | Server switch integration in a virtualized system | |
US7620057B1 (en) | Cache line replacement with zero latency | |
CN109426549A (zh) | 针对虚拟环境的加速器互连分配 | |
CN104639596B (zh) | 用于使用rdma的低等待时间fifo消息收发中支持多个发送器的系统和方法 | |
US20110225168A1 (en) | Hash processing in a network communications processor architecture | |
US7924848B2 (en) | Receive flow in a network acceleration architecture | |
US20190044879A1 (en) | Technologies for reordering network packets on egress | |
US11258726B2 (en) | Low latency packet switch architecture | |
CN110324257A (zh) | 用于定向流控制复原的技术 | |
CN100442256C (zh) | 提供用于i/o适配器的队列对的方法、系统和存储介质 | |
Marian | Operating systems abstractions for software packet processing in datacenters | |
US11552907B2 (en) | Efficient packet queueing for computer networks | |
US9137158B2 (en) | Communication apparatus and communication method | |
CN108293006A (zh) | 用于跟踪无序网络分组的技术 | |
US20230359582A1 (en) | In-network collective operations | |
US20230388281A1 (en) | In-network compute operations utilizing encrypted communications | |
US20230379154A1 (en) | In-network compute operations utilizing encrypted communications | |
Zeng et al. | CONTC: A Traffic Control System for Container Overlay Networks | |
Kr et al. | High Performance Packet Processing with FlexNIC |
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 |