CN110121868B - 通过被配置为加速服务的加速组件的消息传输 - Google Patents
通过被配置为加速服务的加速组件的消息传输 Download PDFInfo
- Publication number
- CN110121868B CN110121868B CN201780081851.5A CN201780081851A CN110121868B CN 110121868 B CN110121868 B CN 110121868B CN 201780081851 A CN201780081851 A CN 201780081851A CN 110121868 B CN110121868 B CN 110121868B
- Authority
- CN
- China
- Prior art keywords
- acceleration
- point
- components
- component
- network
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/66—Layer 2 routing, e.g. in Ethernet based MAN's
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/16—Multipoint routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/65—Re-configuration of fast packet switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供了允许加速组件传送消息的组件、方法和系统。提供了一种用于在与第一架顶(TOR)交换机相关联的第一多个加速组件之间使用以将消息传送到可配置为针对服务提供服务加速的加速平面中的其他加速组件的加速组件。加速组件包括运输组件,其被配置为将第一点对点消息传送到与不同于第一TOR交换机的第二TOR交换机相关联的第二加速组件,以及与不同于第一TOR交换机和第二TOR交换机的第三TOR交换机相关联的第三加速组件。运输组件还可以被配置为将第二点对点消息广播到与第二TOR交换机相关联的第二多个加速组件的全部加速组件以及与第三TOR交换机相关联的第三多个加速组件的全部加速组件。
Description
技术领域
本公开的实施例涉及用于传输消息的系统、方法和加速组件。
背景技术
日益地,用户访问经由被定位在数据中心中的计算、网络和存储资源提供的应用。这些应用在分布式计算环境中运行,其有时被称为云计算环境。数据中心中的计算机服务器经由网络被互连并且因此,在计算机服务器上运行的应用可以经由网络彼此通信。在大型数据中心中,在计算机服务器之间传递消息可以包括将消息从计算机服务器广播或者多播到若干其他计算机服务器。这样的数据中心中的广播或者多播可以使用可用于应用的带宽的很大一部分。那进而可能降低这些应用的性能,因为其经历较低的吞吐量和较高的延时。
因此,需要减轻这些问题中的至少一些的方法和系统。
发明内容
在一个示例中,本公开涉及一种系统,包括:软件平面,包括被配置为执行对应于至少一个服务的指令的多个主机组件;以及加速平面,包括可配置为加速至少一个服务的多个加速组件。系统还可以包括被配置为将软件平面和加速平面互连的网络,网络可以包括:与多个加速组件的第一子集相关联的第一架顶(TOR)交换机、与多个加速组件的第二子集相关联的第二TOR交换机、以及与多个加速组件的第三子集相关联的第三TOR交换机,其中多个加速组件的第一子集中的任何加速组件可配置为将点对点消息传送到多个加速组件的第二子集中的任何加速组件并且将点对点消息传送到多个加速组件的第三子集中的任何加速组件,并且其中多个加速组件的第二子集中的任何加速组件可配置为将点对点消息广播到多个加速组件的第二子集的全部加速组件,并且其中多个加速组件的第三子集中的任何加速组件可配置为将点对点消息广播到多个加速组件的第三子集的全部加速组件。
在另一示例中,本公开涉及一种用于允许与第一架顶(TOR)交换机相关联的第一多个加速组件之间的第一加速组件将消息传送到可配置为为至少一个服务提供服务加速的加速平面中的其他加速组件的方法。方法可以包括:第一加速组件将点对点消息传送到与不同于第一TOR交换机的第二TOR交换机相关联的第二加速组件,以及与不同于第一TOR交换机和第二TOR交换机的第三TOR交换机相关联的第三加速组件。方法还可以包括:第二加速组件将点对点消息广播到与第二TOR交换机相关联的第二多个加速组件的全部加速组件。方法还可以包括第三加速组件将点对点消息广播到与第三TOR交换机相关联的第三多个加速组件的全部加速组件。
在又一示例中,本公开涉及一种加速组件,其用于在与第一架顶(TOR)交换机相关联的第一多个加速组件之间使用,以将消息传送到可配置为为至少一个服务提供服务加速的加速平面中的其他加速组件。加速组件可以包括运输组件,其被配置为将第一点对点消息传送到与不同于第一TOR交换机的第二TOR交换机相关联的第二加速组件,以及与不同于第一TOR交换机和第二TOR交换机的第三TOR交换机相关联的第三加速组件。运输组件还可以被配置为将第二点对点消息广播到与第二TOR交换机相关联的第二多个加速组件的全部加速组件以及与第三TOR交换机相关联的第三多个加速组件的全部加速组件。
提供本发明内容以引入在详细描述中下面进一步描述的简化形式的概念的选择。本发明内容不旨在标识所要求保护的主题内容的关键特征或基本特征,其也不旨在被用来所要求保护的主题内容的范围。
附图说明
本公开内容通过示例图示并且未由附图限制,其中相同附图标记指示类似元素。附图中的元素出于简单和清晰而图示并且不一定按比例绘制。
图1是根据一个示例的可以包括软件平面和加速平面的架构的示意图;
图2示出了根据一个示例的用于通过被配置为加速服务的加速组件传输消息的系统的示意图;
图3示出了根据一个示例的用于通过被配置为加速服务的加速组件传输消息的系统的示意图;
图4示出了根据一个示例的加速组件的示意图;
图5示出了根据一个示例的3端口交换机的示意图;
图6示出了根据一个示例的用于通过被配置为加速服务的加速组件传输消息的系统的示意图;
图7示出了根据一个示例的用于通过被配置为加速服务的加速组件传输消息的方法的流程图;以及
图8示出了根据一个示例的用于通过被配置为加速服务的加速组件传输消息的另一方法的流程图。
具体实施方式
在本公开中所描述的示例涉及提供在可配置为加速服务的加速组件之间传输消息的方法和系统。加速组件包括但不限于:可配置(或被配置)为比在通用中央处理单元(CPU)上运行的软件更高效地执行对应于正由例如数据中心提供的服务的功能。加速组件可以包括现场可编程门阵列(FPGA)、图形处理单元(GPU)、专用集成电路(ASIC)、可擦除和/或复杂可编程逻辑器件(PLD)、可编程阵列逻辑(PAL)器件、通用阵列逻辑(GAL)器件和大规模并行处理器阵列(MPPA)器件。图像文件可以被用来配置或者重新配置加速组件,诸如FPGA。被包括在图像文件中的信息可以被用来将加速组件的硬件组件(例如,FPGA的逻辑块和可配置的互连)编程来实现期望的功能性。期望的功能性可以被实现为支持可以经由计算、网络和存储资源的组合(诸如经由数据中心或用于递送服务的其他基础设施)提供的任何服务。
所描述的方面还可以被实现在云计算环境中。云计算可以指代用于支持对可配置的计算资源的共享池的按需网络访问的模型。例如,云计算可以被采用在市场中以提供对可配置的计算资源的共享池的普遍存在并且方便的按需访问。可配置的计算资源的共享池可以经由可视化快速地被提供并且利用低管理努力或服务提供者交互来发行并且然后相应地缩放。云计算模型可以包括各种特点,诸如例如按需自服务、广泛的网络访问、资源池化、迅速弹性、测量的服务等。云计算模型还可以暴露各种服务模型,诸如例如软件即服务(“SasS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”)。还可以使用不同的部署模型(诸如私有云、社区云、公共云、混合云等)来部署云计算模型。
数据中心部署可以包括硬件加速平面和软件平面。硬件加速平面可以包括多个联网的加速组件(例如,FPGA)。软件平面可以包括多个联网的软件实现的主机组件(例如,中央处理单元(CPU))。可以在硬件加速平面与软件平面之间共享网络基础设施。在一些环境中,软件实现的主机组件被本地链接到对应的加速组件。加速组件可以经由网络协议彼此通信。为了向经由数据中心而被提供的服务的用户提供可靠服务,可以要求任何通信机制满足某些性能要求,包括可靠性。在某些示例中,本公开提供用于满足这样的要求的轻量级运输层。在一个示例中,加速组件可以经由轻量级运输层(LTL)彼此通信。
图1示出了根据一个示例的可以包括软件平面104和加速平面106的架构100。软件平面104可以包括软件驱动的主机组件(各自由符号“S”表示的)的集合,而加速平面可以包括加速组件(各自由符号“A”表示的)的集合。在该示例中,每个主机组件可以对应于使用一个或多个中央处理单元(CPU)执行机器可读指令的服务器计算机。在一个示例中,这些指令可以对应于服务,诸如文本/图像/视频搜索服务、翻译服务、或者可以被配置为给设备的用户提供有用结果的任何其他服务。每个CPU可以执行对应于服务的各种组件(例如,软件模块或库)的指令。每个加速组件可以包括用于实现功能的硬件逻辑,诸如例如由数据中心提供的服务的各部分。
加速平面106可以使用加速组件的异质或同质集合构建,包括不同类型的加速组件和/或具有不同能力的相同类型的加速组件。例如,加速平面106可以包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)、其他类型的可编程硬件逻辑器件等等。加速平面106可以提供加速组件的可重新配置的结构。
主机组件一般可以是可以通过使用其CPU硬件线程中的每个CPU硬件线程执行机器可读指令来执行操作的任何计算组件。加速组件可以使用若干并行逻辑元件执行计算任务来执行操作。作为示例,FPGA可以包括若干门阵列,其可以被配置为并行执行某些计算任务。因此,加速组件可以在与软件驱动的主机组件相比较更少的时间内执行一些操作。在架构100的上下文中,“加速”反映其用于加速由主机组件执行的功能的潜力。
在一个示例中,架构100可以对应于包括大量服务器的数据中心环境。服务器可以对应于软件平面104中的主机组件。在另一示例中,架构100可以对应于企业系统。在另一示例中,架构100可以对应于使用具有对两个或更多个加速组件的访问的至少一个主机组件的用户设备或者器具。实际上,取决于服务的要求,用于架构100的其他实现也是可能的。
网络120可以将软件平面104中的主机组件耦合到其他主机组件并且将加速平面106中的加速组件耦合到其他加速组件。在该示例中,主机组件可以使用网络120彼此交互,并且加速组件可以使用网络120彼此交互。软件平面104中的主机组件之间的交互可以独立于加速平面106中的加速组件之间的交互。在该示例中,两个或更多个加速组件可以以相对于软件平面104中的主机组件的透明的方式、在主机组件的方向外部、并且在没有主机组件“知道”特定交互甚至在加速平面106中发生的情况下通信。
架构100可以使用各种不同的协议中的任何协议来通过网络120促进加速组件之间的通信,并且可以使用各种不同的协议中的任何协议来通过网络120促进主机组件之间的通信。例如,架构100可以使用以太网协议通过网络120传送网际协议(IP)分组。在一个实现中,服务器中的每个本地主机组件被给予单个物理IP地址。相同服务器中的本地加速组件可以采取相同IP地址。服务器可以以不同的方式确定传入分组是去往本地主机组件还是去往本地加速组件。例如,去往本地加速组件的分组可以被制定为具有特定端口的UDP分组;另一方面,主机定义的分组可以不以该方式来制定。在另一示例中,基于分组中的每个分组的状态标志的值,属于加速平面106的分组可以与属于软件平面104的分组区分。在一个示例中,架构100可以被视为可以共享相同物理网络通信链路的两个逻辑网络(软件平面104和加速平面106)。与两个逻辑网络相关联的分组可以通过其相应的流量类别彼此区分。
在另一方面中,架构100中的每个主机组件通过本地链路被耦合到加速平面104中的至少一个加速组件。例如,主机组件和加速组件可以被布置在一起并且被维持为架构100内的单个可服务单元(例如,服务器)。在该布置中,服务器可以被称为将其同与其他服务器相关联的其他主机组件区分的“本地”主机组件。类似地,服务器的(多个)加速组件可以被称为将他们同与其他服务器相关联的其他加速组件区分的(多个)“本地”加速组件。
如在架构100中所描绘的,主机组件108可以通过本地链路112(例如,外围组件互连快速(PCIe)链路)被耦合到加速组件110。因此,主机组件108从加速组件110的视角可以是本地主机组件并且加速组件110从主机组件108的视角可以是本地加速组件。主机组件108和加速组件110的本地链接可以形成服务器的一部分。更一般地,软件平面104中的主机组件可以通过共同地被表示为localA-to-localS耦合114的许多个体链路被本地耦合到加速平面106中的加速组件。在该示例中,主机组件可以与任何本地链接的加速组件直接地交互。主机组件可以向本地链接的加速组件发起通信以引起多个加速组件之间的进一步的通信。例如,主机组件可以发出针对服务(或其一部分)的请求,其中针对服务(或其一部分)的功能性由跨越加速平面106中的一组一个或多个加速组件组成。主机组件还可以与主机组件未被本地链接到的加速平面106中的其他加速组件间接地交互。例如,主机组件108可以经由加速组件110与加速组件116间接地通信。在该示例中,加速组件110经由网络(例如,网络120)的链路118与加速组件116通信。
加速平面106中的加速组件可以有利地被用来在数据中心中稳健地加速更大规模的服务。复杂的数据中心服务的很大的部分可以通过使用用于跨越多个加速组件的计算的低延时互连被映射到加速组件(例如,FPGA)。加速组件还可以酌情被重新配置为在不同的时间提供不同的服务功能性。虽然图1示出了以某种方式布置的架构100的特定数目的组件,但是可以存在不同地布置的更多或更少数目的组件。另外,架构100的各种组件也可以使用其他技术来实现。
图2示出了根据一个示例的用于通过被配置为加速服务的加速组件传输或者重新传输消息的系统200的示意图。在一个示例中,系统200可以被实现为数据中心中的服务器的机架。服务器204、206和208可以被包括在数据中心中的机架中。服务器204、206和208中的每个服务器可以被耦合到架顶(TOR)交换机210。虽然未示出,但是其他机架可以具有类似的配置。服务器204还可以包括主机组件212,其包括CPU 214、216等。主机组件212连同来自服务器206和208的主机组件一起可以被包括在软件平面104中。服务器204还可以包括加速组件218。加速组件218连同来自服务器206和208的加速组件一起可以被包括在加速平面106中。
加速组件218可以经由本地链路220(例如,PCIe链路)被直接地耦合到主机组件212。因此,加速组件218可以将主机组件212视为本地主机组件。加速组件218和主机组件212还可以通过网络接口控制器222(例如,被用来跨网络基础设施120通信)被间接地耦合。在该示例中,服务器204可以将表示服务功能性的图像加载到加速组件218上。
加速组件218还可以被耦合到TOR交换机210。因此,在系统200中,加速组件218可以表示主机组件212与数据中心中的其他组件(包括其他主机组件和其他加速组件)交互所通过的路径。系统200允许加速组件218在不负担由主机组件212所执行的基于CPU的操作的情况下对接收自(和/或发送到)TOR交换机210(例如,通过执行加密、压缩等)的分组执行处理。虽然图2示出了以某种方式布置的系统200的特定数目的组件,但是可以存在不同地布置的更多或更少数目的组件。另外,架构200的各种组件也可以使用其他技术来实现。
图3示出了根据一个示例的用于通过被配置为加速服务的加速组件传输或者重新传输消息的系统300的示意图。在该示例中,IP路由可以被用于在TOR交换机之间传送或者接收消息,包括TOR交换机1 302、TOR交换机2 304和TOR交换机N 306。每个服务器或者服务器组可以具有可以由网络管理员提供的单个“物理”IP地址。因此,在该示例中,服务器组1320、服务器2 322和服务器组N 324可以各自包括服务器,其中它们中的每一个可以具有“物理”IP地址。加速组件可以使用其服务器的物理IP作为其地址。为了在去往主机的IP分组与去往加速组件的分组之间进行区分,可以使用具有将加速组件指定为目的地的特定端口的UDP分组。加速组件可以使用对应于七层开放系统互连(OSI)模型的层3功能性将消息传送到与不同的TOR交换机相关联的加速组件的所选择的集合。层3功能性可以类似于由OSI模型的网络层提供的层3功能性。在该示例中,加速组件可以将点对点消息传送到与相应TOR交换机相关联的其他相关加速组件中的每个加速组件。然后,那些加速组件可以使用层2以太网广播分组来将数据发送到与TOR交换机相关联的所有加速组件。层2功能性可以类似于由OSI模型的数据链路层提供的层2功能性。层2功能性可以包括介质访问控制、流控制和误差校验。在一个示例中,该步骤将不要求来自使加速平面和软件平面互连的网络的任何广播支持。这可以有利地减轻对于由路由器或其他网络基础设施提供的多播功能性的需要。进而,这可以减少部署和管理加速组件的复杂性。另外,一般而言,网络(例如,包括路由器和其他TOR交换机的网络)的较高级别可能是过量预订的,其进而可能降低可用以使用较高网络通信的加速组件的带宽。相比之下,在该示例中,共享TOR交换机的加速组件可以有利地具有对其可用的以用于从一个加速组件到另一加速组件的消息的任何传输的较高带宽。
图4示出了根据一个示例的加速组件400的示意图。加速组件400可以被包括在加速平面106中。被包括在加速组件400中的组件可以被实现在加速组件400的硬件资源(例如,逻辑块和可编程的互连)上。
加速组件400可以包括应用逻辑406、与第一组资源相关联的软壳404和与第二组资源相关联的壳402。与壳402相关联的资源可以对应于一般可以跨许多不同的应用场景保持相同的低级接口相关组件。与软壳404相关联的资源可以跨越至少一些不同的应用场景保持相同。应用逻辑406还可以被概念化为包括应用域(例如,“作用”)。应用域或作用可以表示被包括在展开在多个加速组件上面的组成服务中的功能性的一部分。一组加速组件中的每个加速组件处的作用可以被链接在一起以创建为应用域提供服务加速的组。
应用域托管执行服务特定任务的应用逻辑406(诸如用于排序文档、加密数据、压缩数据、促进计算机视觉、促进语音翻译、机器学习等的功能性的一部分)。与软壳404相关联的资源一般与应用资源相比较更少地经受改变,并且与壳402相关联的资源与关联于软壳404的资源相比较更少地经受改变(虽然改变(重新配置)加速组件400的任何组件是可能的)。
在该示例中,在操作中,应用逻辑406以与软件实现的应用与其底层操作系统资源交互的方式类似的方式与壳资源和软壳资源交互。从应用开发观点,公用壳资源和软壳资源的使用使得开发者不必重新创建用于每个服务的这些公用组件。
首先参考壳402,壳资源可以包括用于将加速组件400耦合到网络接口控制器(经由NIC接口410)和本地架顶交换机(经由TOR接口412)的桥接器408。桥接器408还包括允许流量从NIC或TOR流动到加速组件400中并且允许流量从加速组件400流动出到NIC或TOR的数据路径。内部地,桥接器408可以包括:各种FIFO(414、416),其缓冲接收到的分组;和各种选择器和仲裁逻辑,其将分组路由发送到其期望的目的地。当被激活时,旁路控制组件418可以控制桥接器408,使得在不由加速组件400进一步处理的情况下,分组在NIC与TOR之间被传送。
存储器控制器420管理加速组件400与本地存储器422(诸如DRAM存储器)之间的交互。存储器控制器420可以执行误差校正作为其服务的一部分。
主机接口424可以提供使得加速组件400能够与本地主机组件(未示出)交互的功能性。在一个实现中,主机接口424可以结合直接存储器存取(DMA)使用外围组件互连快速(PCIe)来与本地主机组件交换信息。外壳还可以包括各种其他特征426,诸如时钟信号发生器、状态LED、误差校正功能性等等。
弹性路由器428可以被用于在加速组件400的各种内部组件之间以及在加速组件与外部实体之间路由发送消息(例如,经由运输组件430)。每个这样的端点可以与相应的端口相关联。例如,弹性路由器428被耦合到存储器控制器420、主机接口424、应用逻辑406和运输组件430。
运输组件430可以制定用于传输到远程实体(诸如其他加速组件)的分组,并且从远程实体(诸如其他加速组件)接收组件。在该示例中,当被激活时,3端口交换机432通过在NIC与TOR之间以及在NIC或TOR与关联于加速组件400的本地端口之间接管桥接器408的功能。
诊断记录器434可以将关于由路由器428、运输组件430和3端口交换机432所执行的操作的信息存储在环形缓冲器中。例如,信息可以包括关于分组的原点和目的地IP地址、主机特定数据、或时间戳的数据。日志可以被存储为遥测系统(未示出)的一部分,使得技术人员可以研究日志来诊断加速组件400中的故障或次佳性能的原因。
类似加速组件400的多个加速组件可以被包括在加速平面106中。加速组件可以使用不同的网络拓扑(取代使用用于通信的网络120)彼此通信。在一个方面中,加速组件被直接地连接到彼此(诸如例如在二维环面中)。虽然图4示出了以某种方式布置的加速组件100的特定数目的部件,但是可以存在不同地布置的更多或更少数目的组件。另外,加速组件400的各种组件也可以使用其他技术来实现。
图5示出了根据一个示例的3端口交换机500的示意图(实线表示数据路径,并且虚线表示控制信号)。3端口交换机500可以提供防止用于加速组件的分组被发送到主机系统上的特征。如果数据网络支持若干无损种类的流量,则3端口交换机500可以被配置为提供足够的支持以缓冲并且暂停传入无损流以允许其将其自己的流量插入网络中。为了支持那样,3端口交换机500可以被配置为将无损流量类别(例如,远程直接存储器存取(RDMA))与有损(例如,TCP/IP)流量类别进行区分。分组头部中的字段可以被用来标识分组属于哪个流量类别。配置存储器530可以被用来存储对应于3端口交换机500的任何配置文件或者数据结构。
3端口交换机500可以具有连接到第一MAC的第一端口502(主机侧)和连接到第二MAC的第二端口504(网络侧)。第三本地端口可以向运输组件(例如,运输组件430)提供内部服务。3端口交换机500一般可以操作为具有一些限制的网络交换机。具体地,3端口交换机500可以被配置为仅向第二端口504(非第一端口502)传递在本地端口上接收到的分组(例如,轻量型运输层(LTL)分组)。类似地,3端口交换机500可以被设计为不将分组从第一端口502递送到本地端口。
3端口交换机500可以具有两个分组缓冲器:用于接收(Rx)第一端口502的分组缓冲器和用于接收第二端口504的分组缓冲器。分组缓冲器可以被分成若干区域。每个区域可以对应于分组流量类别。当分组到达并且从其帧(例如,以太网帧)被提取时,其可以由分组分类器(例如,分组分类器520和分组分类器522)被分类为可用分组类别(有损、无损等)之一并且写入对应的分组缓冲器中。如果没有缓冲器空间可用于入站分组,那么可以丢弃分组。一旦分组被存储并且准备传送,仲裁器(例如,仲裁器512或仲裁器514)就可以从可用分组之间选择并且可以传送分组。优先级流量控制(PFC)插入块(例如,PFC插入526或者PFC插入528)可以允许3端口交换机500在端口502、504中的任一个的传送半部处的流分组之间插入PFC帧。
3端口交换机500可以处理无损流量类别如下。到达第一端口502的接收半部和第二端口504的接收半部的所有分组应当最终在端口的对应的传送(Tx)半部上被传送。可以以存储并转发的方式来路由发送分组。优先级流量控制(PFC)可以被实现为避免分组丢失。对于无损流量类别,3端口交换机500可以生成PFC消息并且在第一端口502和第二端口504的传送部分上将其发送。在一个实施例中,当分组缓冲器填满时,发送PFC消息。当缓冲器已满或者将要满时,PFC消息被发送到请求该类别的流量被暂停的链路伙伴。PFC消息也可以被接收并且起作用。如果针对第一端口或者第二端口(502或504)的接收部分上的无损流量类别接收PFC控制帧,则3端口交换机500可以挂起在接收控制帧的端口的传送部分上发送分组。分组可以内部缓冲直到缓冲器已满,在这时,将向链路伙伴生成PFC帧。
3端口交换机500可以处理有损流量类别如下。可以在尽力基础上转发有损流量(未分类为无损的所有流量)。如果遇到拥塞,则3端口交换机500可以自由丢弃分组。
在分组遍历主机和其网络堆栈之前,可以在分组或流中检测到拥塞的标志。例如,如果在其到主机的通路上的分组中检测到拥塞标记,则运输组件可以在拥塞的效果开始在主机处显现之前迅速地停止或者开始流动、增加或者减小可用带宽、节流其他流/连接等。
图6示出了根据一个示例的被耦合到3端口交换机602(对应于图4的3端口432的示例)和弹性路由器604的运输组件600(对应于图4的运输组件430的示例)。运输组件600可以被配置为充当网络上的自主节点。在一个实施例中,运输组件600可以被配置在其内可以实例化任意过程或执行单元的环境或壳内。由于应用逻辑与网络之间的接近度和基于主机的负担(诸如导航复杂网络堆栈、中断处理和资源共享)的移除,因而运输组件600的使用可以是有利的。因此,使用加速组件和运输组件(诸如运输组件600)的应用或者服务可能能够在较低延时和较高吞吐量的情况下进行通信。运输组件600可以自身是出于其自己的目的生成并且消耗网络流量的代理。
运输组件600可以被用来实现与用于交换数据(包括传送或者重新传送消息)的机制或协议相关联的功能性。在该示例中,运输组件600可以包括传送逻辑610、接收逻辑612、软壳614、连接管理逻辑616、配置存储器618、传送缓冲器620和接收缓冲器622。这些元件可以操作以在可以被包括作为加速组件的一部分的运输组件之间提供高效并且可靠的通信。
在一个示例中,运输组件600可以被用来实现与轻量型运输层(LTL)相关联的功能性。与LTL的该示例一致,运输组件600可以暴露用于LTL的两个主接口:用于与3端口交换机602通信的一个主接口(例如,可以然后连接到网络交换机(诸如TOR交换机)的本地网络接口)和用于与弹性路由器604通信的另一主接口(例如,弹性路由器接口)。在该示例中,本地网络接口(local_*)可以包含网络流(NetworkStream),其对于接收(Rx)和发送(Tx)两个方向都是就绪和有效的。在该示例中,弹性路由器接口(router_*)可以暴露支持多个虚拟信道和基于信用的流控制方案的类似FIFO的接口。运输组件600可以经由用于运行时间可控制参数的配置数据结构(结构体)来配置,并且可以输出状态数据结构(用于由主机或其他软壳逻辑的状态监测的结构体)。以下的表1示出了LTL顶层模块接口的示例。
以下的表2示出了可以针对在编译时间的LTL实例而被设定的示例静态参数。对于这些参数的值仅是示例,并且可以指定附加或者更少的参数。
参数名 | 配置值 |
MAX_VIRTUAL CHANNELS | 8 |
ER_PHITS_PER_FLIT | 4 |
MAX_ER_CREDITS | 256 |
EXTRA_SFQ_ENTRIES | 32 |
因此,如上所述,在表3中,这将配置用于LTL实例的MAX_VIRTUAL_CHANNELS+EXTRA_SFQ_ENTRIES MTU大小的缓冲器。弹性路由器信用(ER_CREDITS)可以在保证用于每个虚拟信道(VC)的至少1个信用的情况下被发出,以及动态地计算的额外信用的数目。运输组件600可以暴露设定若干运行时间值的配置输入端口。该配置端口可以被定义为LTLConfiguration结构体数据结构的一部分。在下表(表4)中列举了用于示例数据结构的字段:
可以组合或者进一步分离表4中所示的对应于字段的功能性。某些字段还可以在由LTLConfiguration结构体数据结构中的地址或者描述符字段索引的存储器中。类似地,特殊指令可以提供与表4中的字段中的任一个字段有关的信息或者其可以组合来自这样的字段的信息。在不脱离本公开的范围的情况下,可以对LTLConfiguration结构体数据结构和格式做出其他改变。
在一个示例中,作为LTL的一部分,所有消息可以被封装在IPv4/UDP帧内。以下的表5示出了用于将消息封装在这样的帧中的示例分组格式。组(Group)列示出了分组结构中的字段的各种组。描述(Description)列示出了对应于分组结构中的每个组的字段。大小(Size)列示出了每个字段的位的大小。值(Value)列为字段提供值,并且根据需要,提供相关字段的示例描述。
可以组合或者进一步分离表5中所示的对应于字段的功能性。某些字段还可以在由分组中的地址或者描述符字段索引的存储器中。类似地,特殊指令可以提供与表5中的字段中的任一个字段有关的信息或者其可以组合来自这样的字段的信息。在不脱离本公开的范围的情况下,可以对分组结构和格式做出其他改变。
连接管理逻辑616可以提供在运输组件之间建立连接的配准接口。连接管理逻辑616连同软件(例如,软壳)可以在数据可以被传送或者接收之前设立连接。在一个示例中,存在可以控制连接的状态的两个连接表,发送连接表(SCT)和接收连接表(RCT)。这些表中的每个表可以被存储为配置存储器618或者与运输组件600相关联的某个其他存储器的一部分。SCT中的每个条目(发送连接表条目(SCTE))可以存储分组的当前序列号和被用来建立分组的其他连接状态,诸如目的地MAC地址。从弹性路由器604到达的请求可以通过将目的地IP地址和由弹性路由器604提供的虚拟信道字段相比较来与SCTE相匹配。至多一个连接可以以目的地IP地址和VC对为目标。因此,元组{IP,VC}可以是表中的唯一密钥(在数据库术语中)。具有带有相同VC的表中的两个条目可以是可能的——例如,{IP:10.0.0.1,VC:0}和{IP:10.0.0.2,VC:0}。具有带有相同IP地址和不同VC的两个条目也可以是可能的:{IP:10.0.0.1,VC:0}和{IP:10.0.0.2,VC:1}。然而,不可以允许具有相同{IP,VC}对的两个条目。可以在编译时对LTL支持的条目的数目进行配置。
弹性路由器604可以移动微片中的数据,其大小可以是128B(32B x 4个周期)。消息可以包括由开始标志和最后标志去标记的多个微片。在一个示例中,一旦弹性路由器604选择针对给定虚拟信道从输入端口发送到输出端口的流,则整个消息必须在另一消息将开始到达相同虚拟信道之前被递送。连接管理逻辑616可能需要将来自弹性路由器604的消息分组化为网络的最大运输单元(MTU)大小的块。这可以通过缓冲每个虚拟信道上的数据直到满足以下条件之一来完成:(1)在微片中看到最后标记;以及(2)MTU的数据价值(或者适当地减少大小,以适配头部和对齐要求)。在该实现中,对于LTL有效负载的MTU可以是1408字节。一旦满足要求之一,则运输组件600经由传送逻辑610可以试图发送该分组。可以通过消息在运输组件600输入处(从弹性路由器604)到达的虚拟信道和可以在来自弹性路由器604的消息的第一周期期间可以到达的消息头部的组合来确定分组目的地。这两个值可以被用来索引到发送连接表中,其可以提供目的地IP地址和用于连接的序列号。在该示例中,在给定连接上传送的每个分组应当具有比用于该连接的先前分组大一的序列号。仅有例外可以用于重新传送,其可以看到利用与其最初发送相同的序列号重新传送的丢弃或未确认分组。在连接上发送的第一分组可以具有设定为1的序列号。因此,作为示例,对于从弹性路由器604到达进入运输组件600中的在各种虚拟信道(VC)上的微片的集合,可以使用缓冲器(例如,接收缓冲器622)缓冲数据,直到已经接收消息的末尾或数据的MTU价值并且然后可以输出分组。因此,作为示例,如果1500B从弹性路由器604被发送到与运输组件600相关联的至少一个LTL实例作为单个消息(例如,具有零或一个LAST标志的相同VC上的多个微片),则可以生成至少一个分组。在该示例中,一旦LTL实例已经缓冲数据,则LTL实例可以发送消息——即,在发送下一消息之前,其将不等待第一消息的ACK。可以不存在最大消息大小。LTL实例可以仅将消息上堆(chunk up)为MTU大小的分组,并且一旦MTU的价值数据就绪,则对其进行传送。类似地,在该示例中,在分组中任何地方不存在“消息长度”字段——仅有针对每个分组的有效负载大小。运输组件600可以不具有消息将包含多少数据的增进知识。优选地,与运输组件600相关联的LTL的实例可以递送按次序(甚至在丢弃和超时之前)匹配给定SCT条目的到达微片。匹配不同的SCT条目的微片可以不具有排序保证。
在该示例中,运输组件600将输出用于每个虚拟信道的一个信用,以及然后用于每个共享缓冲器的一个信用。除了当微片完成MTU缓冲器时之外,信用将在每个微片之后被返回。如果最后标志被接收或者当微片包含消息的第MTU字节时,这可能发生。以这种方式消耗的信用可以由运输组件600保持,直到分组被确认为止。
在通过与运输组件600相关联的LTL的实例接收分组方面,在一个示例中,从网络到达的分组通过分组头部中的字段与RCT条目(RCTE)匹配。每个RCTE存储最后序列号和将分组从运输组件600输出到弹性路由器604的虚拟信道(VC)。RCT中的多个条目可以指向相同的输出虚拟信道。可以在编译时对LTL支持的条目的数目进行配置。当分组从网络交换机到达本地端口上时,运输组件600可以确定分组与接收连接表(RCT)中的哪个条目配对。如果没有匹配RCT表存在,则可以丢弃分组。运输组件可以检查序列号匹配来自RCT条目的期望值。如果序列号大于RCT条目,则可以丢弃分组。如果序列号小于RCT条目所期望的,则可以生成确认(ACK)并且可以丢弃分组。如果其匹配,则运输组件可以抓取RCT条目的虚拟信道字段。如果用于该虚拟信道的可用弹性路由器(ER)信用的数目足以覆盖分组大小,则运输组件600可以接受分组。如果存在不足的信用,则运输组件600可以丢弃分组。一旦接受分组,则可以生成确认(ACK)并且可以增量RCT条目序列号。弹性路由器604可以使用分组头部来确定消息去往的最后端点。运输组件可能需要足够的信用以能够将全部分组的数据价值转移到弹性路由器604中以前进。为了帮助确保所有VC可以前进,运输组件600可以要求弹性路由器604提供用于每个VC的专用信用来处理用于每个VC的数据的至少一个MTU。在该示例中,无共享信用可以假定。
可以通过软件写入SCT/RCT条目。在一个示例中,软件可以保持连接设立的镜像。为了更新SCT或RCT条目,用户可以写入register_wrdata_in端口,其可以与对应于应用逻辑的软壳或环境中的寄存器挂钩。以下的表6是可以被用于更新SCT或者RCT中的条目的数据结构的格式的示例。
为了写入SCT条目,可以将scte_not_rcte设定为1,将sCTI值设定为针对正被写入到的SCT的索引的值,并且然后适当地设定表6中的数据结构的其他字段。相对于定时,register_write_in的值可以针对至少一个周期被切换为高。rCTI可以被设定为远程加速组件的RCT条目(在该示例中,rCTI被包括在发送到该加速组件的UDP分组中并且这是如何查找另一端的正确连接)。IPAddr可以被设定为目的地加速组件的IP地址。MacAddr可以被设定为与加速组件相同的LAN段上的主机的MAC地址或者用于远程主机的路由器的MAC地址。VirtualChannel可以通过根据从弹性路由器604到达的微片对其进行查找来设定。为了写入RCT条目,可以将scte_not_rcte设定为0,将rCTI值设定为正被写入到的RCT的索引的值,并且然后适当地设定表6中的数据结构的其他字段。rCTI可以被设定为发送加速组件的RCT条目。IPAddr可以被设定为发送加速组件的IP地址。出于写入RCT的目的,可以忽视MacAddr。VirtualChannel可以被设定为消息将被发送到弹性路由器604的信道。
作为示例,为了建立从节点A(例如,运输组件A(10.0.0.1))到节点B(例如,运输组件B(10.0.0.2))的单向链路,可以:(1)在运输组件A上创建SCTE{sCTI:1,rCTI:4,IP:10.0.0.2,VC:1,Mac:01-02-03-04-05-06};以及(2)在运输组件B上创建RCTE{rCTI:4,sCTI:1,IP:10.0.0.1,VC:2}。在该示例中,这将取得从具有DestIP==10.0.0.2和VC==1的运输组件A上的弹性路由器到达的消息并且将其发送到分组中的运输组件B。分组头部将使rCTI字段设定为4(从SCT读取的rCTI值)。运输组件B将访问其RCT条目4,并且获悉消息应当在VC 2上被输出。其还将生成返回到运输组件A的ACK。在该分组中,sCTI字段将具有值1(从读取自RCT的sCTI值填充的)。
与运输组件600相关联的LTL的实例可以缓冲所有被发送的分组,直到其从接收加速组件接收到确认(ACK)为止。如果用于连接的ACK不在可配置的超时时段内到达,则可以重新传送分组。在该示例中,将重新传送从最旧分组开始的所有未确认分组。属于给定SCT的分组的丢弃可以不变更任何其他连接的行为——即,可以不重新传送用于其他连接的分组。在一个示例中,因为LTL实例可以要求可靠通信信道并且分组可能有时在网络上丢失,所以可以使用基于超时的重试机制。
如果分组未在某个时间段内接收确认,则其可以被重新传送。超时时段可以经由配置参数来设定。一旦超时发生,则运输组件600可以调节用于该流的拥塞分组间间隙。
运输组件600还可以提供拥塞控制。如果LTL实例将数据传送到不能以全线路速率吸收流量的接收器,则拥塞控制功能性可以允许其优雅地减少正被发送到目的地节点的分组的频率。每个LTL连接可以具有控制流中的分组的传输之间的最小数目周期的相关联的分组间间隙状态。在创建新连接时,IPG可以被设定为1,这有效地允许任何可用带宽的完全使用。如果超时、ECN通知或者NACK在流上发生,则延迟可以乘以cfg.throttle_credit_multiple参数(参见表3)或增加cfg.throttle_credits_per_scrub参数(参见表3;取决于选择线性或指数退避)。所接收到的每个ACK可以从IPG减去cfg.throttle_credits_per_scrub参数(参见表3)或者将IPG除以cfg.throttle_credit_multiple参数(参见表3;取决于选择线性或指数恢复)。LTL实例可以每个预定时间段不增加流的IPG超过一次;例如,不超过每2微秒(在该示例中,这可以由cfg.throttle_scrub_delay参数控制(参见表3))。
与LTL的一个示例一致,运输组件600可以尝试重传128次。如果在128次重试之后分组仍然未确认,则分组可以丢弃并且缓冲器释放。除非设定disable_timeouts配置位,否则运输组件600还可以清理用于该连接的SCTE以防止进一步的消息和分组被传送。在该示例中,在这时,没有数据可以在链路伙伴之间交换,因为其序列号将不同步。连接将需要重新建立。
当与运输组件600相关联的LTL实例成功接收到分组时,其将生成确认(例如,具有ACK标志位集的空有效负载分组)。确认(ACK)可以包括告诉发送器成功接收的最后分组的序列号和发送者应当使ACK归功于的SCTI(该值可以被存储在ACK发生器的RCT中)。根据LTL的一个示例,以下规则可以被用于生成ack:(1)如果RX序列号匹配预期的序列号(在RCT中),则利用接收到的序列号生成ACK;(2)如果RX序列号小于预期的序列号,则丢弃分组,但是生成具有最高接收到的序列号的ACK(这可以覆盖其中分组被发送两次的情况(也许由于超时)但是然后正确地接收);和(3)如果RX序列号大于预期的序列号,则丢弃分组并且不生成ACK。
与运输组件600相关联的LTL的实例可以在某些条件下生成NACK。这些可以是利用ACK和NACK标志位集二者来标记的分组。NACK可以是用于发送器重新传送特定分组和所有后续分组的请求。
在一个示例中,在两个条件下,运输组件600可以要求NACK的生成:(1)如果分组由于接受全部分组的不足的弹性路由器信用而被丢弃,则一旦存在足够的信用,传输分组600就可以发送NACK一次;或者(2)如果分组由于另一发送器当前保持目的地虚拟信道上的锁而被丢弃,则一旦VC锁被释放,运输组件600就可以发送NACK一次。
当LTL端点正从多个发送器接收流量时,接收器可以维持可以跟踪哪些发送器使其分组丢弃的侧数据结构每VC(VCLockQueue),因为在特定VC上正接收另一消息。该侧数据结构可以被用来通过显式重传请求(NACK)协调多个发送器。
在一个示例中,一旦与运输组件600相关联的LTL的实例开始在特定VC上接收消息,该VC就被锁定到该单个发送器,直到该消息的所有分组已经被接收为止。如果另一发送器试图当其被锁定时或当不存在足够的ER信用可用时在相同VC上发送分组,则分组将被丢弃并且接收器将被放置在VCLockQueue上。一旦锁被释放或存在足够的ER信用,LTL实例就将弹出VCLockQueue并且将重传请求(NACK)发送给被放置在VCLockQueue中的下一发送器。在从VCLockQueue弹出之后,可以对发送器给予用于接下来的200000个周期(~1.15ms)的最高优先级。在这200000个周期期间,将丢弃来自相同VC上的其他发送器的分组。这可以确保已经使分组丢弃的所有发送器将最终得到发送其消息的机会。
当接收器丢弃发送器的分组时,因为另一发送器具有VC锁,接收器可以将发送器(其使其分组丢弃)放置在VCLockQueue上并且发送还包括XOFF标志的NACK,这指示发送器在一些时间内不应当尝试重新传送(由cfg.xoff_period参数指示的)。如果接收器没有ER信用,则NACK还可以包括拥塞标志。
当发送器接收具有XOFF标志的NACK时,其可以每退避时段(例如,xoff_period)延迟下一分组。如果NACK不包括拥塞标志(即,丢弃不归因于不足的信用而是归因于VC锁定),那么发送器可以记录VC锁定对于该流有效。当流已经使VC锁定启用时,发送器可能需要确保在完成每个消息之后减速,因为其知道后续消息的分组将被丢弃,因为其与接下来将接收VC锁的其他发送器竞争。然而,在该示例中,发送器将需要确保在减速之前发送后续消息的第一分组(即使发送器知道该第一分组将被丢弃)以确保其被放置在VCLockQueue中。
图7示出了根据一个示例的用于使用运输组件处理消息来提供服务的方法的流程图700。在一个示例中,对应于服务(诸如搜索结果排序服务)的应用逻辑(例如,图6的应用逻辑608)可以被分割并且映射为多个加速组件的角色。如先前所描述的,应用逻辑可以被概念化为包括应用域(例如,“作用”)。应用域或作用可以表示被包括在展开在多个加速组件上面的组成服务中的功能性的一部分。一组加速组件中的每个加速组件处的作用可以被链接在一起以创建为应用域提供服务加速的组。每个应用域可以托管应用逻辑来执行服务特定任务(诸如用于排序文档、加密数据、压缩数据、促进计算机视觉、促进语音翻译、机器学习等的功能性的一部分)。步骤702可以包括从主机接收消息以执行对应于服务的任务。步骤704可以包括将消息转发给加速组件的多级管线的头处的加速组件,其中加速组件可以与第一交换机相关联。因此,当用于与服务相关联的功能的请求(例如,排序请求)以PCI快速消息的形式从主机到达时,其可以被转发到加速组件的多级管线的头。在步骤706中,接收消息的加速组件可以确定消息是否用于头处的加速组件。如果消息用于管线级的头处的加速组件,则管线级的头处的加速组件可以处理加速组件处的消息。作为该步骤的一部分,弹性路由器(例如,图6的弹性路由器604)可以将消息直接地转发给角色。在一个示例中,LTL分组格式(例如,如在表6中所示)可以包括广播标志(例如,如在表6中所示的标志头部下的位3)和重传标志(例如,如在表6中所示的标志头部下的位2)。广播标志可以向加速组件发信号通知消息旨在用于多个加速组件。重传标志可以向加速组件指示请求消息的重传。在这两种情况下,LTL分组格式可以包括列出用于(多个)特定目的地的IP地址的头部。因此,当加速组件接收具有广播标志集的消息时,在步骤712中,加速组件(例如,使用运输组件600)可以将消息作为点对点消息传送到加速组件的所选择的集合,其中每个加速组件与不同的架顶(TOR)交换机相关联。在一个示例中,点对点消息使用层3功能性来传送。在该示例中,当运输组件600接收具有广播标志集的分组时(例如,点对点消息的一部分),其可以处理目的地列表;如果其包含超过仅其自己的IP地址,则其将分组添加到其自己的传送缓冲器,通过目的地中的每个目的地设立位字段以跟踪接收并且然后开始逐个传送到每个接收器(在没有广播或重传字段的情况下)。目的地加速组件可以基于成功接收来确认(使用ACK)每个分组,并且发送器将标记位字段中的适当的位。一旦分组被所有目的地确认,就可以释放发送缓冲器。
接下来,在步骤714中,加速组件的集合中的每一个可以使用数据链路层功能性将该消息广播到与相应TOR交换机相关联的任何其他加速组件。数据链路层功能性的示例可以是层2以太网广播分组。在该示例中,当运输组件600接收具有广播标志集的分组时(例如,点对点消息的一部分),其可以处理目的地列表;如果其包含超过仅其自己的IP地址,则其将分组添加到其自己的传送缓冲器,通过目的地中的每个目的地设立位字段以跟踪接收并且然后将层2以太网广播(以及广播标志和目的地列表)发送到共享共同TOR交换机的所有加速组件。目的地加速组件可以基于成功接收来确认(使用ACK)每个分组,并且发送器将标记位字段中的适当的位。一旦分组被所有目的地确认,就可以释放发送缓冲器。虽然图7示出了以特定次序列出的特定数目的步骤,但是可以存在更少或更多的步骤并且可以以不同的次序执行这样的步骤。
加速组件可以一起被分组为图形的一部分。被分组的加速组件不需要物理地接近彼此;相反,其可以与数据中心的不同的部分相关联并且仍然通过将其链接作为加速平面的一部分而被一起分组。在一个示例中,图形可以具有某个网络拓扑,这取决于与TOR交换机中的哪些相关联的加速组件中的哪些被耦合一起以加速服务。网络拓扑可以基于从用于服务的服务管理器接收到的配置信息动态地被创建。服务管理器可以是与服务相关联的较高层软件。在一个示例中,网络拓扑可以基于与将加速平面和软件平面互连的网络(例如,网络120)相关联的至少一个性能度量而被动态地调节,该网络包括被配置为执行对应于至少一个服务的指令的主机组件。服务管理器可以使用遥测服务来监测网络性能。网络性能度量可以至少基于至少一个服务的要求基本上实时地被选择。该至少一个网络性能度量可以包括由对应于至少一个服务的服务管理器或者应用逻辑指定的延时、带宽或任何其他性能度量。
在一个示例中,加速组件可以使用基于树的传输过程广播消息,该基于树的传输过程包括用于经由针对共享TOR交换机的加速组件的层3和层2以太网广播而被连接的加速组件的点对点链路。树可以是两级或者可以具有更多级,这取决于由互连加速组件的网络施加的带宽限制。
图8示出了根据一个示例的用于传送消息的方法的流程图。在步骤802中,与第一TOR交换机相关联的第一加速组件可以从主机接收消息。如先前所讨论的,加速组件可以包括处理消息的运输组件(例如,图4的430的运输组件,其相对于图6的运输组件600进一步被描述)。在步骤804中,使用网络层功能性(例如,层3功能性),第一加速组件可以将消息传送到与不同于第一TOR交换机的第二TOR交换机相关联的第二加速组件。在步骤806中,使用网络层功能性(例如,层3功能性),第一加速组件可以将消息传送到与不同于第一TOR交换机和第二TOR交换机的第三TOR交换机相关联的第三加速组件。在该示例中,当运输组件600接收具有广播标志集的分组时(例如,接收到的消息的一部分),其可以处理目的地列表;如果其包含超过仅其自己的IP地址,则其将分组添加到其自己的传送缓冲器,通过目的地中的每个目的地设立位字段以跟踪接收并且然后开始逐个传送到每个接收器(在没有广播或重传字段的情况下)。目的地加速组件可以基于成功接收来确认(使用ACK)每个分组,并且发送器将标记位字段中的适当的位。一旦分组被所有目的地确认,就可以释放发送缓冲器。
在步骤810中,使用数据链路层功能性(例如,层2以太网广播功能性),第二加速组件可以将消息广播给与第二TOR交换机相关联的其他加速组件。在该示例中,当运输组件600接收具有广播标志集的分组时(例如,点对点消息的一部分),其可以处理目的地列表;如果其包含超过仅其自己的IP地址,则其将分组添加到其自己的传送缓冲器,通过目的地中的每个目的地设立位字段以跟踪接收并且然后将层2以太网广播(以及广播标志和目的地列表)发送到共享共同TOR交换机的所有加速组件。目的地加速组件可以基于成功接收来确认(使用ACK)每个分组,并且发送器将标记位字段中的适当的位。一旦分组被所有目的地确认,就可以释放发送缓冲器。
在步骤810中,使用数据链路层功能行(例如,层2以太网广播功能性),第三加速组件可以将消息广播给与第三TOR交换机相关联的其他加速组件。在该示例中,当运输组件600接收具有广播标志集的分组时(例如,点对点消息的一部分),其可以处理目的地列表;如果其包含超过仅其自己的IP地址,则其将分组添加到其自己的传送缓冲器,通过目的地中的每个目的地设立位字段以跟踪接收并且然后将层2以太网广播(以及广播标志和目的地列表)发送到共享共同TOR交换机的所有加速组件。目的地加速组件可以基于成功接收来确认(使用ACK)每个分组,并且发送器将标记位字段中的适当的位。一旦分组被所有目的地确认,就可以释放发送缓冲器。虽然图8示出了以特定次序列出的特定数目的步骤,但是可以存在更少或更多的步骤并且可以以不同的次序执行这样的步骤。
总之,提供了一种系统,包括:软件平面,包括被配置为执行对应于至少一个服务的指令的多个主机组件;以及加速平面,包括可配置为加速至少一个服务的多个加速组件。系统还可以包括被配置为将软件平面和加速平面互连的网络,网络可以包括:与多个加速组件的第一子集相关联的第一架顶(TOR)交换机、与多个加速组件的第二子集相关联的第二TOR交换机、以及与多个加速组件的第三子集相关联的第三TOR交换机,其中多个加速组件的第一子集中的任何加速组件可配置为将点对点消息传送到多个加速组件的第二子集中的任何加速组件并且将点对点消息传送到多个加速组件的第三子集中的任何加速组件,并且其中多个加速组件的第二子集中的任何加速组件可配置为将点对点消息广播到多个加速组件的第二子集的全部加速组件,并且其中多个加速组件的第三子集中的任何加速组件可配置为将点对点消息广播到多个加速组件的第三子集的全部加速组件。点对点消息可以使用层3功能性来传送。点对点消息可以使用层2以太网广播功能性来广播。在不依赖于来自除网络的层2之外的网络的较高层的任何广播支持或者来自除网络的层2之外的网络的较高层的任何多播支持的情况下,可以广播点对点消息。多个加速组件的第一子集中的任何加速组件可以被配置为动态地创建网络拓扑,该网络拓扑包括多个加速组件的第二子集和多个加速组件的第三子集中的任何加速组件。多个加速组件的第一子集中的任何加速组件还可以被配置为基于与被配置为将软件平面和加速平面互连的网络相关联的至少一个性能度量,来动态地调节网络拓扑。至少一个网络性能度量至少基于至少一个服务的要求被多个加速组件的第一子集中的任何加速组件基本上实时地选择。至少一个网络性能度量可以包括由对应于至少一个服务的应用逻辑指定的延时、带宽或任何其他性能度量。
在另一示例中,本公开涉及一种用于允许与第一架顶(TOR)交换机相关联的第一多个加速组件之间的第一加速组件将消息传送到可配置为针对至少一个服务提供服务加速的加速平面中的其他加速组件的方法。方法可以包括第一加速组件将点对点消息传送到与不同于第一TOR交换机的第二TOR交换机相关联的第二加速组件,以及与不同于第一TOR交换机和第二TOR交换机的第三TOR交换机相关联的第三加速组件。方法还可以包括第二加速组件将点对点消息广播到与第二TOR交换机相关联的第二多个加速组件的全部加速组件。方法还可以包括第三加速组件将点对点消息广播到与第三TOR交换机相关联的第三多个加速组件的全部加速组件。第一加速组件可以使用层3功能性来传送点对点消息。第二加速组件和第三加速组件中的每一个可以使用层2以太网广播功能性来广播点对点消息。方法还可以包括基于与将加速平面和软件平面互连的网络相关联的至少一个性能度量动态地调节网络拓扑,该网络包括被配置为执行对应于至少一个服务的指令的多个主机组件。至少一个网络性能度量至少基于至少一个服务的要求被多个加速组件的第一子集中的任何加速组件基本上实时地选择。至少一个网络性能度量可以包括由对应于至少一个服务的应用逻辑指定的延时、带宽或任何其他性能度量。
在又一示例中,本公开涉及一种加速组件,其用于在与第一架顶(TOR)交换机相关联的第一多个加速组件之间使用以将消息传送到可配置为针对至少一个服务提供服务加速的加速平面中的其他加速组件。加速组件可以包括运输组件,其被配置为将第一点对点消息传送到与不同于第一TOR交换机的第二TOR交换机相关联的第二加速组件,以及与不同于第一TOR交换机和第二TOR交换机的第三TOR交换机相关联的第三加速组件。运输组件还可以被配置为将第二点对点消息广播到与第二TOR交换机相关联的第二多个加速组件的全部加速组件以及与第三TOR交换机相关联的第三多个加速组件的全部加速组件。点对点消息可以使用层3功能性来传送。点对点消息可以使用层2以太网广播功能性来广播。加速组件还可以被配置为在不依赖于用于来自除网络的层2之外的网络的较高层的广播或者多播的任何支持的情况下,广播将加速平面中的加速组件互连的网络中的第二点对点消息。
将理解到,在本文中所描绘的系统、方法、模块和组件仅是示例性的。备选地或者另外,可以至少部分地由一个或多个硬件逻辑组件执行在本文中所描述的功能性。例如且不限于,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。在抽象但是仍然明确的意义上,实现相同功能性的组件的任何布置有效地“关联”,使得期望的功能性被实现。因此,在本文中被组合为实现特定功能性的任何两个部件可以被看作彼此“相关联”,使得期望的功能性被实现而不管架构或者中间部件。同样地,这样相关联的任何两个组件还可以被视为“适当地连接”、或者“耦合”到彼此以实现期望的功能性。
与在本公开中所描述的一些示例相关联的功能性还可以包括被存储在非瞬态介质中的指令。如本文所使用的术语“非瞬态介质”指代存储使得机器以特定的方式操作的数据和/或指令的任何介质。示例性非瞬态介质包括非易失性介质和/或易失性介质。非易失性介质包括例如硬盘、固态驱动器、磁盘或者磁带、光盘或者磁带、闪速存储器、EPROM、NVRAM、PRAM或者其他这样的介质或者这样的介质的联网版本。易失性介质包括例如动态存储器,诸如DARM、SRAM、高速缓存或者其他这样的介质。非瞬态介质与传输介质不同,但是可以结合传输介质使用。传输介质被用于传递至或自机器的数据和/或指令。示例性传输介质包括同轴电缆、光纤电缆、铜线和无线介质(诸如无线电波)。
此外,本领域的技术人员将认识到,上文所描述的操作的功能性之间的边界仅是说明性的。多个操作的功能性可以被组合为单个操作,和/或单个操作的功能性可以被分布在附加操作中。而且,备选实施例可以包括特定操作的多个实例,并且操作的次序可以在各种其他实施例中变更。
虽然本公开提供特定示例,但是在不脱离如下面权利要求中阐述的本公开的范围的情况下,可以做出各种修改和改变。相应地,说明书和附图将以说明性而不是限制性意义来理解,并且所有这样的修改旨在被包括在本公开的范围内。相对于特定示例在本文中所描述的任何益处、优点或者问题的方案不旨在被解释为任何或全部权利要求的关键、必须或基本特征或元素。
此外,如本文所使用的术语“一”或“一个”被定义为一个或超过一个。而且,权利要求中的介绍性短语(诸如“至少一个”和“一个或多个”)的使用不应当被解释为暗示即使当相同权利要求包括介绍性短语“一个或多个”或“至少一个”和不定冠词(诸如“一”或“一个”)时,通过不定冠词“一”或“一个”介绍另一权利要求元素也将包含这样的介绍的权利要求元素的任何特定权利要求限于包含仅一个这样的元素的发明。这种情况同样适用于定冠词的使用。
除非另有说明,否则诸如“第一”和“第二”的术语被用来任意地在这样的术语描述的元素之间进行区分。因此,这些术语不必旨在指示这样的元素的时间或者其他优先化。
Claims (20)
1.一种用于通过加速组件传输消息的系统,包括:
软件平面,其包括被配置为执行对应于至少一个服务的指令的多个主机组件;
加速平面,其包括可配置为加速所述至少一个服务的多个加速组件;以及
网络,其被配置为将所述软件平面和所述加速平面互连,所述网络包括:与所述多个加速组件的第一子集相关联的第一架顶TOR交换机、与所述多个加速组件的第二子集相关联的第二TOR交换机、以及与所述多个加速组件的第三子集相关联的第三TOR交换机,其中所述多个加速组件的所述第一子集中的任何加速组件可配置为将点对点消息传送到所述多个加速组件的所述第二子集中的任何加速组件并且将所述点对点消息传送到所述多个加速组件的所述第三子集中的任何加速组件,并且其中所述多个加速组件的所述第二子集中的任何加速组件可配置为将所述点对点消息广播到所述多个加速组件的所述第二子集的全部加速组件,并且其中所述多个加速组件的所述第三子集中的任何加速组件可配置为将所述点对点消息广播到所述多个加速组件的所述第三子集的全部加速组件。
2.根据权利要求1所述的系统,其中所述点对点消息使用层3功能性来传送。
3.根据权利要求1所述的系统,其中所述点对点消息使用层2以太网广播功能性来广播。
4.根据权利要求1所述的系统,其中所述多个加速组件的所述第一子集中的任何加速组件被配置为动态地创建网络拓扑,所述网络拓扑包括所述多个加速组件的所述第二子集和所述多个加速组件的所述第三子集中的任何加速组件。
5.根据权利要求4所述的系统,其中所述多个加速组件的所述第一子集中的所述任何加速组件还被配置为基于与被配置为将所述软件平面和所述加速平面互连的所述网络相关联的至少一个性能度量,来动态地调节所述网络拓扑。
6.根据权利要求5所述的系统,其中所述至少一个网络性能度量至少基于所述至少一个服务的要求被所述多个加速组件的所述第一子集中的所述任何加速组件基本上实时地选择。
7.根据权利要求6所述的系统,其中所述至少一个网络性能度量包括由对应于所述至少一个服务的应用逻辑指定的延时、带宽或任何其他性能度量。
8.根据权利要求1所述的系统,其中在不依赖于来自除所述网络的层2之外的所述网络的较高层的任何广播支持或者来自除所述网络的所述层2之外的所述网络的所述较高层的任何多播支持的情况下,所述点对点消息被广播。
9.一种用于允许与第一架顶TOR交换机相关联的第一多个加速组件之间的第一加速组件将消息传送到加速平面中的其他加速组件的方法,所述其他加速组件可配置为针对至少一个服务提供服务加速,所述方法包括:
所述第一加速组件将点对点消息传送到与不同于所述第一TOR交换机的第二TOR交换机相关联的第二加速组件,以及与不同于所述第一TOR交换机和所述第二TOR交换机的第三TOR交换机相关联的第三加速组件;
所述第二加速组件将所述点对点消息广播到与所述第二TOR交换机相关联的第二多个加速组件的全部加速组件;以及
所述第三加速组件将所述点对点消息广播到与所述第三TOR交换机相关联的第三多个加速组件的全部加速组件。
10.根据权利要求9所述的方法,还包括所述第一加速组件使用层3功能性来传送所述点对点消息。
11.根据权利要求9所述的方法,还包括所述第二加速组件和所述第三加速组件中的每个加速组件使用层2以太网广播功能性来广播所述点对点消息。
12.根据权利要求11所述的方法,还包括动态地创建网络拓扑,所述网络拓扑包括所述其他加速组件中的任何其他加速组件,所述其他加速组件包括所述第二多个加速组件和所述第三多个加速组件。
13.根据权利要求12所述的方法,还包括基于与将所述加速平面和软件平面互连的网络相关联的至少一个性能度量,来动态地调节所述网络拓扑,所述软件平面包括被配置为执行对应于所述至少一个服务的指令的多个主机组件。
14.根据权利要求13所述的方法,其中所述至少一个网络性能度量至少基于所述至少一个服务的要求被基本上实时地选择。
15.根据权利要求14所述的方法,其中所述至少一个网络性能度量包括由对应于所述至少一个服务的应用逻辑指定的延时、带宽或任何其他性能度量。
16.根据权利要求9所述的方法,还包括在不依赖于来自除将所述加速平面中的加速组件互连的网络的层2之外的所述网络的较高层的用于广播或多播的任何专用支持的情况下,广播所述网络中的所述点对点消息。
17.一种用于在与第一架顶TOR交换机相关联的第一多个加速组件之间使用以将消息传送到加速平面中的其他加速组件的加速组件,所述其他加速组件可配置为针对至少一个服务提供服务加速,所述加速组件包括:
运输组件,其被配置为:
将第一点对点消息传送到与不同于所述第一TOR交换机的第二TOR交换机相关联的第二加速组件,以及与不同于所述第一TOR交换机和所述第二TOR交换机的第三TOR交换机相关联的第三加速组件;以及
将第二点对点消息广播到与所述第二TOR交换机相关联的第二多个加速组件的全部加速组件以及与所述第三TOR交换机相关联的第三多个加速组件的全部加速组件。
18.根据权利要求17所述的加速组件,其中所述加速组件被配置为使用层3功能性来传送所述第一点对点消息。
19.根据权利要求18所述的加速组件,其中所述加速组件被配置为使用层2以太网广播功能性来广播所述第二点对点消息。
20.根据权利要求17所述的加速组件,其中所述加速组件还被配置为在不依赖于来自除将所述加速平面中的加速组件互连的网络的层2之外的所述网络的较高层的用于广播或者多播的任何支持的情况下,广播所述网络中的所述第二点对点消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110655224.6A CN113315722A (zh) | 2017-01-02 | 2017-12-19 | 通过被配置为加速服务的加速组件的消息传输 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/396,779 | 2017-01-02 | ||
US15/396,779 US10326696B2 (en) | 2017-01-02 | 2017-01-02 | Transmission of messages by acceleration components configured to accelerate a service |
PCT/US2017/067150 WO2018125652A1 (en) | 2017-01-02 | 2017-12-19 | Transmission of messages by acceleration components configured to accelerate a service |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110655224.6A Division CN113315722A (zh) | 2017-01-02 | 2017-12-19 | 通过被配置为加速服务的加速组件的消息传输 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110121868A CN110121868A (zh) | 2019-08-13 |
CN110121868B true CN110121868B (zh) | 2021-06-18 |
Family
ID=61022412
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110655224.6A Pending CN113315722A (zh) | 2017-01-02 | 2017-12-19 | 通过被配置为加速服务的加速组件的消息传输 |
CN201780081851.5A Active CN110121868B (zh) | 2017-01-02 | 2017-12-19 | 通过被配置为加速服务的加速组件的消息传输 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110655224.6A Pending CN113315722A (zh) | 2017-01-02 | 2017-12-19 | 通过被配置为加速服务的加速组件的消息传输 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10326696B2 (zh) |
EP (1) | EP3563535B8 (zh) |
CN (2) | CN113315722A (zh) |
ES (1) | ES2856155T3 (zh) |
WO (1) | WO2018125652A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10320677B2 (en) | 2017-01-02 | 2019-06-11 | Microsoft Technology Licensing, Llc | Flow control and congestion management for acceleration components configured to accelerate a service |
CN108984309A (zh) * | 2018-08-07 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种rack服务器资源池化系统及方法 |
US10922250B2 (en) | 2019-04-30 | 2021-02-16 | Microsoft Technology Licensing, Llc | Monitoring and steering service requests to acceleration components |
WO2020236275A1 (en) | 2019-05-23 | 2020-11-26 | Cray Inc. | System and method for facilitating dynamic command management in a network interface controller (nic) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546383A (zh) * | 2010-12-29 | 2012-07-04 | 丛林网络公司 | 交换结构系统上部署的标准协议验证机制的方法和装置 |
CN105162721A (zh) * | 2015-07-31 | 2015-12-16 | 重庆大学 | 基于软件定义网络的全光互连数据中心网络系统及数据通信方法 |
EP3057334A1 (en) * | 2015-02-16 | 2016-08-17 | Juniper Networks, Inc. | Multi-stage switch fabric fault detection and handling |
CN106155959A (zh) * | 2015-05-11 | 2016-11-23 | 广达电脑股份有限公司 | 数据传输方法及数据传输系统 |
CN106230952A (zh) * | 2016-08-05 | 2016-12-14 | 王楚 | 监控大数据存储平台网络架构 |
CN107533496A (zh) * | 2015-04-17 | 2018-01-02 | 微软技术许可有限责任公司 | 本地恢复加速部件处的功能 |
Family Cites Families (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0948168A1 (en) | 1998-03-31 | 1999-10-06 | TELEFONAKTIEBOLAGET L M ERICSSON (publ) | Method and device for data flow control |
US6505253B1 (en) | 1998-06-30 | 2003-01-07 | Sun Microsystems | Multiple ACK windows providing congestion control in reliable multicast protocol |
US6622127B1 (en) | 1999-05-11 | 2003-09-16 | Kaiser Foundation Hospitals | Order allocation to select from inventory locations stocking few units of inventory |
US8363744B2 (en) | 2001-06-10 | 2013-01-29 | Aloft Media, Llc | Method and system for robust, secure, and high-efficiency voice and packet transmission over ad-hoc, mesh, and MIMO communication networks |
US7003118B1 (en) | 2000-11-27 | 2006-02-21 | 3Com Corporation | High performance IPSEC hardware accelerator for packet classification |
EP1690394A2 (en) * | 2003-10-30 | 2006-08-16 | Teak Networks, Inc. | Nonblocking and deterministic multirate multicast packet scheduling |
CN1674576B (zh) | 2004-06-03 | 2010-04-28 | 华为技术有限公司 | 一种网络设备间传送策略信息的方法 |
US7570639B2 (en) | 2004-11-30 | 2009-08-04 | Broadcom Corporation | Multicast trunking in a network device |
US7492710B2 (en) | 2005-03-31 | 2009-02-17 | Intel Corporation | Packet flow control |
US7606147B2 (en) | 2005-04-13 | 2009-10-20 | Zeugma Systems Inc. | Application aware traffic shaping service node positioned between the access and core networks |
WO2007004558A1 (ja) | 2005-07-06 | 2007-01-11 | Nec Corporation | 帯域制御回路及びそれに用いる帯域制御方法 |
US9621375B2 (en) | 2006-09-12 | 2017-04-11 | Ciena Corporation | Smart Ethernet edge networking system |
US7640023B2 (en) | 2006-05-03 | 2009-12-29 | Cisco Technology, Inc. | System and method for server farm resource allocation |
US8027284B2 (en) | 2006-11-27 | 2011-09-27 | Ntt Docomo, Inc. | Method and apparatus for reliable multicasting in wireless relay networks |
US7839777B2 (en) | 2007-09-27 | 2010-11-23 | International Business Machines Corporation | Method, system, and apparatus for accelerating resolution of network congestion |
US20100036903A1 (en) | 2008-08-11 | 2010-02-11 | Microsoft Corporation | Distributed load balancer |
US8910153B2 (en) | 2009-07-13 | 2014-12-09 | Hewlett-Packard Development Company, L. P. | Managing virtualized accelerators using admission control, load balancing and scheduling |
US8514876B2 (en) | 2009-08-11 | 2013-08-20 | Cisco Technology, Inc. | Method and apparatus for sequencing operations for an incoming interface check in data center ethernet |
US8914805B2 (en) | 2010-08-31 | 2014-12-16 | International Business Machines Corporation | Rescheduling workload in a hybrid computing environment |
US9088510B2 (en) | 2010-12-17 | 2015-07-21 | Microsoft Technology Licensing, Llc | Universal rate control mechanism with parameter adaptation for real-time communication applications |
EP3998755A1 (en) | 2010-12-29 | 2022-05-18 | Juniper Networks, Inc. | Methods and apparatus for standard protocol validation mechanisms deployed over a switch fabric system |
US8989009B2 (en) * | 2011-04-29 | 2015-03-24 | Futurewei Technologies, Inc. | Port and priority based flow control mechanism for lossless ethernet |
US8812727B1 (en) | 2011-06-23 | 2014-08-19 | Amazon Technologies, Inc. | System and method for distributed load balancing with distributed direct server return |
US20130318268A1 (en) | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Offloading of computation for rack level servers and corresponding methods and systems |
US9130764B2 (en) | 2012-05-31 | 2015-09-08 | Dell Products L.P. | Scaling up/out the number of broadcast domains in network virtualization environments |
US9374270B2 (en) | 2012-06-06 | 2016-06-21 | Juniper Networks, Inc. | Multicast service in virtual networks |
US10270709B2 (en) | 2015-06-26 | 2019-04-23 | Microsoft Technology Licensing, Llc | Allocating acceleration component functionality for supporting services |
US8953618B2 (en) | 2012-10-10 | 2015-02-10 | Telefonaktiebolaget L M Ericsson (Publ) | IP multicast service leave process for MPLS-based virtual private cloud networking |
US9253140B2 (en) | 2012-11-20 | 2016-02-02 | Cisco Technology, Inc. | System and method for optimizing within subnet communication in a network environment |
US9344493B1 (en) | 2013-07-11 | 2016-05-17 | Juniper Networks, Inc. | Server health monitoring for traffic load balancer |
US9231863B2 (en) | 2013-07-23 | 2016-01-05 | Dell Products L.P. | Systems and methods for a data center architecture facilitating layer 2 over layer 3 communication |
US9313134B2 (en) | 2013-10-15 | 2016-04-12 | Cisco Technology, Inc. | Leveraging hardware accelerators for scalable distributed stream processing in a network environment |
US9794079B2 (en) | 2014-03-31 | 2017-10-17 | Nicira, Inc. | Replicating broadcast, unknown-unicast, and multicast traffic in overlay logical networks bridged with physical networks |
US9294304B2 (en) | 2014-03-31 | 2016-03-22 | Juniper Networks, Inc. | Host network accelerator for data center overlay network |
US9760159B2 (en) | 2015-04-08 | 2017-09-12 | Microsoft Technology Licensing, Llc | Dynamic power routing to hardware accelerators |
US10296392B2 (en) | 2015-04-17 | 2019-05-21 | Microsoft Technology Licensing, Llc | Implementing a multi-component service using plural hardware acceleration components |
US10027543B2 (en) | 2015-04-17 | 2018-07-17 | Microsoft Technology Licensing, Llc | Reconfiguring an acceleration component among interconnected acceleration components |
US20160308649A1 (en) | 2015-04-17 | 2016-10-20 | Microsoft Technology Licensing, Llc | Providing Services in a System having a Hardware Acceleration Plane and a Software Plane |
US9792154B2 (en) | 2015-04-17 | 2017-10-17 | Microsoft Technology Licensing, Llc | Data processing system having a hardware acceleration plane and a software plane |
US9847936B2 (en) | 2015-06-25 | 2017-12-19 | Intel Corporation | Apparatus and method for hardware-accelerated packet processing |
US20160379686A1 (en) | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Server systems with hardware accelerators including stacked memory |
US20170111294A1 (en) | 2015-10-16 | 2017-04-20 | Compass Electro Optical Systems Ltd. | Integrated folded clos architecture |
US10552205B2 (en) | 2016-04-02 | 2020-02-04 | Intel Corporation | Work conserving, load balancing, and scheduling |
US10320677B2 (en) | 2017-01-02 | 2019-06-11 | Microsoft Technology Licensing, Llc | Flow control and congestion management for acceleration components configured to accelerate a service |
US10425472B2 (en) | 2017-01-17 | 2019-09-24 | Microsoft Technology Licensing, Llc | Hardware implemented load balancing |
-
2017
- 2017-01-02 US US15/396,779 patent/US10326696B2/en active Active
- 2017-12-19 ES ES17833038T patent/ES2856155T3/es active Active
- 2017-12-19 CN CN202110655224.6A patent/CN113315722A/zh active Pending
- 2017-12-19 WO PCT/US2017/067150 patent/WO2018125652A1/en active Application Filing
- 2017-12-19 EP EP17833038.7A patent/EP3563535B8/en active Active
- 2017-12-19 CN CN201780081851.5A patent/CN110121868B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546383A (zh) * | 2010-12-29 | 2012-07-04 | 丛林网络公司 | 交换结构系统上部署的标准协议验证机制的方法和装置 |
EP3057334A1 (en) * | 2015-02-16 | 2016-08-17 | Juniper Networks, Inc. | Multi-stage switch fabric fault detection and handling |
CN107533496A (zh) * | 2015-04-17 | 2018-01-02 | 微软技术许可有限责任公司 | 本地恢复加速部件处的功能 |
CN106155959A (zh) * | 2015-05-11 | 2016-11-23 | 广达电脑股份有限公司 | 数据传输方法及数据传输系统 |
CN105162721A (zh) * | 2015-07-31 | 2015-12-16 | 重庆大学 | 基于软件定义网络的全光互连数据中心网络系统及数据通信方法 |
CN106230952A (zh) * | 2016-08-05 | 2016-12-14 | 王楚 | 监控大数据存储平台网络架构 |
Also Published As
Publication number | Publication date |
---|---|
EP3563535B8 (en) | 2021-03-31 |
US20180191609A1 (en) | 2018-07-05 |
EP3563535B1 (en) | 2021-01-20 |
CN110121868A (zh) | 2019-08-13 |
CN113315722A (zh) | 2021-08-27 |
ES2856155T3 (es) | 2021-09-27 |
WO2018125652A1 (en) | 2018-07-05 |
EP3563535A1 (en) | 2019-11-06 |
US10326696B2 (en) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10791054B2 (en) | Flow control and congestion management for acceleration components configured to accelerate a service | |
US20220311544A1 (en) | System and method for facilitating efficient packet forwarding in a network interface controller (nic) | |
Birrittella et al. | Intel® omni-path architecture: Enabling scalable, high performance fabrics | |
US7633955B1 (en) | SCSI transport for fabric-backplane enterprise servers | |
JP5828966B2 (ja) | Pcieスイッチング・ネットワークにおけるパケット伝送を実現する方法、装置、システム、及び記憶媒体 | |
CN110121868B (zh) | 通过被配置为加速服务的加速组件的消息传输 | |
US9294569B2 (en) | Cell fabric hardware acceleration | |
US20210320820A1 (en) | Fabric control protocol for large-scale multi-stage data center networks | |
CN110915172A (zh) | 针对数据中心的接入节点 | |
US10922250B2 (en) | Monitoring and steering service requests to acceleration components | |
US20210297350A1 (en) | Reliable fabric control protocol extensions for data center networks with unsolicited packet spraying over multiple alternate data paths | |
US20210297351A1 (en) | Fabric control protocol with congestion control for data center networks | |
US8055818B2 (en) | Low latency queue pairs for I/O adapters | |
US6904545B1 (en) | Fault tolerant computing node having multiple host channel adapters | |
US20210297343A1 (en) | Reliable fabric control protocol extensions for data center networks with failure resilience | |
US20230359582A1 (en) | In-network collective operations | |
US20230379309A1 (en) | In-network compute operations utilizing encrypted communications | |
US20230393814A1 (en) | In-network compute operations | |
US20240163221A1 (en) | Management of packet transmission and responses | |
US20230379154A1 (en) | In-network compute operations utilizing encrypted communications | |
US20230388281A1 (en) | In-network compute operations utilizing encrypted communications | |
Shen et al. | A Lightweight Routing Layer Using a Reliable Link-Layer Protocol |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |