CN108476208A - 多路径传输设计 - Google Patents
多路径传输设计 Download PDFInfo
- Publication number
- CN108476208A CN108476208A CN201680076623.4A CN201680076623A CN108476208A CN 108476208 A CN108476208 A CN 108476208A CN 201680076623 A CN201680076623 A CN 201680076623A CN 108476208 A CN108476208 A CN 108476208A
- Authority
- CN
- China
- Prior art keywords
- data packet
- thread
- network
- data
- address
- 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.)
- Granted
Links
- 230000005540 biological transmission Effects 0.000 title claims description 62
- 238000013461 design Methods 0.000 title description 3
- 238000000034 method Methods 0.000 claims abstract description 62
- 238000004891 communication Methods 0.000 claims abstract description 58
- 238000003860 storage Methods 0.000 claims description 65
- 230000015654 memory Effects 0.000 claims description 58
- 238000012545 processing Methods 0.000 claims description 34
- 230000000694 effects Effects 0.000 claims description 12
- 238000012790 confirmation Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 8
- 239000010410 layer Substances 0.000 description 50
- 238000013500 data storage Methods 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 13
- 238000007726 management method Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 239000004744 fabric Substances 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000003139 buffering effect Effects 0.000 description 5
- 239000000835 fiber Substances 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000001413 cellular effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 239000012792 core layer Substances 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005194 fractionation Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006116 polymerization reaction Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000010009 beating Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000011248 coating agent Substances 0.000 description 1
- 238000000576 coating method Methods 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004217 heart function Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
- 230000003936 working memory Effects 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
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- 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/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
-
- 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/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- 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/24—Multipath
-
- 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/72—Routing based on the source address
-
- 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/74—Address processing for routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/10—Streamlined, light-weight or high-speed protocols, e.g. express transfer protocol [XTP] or byte stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Abstract
本文公开了一种方法,所述方法包括:从用户应用程序接收要使用通过网络的单个连接从源地址传输到目的地地址的数据;以及根据通信协议将所述数据分成多个数据包。对于所述多个数据包中的每个数据包,从多个细流中确定用于要在其中传输的所述数据包的相应细流;基于所述数据包的所述确定的细流,设置所述数据包中的由所述网络的网络交换机用于路由所述数据包的字段;以及经由所述确定的细流,发送所述数据包以通过所述网络进行传输。
Description
背景技术
在诸如数据中心之类的网络环境中,一个节点与另一个节点之间的数据流量可能非常大。因此,高速数据连接(例如InfiniBand(IB)、千兆以太网或光纤信道)被设计来处理繁重的数据流量。然而,随着数据量的不断增加以及因此对连接带宽和吞吐量的需求的增大,即使这些高速数据连接也可能会过载,从而导致网络拥塞。因此,希望进一步提高网络上数据传输的吞吐量,并通过更好地利用可用网络容量来避免网络拥塞。
附图说明
将参考附图描述根据本发明的各种实施方案,其中:
图1示出了用于数据中心环境的示例网络架构;
图2示出了高性能计算(HPC)环境;
图3示出了源端点和目的地端点之间的InfiniBand网络连接;
图4示出了源端点和目的地端点之间的InfiniBand连接中的队列对(QP);
图5示出了多级Clos网络;
图6示出了数据中心环境中的Clos网络;
图7示出了网络结构的拓扑结构;
图8示出了用于源端点与目的地端点之间的数据通信的多个细流;
图9示出了UDP/IP数据包报头;
图10示出了通过到网络的一个物理端口与多个目的地端点进行通信的源端点的框图;
图11示出了通过到网络的多个物理端口与多个目的地端点进行通信的源端点的框图;
图12是示出通过网络由多个细流在两个端点之间进行的数据通信的方法的流程图;
图13是网络适配器设备的框图;
图14示出了本文所描述的特征和系统的示例性架构,其包括根据一些实施方案的经由一个或多个网络连接的一个或多个服务提供商计算机和/或用户设备;以及
图15示出了其中可实施各种实施方案的环境。
具体实施方式
在以下描述中,将描述各种实施方案。出于说明的目的,阐述具体的配置和细节以便提供对实施方案的透彻理解。然而,本领域技术人员将清楚,实施方案可在没有具体细节的情况下实践。此外,众所周知的特征可被省略或简化以免使正描述的实施方案混淆。
如本文所使用,流或数据流通常指的是在某些情况下,按顺序遍历网络的相关联的数据包流。源端点上的用户应用程序可能希望通过网络将用户应用程序数据流发送到目的地端点。数据可以是一个或多个消息、一个或多个命令或一个或多个事务。在某些情况下,源端点和目的地端点可各自具有唯一的IP地址。在这种情况下,打算在单个TCP或UDP连接中从源IP地址传输到目的地IP地址的用户应用程序数据流可以被称为数据流或流。在其他一些情况下,多个端点可以共享一个IP地址,并且因此,多个端点之间的用户应用程序数据流可以在一对源IP地址和目的地IP地址之间的IP级别的数据流中多路传输。在这些情况下,打算在单个TCP或UDP连接中从源IP地址传输到目的地IP地址的来自多个端点的用户应用程序数据流可以被称为数据流或流,其中源IP地址由多个端点共享。在其他一些情况下,一个端点可能有多个IP地址,并且用户应用程序数据流可能打算使用多个IP地址通过多个路径发送。在这些情况下,打算在单个TCP或UDP连接中从源IP地址传输到目的地IP地址的用户应用程序数据流的每个部分都可以被称为数据流或流。
如同样本文使用,路径通常是指数据包在两个IP地址之间通过网络采取的路线。细流通常是指与在单个路径上传输的流或数据流相关联的一组数据包。
本公开的实施方案提供了用于高速数据传输的方法和系统,其可以在诸如数据中心环境之类的网络环境中的各种路径之间平衡负载,并且支持等价多路径(ECMP)路由,使得可以实现更好地将网络容量用于诸如数据中心、高性能计算(HPC)、存储区域网络(SAN)或局域网(LAN)之类的应用。
这些方法中的一些或全部可在配置有可执行指令的一个或多个计算机系统的控制下执行,且可通过硬件或其组合实现为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。代码可存储在计算机可读存储介质上,例如,呈包括可由一个或多个处理器执行的多个指令的计算机程序的形式。计算机可读存储介质可为非暂时性的。
本文所描述的技术包括通过操纵数据包报头中的字段,诸如为数据流的一些数据包分配数据包报头中的不同源端口,来将两个端点或两个IP地址之间的数据流分成多个细流,每个细流都采取通过网络的不同的路径,使得数据包可以路由到交换机的不同物理端口,并采取通过交换网络结构的不同的路径,而不使用不同的IP地址。可以控制细流的数量和一个细流中的数据包的数量,以避免使网络中的路径或节点过载。数据流拆分可以在网络接口卡或网络适配器设备处完成,使得用户应用程序或主机可能不需要知道拆分。数据包可以按顺序或乱序传递到目的地端点。可以由目的地端点上的应用程序,基于数据包报头中的信息,重新排序或重新组合由目的地端点从不同的细流接收到的数据包。
I.高速网络
以下部分描述了示例环境(例如数据中心)中的本公开的各种实施方案。应理解,本文所描述的方法和系统可以用于涉及通过网络中的交换结构进行数据通信的任何其他应用。
数据中心通常包括许多布置在标准化组件(机架)中的服务器,以有效利用空间和其他资源。每个机架都可以包括多个服务器,诸如16、32、64或更多的服务器。同一机架的服务器与不同机架的服务器之间的互连可以通过一个或多个交换结构来完成。交换结构可以包括接入层、汇聚层和核心层。接入层可以包括直接连接到同一机架(架顶式或ToR)或行末(EoR)的服务器的设备,如交换机。汇聚层可以包括汇聚接入层设备以提供接入层域之间的连接的设备,例如交换机。核心层可以包括将数据中心内或跨多个地理位置的多个汇聚层设备与外界相互连接的设备,例如路由器。
高性能计算、大数据、Web 2.0和搜索应用程序依赖于对用户生成的大量数据进行实时管理、理解和响应。随着越来越多的用户向越来越多的应用程序和平台馈送数据,数据不再以算术方式增长,而是呈指数级增长。为了跟上数据的增长,数据中心也需要增长,无论是在数据容量方面还是在访问和分析数据的速度方面。目前,可扩展数据中心通常包括采用硬件配置(计算机和存储集群)和软件配置的并行基础设施,并采用最具扩展性、高能效、高性能的互连基础设施。
图1示出了数据中心环境的示例网络架构100。网络架构100可以包括多个数据中心服务器102a-102d和一个或多个交换结构,用于各种数据中心互连。例如,如图1所示,服务器102a-102d可以往返于高性能计算(HPC)集群118、局域网(LAN)116或存储区域网络(SAN)114传输数据。
服务器102a-102d中的每一个都可以与接入层交换机104a、104b、104c或104d进行连接。每个接入层交换机都可以具有多个物理端口,使得数据可以在不同的输入端口进入,并交换到不同的输出端口。为了实现冗余以防接入层交换机故障,数据中心环境的网络架构还可以包括冗余服务器和接入层交换机(未示出)。服务器102a-102d与接入层交换机104a-104d之间的通信路径可以支持数据中心桥接或单独信道,诸如InfiniBand、数据中心以太网(DCE)、千兆以太网、光纤信道或以太网上的光纤信道(FCoE)。
接入层交换机104a-104d可以与汇聚层的汇聚层交换机连接。同样,可以为每个网络云使用至少两个汇聚层交换机,以实现冗余,以防交换机故障。例如,汇聚层交换机106a和106b可以是HPC兼容的,用于通过例如核心层112在接入层交换机104a和104b与HPC 118之间进行路由。接入层交换机104a和104b与汇聚层交换机106a和106b之间的通信路径可以是用于快速数据传输的InfiniBand连接。汇聚层交换机108可以用于在接入层交换机104c和SAN 114之间路由数据。接入层交换机104c与汇聚层交换机108和SAN 114之间的通信路径可以是光纤信道(FC)。汇聚层交换机110可以提供接入层交换机104d和LAN 116之间的路由。千兆以太网或数据中心以太网可用于将接入层交换机104d与汇聚层交换机110和LAN116连接。
HPC系统通过并行处理执行高级计算,从而能够更快地执行高度计算密集型任务,如气候研究、分子建模、物理模拟、密码分析、地球物理建模、汽车和航空航天设计、金融建模和数据挖掘。给定计算的执行时间取决于许多因素,例如中央处理单元(CPU)或图形处理单元(GPU)内核的数量及其利用率,以及互连性能、效率和可扩展性。高效的HPC系统通常采用数千个多处理器节点和高速存储系统之间的高带宽、低延时连接。
InfiniBand(IB)是一种计算机网络通信标准,在高性能计算中具有非常高的吞吐量和非常低的延时。它可以用于计算机或服务器之间和其内部的数据互连。InfiniBand还可以用作服务器和存储系统之间的直接或交换互连。InfiniBand的特性(例如零复制和远程直接存储器访问(RDMA))通过直接将数据从发送方存储器传输到接收方存储器而不涉及主处理器,帮助降低处理器开销。IB接口还可以用于以太网RDMA(RoCE),它使用与InfiniBand不同的低级基础设施,并且比InfiniBand更具可扩展性。
InfiniBand架构定义了用于互连处理节点、存储节点和I/O节点的交换式网络结构。InfiniBand网络可以包括交换机,诸如主机信道适配器(HCA)或目标信道适配器(TCA)之类的适配器以及用于进行通信的链路。对于通信,InfiniBand支持几种不同类型的传输服务(可靠连接、不可靠连接、可靠数据报和不可靠数据报)。
图2示出了使用InfiniBand结构210的高性能计算(HPC)环境200。InfiniBand结构210基于串行点对点链路的交换结构架构,其中InfiniBand链路可以连接到主要用于服务器或处理器节点中的主机信道适配器(HCA),或主要用于存储子系统或I/O机箱的目标信道适配器(TCA)。如图2所示,InfiniBand结构210包括多个交换机204a-204d,其可以布置在分层网络中,诸如胖树网络或Clos网络。交换机204a-204d可以连接到多个节点202a-202h,并在任何两个节点之间提供多条路径。在某些情况下,两个节点之间的路径数量可能超过1000、超过10,000、超过100,000或超过1,000,000。节点202a-202h可以是主机系统、处理器节点、存储子系统和I/O机箱的任何组合。InfiniBand结构210还可以包括一个或多个路由器,用于连接到其他网络208,例如其他InfiniBand子网、LAN、广域网(WAN)或因特网。
互连的交换机204a-204d和路由器206(如果存在的话)可以被称为交换结构、结构、网络结构或简单地称为网络。术语“结构”和“网络”在本文中可以互换使用。
InfiniBand或RoCE操作基于使要由通信硬件执行的指令排队的能力。可以有发送操作的工作队列和接收操作的工作队列。发送队列可以包括确定数据如何在请求方的存储器和接收方的存储器之间传送的指令。接收队列可以包括关于在何处存储已经接收到的数据的指令。如果提交了请求,则其指令被放置在适当的工作队列中,该工作队列可以按诸如先进先出(FIFO)之类的顺序执行。
主机信道适配器可以表示本地信道接口。信道接口可以包括向主机提供InfiniBand服务的硬件、固件和软件。在发送操作的情况下,信道适配器解释工作类型、创建消息、将其分段(如果需要)为多个数据包、添加路由信息,并将数据包发送到端口逻辑。端口逻辑负责通过结构中的链路,将数据包发送到其目的地。当数据包到达目的地时,接收端口逻辑验证数据包,信道适配器将在目的地接收到的数据包放在接收队列中,并对它们进行处理。如果需要,信道适配器可以创建一个确认(ACK),并将ACK发送回源主机。
发送工作队列(SQ)和接收工作队列(RQ)可以配对,以为通信创建唯一的实体-队列对(QP)。QP是基于存储器的抽象,通过应用程序和设备之间的直接存储器到存储器传输实现通信。应用程序不共享队列对。QP可以是在HCA的主机侧实现的消息传输引擎,并且是双向的。它可用于为用户或应用程序专用适配器资源,以绕过内核进行数据发送和接收操作。QP的发送队列和接收队列用于将消息缓存在工作队列元素(WQE)中,并将其传递给HCA。每个QP都有一个由信道适配器分配的队列对号码(QPN)。QPN在信道适配器内唯一标识QP。
图3示出了源端点302a和目的地端点302b之间的InfiniBand网络连接的框图300。源端点302a可以包括多个应用程序304a、内核306a和网络接口卡(NIC)或适配器308a。每个应用程序304a都可以包括与其关联的缓冲区310a,用于存储要发送或接收的消息。类似地,目的地端点302b可以包括多个应用程序304b、内核306b和网络接口卡(NIC)或适配器308b。每个应用程序304b都可以包括与其关联的缓冲区310b,用于存储要发送或接收的消息。可以通过InfiniBand结构350,在源端点302a上的应用程序304a和目的地端点302b上的应用程序304b之间创建QP。
在创建QP之后,可以使用远程数据存储器访问(RDMA)从源端点302a向目的地端点302b传输消息。RDMA允许InfiniBand结构上的服务器直接访问另一台服务器的存储器。RDMA的一个应用示例是数据库服务器集群。数据库服务器集群可以将RDMA代理添加到其核心功能中,从而允许在不同节点上运行的两个数据库示例彼此直接通信,绕过内核级别的所有通信操作,从而减少数据从永久存储装置复制到集群节点的RAM存储器中的次数。RDMA操作可以指定本地缓冲区、对等缓冲区的地址以及用于操纵远程对等缓冲区的访问权限。
图4示出了源端点上的客户端应用程序或进程402a与目的地端点上的远程应用程序或进程402b之间的InfiniBand连接中的队列对。InfiniBand通过使用执行工作队列,分担软件客户端的流量控制负荷。工作队列由客户端发起,然后,交由InfiniBand进行管理。对于设备之间的每个通信信道,可以在每一端分配工作队列对(WQP)。例如,客户端进程402a可以将事务放入工作队列条目或元素(WQE)404a中,然后,事务由源信道适配器408a从QP 410a中的发送队列416a进行处理,并发送到目的地端点上的远程进程402b。发送队列416a中的数据可以由传输引擎412a进行处理,并通过源信道适配器408a的端口414a发送到InfiniBand结构450。然后,数据可以由目的地信道适配器408b通过端口414b接收,由传输引擎412b进行处理,并且放入接收队列418b中。当目的地端点作出响应时,目的地信道适配器408b通过完成队列条目或事件(CQE)406a,将状态返回到客户端进程402a。源端点可以发布多个WQE,而源信道适配器408a可以处理每个通信请求。源信道适配器408a可以生成完成队列条目(CQE)406a,以按适当的优先顺序提供每个WQE的状态。这允许源端点在事务正在被处理时继续其他活动。
类似地,远程进程402b可以将事务放到WQE 404b中,然后,事务由目标信道适配器408b从QP 410b中的发送队列416b进行处理,并发送到源端点上的客户端进程402a。发送队列416b中的数据可以由传输引擎412b进行处理,并通过目的地信道适配器408b的端口414b发送到InfiniBand结构450。然后,数据可以由源信道适配器408a通过端口414a接收,由传输引擎412a进行处理,并放入接收队列418a中。源端点可以通过经由CQE 406b,将状态返回到远程进程402b来进行响应。
InfiniBand结构450可以是诸如图2中所述的结构210之类的结构。在使用生成树协议构建的网络中或第3层路由核心网络中,通常从一组备选路径中选择单个“最佳路径”。所有数据流量都采用该“最佳路径”,直到“最佳路径”被拥塞并丢弃数据包的时间点。不利用备选路径,因为拓扑算法可能认为它们不太需要或者将它们移除以防止形成循环。希望摆脱使用生成树,同时仍然保持无循环拓扑结构,又能利用所有可用的链路。
多年来,Clos或“胖树”网络再次被广泛使用。Clos网络是一个多级交换网络。这种网络的优点是可以通过仅使用小型交换机来实现大量输入和输出端口之间的连接,并且可以轻松扩展网络。通过在所有级对交换机进行配置,可以实现端口之间的双向匹配。
图5示出了3级Clos网络500的示例。Clos网络500包括r个n×m入口级纵横交换机502a-502d、m个r×r中间级纵横交换机504a-504e和r个m×n出口级纵横交换机506a-506d。在图5中,n表示r个入口级纵横交换机502a-502d中的每一个上的输入端口的数量,m表示r个入口级纵横交换机502a-502d中的每一个上的输出端口的数量。在每个入口级交换机与每个中间级交换机之间有一个连接,在每个中间级交换机与每个出口级交换机之间有一个连接。在m≥n的情况下,Clos网络可以像纵横交换机一样是非阻塞的。
图6示出了在数据中心中使用的折叠式Clos网络600的示例。Clos网络600包括架顶式(ToR)交换机604a和604b以及脊柱式交换机606。ToR交换机604a和604b是叶片式交换机并连接到脊柱式交换机606。叶片式交换机604a可以被称为入口交换机,如图5中的纵横交换机502a-502d,而叶片式交换机604b可以被称为出口交换机,如图5中的纵横交换机506a-506d。叶片式交换机604a和604b可以连接到多个服务器602。脊柱式交换机606连接到叶片式交换机604a和604b。叶片式交换机604a和604b不直接彼此连接,而是通过脊柱式交换机606间接连接。在这种脊柱-叶片式架构中,从叶片式交换机开始的上行链路的数量等于脊柱式交换机的数量,而从脊柱式交换机开始的下行链路的数量等于叶片式交换机的数量。总连接数是叶片式交换机的数量乘以脊柱式交换机的数量,例如,图6中的8×6=48个链路。
在Clos网络600中,每个较低层交换机(叶片式交换机)都以全网状拓扑连接到每个上层交换机(脊柱式交换机)。如果在低层交换机和它们的上行链路之间没有发生过载,那么可以实现非阻塞架构。可以使用一组相同且便宜的交换机来创建树,并获得否则将花费更多的成本才能取得的高性能和弹性。
Clos网络600可以很容易地扩展以构建更大的网络。例如,图7示出了通过使用额外的一层核心交换机或路由器702连接两个或更多个Clos网络600,而在数据中心环境中构建的多级Clos网络700。Clos网络700可以包括叶片或接入层704、脊柱或汇聚层706以及核心层708。
如图6或图7所示的Clos网络中的路径可以通过使用路由技术来选择交换机或路由器的端口来进行选择,使得流量负载可以均匀分布在脊柱或核心交换机之间。如果其中一台脊柱式交换机或核心交换机发生故障,它可能只会稍微降低数据中心的整体性能。
II.多路径路由
路由是选择从网络中的源节点到目的地节点的数据传输的最佳路径的过程。路由技术的一个示例是等价多路径(ECMP)路由。ECMP是一种转发机制,用于沿着等价路径的多条路径路由数据包,其目标是实现基本平均分布的链路负载分摊或负载平衡。ECMP允许使用从网络中的源节点到目的地节点的多个等价路径。其优点是数据流量可以更均匀地分布到整个网络,以避免拥塞并增加带宽。ECMP也是一种保护方法,因为在链路发生故障期间,可以将流量流快速转移到另一个等价路径,而不会造成严重的流量损失。使用ECMP,等价路径可以存储在路由器转发层的负载平衡表中。在检测到链路故障时,数据流量可以在亚秒内在其余的相等路径之间分配,而不会造成严重的流量损失。
ECMP不使用任何特殊配置。最短路径优先(SPF)技术(如开放最短路径优先(OSPF)技术)可用于计算等价路径,然后,可将这些路径通告给转发层。路由器可以首先通过对标识数据流的数据包报头字段执行散列(诸如16位循环冗余校验(CRC-16))来选择密钥。可以给网络中的下一跳分配密钥空间中的唯一区域。路由器可以使用密钥来确定要使用哪个区域以及哪个下一跳(以及哪个端口连接到交换机或路由器上的下一跳)。
ECMP不考虑输出接口带宽的任何差异。此外,对于数据中心环境中的当前ECMP路由,散列函数可能会导致大部分或全部数据中心节点相同流,获得相同散列值。因此,可能会使用相同的路径来在数据中心环境中路由流中的数据包,而其他替代路径可能未充分利用。
多路径路由是一种提高网络性能和提供容错能力的机制。网络中有多种多路径技术用于负载平衡,例如多路径TCP(MPTCP)和InfiniBand中的多路径。
在TCP/IP中,数据包通常按顺序发送。因此,很难将一个消息分解为多个数据包,并在不同路径上使用TCP/IP来发送数据包,同时确保有序传输,因为不同路径上的延迟可能不同。MPTCP通过对TCP进行修改来同时使用多个IP地址/接口,经修改的TCP让应用程序感觉似乎是常规TCP接口,而事实上它跨多个子流传播数据。这样做的好处包括资源利用率更好、吞吐量更好大、故障反应更平滑。多路径TCP在无线网络环境中特别有用。智能手机可能具有单独的,同时连接到蜂窝网络、Wi-Fi网络以及可能通过蓝牙或USB端口连接到其他网络的接口。这些网络中的每一种网络都提供了一种到达远程主机的可能方式。除了吞吐量增大外,当用户进入或退出网络覆盖范围时,还可以增加或减少链路,而不会中断端到端的TCP连接。然而,MPTCP中的每个子流都可能使用不同的源或目的地IP地址。
InfiniBand中的多路径可以通过将多个本地标识符(LID)分配给端点来实现。诸如消息传递接口(MPI)之类的上层协议可以通过条带化(将一个消息分成几个块)并通过多条路径发送数据(称为MPI多路复用)来利用多个LID。InfiniBand标准定义了一个称为子网管理器的实体,负责发现、配置和维护网络。网络中的每个InfiniBand端口都由一个或多个由子网管理器分配的LID来进行标识。子网内的每个设备都可以有一个由子网管理器分配的16位LID。在子网内发送的数据包使用LID进行寻址。可以给每个端口分配多个LID以利用网络中的多个路径。InfiniBand还提供了一种称为LID掩码控制(LMC)的机制。LMC提供了一种通过掩盖LID的最低有效字节来将多个逻辑LID与单个物理端口相关联的方法。当在交换机处接收到数据包时,目的地LID的8个最低有效位可以被LMC掩蔽并被忽略。因此,通过将具有不同最低有效字节的多个LID分配给同一端口,可以在同一对节点之间建立若干路径。
如上所述,路由算法可以计算数据包报头中所选字段的散列。通常,IP报头中的源地址和目的地地址用于路由。也可以使用IP报头的协议字段和服务类型字段,多址接入控制(MAC)层的源地址和目的层,或者源端口和目的地端口。
端口是由端口号标识的软件结构。端口通常与主机的IP地址和通信的协议类型相关联,并形成通信会话的目的地或源地址的一部分。通常通过16位端口号为每个地址和协议来标识端口。主机上的应用程序可以使用数据报套接字来建立主机到主机的通信。应用程序可以将套接字绑定到其数据传输的端点,这可以是IP地址和服务端口的组合。
用于散列计算的一些字段(例如源地址和目的地地址以及目的地端口)可以是固定的,并且在传送数据包时不能更改。然而,某些其他字段是可选的,并可以修改,这可能会影响数据包路由的路径,但可能不会影响数据包的安全传送。因此,对于不同的数据包,可以对这些字段进行不同的修改,使得具有相同源IP地址、目的地IP地址和目的地端口的数据包可以在不同路径上传送。
图8示出了用于源端点802a和目的地端点802b之间的数据通信的多个路径810。如图8所示,到目的地地址的源上下文数据804a可以被分成多个细流806a,其中每个细流中的数据包都可以具有相同的数据包报头,并且因此可以通过相同的路径进行路由。不同细流中的数据包可能具有相同的源IP地址、目的地IP地址和目的地端口,但是在数据包报头的某个字段中可能具有不同的值,其中数据包报头的某个字段中的值用于进行路由。因此,通过经由网络850的不同的路径810,不同细流806a中的数据包可以从相同源IP地址的相同物理端口808a去往相同目的地IP地址的相同物理端口808b和不同细流806b。下面描述使用UDP作为传输层协议的源节点和目的地节点之间的多细流通信的示例。
UDP是最小的面向消息的传输层协议。UDP以最少的协议机制使用无连接传输模式。它没有握手对话,从而向用户程序暴露了底层网络协议的任何不可靠性。UDP不向用于消息传递的上层协议提供任何保证,并且一旦UDP消息被发送,UDP层就不保留这些消息的状态。没有传递、排序或双重保护的保证。
使用UDP,计算机应用程序可以将消息(称为数据报)发送到因特网协议(IP)网络上的其他主机,而无需事先通信来建立特殊传输信道或数据路径。UDP在数据报的源和目的地处使用端口号来实现不同的功能。UDP适用于错误检查和纠错不是必需的或错误检查和纠错可以在应用程序中执行的应用程序,从而避免了在网络接口级别进行此类处理的开销。对时间敏感的应用程序通常使用UDP,因为丢弃数据包比等待延迟数据包更可取,等待延迟数据在实时系统中可能不是一个选项。
图9示出了UDP/IP数据包报头900。源地址902和目的地地址904被包括在IP报头中。UDP报包括4个字段,每个字段都是2个字节(16位)。目的地端口字段908标识接收方的端口,并且是必需的。目的地端口字段908通常指出哪个协议被封装在UDP帧中。
源端口字段906在有意义时标识发送方的端口,并且被假定为要回复(如果需要)的端口。如果不使用,则可以将源端口字段906设置为零。如果源主机是客户端,则源端口号可能是一个短暂的端口号。如果源主机是服务器,则源端口号可能是已知的或定义明确的端口号。
在因特网协议版本4(IPv4)中校验和字段以及源端口字段906的使用是可选的。在因特网协议版本6(IPv6)中,只有源端口字段906是可选的。
如上所述,UDP不保证有序传送。因此,即使在通过不同路径的通信中路由不同的数据包也可能会导致无序传送,但无论如何,这种无序传送仍然是UDP协议所期望的。此外,与不使用ECMP的UDP相比,使用ECMP也可能会增加重新排序。因此,本公开的实施方案更适合于不需要排序的应用程序,诸如使用UDP协议的应用程序。在一些实施方案中,可以修改UDP报头中的源端口字段906,以将通信中的不同数据包路由到不同路径,因为UDP端口仅用于检测协议,而不用于将数据包递送给最终用户应用程序,这一般是由端点IP地址确定的。在目的地节点上接收到的数据包,可以由目的地节点上的应用程序使用例如如下所述的宽松可靠数据报(RRD)传输服务,基于数据包中的信息,进行重新排序或组装。
在一些实施方案中,可以通过使用不同的源IP地址(如果源端点具有多个IP地址)或不同的目的地IP地址(如果目的地端点具有多个IP地址),通过使用IPv6报头中的FlowID字段,或通过使用多协议标签交换(MPLS)标签,通过隧道来实现使用多个细流的流的多路径数据传输。
III.示例
由远程直接存储器访问(RDMA)卡提供的基本传输服务是不可靠数据报(UD)。将UD用于HPC数据路径相对不常见。UD通常依靠无损结构,除非数据包损坏,否则不会丢弃数据包。另一种常见的传输服务类型是可靠连接(RC)。RC提供可靠的按序传送,但不具备可扩展性。具体而言,RC需要为每对通信线程建立单独连接。
大规模系统的“理想”解决方案是可靠数据报(RD),RD为每个线程使用单个请求队列,并在一对通信节点之间使用单个连接。由于规范中存在许多问题,现有的InfiniBandRD标准无法使用。另一个现有的类似于RD的部分解决方案是扩展可靠性连接(XRC),它太复杂,并且在数据包丢失的情况下不提供最佳延时,因为它可能会延迟与丢弃的数据包无关的数据包的传递。
在数据包丢失的情况下,按顺序传递可能会限制可扩展性或增大平均延时。由于使用的空间和连接管理开销,保持端点到端点流级别的序列号不可扩展。多路传输的节点到节点连接级别的序列号可以提供足够的信息来检测丢失或重复的数据包,但可能无法提供足够的信息来确定在聚合连接上乱序的到达数据包是否事实上在端点到端点流上是乱序的。如果在到主机的聚合连接上乱序到达的数据包的传递被推迟,则可能需要大的中间缓冲空间,并且平均延时可能会大大增加,因为许多数据包可能会被延迟,直到丢失的数据包被重新发送或无序数据包到达。这些延迟的数据包中的大多数或全部可能与丢失数据包或无序数据包无关,且因此这种延迟可能是不必要的。丢弃无序数据包可以解决缓冲问题,但可能无法解决延时问题,并可能会增大网络带宽消耗。
宽松可靠数据报是一种具有简单的类似于UD的接口的传输服务类型,但具有透明的数据包丢失恢复功能。RRD不保证数据包排序,因为保证数据包排序可能包括保持所有QP到QP流的状态(这不容易扩展),或者将属于不同逻辑流的数据包序列化成单个数据包序列,这可能会在不相关流之间产生伪依赖,从而增大平均和最大延时。尽管RRD不保证数据包排序,但在RRD级别表现为乱序的数据包实际上可能在其QP到QP流上是有序的,因为单个RRD连接可能包含多个多路复用流。由于主机软件可以跟踪其消息流,所以可以由主机完成排序。因此,RRD只能保证每个数据包最终都会被传送到适当的队列。即使数据包无序,数据包也可以传送到目的地端点队列,并且可以在节点到节点的连接级别对序列号进行跟踪。每个流(端点到端点)编号可以由主机驱动程序完成,序列号可以与数据包一起传输到目的地主机上的驱动程序,但不在传输层上对其进行检查。RRD也可以配置为丢弃乱序数据包,从而提供按序传送。
RRD传输可能会通过所有可用路径发送数据包以进行负载平衡,同时维护有关拥塞路径或故障路径的最新信息。如果将单个连接上下文用于特定的目的地,则RRD传输可能不容易区分由多路径传送引起的乱序确认(ACK)数据包与由丢弃的数据包引起的无序ACK。因此,RRD状态以每个路径为基础进行排列,其中在特定路径上发送到特定目的地的数据包具有单独的上下文和独立的数据包编号。换句话说,用于特定目的地的RRD上下文可以包括多个单向细流上下文,其中如上所述,每个细流都可以使用不同路径。例如,每个细流上下文都可以包括在外部报头中使用的源UDP端口字段。每个细流都可以与不同的路径相关联,可以在超时或过度丢失数据包的情况下重新分配路径。可以在每个细流中独立地对数据包序号进行跟踪。
图10示出了源端点使用例如RRD传输服务和UDP/IP协议,通过一个物理端口,与多个目的地端点进行通信的示例框图。用户应用程序1002可以使用提供商库1004和用户空间驱动程序库1006,通过发送或接收队列来异步地发送或接收消息。图10仅示出了消息发送流程。提供商库1004可以包括OpenFabric接口(OFI)Libfabric提供商库或OpenFabrics企业分布(OFED)库。
用户应用程序1002可以通过通信端点来发送/接收消息。应用程序可以使用多个通信端点。在数据报传输的情况下,每个通信端点都可以映射到单个QP。QP号码可由适配器固件分配,并可针对每个虚拟以太网接口单独维护。除了虚拟以太网接口的IP地址之外,QP号码还可以用作通信端点地址的一部分。
用户应用程序1002可以将事务或消息放入多个WQE 1008a-1008d中,然后,可以由信道适配器进行处理,并发送到目的地端点。WQE 1008a-1008d可以基于本地端点来排列,使得一个WQE可以用于一个本地端点。
用户应用程序1002不生成UDP/IP数据包报头,而是在发送消息描述符中传递目的地网络地址映射索引(地址句柄)。这提供了更低的延时和更好的安全性,而不会损害彼此。从性能角度来看,地址句柄允许信道适配器预先生成报头,包括外部报头,无需任何检查就可以传输它们(而不是验证由应用程序生成的报头),并通过避免获取报头并在路由表中查找它来最小化总延时。
可以处理WQE 1008a-1008d中的事务或消息以定位传输上下文1010a-1010c,诸如RRD传输上下文,其中传输上下文1010a-1010c的每个上下文中的消息或事务都将被发送到相同的目的地IP地址。
信道适配器可进一步处理传输上下文1010a-1010c(诸如RRD传输上下文)中的每一个传输上下文中的消息或事务,以选择细流上下文。例如,传输上下文1010a中的消息可以被放置到多个细流上下文1012a中,传输上下文1010b中的消息可以被放置到多个细流上下文1012b中,而传输上下文1010c中的消息可以被放置到多个细流上下文1012c中。WQE和传输上下文中的每一个都可以被实现为软件队列或硬件队列,例如诸如先进先出(FIFO)缓冲区之类的缓冲区。细流上下文可以维护活动数据包列表,并且可以存储在例如存储器中。然后,NX 1014可以处理细流上下文1012a-1012c,并且将其置于信道适配器与网络交换机之间的接口处的硬件队列1016中以发送到网络。硬件队列1016可以是FIFO。硬件队列1016中的每个数据包都可以包括应用程序消息有效载荷、提供者的辅助信息和目的地地址。
如这里所使用,细流是与在两个网络接口之间的单向(半双工)连接上传送的流或数据流相关联的一组数据包。细流与QP无关,对用户应用程序不可见。细流中的数据包可以携带细流索引和数据包序列号。数据包序列号是相对于细流的。源端点维护有关未完成未确认的数据包(序列号和未确认的WQE的列表)的信息,包括重发所需的信息。目的地端点可以在例如数据包的报头中从所接收的数据包中恢复细流索引或数据包序列号,并向源端点发送接收到数据包的确认。然后,源端点可以在从目的地端点接收到关于已接收到数据包的确认之后移除数据包的序列号。源端点也可以在数据包发送后移除数据包的序列号。
可以控制每个细流,以使其具有有限数量的未完成发送数据包。因此,在选择细流时,较慢的路径使用得少,较快的路径使用得多。细流可以处于活动状态(即,具有未完成的未确认的数据包)或空闲状态(所有数据包都已被确认)。
一般而言,对于给定的活动细流,数据包在相同路径上传输。在一些实施方案中,当数据包被分配给空闲细流时,发送方可以随机地改变路径。发送方还可以在超时后,或遇到过多的延时或过多的数据包丢失时,将细流重新分配给不同的路径。
目的地上下文可以保留最后一个有序数据包的序列号和乱序数据包的序列号,但是它可能不保留任何端点缓冲区信息。所有到达的非重复数据包都可以传送到RRD服务的下一级,这可以将数据包传送到适当的QP。目的地上下文可以生成常规ACK以确认有序数据包,以及选择性ACK(SACK)数据包来报告接收到的数据包序列中的任何漏洞。
可以使用短索引,对特定RRD上下文中的细流进行编号。可以在数据包报头中指定细流索引。相同的索引可以用于两个方向,用于一侧的发送细流上下文和用于另一侧的相应的接收细流上下文。每个RRD上下文的细流的最大数量可以是预先确定的,并硬编码,或者可以在通信之前或通信期间进行协商和调整。
当第一次映射一个特定地址,源端点可能只初始化新的细流。换句话说,细流连接建立可以是一生一次的操作,除非发送方或接收方被重置。在一些实施方案中,当接收方接受“序列的开始”数据包时,接收方可接受“序列的开始”数据包并丢弃任何先前的细流状态,除非它确定“序列的开始”数据包已陈旧。
在特定细流上传输的数据包通常按顺序到达,但是过时的“序列开始”数据包可能无序到达,例如,在细流初始化后立即切换细流的路径(例如,由于路径缓慢)的情况下。在这种情况下,接收方可以将初始序列号存储在所接收到的“序列开始”数据包中,并拒绝同一细流上的任何附加“序列开始”数据包(如果数据包携带相同的序列号),并且可选地,生成明确的否定确认(NAK)。
新开始的发送方可能不具有细流历史的任何知识,在“序列开始”数据包之后可能不发送额外的数据包,直到其从接收方获得ACK。在NAK的不寻常情况下,例如,如果发送方意外地生成了与细流的先前“序列开始”数据包中的初始序列号相同的初始序列号,则它可以生成不同的初始序列号并重试。
IV.细流分配
在将数据包分配给细流时通常会考虑两个目标。所有路径都经常被使用是可取的。也希望细流得到足够的数据包,以确保及时检测并报告任何丢失的数据包。如果细流中最后一个数据包被丢弃,则检测丢弃的一种方法是超时。替代地,在轻载系统中,可以在细流中的最后一个数据包之后发送附加的伪数据包。由于基于SACK的检测允许更快的恢复,因此RRD最好始终在所有活动细流上传输数据包。这通常可以针对繁忙的流量来完成,在繁忙的流量中,挂起的数据包数量很大,并且细流不太可能干涸。在某些情况下,即使整个系统可能负载很重,系统中也可能会有许多轻载的细流。对于具有少量挂起的数据包的轻负载系统,将数据包平均分布在所有可用的细流中可导致许多或所有细流上的未完成数据包数量可能小至0或1的情况,这使得SACK无用。一种解决方案是动态调整正在使用的细流数量,并且每当细流变得空闲或非常缓慢时将细流重新分配到不同的路径。所使用的细流的总数可以被限制为例如32或更小,并且可以基于例如网络延时、网络带宽或网络拥塞来调整。在一些实施方案中,优选的是将数据包放在半满细流中而不是放在空的细流上。此外,为了确保缓慢而稳定的流(可以使单个细流始终保持非空闲状态)不会独占路径,可以偶尔分配额外的空闲细流,以确保最终改变路径。
可以有许多不同的方式将来自用户应用程序的数据包分配给多个细流。例如,可以基于所有可用细流或所有正在使用的细流中的未完成数据包的数量了来将数据包分配给细流。可以基于应用程序的信息,将数据包分配给细流。还可以基于来自应用程序的指令、请求或指示将数据包分配给细流。
在用户应用程序没有指定流标签的一些实施方案中,在实现诸如RRD之类的传输服务的传输层的网络适配器设备可以基于每个细流的利用率,例如,每个细流中未完成的数据包的数量,将来自用户应用程序的数据包分配给多个细流。网络适配器设备可以记录未完成数据包的总数以及最后使用的细流。它也可以按照利用率来维护单独的细流列表,其中RRD上下文的每个细流都可以在以下三个列表之一中:全满、几乎空的(少于半满)、几乎全满(超过半满)。可以将空的细流返回到共享池,供其他应用程序使用。
传输层的网络适配器设备可以选择先前使用过的同一细流,如果它未满的话。否则,它可以根据以下优先顺序:几乎是满的、几乎是空的,以及空的(从共享池),选择按照利用率排列的细流列表中的另一细流。
在一些实施方案中,细流中允许的未完成数据包的总数可以被限制为可调节的数量,可以基于例如网络拥塞对其进行调整。例如,如果整个网络拥塞,则细流中允许的未完成数据包总数可能会增大。如果整个网络拥塞程度较低,则可以减少细流中允许的未完成数据包的总数。
也可以基于可用的细流或使用中的细流的每个细流的观察到的延时,将数据包分配给细流。通常可以选择具有较低观察到的延时的细流。也可以基于可用的细流或正在使用的细流的每个细流的丢失率,将数据包分配给细流。通常可以选择具有较低丢失率的细流。
传输层也可以基于来自用户应用程序的关于如何分配数据包的指示,将数据包分配给不同的细流。例如,用户应用程序可以用流标签,例如OpenFabrics企业分布(OFED)中支持的流标签,来标记传输请求。流标签可能不指示传输层在特定路径上传输数据包,但可以指示传输层在与具有相同标签的其他消息相同的路径上将消息传送到相同目的地。传输层图维护了流标签的图,其中图中的每个条目都包含细流索引和细流中未完成数据包的数目。如果所期望的细流中未完成数据包的数量为0,则可以为数据包分配新的细流。如果期望的细流具有太多未完成的数据包,例如来自其他应用程序或消息,则也可以分配新的细流。
传输层也可以基于用户应用程序的信息,将来自用户应用程序的数据包分配给不同的细流。例如,对于结构上的非易失性存储器Express(NVMe),传输层可以将同一命令的所有数据包分配给同一个细流。对于某些应用程序(如消息传递接口(MPI)),传输层可以分配数据包以最小化无序传输。传输层可以通过接收来自其他来源的信息或启发式地确定信息,来获得关于用户应用程序的信息。
在一些实施方案中,可以协调或随机化在多个网络适配器设备或多个用户应用程序之间进行的细流或路径选择,使得可以不将来自不同应用程序或不同网络适配器设备的数据包分配到相同路径,以避免使路径超载。在一些实施方案中,交换机或路由器的端口或其他应用程序已经使用的源UDP端口可以用作用于确定用于细流的合适端口的输入。
在分配细流时,它通常与路径相关联,以便分配给细流的所有数据包都将采用相同的路径。然而,如果与细流相关联的路径具有高于阈值的过高的丢失率或者具有比阈值更长的延时,则可以将细流及其相关联的数据包重新分配到具有较低丢失率或更短的延时的不同路径。
V.网络适配器具有多个物理端口
网络适配器设备可以包括多个物理输出或输入端口。因此,网络适配器设备可以通过设备上的不同物理端口发送或接收数据包。换句话说,网络适配器设备本身可以充当交换机,并构成网络的一部分或网络的交换结构。
图11示出了源端点使用例如RRD传输服务和UDP/IP协议通过多个物理端口与多个目的地端点进行通信的框图。类似于图10,在图11中,用户应用程序1102可以使用提供商库1104和用户空间驱动程序库1106,通过发送或接收队列,来异步地发送或接收消息。提供商库1104可以包括OpenFabric接口(OFI)Libfabric提供商库或OpenFabrics企业分布(OFED)库。
用户应用程序1102可以将事务或消息放入多个WQE 1108a-1108d中,然后,可以由信道适配器处理事务或消息,并将其发送到目的地端点。WQE 1108a-1108d可以基于本地端点来排列,使得一个WQE可以用于一个本地端点。可以处理WQE 1108a-1108d中的事务或消息以定位传输上下文1110a-1110c,诸如RRD传输上下文,其中传输上下文1110a-1110c中的每一个中的消息或事务都将被发送到相同的目的地IP地址。
信道适配器可进一步处理传输上下文1110a-1110c(诸如RRD传输上下文)中的每一个传输上下文中的消息或事务,以选择细流上下文。例如,传输上下文1110a中的消息可以被放置到细流上下文1112a中,传输上下文1110b中的消息可以被放置到细流上下文1112b中,而传输上下文1110c中的消息可以被放置到细流上下文1112c中。然后,NX 1114可以处理细流上下文1112a-1112c,并将其放入硬件队列1116中。
然后,可以将硬件队列1116中的数据包路由到在网络适配器设备和外部网络之间的接口1118处的不同的物理输出端口1120。通过经由不同的物理输出端口来路由数据包,可以增大网络适配器设备的吞吐量,并可以减少网络适配器设备与外部网络之间的接口处的拥塞。
VI.方法
图12是示出根据本公开的一些实施方案的由多个细流通过网络在两个端点之间进行数据通信的方法的流程图1200。
在框1202处,网络适配器设备可以通过网络接收要从源端点上的用户应用程序传输到目的地端点的数据流。数据流可以是一个或多个消息、一个或多个命令或一个或多个事务。在某些实施方案中,源端点和目的地端点可各自具有唯一的IP地址。在一些实施方案中,多个端点可以共享IP地址,因此,从共享IP地址的多个源端点到共享IP地址的多个目的地端点之间的用户应用程序数据流可以在一对源IP地址和目的地IP地址之间的IP级别的数据流中多路传输。在其他实施方案中,源或目的地端点可以具有多个IP地址,并且可能期望用户应用程序数据流的每个部分通过使用源IP地址和目的地IP地址的不同组合,通过网络中的不同路径发送,如在例如多路径TCP(MPTCP)中。打算在单个TCP或UDP连接中从源IP地址传送到目的地IP地址的用户应用程序数据流或用户应用程序流的一部分本文可以被称为数据流或流。
例如,如上文参考图10所描述,用户应用程序1002可以将事务或消息放入多个WQE1008a-1008d中,其中可以基于本地端点来排列WQE 1008a-1008d,使得一个WQE可以用于一个本地端点。用户应用程序1002还可以在发送消息描述符中传递目的地网络地址映射索引(地址句柄)。基于目的地网络地址映射索引,可以处理WQE 1008a-1008d中的事务或消息以定位传输上下文1010a-1010c,诸如RRD传输上下文,其中传输上下文1010a-1010c中的每一个中的消息或事务将被发送到相同的目的地IP地址。每个传输上下文可以被称为流或数据流。
在一些示例中,用户应用程序可以在包括源IP地址和目的地IP地址的数据包中提供消息,而不是仅提供消息和发送消息描述符。
在框1204处,每个流中的用户应用程序数据(诸如图10中的每个传输上下文),可以根据诸如TCP/IP或UDP/IP之类的通信协议,分成多个数据包。多个数据包可以包括报头和有效载荷。报头可以是空报头或包含需要更新的空字段。报头可以只包含TCP/IP或UDP/IP报头的一部分。
在框1206处,对于多个数据包中的每个数据包,网络适配器设备可以从多个细流中确定用于要在其中传输的数据包的细流。该确定可通过确定多个细流中的每个细流中的数据包的数量、获得用户应用程序的信息或从用户应用程序接收关于如何将多个数据包分配给多个细流的指示来作出。在一些实施方案中,可以优选选择不是轻负载或重负载的细流。
在框1208处,对于多个数据包中的每个数据包,可以基于确定的细流,确定和设置由网络的网络交换机用来路由数据包的数据包中的字段的值(诸如源UDP端口号)。不同的源UDP端口可以用于不同的细流。因此,如上所述,可以通过使用源UDP端口号进行路由的路由器或交换机,通过网络中的不同路径来发送不同的细流。
在框1210处,可以将多个数据包中的每个数据包发送到分配的细流以传输到网络。每个数据包都可以在报头中包括细流特定的字段,诸如源UDP端口,细流索引或标识以及数据包序列号。可以监测多个细流中的每个细流的状态,诸如未完成数据包的数量、平均延时或者细流上的估计数据包丢失率,并将其用于将细流分配给附加数据包。
在框1212处,可以通过一个或多个物理端口,将多个细流中的每个细流中的数据包传输到网络结构。可以将数据包放入网络适配器设备和外部网络之间的接口的硬件传输队列中。
VII.设备和系统
本公开的实施方案可以用诸如适配卡之类的硬件或者可以用在主机CPU上运行的软件来实现。图13示出了网络适配器设备1300的示例。本文示例中,网络适配器设备1300可以包括处理逻辑1302、配置模块1304、管理模块1306、总线接口模块1308、存储器1310和网络接口模块1312。这些模块可以是硬件模块、软件模块或硬件和软件的组合。网络适配器设备1300还可以包括这里未示出的附加模块。在一些实施方案中,网络适配器设备1300可以包括更少的模块。一个或多个模块可以通过通信信道1314彼此进行通信。通信信道1314可以包括一个或多个总线、网格、矩阵、结构、这些通信信道或一些其他合适的通信信道的组合。
处理逻辑1302可以包括被配置为执行指令的一个或多个处理器。可以被包括在处理逻辑1302中的处理器的示例包括由ARM、MIPS、AMD、Intel、Qualcomm等公司开发的处理器。包括在处理逻辑1302中的处理器也可以ASIC或FPGA来实现。在一些实施方案中,处理逻辑1302的处理器可以共享某些资源,诸如例如总线、1级(L1)高速缓存和/或2级(L2)高速缓存。处理逻辑1302执行的指令可以例如以计算机程序的形式存储在计算机可读存储介质上。计算机可读存储介质可为非暂时性的。在一些情况下,计算机可读介质可以是存储器1310的一部分。
存储器1310可以包括易失性或非易失性存储器,或者包括易失性和非易失性存储器两者。存储器1310可以例如包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存和/或一些其他合适的存储介质。在一些情况下,存储器1310中的一些或全部可以在网络适配器设备1300内部,而在其他情况下,存储器中的一些或全部可以在网络适配器设备1300外部。
在一些实施方案中,配置模块1304可以包括一个或多个配置寄存器。配置寄存器可以控制网络适配器设备1300的操作。在一些实施方案中,配置寄存器中的一个或多个位可以表示网络适配器设备1300的某些能力。配置寄存器可以通过在处理逻辑1302中执行的指令和/或由外部实体(诸如主机设备、在主机设备上执行的操作系统和/或远程服务器)来编程。配置模块1304可以还包括控制网络适配器设备1300的操作的硬件和/或软件。
在一些实施方案中,管理模块1306可以被配置为管理网络适配器设备1300的不同部件。在一些情况下,管理模块1306可以在加电时配置一个或多个配置寄存器中的一个或多个位,以启用或禁用网络适配器设备1300的某些能力。
总线接口模块1308可以通过外部通信介质来实现与外部实体(例如主机设备和/或计算系统中的其他部件)的通信。总线接口1308模块可以包括用于连接到电缆、插座、端口的物理接口或到外部通信介质的其他连接。总线接口模块1308可以还包括管理传入和传出事务的硬件和/或软件。总线接口1308模块可以实现本地总线协议,例如NVMe、AHCI、SCSI、SAS、SATA、PATA、PCI/PCIe等。总线接口1308模块可以至少包括用于这些总线协议中的任何一个的物理层,包括连接器、电源管理、错误处理等。在一些实施方案中,网络适配器设备1300可以包括用于与多个外部实体进行通信的多个总线接口模块。这些多个总线接口模块可以实现相同的本地总线协议、不同的本地总线协议或者相同和不同总线协议的组合。
网络接口模块1312可以包括用于与网络进行通信的硬件和/或软件。例如,该网络接口模块1312可以包括用于有线连接到网络的物理连接器,和/或用于与网络进行无线通信的天线。网络接口模块1312可以还包括被配置为实现网络协议堆栈的硬件和/或软件。网络接口模块1312可以使用网络协议(例如TCP/IP、InfiniBand、RoCE、电气和电子工程师协会(IEEE)802.11无线协议、用户数据报协议(UDP)、异步传输模式(ATM)、令牌环、帧中继、高级数据链路控制(HDLC)、光纤分布式数据接口(FDDI)和/或点对点协议(PPP)等来与网络进行通信。在一些实施方案中,网络适配器设备1300可以包括多个网络接口模块,每个网络接口模块都被配置为与不同的网络进行通信。例如,在这些实施方案中,网络适配器设备1300可以包括用于与有线以太网网络、无线802.11网络、蜂窝网络、InfiniBand网络等进行通信的网络接口模块。
网络适配器设备1300可以被实现为片上系统(SOC)、处理器、网络接口卡(NIC)、交换机专用集成电路(ASIC)或现场可编程门阵列(FPGA)中的一种。
图14示出了本文所描述的特征和系统的示例架构,其中包括经由一个或多个网络连接的一个或多个服务提供商计算机和/或用户设备。在图1-13中所讨论的设备可以使用图14中所描述的计算设备的一个或多个部件,或者可以代表图14中所描述的一个或多个计算设备。在所示架构1400中,一个或多个用户1402可以使用用户计算设备1404(1)-(N),经由一个或多个网络1408来访问应用程序1406(例如,web浏览器或移动设备应用程序)。在一些方面,应用程序1406可以由计算资源服务或服务提供商托管、管理和/或提供。一个或多个服务提供商计算机1410可以提供被配置为在用户设备1404上运行的本地应用程序,用户1402可以与本地应用程序进行交互。在一些示例中,服务提供商计算机1410可以提供计算资源,例如但不限于客户端实体、低延时数据存储、持久数据存储、数据访问、管理、虚拟化、基于云的软件解决方案、电子内容表现管理等等。服务提供商计算机1410还可以用于向用户1402提供web托管、计算机应用程序开发和/或实施方案平台、前述的组合等。在一些示例中,服务提供商计算机1410可以与一个或多个第三方计算机1412进行通信。
在一些示例中,网络1408可以包括诸如有线电视网络、因特网、无线网络,蜂窝网络以及其他专用和/或公共网络之类的许多不同类型的网络中的任何一种或其组合。尽管所示示例表示用户1402通过网络1408访问应用程序1406,但是所描述的技术可以等同地适用于用户1402经由用户设备1404(一个或多个)通过固定电话、电话亭或以某种其他方式与服务提供商计算机1410进行交互的情况。所描述的技术还可以应用于其他客户端/服务器布置(例如机顶盒等)以及非客户端/服务器布置(例如,本地存储的应用程序等)。
如上面简要描述的,应用程序1406可以允许用户1402与服务提供商计算机1410进行交互以例如访问web内容(例如,网页、音乐、视频等)。可以布置在服务器集群中或者作为服务器场的服务提供商计算机1410可以托管应用程序1406和/或基于云的软件服务。其他服务器架构也可以用于托管应用程序1406。应用程序1406可能能够处理来自许多用户1402的请求并作为响应而提供各种物品网页。应用程序1406可以提供支持用户交互的任何类型的网站,包括社交网站、在线零售商、信息网站、博客网站、搜索引擎网站、新闻和娱乐网站等。如上文所讨论的,所描述的技术可以类似地在应用程序1406之外实现,诸如利用在用户设备1404上运行的其他应用程序。
用户设备1404可以是任何类型的计算设备,诸如但不限于移动电话、智能电话、个人数字助理(PDA)、膝上型计算机、台式计算机、瘦客户端设备、平板电脑、电子书阅读器等。在一些示例中,用户设备1404可以经由网络1408或经由其他网络连接与服务提供商计算机1410进行通信。另外,用户设备1404可以是由服务提供商计算机1410(例如,与服务提供商计算机1410集成的控制台设备)管理、由其控制的分布式系统的一部分,或以其他方式是服务提供商计算机1410的一部分。
在一个说明性配置中,用户设备1404可以包括至少一个存储器1414和一个或多个处理单元(或处理器1416)。处理器1416可以用硬件、计算机可执行指令、固件或其组合来实现。处理器1416的计算机可执行指令或固件实施方案可以包括以任何合适的编程语言编写的计算机可执行指令或机器可执行指令,以执行所描述的各种功能。用户设备1404还可以包括用于提供和/或记录与用户设备1404相关联的地理位置信息的地理位置设备(例如,全球定位系统(GPS)设备等)。
存储器1414可以存储可在处理器1416上加载和执行的程序指令,以及在这些程序的执行期间生成的数据。取决于用户设备1404的配置和类型,存储器1414可以是易失性的(诸如随机存取存储器(RAM))和/或非易失性的(诸如只读存储器(ROM),闪存等)。用户设备1404还可以包括附加的可移除存储装置和/或不可移除存储装置,包括但不限于磁存储装置、光盘和/或磁带存储装置。磁盘驱动器及其相关联的计算机可读介质可以为计算设备提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。在一些实施方案中,存储器1414可以包括多种不同类型的存储器,诸如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或ROM。
转到更详细的存储器1414的内容,存储器1414可以包括操作系统和一个或多个应用程序或服务,用于实现这里公开的特征,包括至少一个用户提供的输入元件或电子服务网页,诸如经由浏览器应用程序1406或专用应用程序(例如,智能手机应用程序,平板应用程序等)。浏览器应用程序1406可以被配置为接收、存储和/或显示用于与服务提供商计算机1410进行交互的网站或其他界面。另外,存储器1414可以存储访问凭证和/或其他用户信息,例如但不限于用户ID、密码和/或其他用户信息。在一些示例中,用户信息可以包括用于认证账户访问请求的信息,例如但不限于设备ID、cookie、IP地址,位置等。另外,用户信息可以包括用户提供的对由用户设备1404获得的安全问题或地理位置的响应。
在一些方面,服务提供商计算机1410也可以是任何类型的计算设备,诸如但不限于移动电话、智能电话、个人数字助理(PDA)、膝上型计算机、台式计算机、服务器计算机、瘦客户端设备、平板电脑等。另外,应注意,在一些实施方案中,服务提供商计算机1410由在托管计算环境中实现的一个或多个虚拟机执行。托管计算环境可以包括一个或多个快速供应和释放的计算资源,这些计算资源可以包括计算、联网和/或存储设备。托管计算环境也可以被称为云计算环境。在一些示例中,服务提供商计算机1410可以经由网络1408或经由其他网络连接与用户设备1404和/或其他服务提供商进行通信。服务提供商计算机1410可以包括一个或多个服务器,这些服务器可能布置在集群中,作为服务器场,或者作为彼此不相关联的单独服务器。这些服务器可能被配置为集成的分布式计算环境的一部分。
在一个说明性配置中,服务提供商计算机1410可以包括至少一个存储器1418和一个或多个处理单元(或处理器1420)。处理器1420可以是以硬件、计算机可执行指令、固件或其组合实现的任何处理逻辑。处理器1420的计算机可执行指令或固件实施方案可以包括以任何合适的编程语言编写的计算机可执行指令或机器可执行指令,以执行所描述的各种功能。
在一些情况下,硬件处理器1420可以是单核处理器或多核处理器。多核处理器可以包括同一处理器内的多个处理单元。在一些实施方案中,多核处理器可以共享某些资源,诸如总线和第二或第三级高速缓存。在某些情况下,单核或多核处理器中的每个内核都还可能包含多个执行逻辑处理器(或线程)。在这种内核(例如那些具有多个逻辑处理器的内核)中,执行流水线的几个阶段以及更低级别的高速缓存也可以被共享。
存储器1418可以存储可在处理器1420上加载和执行的程序指令,以及在这些程序的执行期间生成的数据。取决于服务提供商计算机1410的配置和类型,存储器1418可以是易失性的(诸如RAM)和/或非易失性的(诸如ROM,闪存等)。服务提供商计算机1410或服务器还可以包括附加存储装置1422,其可以包括可移除存储装置和/或不可移除存储装置。附加存储装置1422可以包括但不限于磁存储装置、光盘和/或磁带存储装置。磁盘驱动器及其相关联的计算机可读介质可以为计算设备提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。在一些实施方案中,存储器1418可以包括多种不同类型的存储器,诸如SRAM、DRAM或ROM。
存储器1418和附加存储装置1422(都是可移除的和不可移除的)都是计算机可读存储介质的示例。例如,计算机可读存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性或非易失性,可移除或不可移除介质。存储器1418和附加存储装置1422都是计算机存储介质的示例。可能存在于服务提供商计算机1410中的其他类型的计算机存储介质可以包括但不限于PRAM、SRAM、DRAM、RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、DVD或其他光存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备或可用于存储所需信息并且可被服务提供商计算机1410访问的任何其他介质。上述各项中的任何几项的组合也应包含在计算机可读介质的范围内。
替代地,计算机可读通信介质可以包括在诸如载波或其他传输之类的数据信号内传输的计算机可读指令、程序模块或其他数据。然而,如本文所使用,计算机可读存储介质不包括计算机可读通信介质。
服务提供商计算机1410还可以包含允许服务提供商计算机1410与存储的数据库、另一计算设备或服务器、用户终端和/或网络1408上的其他设备进行通信的通信连接1424。服务提供商计算机1410还可以包括I/O设备1426、诸如键盘、鼠标、笔、语音输入设备、触摸输入设备、显示器、扬声器、打印机等等。通信连接1424和I/O设备1426连同存储装置1422可以被描述为外围设备。
存储器1418可以包括用于实现这里公开的特征的操作系统1428、一个或多个数据存储1430和/或一个或多个应用程序1432或服务。
服务提供商计算机1410还可以包括一个或多个通信信道1434。通信信道1434可以提供介质,通过介质,服务提供商计算机1410的各种部件可以进行通信。一个或多个通信信道1434可以采用总线、环、交换结构或网络的形式。
本文所描述的模块可以是软件模块、硬件模块或其适当的组合。如果模块是软件模块,则模块可以体现在非暂时性计算机可读介质上并且由本文所述的任何计算机系统中的处理器来处理。应注意,所描述的过程和架构可以在任何用户交互之前以实时或异步模式执行。这些模块可以按照图14中建议的方式配置,和/或本文所描述的功能可以由作为分离模块存在的一个或多个模块提供,并且/或者本文描述的模块功能可以分布在多个模块上。
本公开的实施方案可以参照以下条款进行描述:
1.一种通过网络结构进行数据通信的方法,其包括:
从用户应用程序接收要使用通过所述网络结构的单个连接从源因特网协议(IP)地址传输到目的地IP地址的相关联数据流;
根据通信协议将所述相关联数据流分成多个数据包;
对于所述多个数据包中的每个数据包:
从与所述相关联数据流相关联的多个细流,确定用于要在其中传输所述数据包的相应细流;
基于所述数据包的所述确定的细流,设置所述数据包的报头中的字段,所述字段由所述网络结构的网络交换机用来路由所述数据包;以及
经由所述确定的细流发送所述数据包;以及
通过所述网络结构,在所述多个细流中的每个细流中发送数据包;
其中所述通信协议是用户数据报协议(UDP),并且所述数据包的报头中的所述字段是UDP报头的源端口字段。
2.根据条款1所述的方法,其中确定用于要在其中传输的所述数据包的所述细流包括下列各项中的至少一项:
确定所述多个细流中的每个细流中的活动数据包的数量;
确定所述多个细流中的每个细流的延时;
获得所述多个细流中的每个细流的丢失率;
获得所述用户应用程序的信息;或者
从所述用户应用程序接收关于如何将所述多个数据包分配给所述多个细流的指示。
3.根据条款1或2所述的方法,其中将所述多个细流中的每个细流中的数据包传输到所述网络结构包括通过一个物理端口或多个物理端口发送所述数据包。
4.一种方法,其包括:
从用户应用程序接收要使用通过网络的单个连接从源地址传输到目的地地址的数据;
根据通信协议将所述数据分成多个数据包;以及
对于所述多个数据包中的每个数据包:
从多个细流中确定用于要在其中传输的所述数据包的相应细流;
基于所述数据包的所述确定的细流,设置所述数据包中的由所述网络的网络交换机用于路由所述数据包的字段;以及
经由所述确定的细流,发送所述数据包以通过所述网络进行传输。
5.根据条款4所述的方法,其中所述通信协议是用户数据报协议(UDP),并且所述数据包的报头中的所述字段是UDP报头的源端口字段。
6.根据条款4或5所述的方法,其中所述数据包的报头中的所述字段是IP报头中的源IP地址、IP报头中的目的地IP地址、IPv6报头中的FlowID字段,或多协议标签交换(MPLS)标签。
7.根据条款4-6中任一项所述的方法,其中每个数据包都包括细流索引或数据包序列号中的至少一个。
8.根据条款7所述的方法,其中具有所述目的地地址的目的地端点从所接收的数据包的报头中获得所述接收的数据包的细流索引或数据包序列号。
9.根据条款4-8中任一项所述的方法,其还包括维护每个细流的活动数据包的序列号。
10.根据条款9所述的方法,其还包括在传输数据包之后或者在接收到在所述目的地地址处已经接收到数据包的确认之后,从活动数据包的所述序列号中移除所述数据包的序列号。
11.根据条款4-10中任一项所述的方法,其中确定用于要在其中传输的所述数据包的所述细流包括下列各项中的至少一项:
确定所述多个细流中的每个细流中的活动数据包的数量;
确定所述多个细流中的每个细流的延时;
获得所述多个细流中的每个细流的丢失率;
获得所述用户应用程序的信息;或者
从所述用户应用程序接收关于如何将所述多个数据包分配给所述多个细流的指示。
12.根据条款4-11中任一项所述的方法,其还包括:
通过一个或多个物理端口,将所述多个细流中的每个细流中的数据包传输到所述网络。
13.根据条款12所述的方法,其中将所述多个细流中的每个细流中的所述数据包传输到所述网络包括:基于每个数据包的报头中的信息,从多个物理端口中选择要用于从中发送每个数据包的物理端口。
14.根据条款4-13中任一项所述的方法,其中确定用于要在其中传输的所述数据包的所述细流是基于在数据包的报头中的所述字段中为除了来自所述用户应用程序的数据之外的数据设置的值。
15.根据条款4-14中任一项所述的方法,其中确定用于要在其中传输的所述数据包的所述细流包括动态地调整使用中的细流的数量。
16.根据条款15所述的方法,其中使用中的细流的总数低于阈值,并且所述阈值是基于网络延时、网络带宽或网络拥塞中的至少一个来确定的。
17.根据条款4-16中任一项所述的方法,其中每个细流中的活动数据包的数量低于阈值,并且其中所述阈值是可基于网络拥塞进行调整的。
18.根据条款4-17中任一项所述的方法,其还包括响应于确定所述细流的原始路径具有超过阈值的延时或丢失率,将细流及其相关联数据包分配给通过所述网络的不同路径。
19.一种装置,其包括:
处理逻辑;
计算机可读存储设备,所述计算机可读存储设备耦合到所述处理逻辑并可由所述处理逻辑读取,其中所述计算机可读存储设备包括用于致使所述处理逻辑执行下列操作的指令:
从用户应用程序接收要使用通过网络的单个连接从源地址传输到目的地地址的消息;
根据通信协议将所述消息分成多个数据包;
对于所述多个数据包中的每个数据包:
从多个细流中分配用于要在其中传输的所述数据包的细流;
基于所述分配的细流,设置所述数据包中的由所述网络的网络交换机用于路由所述数据包的字段;以及
经由所述分配的细流,发送所述数据包以通过所述网络进行传输;
与所述处理逻辑耦合并且可由所述处理逻辑访问的存储器,所述存储器被配置为存储多个数据包队列;以及
与所述网络进行通信的一个或多个物理端口,其中所述多个数据包通过所述一个或多个物理端口传输到所述网络。
20.根据条款19所述的装置,其中所述通信协议是用户数据报协议(UDP),并且所述数据包的报头中的所述字段是UDP报头的源端口字段。
21.根据条款19或20所述的装置,其中所述一个或多个物理端口中的每一个都具有唯一的IP地址,并且其中所述数据包的报头中的所述字段是IP报头的源IP地址字段。
22.根据条款19-21中任一项所述的装置,其中确定用于要在其中传输的所述数据包的所述细流包括下列各项中的至少一项:
确定使用中的所述多个细流中的每个细流中的数据包数量;
确定所述多个细流中的每个细流的观察到的延时;
获得所述多个细流中的每个细流的丢失率;
获得所述用户应用程序的信息;或者
从所述用户应用程序接收关于如何将所述多个数据包分配给所述多个细流的指示。
23.根据条款19-22中任一项所述的装置,其中所述计算机可读存储设备还包括用于致使所述处理逻辑从所述一个或多个物理端口接收数据包或确认的指令。
24.根据条款19-23中任一项所述的装置,其中所述装置包括片上系统(SOC)、处理器、网络接口卡(NIC)、交换机专用集成电路(ASIC)或现场可编程门阵列(FPGA)中的一个。
25.根据条款19-24中任一项所述的装置,其中所述处理逻辑包括SOC、处理器、ASIC或FPGA中的一个。
图15说明用于实施根据各种实施方案的各方面的示例环境1500的各方面。如应了解,尽管为说明使用了基于Web的环境,但可酌情使用不同的环境来实现各种实施方案。该环境包括电子客户端设备1502,该电子客户端设备可以包括任何合适的设备,该设备可操作,用于通过适当的网络1504发送和接收请求、消息或信息,并且将信息传回给设备的用户。此类客户端设备的示例包括个人计算机、手机、手持式消息传递设备、膝上型计算机、机顶盒、个人数据助理、电子书阅读器等。网络可以包括任何适当的网络,包括内联网、因特网、蜂窝网络、局域网或任何其他这样的网络或其组合。用于这种系统的部件至少可以部分地取决于所选择的网络和/或环境的类型。用于通过这种网络进行通信的协议和部件是众所周知的,本文不再详细讨论。通过网络的通信可通过有线或无线连接和其组合来实现。在本示例中,网络包括因特网,因为环境包括用于接收请求并且响应于请求而供应内容的Web服务器1506,但是,对于本领域普通技术人员显而易见的是,对于其他网络,可以使用具有类似用途的替代设备。
说明性环境包括至少一个应用程序服务器1508和数据存储1510。应理解,可以有多个应用程序服务器、层或其他元件、过程或部件,它们可以被链接或以其他方式配置,可以交互,以执行诸如从适当的数据存储中获取数据之类的任务。如本文所使用,术语“数据存储”是指能够存储、访问和检索数据的任何设备或设备的组合,其可以包括任何标准、分布式或集群环境中的任何数量的数据服务器、数据库、数据存储设备和数据存储介质的任何组合。应用程序服务器可以包括任何适当的硬件和软件,用于根据需要与数据存储集成以执行用于客户端设备的一个或多个应用程序的各方面,处理应用程序的大部分数据访问和业务逻辑。应用程序服务器与数据存储一起提供访问控制服务,并且能够生成要传送给用户的诸如文本、图形、音频和/或视频之类的内容,其可以由Web服务器以超文本标记语言(“HTML”)、可扩展标记语言(“XML”)的形式或本示例中的其他适当的结构化语言,供应给用户。Web服务器可以处理所有请求和响应的处理,以及客户端设备1502和应用程序服务器1508之间的内容传送。应理解,Web和应用程序服务器不是必要的且仅为示例部件,因为本文中所论述的结构化代码可在任何适合的设备或如本文中在其他地方论述的主机上执行。
数据存储1510可以包括几个独立的数据表、数据库或其他数据存储机制和介质,用于存储与特定方面相关的数据。例如,所示的数据存储包括用于存储生成数据1512和用户信息1516的机制,其可以用于为生成端提供内容。数据存储还被示为包含用于存储日志数据1514的机制,所述日志数据可用于报告、分析或其他此类目的。应理解,可以有很多其他方面可能需要存储在数据存储中,如页面图像信息和访问权限信息,其可以视情况以任何上述列出的机制,或以额外的机制,存储在数据存储1510中。数据存储1510通过与其相关联的逻辑,可操作以接收来自应用程序服务器1508的指令,并响应于指令,获取、更新或以其他方式处理数据。在一个实施方案中,用户可以提交针对特定类型的项目的搜索请求。在这种情况下,数据存储可以访问用户信息以验证用户的身份,并且可以访问目录详细信息,以获取关于该类型的项目的信息。然后,可以将信息返回给用户,例如在用户能够经由用户设备1502上的浏览器查看的网页上列出的结果中。可以在浏览器的专用页面或窗口中查看感兴趣的特定项目的信息。
每一服务器通常都将包括操作系统,所述操作系统提供可执行程序指令以用于所述服务器的一般管理和操作,且所述服务器通常将包括存储指令的计算机可读存储介质(例如,硬盘、随机存取存储器、只读存储器等),所述指令在由服务器的处理器执行时允许服务器执行其既定功能。服务器的操作系统和一般功能的合适的实施方式是已知的,或可在市场上买到,并由本领域普通技术人员,特别是根据本文的公开内容容易地实现。
一个实施方案中的环境是使用多个计算机系统和部件的分布式计算环境,这些计算机系统和部件使用一个或多个计算机网络或直接连接,通过通信链路互连。然而,本领域普通技术人员应了解,这样的系统可以在具有比图15中所说明的部件更少或更大数目的部件的系统中可同样良好地操作。因此,图15中的系统1500的描绘应该被视为是说明性的,而不是对本公开的范围的限制。
各种实施方案另外还可在各种不同的操作环境中实施,所述操作环境在一些情况下可包括一个或多个用户计算机、计算设备或处理设备,这些设备可用于操作多个应用程序中的任何应用程序。用户或客户端设备可以包括许多通用个人计算机中的任何一种,诸如运行标准操作系统的台式或膝上型计算机,以及运行移动软件,并且能够支持多种联网和消息传递协议的蜂窝、无线和手持设备。这样的系统还可以包括多个工作站,它们运行各种市场上可买到的操作系统中的任何一种以及用于诸如开发和数据库管理之类的用途的其他已知应用程序。这些设备还可以包括其他电子设备,例如虚拟终端、瘦客户端、游戏系统以及能够通过网络进行通信的其他设备。
大多数实施方案利用本领域技术人员熟悉的至少一种网络,用于使用各种市场上可买到的协议中的任何一种,诸如传输控制协议/因特网协议(“TCP/IP”)、开放式系统互连(“OSI”)、文件传输协议(“FTP”)、通用即插即用(“UpnP”)、网络文件系统(“NFS”)、公共因特网文件系统(“CIFS”),以及AppleTalk,来支持通信。网络可以是,例如,局域网、广域网、虚拟专用网、因特网、内联网、外联网、公共交换电话网、红外网络、无线网络以及其任何组合。
在利用Web服务器的实施方案中,Web服务器可以运行各种服务器或中间层应用程序中的任何一种,包括超文本传输协议(“HTTP”)服务器、FTP服务器、公用网关接口(“CGI”)服务器、数据服务器、Java服务器,以及业务应用程序服务器。服务器也可以能够响应来自用户设备的请求,执行程序或脚本,如通过执行一个或多个Web应用程序,Web应用程序可以实现为以任何编程语言(诸如C、C#或C++),或任何脚本语言(诸如Perl、Python或TCL),以及其组合编写的一个或多个脚本或程序。服务器还可以包括数据库服务器,包括但不限于可从和购得的那些数据库服务器。
如上文所讨论,环境可以包括各种数据存储和其他存储器和存储介质。这些环境可驻留在各种位置,例如驻留在计算机中的一个或多个本地(和/或驻留在所述计算机中的一个或多个中)或远离整个网络上的任何或全部计算机的存储介质上。在一组特定的实施方案中,信息可以驻留在本领域技术人员熟悉的存储区域网络(“SAN”)中。类似地,用于执行归属于计算机、服务器或其他网络设备的功能的任何必要文件可酌情存储在本地和/或远程地存储。在系统包括计算机化设备的情况下,每个这样的设备都可以包括可以经由总线电耦合的硬件元件,所述元件包括例如至少一个中央处理单元(“CPU”)、至少一个输入设备(例如,鼠标、键盘、控制器、触摸屏或小键盘)以及至少一个输出设备(例如,显示设备、打印机或扬声器)。这样的系统还可以包括一个或多个存储设备,诸如磁盘驱动器、光存储设备以及诸如随机存取存储器(“RAM”)或只读存储器(“ROM”)之类的固态存储设备,可移除介质设备、存储卡、闪存卡等。
此类设备还可包括计算机可读存储介质读取器、通信设备(例如,调制解调器、网卡(无线或有线的)、红外通信设备等)以及如上文所描述的工作存储器。计算机可读存储介质读取器可与计算机可读存储介质连接或经配置以接收计算机可读存储介质,所述计算机可读存储介质表示远程、本地、固定和/或可移除的存储设备,以及用于暂时地和/或更永久地包括、存储、发送以及检索计算器可读信息的存储介质。系统和各种设备通常还将包括位于至少一个工作存储器设备内的多个软件应用程序、模块、服务或其他元件,包括操作系统和应用程序,诸如客户端应用程序或Web浏览器。应了解,可替代的实施方案可以具有以上所述的实施方案的许多变化。例如,也可以使用定制的硬件和/或可以采用硬件、软件(包括可移植软件,诸如小应用程序)或两者来实现特定的元件。此外,还可以使用到诸如网络输入/输出设备之类的其他计算设备的连接。
用于容纳代码或代码的部分的存储介质和计算机可读介质可包括所属领域中已知或使用的任何适合的介质,包括存储介质和通信介质,例如但不限于,用任何方法或技术实施以用于存储和/或传输信息的易失性和非易失性、可移除和不可移除介质,所述信息例如计算机可读指令、数据结构、程序模块或其他数据,所述方法或技术包括RAM、ROM、电可擦除可编程只读存储器(“EEPROM”)、闪存存储器或其他存储器技术、压缩光盘只读存储器(“CD-ROM”)、数字通用光盘(DVD)或其他光学存储设备、磁带盒、磁带、磁盘存储设备或其他磁性存储设备,或可用于存储所需信息且可通过系统设备存取的任何其他介质。基于在本文中提供的公开内容和教示,本领域技术人员应了解用以实施各种实施方案的其他方式和/或方法。
因此,说明书和附图将被认为是说明性的而非限制性的。然而,显然,可对这些实施方案作出各种修改和改变,而不背离如所附权利要求书所阐述的本发明的更宽泛精神和范围。
其他变化在本发明的精神内。因此,虽然所公开的技术易受各种修改和替代构造,但所公开的技术的特定所说明实施方案在附图中示出且已在上文详细描述。然而,应理解,并不打算将公开内容限制为所公开的一种或多种特定形式,相反,意图是覆盖落入如所附权利要求书中所定义的本公开的精神和范围内的所有修改、替代结构和等效方案。
在描述所公开的实施方案(特别是在下面的权利要求书的上下文中)中使用的术语“一个/种”和“该/所述”以及类似的指示物应被解释为涵盖单数和复数,除非本文另外指出或明显与上下文矛盾。除非另有说明,否则术语“包含”、“具有”、“包括”和“含有”将被解释为开放式术语(即,意味着“包括但不限于”)。“连接”一词被解释为部分或全部包含在内、附接至或连接在一起,即使有某种中间物。本文中数值范围的叙述仅仅意在作为单独指代落入该范围内的每个单独值的速记方法,除非在本文中另有指示,并且每个单独的数值被合并到说明书中,就好像其在本文中单独陈述一样。本文中所描述的所有方法都可以任何合适的顺序执行,除非此处另有说明或以上下文清楚地反驳。除非另外声明,否则本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地说明本公开的实施方案,而不是对本公开的范围进行限制。说明书中的任何语言都不应被解释为表明任何非要求保护的要素对本公开的实施至关重要。
分离性语言,诸如短语“X、Y或Z中的至少一者”,除非另有明确规定,用于在上下文内要被理解为用于一般介绍,项目、术语等等可以是X、Y或Z中的任一者,或它们的任意组合(例如,X、Y和/或Z)。因此,这样的分离性语言通常并不意味着并且不应暗示某些实施方案要求X中的至少一者,Y中的至少一者或者Z中的至少一者各自都存在。
本文描述了本公开的优选实施方案,包括发明人知道实施本公开的最佳模式。在阅读前面的描述之后,那些优选实施方案的变化对于本领域普通技术人员来说可以变得显而易见。发明人期望本领域普通技术人员在适当的情况下采用这种变化形式,并且发明人打算本公开以与本文中具体描述的方式不同方式来实施本公开。因此,如适用法律所允许,本公开包括所附权利要求书中所陈述的主题的所有修改和等效物。此外,本公开涵盖了上述要素的任何组合的任何可能的变化形式,除非本文另有说明或者上下文明显矛盾。
在本文中引用的所有参考文献,包括公开案、专利申请案以及专利特此通过同等程度的引用并入本文中,如同每一参考文献个别地且具体地指示为通过引用并入且以其全文在本文中阐述一样。
Claims (15)
1.一种方法,其包括:
从用户应用程序接收要使用通过网络的单个连接从源地址传输到目的地地址的数据;
根据通信协议将所述数据分成多个数据包;以及
对于所述多个数据包中的每个数据包:
从多个细流中确定用于要在其中传输的所述数据包的相应细流;
基于所述数据包的所述确定的细流,设置所述数据包中的由所述网络的网络交换机用于路由所述数据包的字段;以及
经由所述确定的细流,发送所述数据包以通过所述网络进行传输。
2.根据权利要求1所述的方法,其中所述通信协议是用户数据报协议(UDP),并且所述数据包的所述报头中的所述字段是UDP报头的源端口字段。
3.根据任一项前述权利要求所述的方法,其中所述数据包的所述报头中的所述字段是IP报头中的源IP地址、IP报头中的目的地IP地址、IPv6报头中的FlowID字段或者多协议标签交换(MPLS)标签。
4.根据任一项前述权利要求所述的方法,其中每个数据包都包括细流索引或数据包序列号中的至少一个。
5.根据任一项前述权利要求所述的方法,其还包括维护每个细流的活动数据包的序列号。
6.根据权利要求5所述的方法,其还包括在传输数据包之后或者在接收到在所述目的地地址处已经接收到数据包的确认之后,从活动数据包的所述序列号中移除所述数据包的序列号。
7.根据任一项前述权利要求所述的方法,其中确定用于要在其中传输的所述数据包的所述细流包括下列各项中的至少一项:
确定所述多个细流中的每个细流中的活动数据包的数量;
确定所述多个细流中的每个细流的延时;
获得所述多个细流中的每个细流的丢失率;
获得所述用户应用程序的信息;或者
从所述用户应用程序接收关于如何将所述多个数据包分配给所述多个细流的指示。
8.根据任一项前述权利要求所述的方法,其还包括:
通过一个或多个物理端口,将所述多个细流中的每个细流中的数据包传输到所述网络。
9.根据权利要求8所述的方法,其中将所述多个细流中的每个细流中的所述数据包传输到所述网络包括:基于每个数据包的所述报头中的信息,从多个物理端口中选择要用于从中发送每个数据包的物理端口。
10.根据任一项前述权利要求所述的方法,其中确定用于要在其中传输的所述数据包的所述细流是基于在数据包的所述报头中的所述字段中为除了来自所述用户应用程序的所述数据之外的数据设置的值。
11.根据任一项前述权利要求所述的方法,其中每个细流中的活动数据包的数量低于阈值,并且其中所述阈值是可基于网络拥塞进行调整的。
12.根据任一项前述权利要求所述的方法,其还包括:响应于确定所述细流的原始路径具有超过阈值的延时或丢失率,将细流及其相关联数据包分配给通过所述网络的不同路径。
13.一种装置,其包括:
处理逻辑;
计算机可读存储设备,所述计算机可读存储设备耦合到所述处理逻辑并可由所述处理逻辑读取,其中所述计算机可读存储设备包括用于致使所述处理逻辑执行下列操作的指令:
从用户应用程序接收要使用通过网络的单个连接从源地址传输到目的地地址的消息;
根据通信协议将所述消息分成多个数据包;
对于所述多个数据包中的每个数据包:
从多个细流中分配用于要在其中传输的所述数据包的细流;
基于所述分配的细流,设置所述数据包中的由所述网络的网络交换机用于路由所述数据包的字段;以及
经由所述分配的细流,发送所述数据包以通过所述网络进行传输;
与所述处理逻辑耦合并且可由所述处理逻辑访问的存储器,所述存储器被配置为存储多个数据包队列;以及
与所述网络进行通信的一个或多个物理端口,其中所述多个数据包通过所述一个或多个物理端口传输到所述网络。
14.根据权利要求13所述的装置,其中所述一个或多个物理端口中的每一个都具有唯一IP地址,并且其中所述数据包的所述报头中的所述字段是IP报头的源IP地址字段。
15.根据权利要求13或14所述的装置,其中所述装置包括片上系统(SOC)、处理器、网络接口卡(NIC)、交换机专用集成电路(ASIC)或现场可编程门阵列(FPGA)中的一个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/981,485 | 2015-12-28 | ||
US14/981,485 US10498654B2 (en) | 2015-12-28 | 2015-12-28 | Multi-path transport design |
PCT/US2016/068941 WO2017117252A1 (en) | 2015-12-28 | 2016-12-28 | Multi-path transport design |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108476208A true CN108476208A (zh) | 2018-08-31 |
CN108476208B CN108476208B (zh) | 2021-02-05 |
Family
ID=57799924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680076623.4A Active CN108476208B (zh) | 2015-12-28 | 2016-12-28 | 多路径传输设计 |
Country Status (11)
Country | Link |
---|---|
US (3) | US10498654B2 (zh) |
EP (1) | EP3398061B1 (zh) |
JP (1) | JP6697556B2 (zh) |
KR (1) | KR102072318B1 (zh) |
CN (1) | CN108476208B (zh) |
AU (1) | AU2016382945B2 (zh) |
BR (1) | BR112018013313A2 (zh) |
CA (1) | CA3008896C (zh) |
CL (1) | CL2018001768A1 (zh) |
SG (1) | SG11201804983XA (zh) |
WO (1) | WO2017117252A1 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109257620A (zh) * | 2018-11-19 | 2019-01-22 | 海南大学 | 基于多路径传输的网络直播方法及其系统 |
CN109413169A (zh) * | 2018-10-15 | 2019-03-01 | 北京东土军悦科技有限公司 | 设备间通信方法、装置、计算机设备以及存储介质 |
CN109743266A (zh) * | 2019-01-22 | 2019-05-10 | 上海宽带技术及应用工程研究中心 | 基于胖树结构的sdn交换网络 |
CN110932879A (zh) * | 2018-09-20 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 网络性能测试方法、数据处理设备和存储介质 |
WO2020103727A1 (zh) * | 2018-11-19 | 2020-05-28 | 华为技术有限公司 | 一种flowlet负载分担方法及装置 |
CN112689011A (zh) * | 2020-12-24 | 2021-04-20 | 北京浪潮数据技术有限公司 | 一种基于nfs协议的业务传输方法、装置、设备及介质 |
US20210203622A1 (en) * | 2019-12-27 | 2021-07-01 | Texas Instruments Incorporated | Packet storage based on packet properties |
CN114128228A (zh) * | 2019-07-31 | 2022-03-01 | 华为技术有限公司 | 通过SRv6头传输MTNC-ID以实现5G传输 |
CN114513369A (zh) * | 2022-04-18 | 2022-05-17 | 远江盛邦(北京)网络安全科技股份有限公司 | 基于深度报文检测的物联网行为分析方法及系统 |
CN114640624A (zh) * | 2020-12-01 | 2022-06-17 | 中国联合网络通信集团有限公司 | 汇聚边缘云池组化系统 |
WO2023202294A1 (zh) * | 2022-04-18 | 2023-10-26 | 华为技术有限公司 | 一种数据流保序方法、数据交换装置及网络 |
US11882513B2 (en) | 2019-07-31 | 2024-01-23 | Huawei Technologies Co., Ltd. | Transporting MTNC-ID over SRV6-enabled dataplane for 5G transport |
Families Citing this family (109)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10491973B2 (en) * | 2015-04-24 | 2019-11-26 | Rockley Photonics Limited | Optoelectronic switch |
US9843530B2 (en) | 2015-12-15 | 2017-12-12 | International Business Machines Corporation | System, method, and recording medium for queue management in a forwarder |
US10498654B2 (en) | 2015-12-28 | 2019-12-03 | Amazon Technologies, Inc. | Multi-path transport design |
US10020918B2 (en) * | 2015-12-28 | 2018-07-10 | Alcatel Lucent | Fast coupled retransmission for multipath communications |
US9985904B2 (en) | 2015-12-29 | 2018-05-29 | Amazon Technolgies, Inc. | Reliable, out-of-order transmission of packets |
US11018947B2 (en) | 2016-01-27 | 2021-05-25 | Oracle International Corporation | System and method for supporting on-demand setup of local host channel adapter port partition membership in a high-performance computing environment |
US10972375B2 (en) | 2016-01-27 | 2021-04-06 | Oracle International Corporation | System and method of reserving a specific queue pair number for proprietary management traffic in a high-performance computing environment |
US10348645B2 (en) | 2016-01-27 | 2019-07-09 | Oracle International Corporation | System and method for supporting flexible framework for extendable SMA attributes in a high performance computing environment |
US11271870B2 (en) | 2016-01-27 | 2022-03-08 | Oracle International Corporation | System and method for supporting scalable bit map based P_Key table in a high performance computing environment |
US10440152B2 (en) | 2016-01-27 | 2019-10-08 | Oracle International Corporation | System and method of initiating virtual machine configuration on a subordinate node from a privileged node in a high-performance computing environment |
US10666611B2 (en) | 2016-01-28 | 2020-05-26 | Oracle International Corporation | System and method for supporting multiple concurrent SL to VL mappings in a high performance computing environment |
US10355972B2 (en) | 2016-01-28 | 2019-07-16 | Oracle International Corporation | System and method for supporting flexible P_Key mapping in a high performance computing environment |
US10659340B2 (en) | 2016-01-28 | 2020-05-19 | Oracle International Corporation | System and method for supporting VM migration between subnets in a high performance computing environment |
US10333894B2 (en) | 2016-01-28 | 2019-06-25 | Oracle International Corporation | System and method for supporting flexible forwarding domain boundaries in a high performance computing environment |
US10374926B2 (en) | 2016-01-28 | 2019-08-06 | Oracle International Corporation | System and method for monitoring logical network traffic flows using a ternary content addressable memory in a high performance computing environment |
US10348649B2 (en) | 2016-01-28 | 2019-07-09 | Oracle International Corporation | System and method for supporting partitioned switch forwarding tables in a high performance computing environment |
US10536334B2 (en) | 2016-01-28 | 2020-01-14 | Oracle International Corporation | System and method for supporting subnet number aliasing in a high performance computing environment |
US10616118B2 (en) | 2016-01-28 | 2020-04-07 | Oracle International Corporation | System and method for supporting aggressive credit waiting in a high performance computing environment |
US10348847B2 (en) | 2016-01-28 | 2019-07-09 | Oracle International Corporation | System and method for supporting proxy based multicast forwarding in a high performance computing environment |
US10630816B2 (en) | 2016-01-28 | 2020-04-21 | Oracle International Corporation | System and method for supporting shared multicast local identifiers (MILD) ranges in a high performance computing environment |
US9961138B2 (en) * | 2016-02-16 | 2018-05-01 | Justin G. Lelacheur | Fiber-based distributed data center architecture |
US9985883B2 (en) * | 2016-02-26 | 2018-05-29 | 128 Technology, Inc. | Name-based routing system and method |
US10171353B2 (en) * | 2016-03-04 | 2019-01-01 | Oracle International Corporation | System and method for supporting dual-port virtual router in a high performance computing environment |
US9985891B2 (en) * | 2016-04-07 | 2018-05-29 | Oracle International Corporation | Congestion management in distributed systems using autonomous self-regulation |
US11144496B2 (en) | 2016-07-26 | 2021-10-12 | Samsung Electronics Co., Ltd. | Self-configuring SSD multi-protocol support in host-less environment |
US10210123B2 (en) | 2016-07-26 | 2019-02-19 | Samsung Electronics Co., Ltd. | System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices |
US20190109720A1 (en) | 2016-07-26 | 2019-04-11 | Samsung Electronics Co., Ltd. | Modular system (switch boards and mid-plane) for supporting 50g or 100g ethernet speeds of fpga+ssd |
US10372659B2 (en) | 2016-07-26 | 2019-08-06 | Samsung Electronics Co., Ltd. | Multi-mode NMVE over fabrics devices |
EP3491792B1 (en) * | 2016-07-29 | 2021-02-17 | Hewlett-Packard Enterprise Development LP | Deliver an ingress packet to a queue at a gateway device |
CN108604199B (zh) | 2016-08-23 | 2022-08-23 | 甲骨文国际公司 | 计算环境中支持快速混合重新配置的系统和方法、介质 |
US10749995B2 (en) | 2016-10-07 | 2020-08-18 | Cisco Technology, Inc. | System and method to facilitate integration of information-centric networking into internet protocol networks |
GB201617409D0 (en) * | 2016-10-13 | 2016-11-30 | Asio Ltd | A method and system for acoustic communication of data |
US10200305B2 (en) * | 2016-10-31 | 2019-02-05 | Ciena Corporation | Structured rearranged network for data center and high-performance computing applications |
US10834484B2 (en) | 2016-10-31 | 2020-11-10 | Ciena Corporation | Flat, highly connected optical network for data center switch connectivity |
US10033516B2 (en) | 2016-11-30 | 2018-07-24 | International Business Machines Corporation | Multi-domain connection establishment in computer networking communications |
US10558250B2 (en) * | 2016-12-23 | 2020-02-11 | Oracle International Corporation | System and method for coordinated link up handling following switch reset in a high performance computing network |
US10764188B2 (en) | 2017-02-22 | 2020-09-01 | Cisco Technology, Inc. | System and method to facilitate robust traffic load balancing and remote adaptive active queue management in an information-centric networking environment |
US10798633B2 (en) * | 2017-02-23 | 2020-10-06 | Cisco Technology, Inc. | Heterogeneous access gateway for an information-centric networking environment |
US10805825B2 (en) | 2017-02-23 | 2020-10-13 | Cisco Technology, Inc. | System and method to facilitate cross-layer optimization of video over WiFi in an information-centric networking environment |
US10686729B2 (en) | 2017-03-29 | 2020-06-16 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
CN110710139A (zh) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | 具有光置换器的无阻塞全网状数据中心网络 |
CN110710172A (zh) | 2017-03-29 | 2020-01-17 | 芬基波尔有限责任公司 | 在接入节点组内多路复用分组喷射的无阻塞的任意到任意数据中心网络 |
CN110741356B (zh) | 2017-04-10 | 2024-03-15 | 微软技术许可有限责任公司 | 多处理器系统中的中继一致存储器管理 |
US10659376B2 (en) * | 2017-05-18 | 2020-05-19 | International Business Machines Corporation | Throttling backbone computing regarding completion operations |
US11153105B2 (en) * | 2017-06-29 | 2021-10-19 | Intel Corporation | Technologies for densely packaging network components for large scale indirect topologies |
US10659254B2 (en) | 2017-07-10 | 2020-05-19 | Fungible, Inc. | Access node integrated circuit for data centers which includes a networking unit, a plurality of host units, processing clusters, a data network fabric, and a control network fabric |
US10725825B2 (en) | 2017-07-10 | 2020-07-28 | Fungible, Inc. | Data processing unit for stream processing |
CN109412964B (zh) * | 2017-08-18 | 2022-04-29 | 华为技术有限公司 | 报文控制方法及网络装置 |
US11411860B2 (en) | 2017-08-31 | 2022-08-09 | Oracle International Corporation | System and method for on-demand unicast forwarding in a high performance computing environment |
US10992538B2 (en) | 2017-08-31 | 2021-04-27 | Oracle International Corporation | System and method for using InfiniBand routing algorithms for ethernet fabrics in a high performance computing environment |
CN109474518B (zh) * | 2017-09-07 | 2021-08-20 | 华为技术有限公司 | 转发报文的方法及装置 |
WO2019068017A1 (en) | 2017-09-29 | 2019-04-04 | Fungible, Inc. | RESILIENT NETWORK COMMUNICATION USING SELECTIVE PULVER FLOW SPRAY BY MULTIPATH PATH |
US11178262B2 (en) * | 2017-09-29 | 2021-11-16 | Fungible, Inc. | Fabric control protocol for data center networks with packet spraying over multiple alternate data paths |
US20200304427A1 (en) * | 2017-10-17 | 2020-09-24 | Drivenets Ltd. | A Communication Routing System |
US10567504B2 (en) | 2017-11-29 | 2020-02-18 | International Business Machines Corporation | Protecting in-flight transaction requests |
CN115941616A (zh) * | 2017-12-15 | 2023-04-07 | 微软技术许可有限责任公司 | 多路径rdma传输 |
US10540288B2 (en) | 2018-02-02 | 2020-01-21 | Fungible, Inc. | Efficient work unit processing in a multicore system |
WO2019164637A1 (en) | 2018-02-23 | 2019-08-29 | Futurewei Technologies, Inc. | Advertising and programming preferred path routes using interior gateway protocols |
WO2019190699A1 (en) * | 2018-03-28 | 2019-10-03 | Futurewei Technologies, Inc. | Method and apparatus for preferred path route information distribution and maintenance |
US11012367B2 (en) * | 2018-03-30 | 2021-05-18 | Intel IP Corporation | Technologies for managing TCP/IP packet delivery |
WO2019204311A1 (en) | 2018-04-17 | 2019-10-24 | Intel Corporation | Technologies for out-of-order network packet management and selective data flow splitting |
EP3785405A1 (en) | 2018-04-26 | 2021-03-03 | Huawei Technologies Co., Ltd. | Resource reservation and maintenance for preferred path routes in a network |
WO2019212678A1 (en) | 2018-05-04 | 2019-11-07 | Futurewei Technologies, Inc. | Explicit backups and fast re-route mechanisms for preferred path routes in a network |
WO2019236221A1 (en) | 2018-06-04 | 2019-12-12 | Futurewei Technologies, Inc. | Preferred path route graphs in a network |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
CN108924214A (zh) * | 2018-06-27 | 2018-11-30 | 中国建设银行股份有限公司 | 一种计算集群的负载均衡方法、装置及系统 |
US11394649B2 (en) * | 2018-06-29 | 2022-07-19 | Intel Corporation | Non-random flowlet-based routing |
US10938724B2 (en) * | 2018-07-23 | 2021-03-02 | Cisco Technology, Inc. | Flow rate based network load balancing |
US10904342B2 (en) * | 2018-07-30 | 2021-01-26 | Cisco Technology, Inc. | Container networking using communication tunnels |
US11252110B1 (en) | 2018-09-21 | 2022-02-15 | Marvell Asia Pte Ltd | Negotiation of alignment mode for out of order placement of data in network devices |
US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
US10951544B2 (en) * | 2019-01-30 | 2021-03-16 | The Boeing Company | Apparatus and method of crosschecking data copies using one or more voter elements |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
CN113728599A (zh) * | 2019-05-23 | 2021-11-30 | 慧与发展有限责任合伙企业 | 促进将包高效地注入网络接口控制器(nic)中的输出缓冲区中的系统和方法 |
US10999084B2 (en) | 2019-05-31 | 2021-05-04 | Microsoft Technology Licensing, Llc | Leveraging remote direct memory access (RDMA) for packet capture |
CN110417675B (zh) * | 2019-07-29 | 2020-12-01 | 广州竞远安全技术股份有限公司 | 一种soc下高性能探针的网络分流方法、装置及系统 |
EP4018607A1 (en) * | 2019-09-27 | 2022-06-29 | Viasat, Inc. | Method and apparatus for distributing network traffic over multiple communication networks |
US11121984B2 (en) | 2019-10-18 | 2021-09-14 | Ciena Corporation | Routing tables for forwarding packets between switches in a data center network |
US11438497B2 (en) | 2019-12-13 | 2022-09-06 | Sony Group Corporation | Managing multiple image devices |
CN110913025B (zh) | 2019-12-31 | 2022-06-24 | 中国银联股份有限公司 | 服务调用方法、装置、设备及介质 |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
US11397589B2 (en) * | 2020-03-06 | 2022-07-26 | EMC IP Holding Company LLC | Snapshot transmission from storage array to cloud using multi-path input-output |
US11171882B2 (en) * | 2020-03-12 | 2021-11-09 | Mellanox Technologies Tlv Ltd. | Flexible Clos topology switch |
US11310115B2 (en) * | 2020-05-20 | 2022-04-19 | Mellanox Technologies, Ltd. | TClos—scalable network topology and system architecture |
CN111817973B (zh) * | 2020-06-28 | 2022-03-25 | 电子科技大学 | 一种数据中心网络负载的均衡方法 |
US11729092B2 (en) * | 2020-07-02 | 2023-08-15 | Northrop Grumman Systems Corporation | System and method for multi-path mesh network communications |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
US11271868B2 (en) | 2020-07-28 | 2022-03-08 | Ciena Corporation | Programmatically configured switches and distributed buffering across fabric interconnect |
US11736417B2 (en) * | 2020-08-17 | 2023-08-22 | Western Digital Technologies, Inc. | Devices and methods for network message sequencing |
US11658922B2 (en) | 2020-08-31 | 2023-05-23 | Micron Technology, Inc. | Optional path ordering in packet-based network |
US11392527B2 (en) | 2020-08-31 | 2022-07-19 | Micron Technology, Inc. | Ordered delivery of data packets based on type of path information in each packet |
CN114189474A (zh) * | 2020-09-14 | 2022-03-15 | 华为技术有限公司 | 数据传输方法和装置 |
TWI757887B (zh) * | 2020-09-24 | 2022-03-11 | 國立臺北教育大學 | 用以促進一資料流從一發送端透過多路徑傳輸至一接收端的方法、網路控制器以及電腦程式產品 |
US10999364B1 (en) * | 2020-10-11 | 2021-05-04 | Mellanox Technologies, Ltd. | Emulation of memory access transport services |
EP4226570A4 (en) * | 2020-10-12 | 2024-03-27 | Goat Software Ltd | DATA TRANSMISSION SYSTEM, COMMUNICATION ADAPTER AND METHOD |
CN112468415A (zh) * | 2020-10-21 | 2021-03-09 | 浪潮思科网络科技有限公司 | 一种协议报文处理方法、装置、设备及介质 |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
CN116762323A (zh) * | 2021-01-08 | 2023-09-15 | 华为技术有限公司 | 一种交换系统、交换网络和交换节点 |
US11563687B2 (en) | 2021-02-04 | 2023-01-24 | Ciena Corporation | Controlling distributed buffers in a network to manage data packets |
US11934658B2 (en) | 2021-03-25 | 2024-03-19 | Mellanox Technologies, Ltd. | Enhanced storage protocol emulation in a peripheral device |
US11934333B2 (en) | 2021-03-25 | 2024-03-19 | Mellanox Technologies, Ltd. | Storage protocol emulation in a peripheral device |
US11575612B2 (en) | 2021-06-07 | 2023-02-07 | Cisco Technology, Inc. | Reducing packet misorderings in wireless networks |
US11726666B2 (en) * | 2021-07-11 | 2023-08-15 | Mellanox Technologies, Ltd. | Network adapter with efficient storage-protocol emulation |
US11895012B2 (en) * | 2022-01-31 | 2024-02-06 | Nile Global, Inc. | Methods and systems for switch management |
US20230283543A1 (en) * | 2022-03-04 | 2023-09-07 | Microsoft Technology Licensing, Llc | System and method for fault recovery in spray based networks |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
CN116346726B (zh) * | 2023-05-29 | 2023-08-15 | 湘江实验室 | 一种自适应突发流量的主机端负载均衡方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103929492A (zh) * | 2014-04-28 | 2014-07-16 | 华为技术有限公司 | 业务链负载均衡方法及其装置、系统 |
US20150127797A1 (en) * | 2013-11-05 | 2015-05-07 | Cisco Technology, Inc. | System and method for multi-path load balancing in network fabrics |
US20150124652A1 (en) * | 2013-11-05 | 2015-05-07 | Cisco Technology, Inc. | Weighted equal cost multipath routing |
US20150163144A1 (en) * | 2013-12-09 | 2015-06-11 | Nicira, Inc. | Detecting and handling elephant flows |
Family Cites Families (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699500A (en) | 1995-06-01 | 1997-12-16 | Ncr Corporation | Reliable datagram service provider for fast messaging in a clustered environment |
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6788686B1 (en) | 1999-11-30 | 2004-09-07 | Lucent Technologies Inc. | Method of maintaining packet order in multipath transmission systems having non-uniform traffic splitting |
US7171484B1 (en) | 2000-05-24 | 2007-01-30 | Krause Michael R | Reliable datagram transport service |
US6990528B1 (en) | 2000-10-19 | 2006-01-24 | International Business Machines Corporation | System area network of end-to-end context via reliable datagram domains |
US6898638B2 (en) | 2001-01-11 | 2005-05-24 | International Business Machines Corporation | Method and apparatus for grouping data for transfer according to recipient buffer size |
US20020198927A1 (en) | 2001-06-21 | 2002-12-26 | International Business Machines Corporation | Apparatus and method for routing internet protocol frames over a system area network |
US20030005039A1 (en) | 2001-06-29 | 2003-01-02 | International Business Machines Corporation | End node partitioning using local identifiers |
US7116673B2 (en) | 2001-08-09 | 2006-10-03 | International Business Machines Corporation | Queue pair resolution in infiniband fabrics |
US7095750B2 (en) | 2001-08-16 | 2006-08-22 | International Business Machines Corporation | Apparatus and method for virtualizing a queue pair space to minimize time-wait impacts |
US7039052B2 (en) | 2001-09-19 | 2006-05-02 | International Business Machines Corporation | Selective routing of multi-recipient communications |
US7088718B1 (en) | 2002-03-19 | 2006-08-08 | Cisco Technology, Inc. | Server load balancing using IP option field approach to identify route to selected server |
US7149220B2 (en) | 2002-04-25 | 2006-12-12 | International Business Machines Corporation | System, method, and product for managing data transfers in a network |
US7627693B2 (en) | 2002-06-11 | 2009-12-01 | Pandya Ashish A | IP storage processor and engine therefor using RDMA |
US7346701B2 (en) | 2002-08-30 | 2008-03-18 | Broadcom Corporation | System and method for TCP offload |
US7411959B2 (en) | 2002-08-30 | 2008-08-12 | Broadcom Corporation | System and method for handling out-of-order frames |
US20040044796A1 (en) | 2002-09-03 | 2004-03-04 | Vangal Sriram R. | Tracking out-of-order packets |
US6721806B2 (en) | 2002-09-05 | 2004-04-13 | International Business Machines Corporation | Remote direct memory access enabled network interface controller switchover and switchback support |
US6735647B2 (en) | 2002-09-05 | 2004-05-11 | International Business Machines Corporation | Data reordering mechanism for high performance networks |
DE60331847D1 (de) | 2002-10-18 | 2010-05-06 | Broadcom Corp | System und verfahren zur empfangswarteschlangenprovisionierung |
US7870268B2 (en) | 2003-09-15 | 2011-01-11 | Intel Corporation | Method, system, and program for managing data transmission through a network |
US7716290B2 (en) | 2003-11-20 | 2010-05-11 | Microsoft Corporation | Send by reference in a customizable, tag-based protocol |
US7912979B2 (en) | 2003-12-11 | 2011-03-22 | International Business Machines Corporation | In-order delivery of plurality of RDMA messages |
US7382733B2 (en) | 2004-02-12 | 2008-06-03 | International Business Machines Corporation | Method for handling reordered data packets |
US7826457B2 (en) | 2004-05-11 | 2010-11-02 | Broadcom Corp. | Method and system for handling out-of-order segments in a wireless system via direct data placement |
US7533176B2 (en) | 2004-07-14 | 2009-05-12 | International Business Machines Corporation | Method for supporting connection establishment in an offload of network protocol processing |
US20060075067A1 (en) | 2004-08-30 | 2006-04-06 | International Business Machines Corporation | Remote direct memory access with striping over an unreliable datagram transport |
US20060168274A1 (en) | 2004-11-08 | 2006-07-27 | Eliezer Aloni | Method and system for high availability when utilizing a multi-stream tunneled marker-based protocol data unit aligned protocol |
US20060101090A1 (en) | 2004-11-08 | 2006-05-11 | Eliezer Aloni | Method and system for reliable datagram tunnels for clusters |
US20060101225A1 (en) | 2004-11-08 | 2006-05-11 | Eliezer Aloni | Method and system for a multi-stream tunneled marker-based protocol data unit aligned protocol |
US7889762B2 (en) | 2006-01-19 | 2011-02-15 | Intel-Ne, Inc. | Apparatus and method for in-line insertion and removal of markers |
GB0602314D0 (en) * | 2006-02-06 | 2006-03-15 | Ericsson Telefon Ab L M | Transporting packets |
US20070208820A1 (en) | 2006-02-17 | 2007-09-06 | Neteffect, Inc. | Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations |
US7913077B2 (en) | 2007-02-13 | 2011-03-22 | International Business Machines Corporation | Preventing IP spoofing and facilitating parsing of private data areas in system area network connection requests |
US8244826B2 (en) | 2007-10-23 | 2012-08-14 | International Business Machines Corporation | Providing a memory region or memory window access notification on a system area network |
US8190960B1 (en) | 2007-12-13 | 2012-05-29 | Force10 Networks, Inc. | Guaranteed inter-process communication |
US20110280247A1 (en) | 2010-05-17 | 2011-11-17 | Google Inc. | System and method for reducing latency via multiple network connections |
US8452888B2 (en) | 2010-07-22 | 2013-05-28 | International Business Machines Corporation | Flow control for reliable message passing |
US8433783B2 (en) | 2010-09-29 | 2013-04-30 | Citrix Systems, Inc. | Systems and methods for providing quality of service via a flow controlled tunnel |
WO2012048928A1 (en) | 2010-10-15 | 2012-04-19 | Cinemo Gmbh | Distributed playback architecture |
US10873613B2 (en) | 2010-12-09 | 2020-12-22 | Xilinx, Inc. | TCP processing for devices |
US8903935B2 (en) | 2010-12-17 | 2014-12-02 | Ryan Eric GRANT | Remote direct memory access over datagrams |
US20120155458A1 (en) | 2010-12-20 | 2012-06-21 | Brocade Communications Systems, Inc. | Repeated Lost Packet Retransmission in a TCP/IP Network |
US20120155468A1 (en) * | 2010-12-21 | 2012-06-21 | Microsoft Corporation | Multi-path communications in a data center environment |
TW201246867A (en) * | 2011-05-06 | 2012-11-16 | Ralink Technology Corp | Packet processing accelerator and method thereof |
US8705572B2 (en) | 2011-05-09 | 2014-04-22 | Emulex Corporation | RoCE packet sequence acceleration |
US8681606B2 (en) | 2011-08-30 | 2014-03-25 | International Business Machines Corporation | Implementing redundancy on infiniband (IB) networks |
US9473596B2 (en) | 2011-09-27 | 2016-10-18 | International Business Machines Corporation | Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections |
WO2013083840A1 (en) | 2011-12-09 | 2013-06-13 | Cinemo Gmbh | Media playback component comprising playback queue and queue bypass |
DE112011106016T5 (de) | 2011-12-23 | 2014-09-11 | Intel Corporation | Gemeinsame Sendeschlange |
JP6227631B2 (ja) | 2012-05-10 | 2017-11-08 | サムスン エレクトロニクス カンパニー リミテッド | データパケットのアップリンク及びダウンリンクの間のコネクションレス型送信のための方法及びシステム |
US9544927B2 (en) | 2012-07-02 | 2017-01-10 | Alcatel Lucent | System, method and computer readable medium for bearer activation in a core network for wireless devices |
US8753141B2 (en) * | 2012-07-10 | 2014-06-17 | Tyco Electronics Corporation | Adapter for connecting a harness to magnet wires |
US9697147B2 (en) | 2012-08-06 | 2017-07-04 | Advanced Micro Devices, Inc. | Stacked memory device with metadata management |
US9253287B2 (en) | 2012-08-20 | 2016-02-02 | Advanced Micro Devices, Inc. | Speculation based approach for reliable message communications |
US9258218B2 (en) * | 2012-11-30 | 2016-02-09 | Alcatel Lucent | Software-defined network overlay |
US20140358848A1 (en) | 2013-05-28 | 2014-12-04 | Unisys Corporation | Interconnect partition binding api, allocation and management of application-specific partitions |
JP2015012580A (ja) | 2013-07-02 | 2015-01-19 | キヤノン株式会社 | 受信装置、受信方法及びプログラム |
US20150052280A1 (en) | 2013-08-19 | 2015-02-19 | Emulex Design & Manufacturing Corporation | Method and system for communications-stack offload to a hardware controller |
JP6206009B2 (ja) | 2013-09-04 | 2017-10-04 | 沖電気工業株式会社 | パケット通信装置及びシステム |
US9686180B2 (en) * | 2013-11-05 | 2017-06-20 | Cisco Technology, Inc. | Managing routing information for tunnel endpoints in overlay networks |
US10110518B2 (en) | 2013-12-18 | 2018-10-23 | Mellanox Technologies, Ltd. | Handling transport layer operations received out of order |
CN104796347A (zh) * | 2014-01-20 | 2015-07-22 | 中兴通讯股份有限公司 | 一种负载均衡方法、装置和系统 |
US9647926B2 (en) * | 2014-03-17 | 2017-05-09 | Telefonaktiebolaget L M Ericsson (Publ) | Procedure to identify multi-homed prefixes for IS-IS LFA |
CN103986647A (zh) | 2014-05-21 | 2014-08-13 | 大唐移动通信设备有限公司 | 报文传输方法及设备 |
US10616380B2 (en) * | 2014-06-19 | 2020-04-07 | Cavium, Llc | Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof |
JP5676067B1 (ja) * | 2014-07-16 | 2015-02-25 | かもめエンジニアリング株式会社 | 通信方法および通信システム |
US20160026605A1 (en) | 2014-07-28 | 2016-01-28 | Emulex Corporation | Registrationless transmit onload rdma |
US9806896B2 (en) | 2014-09-30 | 2017-10-31 | Nicira, Inc. | Optimized message retransmission mechanism for distributed storage virtualization directory system |
US9747249B2 (en) | 2014-12-29 | 2017-08-29 | Nicira, Inc. | Methods and systems to achieve multi-tenancy in RDMA over converged Ethernet |
US10075568B2 (en) * | 2015-01-02 | 2018-09-11 | Lg Electronics Inc. | Apparatus for transmitting broadcast signal, apparatus for receiving broadcast signal, method for transmitting broadcast signal and method for receiving broadcast signal |
CN105827472B (zh) * | 2015-01-04 | 2019-08-20 | 华为技术有限公司 | 网络数据流类型检测方法及装置 |
US20160212214A1 (en) | 2015-01-16 | 2016-07-21 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Tunneled remote direct memory access (rdma) communication |
US9667538B2 (en) * | 2015-01-30 | 2017-05-30 | Telefonaktiebolget L M Ericsson (Publ) | Method and apparatus for connecting a gateway router to a set of scalable virtual IP network appliances in overlay networks |
US9674297B2 (en) | 2015-02-09 | 2017-06-06 | International Business Machines Corporation | Handling packet reordering at a network adapter |
US10375167B2 (en) | 2015-11-20 | 2019-08-06 | Microsoft Technology Licensing, Llc | Low latency RDMA-based distributed storage |
US10498654B2 (en) | 2015-12-28 | 2019-12-03 | Amazon Technologies, Inc. | Multi-path transport design |
US9985903B2 (en) | 2015-12-29 | 2018-05-29 | Amazon Technologies, Inc. | Reliable, out-of-order receipt of packets |
US10148570B2 (en) | 2015-12-29 | 2018-12-04 | Amazon Technologies, Inc. | Connectionless reliable transport |
US9985904B2 (en) | 2015-12-29 | 2018-05-29 | Amazon Technolgies, Inc. | Reliable, out-of-order transmission of packets |
US10148581B2 (en) | 2016-05-30 | 2018-12-04 | Mellanox Technologies, Ltd. | End-to-end enhanced reliable datagram transport |
US10430374B2 (en) | 2016-06-29 | 2019-10-01 | Mellanox Technologies, Ltd. | Selective acknowledgement of RDMA packets |
US10425511B2 (en) | 2017-01-30 | 2019-09-24 | 128 Technology, Inc. | Method and apparatus for managing routing disruptions in a computer network |
-
2015
- 2015-12-28 US US14/981,485 patent/US10498654B2/en active Active
-
2016
- 2016-12-28 KR KR1020187021415A patent/KR102072318B1/ko active IP Right Grant
- 2016-12-28 JP JP2018529606A patent/JP6697556B2/ja active Active
- 2016-12-28 WO PCT/US2016/068941 patent/WO2017117252A1/en active Application Filing
- 2016-12-28 SG SG11201804983XA patent/SG11201804983XA/en unknown
- 2016-12-28 CA CA3008896A patent/CA3008896C/en active Active
- 2016-12-28 BR BR112018013313A patent/BR112018013313A2/pt not_active Application Discontinuation
- 2016-12-28 EP EP16826649.2A patent/EP3398061B1/en active Active
- 2016-12-28 AU AU2016382945A patent/AU2016382945B2/en active Active
- 2016-12-28 CN CN201680076623.4A patent/CN108476208B/zh active Active
-
2018
- 2018-06-28 CL CL2018001768A patent/CL2018001768A1/es unknown
-
2019
- 2019-08-13 US US16/539,303 patent/US11451476B2/en active Active
-
2022
- 2022-09-12 US US17/931,425 patent/US20230006934A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150127797A1 (en) * | 2013-11-05 | 2015-05-07 | Cisco Technology, Inc. | System and method for multi-path load balancing in network fabrics |
US20150124652A1 (en) * | 2013-11-05 | 2015-05-07 | Cisco Technology, Inc. | Weighted equal cost multipath routing |
US20150163144A1 (en) * | 2013-12-09 | 2015-06-11 | Nicira, Inc. | Detecting and handling elephant flows |
CN103929492A (zh) * | 2014-04-28 | 2014-07-16 | 华为技术有限公司 | 业务链负载均衡方法及其装置、系统 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110932879B (zh) * | 2018-09-20 | 2022-12-23 | 阿里巴巴集团控股有限公司 | 网络性能测试方法、数据处理设备和存储介质 |
CN110932879A (zh) * | 2018-09-20 | 2020-03-27 | 阿里巴巴集团控股有限公司 | 网络性能测试方法、数据处理设备和存储介质 |
CN109413169A (zh) * | 2018-10-15 | 2019-03-01 | 北京东土军悦科技有限公司 | 设备间通信方法、装置、计算机设备以及存储介质 |
WO2020103727A1 (zh) * | 2018-11-19 | 2020-05-28 | 华为技术有限公司 | 一种flowlet负载分担方法及装置 |
CN109257620A (zh) * | 2018-11-19 | 2019-01-22 | 海南大学 | 基于多路径传输的网络直播方法及其系统 |
CN109743266A (zh) * | 2019-01-22 | 2019-05-10 | 上海宽带技术及应用工程研究中心 | 基于胖树结构的sdn交换网络 |
US11882513B2 (en) | 2019-07-31 | 2024-01-23 | Huawei Technologies Co., Ltd. | Transporting MTNC-ID over SRV6-enabled dataplane for 5G transport |
CN114128228A (zh) * | 2019-07-31 | 2022-03-01 | 华为技术有限公司 | 通过SRv6头传输MTNC-ID以实现5G传输 |
US20210203622A1 (en) * | 2019-12-27 | 2021-07-01 | Texas Instruments Incorporated | Packet storage based on packet properties |
US11750534B2 (en) * | 2019-12-27 | 2023-09-05 | Texas Instruments Incorporated | Packet storage based on packet properties |
CN114640624B (zh) * | 2020-12-01 | 2023-05-19 | 中国联合网络通信集团有限公司 | 汇聚边缘云池组化系统 |
CN114640624A (zh) * | 2020-12-01 | 2022-06-17 | 中国联合网络通信集团有限公司 | 汇聚边缘云池组化系统 |
CN112689011B (zh) * | 2020-12-24 | 2023-05-26 | 北京浪潮数据技术有限公司 | 一种基于nfs协议的业务传输方法、装置、设备及介质 |
CN112689011A (zh) * | 2020-12-24 | 2021-04-20 | 北京浪潮数据技术有限公司 | 一种基于nfs协议的业务传输方法、装置、设备及介质 |
CN114513369B (zh) * | 2022-04-18 | 2022-07-08 | 远江盛邦(北京)网络安全科技股份有限公司 | 基于深度报文检测的物联网行为分析方法及系统 |
CN114513369A (zh) * | 2022-04-18 | 2022-05-17 | 远江盛邦(北京)网络安全科技股份有限公司 | 基于深度报文检测的物联网行为分析方法及系统 |
WO2023202294A1 (zh) * | 2022-04-18 | 2023-10-26 | 华为技术有限公司 | 一种数据流保序方法、数据交换装置及网络 |
Also Published As
Publication number | Publication date |
---|---|
CL2018001768A1 (es) | 2018-08-17 |
US10498654B2 (en) | 2019-12-03 |
CN108476208B (zh) | 2021-02-05 |
KR20180098358A (ko) | 2018-09-03 |
KR102072318B1 (ko) | 2020-03-02 |
US11451476B2 (en) | 2022-09-20 |
SG11201804983XA (en) | 2018-07-30 |
BR112018013313A2 (pt) | 2018-12-11 |
JP2019503123A (ja) | 2019-01-31 |
CA3008896C (en) | 2021-11-02 |
EP3398061B1 (en) | 2021-06-30 |
US20230006934A1 (en) | 2023-01-05 |
EP3398061A1 (en) | 2018-11-07 |
AU2016382945A1 (en) | 2018-06-28 |
CA3008896A1 (en) | 2017-07-06 |
US20170187629A1 (en) | 2017-06-29 |
AU2016382945B2 (en) | 2019-10-03 |
WO2017117252A1 (en) | 2017-07-06 |
JP6697556B2 (ja) | 2020-05-20 |
US20190363989A1 (en) | 2019-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108476208A (zh) | 多路径传输设计 | |
US11601359B2 (en) | Resilient network communication using selective multipath packet flow spraying | |
US10382362B2 (en) | Network server having hardware-based virtual router integrated circuit for virtual networking | |
US10225193B2 (en) | Congestion sensitive path-balancing | |
US20200169513A1 (en) | Fabric control protocol for data center networks with packet spraying over multiple alternate data paths | |
Abu-Libdeh et al. | Symbiotic routing in future data centers | |
CN203206278U (zh) | 通用网络接口控制器 | |
US20210320820A1 (en) | Fabric control protocol for large-scale multi-stage data center networks | |
CN110249596A (zh) | 用于saas应用的基于qos的分类和优先级排序的学习技巧 | |
CN109792410A (zh) | 压缩流量的服务质量优先级重新排序的系统和方法 | |
US8792487B2 (en) | Communication path selection | |
CN108353040A (zh) | 用于分布式分组调度的系统和方法 | |
CN103338252A (zh) | 一种分布式数据库并发存储虚拟请求机制 | |
US10038741B1 (en) | Selective enabling of sequencing for encapsulated network traffic | |
US11811685B1 (en) | Selective packet processing including a run-to-completion packet processing data plane | |
Vishnu et al. | Topology agnostic hot‐spot avoidance with InfiniBand | |
Wang et al. | RDMA load balancing via data partition | |
Cui et al. | Enforcing network policy in heterogeneous network function box environment | |
Alshahrani | Delay modeling in data center networks: A taxonomy and performance analysis | |
Abdu Jyothi | Network flow optimization for distributed clouds | |
Kanaga et al. | SELDAC: Software-Defined Storage based Efficient Load Distribution and Auto Scaling in Cloud Data Centers. |
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 |