CN119166567A - 用于远程直接存储器访问的设备和方法 - Google Patents
用于远程直接存储器访问的设备和方法 Download PDFInfo
- Publication number
- CN119166567A CN119166567A CN202411170362.5A CN202411170362A CN119166567A CN 119166567 A CN119166567 A CN 119166567A CN 202411170362 A CN202411170362 A CN 202411170362A CN 119166567 A CN119166567 A CN 119166567A
- Authority
- CN
- China
- Prior art keywords
- wqe
- data packet
- receiving device
- wqes
- rnr
- 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
Classifications
-
- 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
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提出了一种发送设备和接收设备。所述发送设备用于:维护发送队列,其中,所述发送队列包括一个或多个WQE,每个WQE包括所述WQE的目的地信息;为所述一个或多个WQE中的每一个分配XID,并将每个WQE转换为相应的数据包,其中,每个相应的数据包包括对应的WQE的所述XID,并与PSN关联;将每个数据包发送到所述WQE的目的地信息的所述接收设备;从所述接收设备接收指示对于每个发送的数据包,所述发送的数据包是否被接收的通知消息;基于所述通知消息,所述WQE中携带的信息和所述发送设备持有的信息,确定是否为每个WQE生成完成。
Description
本申请是分案申请,原申请的申请号是202180101453.1,原申请日是2021年08月12日,原申请的全部内容通过引用结合在本申请中。
技术领域
本发明涉及高性能计算技术,尤其是涉及远程直接存储器访问(remote directmemory access,RDMA)技术。本发明涉及通过基于数据包的网络传输RDMA事务。为此,本发明提供了一种用于RDMA的设备、方法和数据包格式。
背景技术
应用程序通常需要计算机能够访问驻留在远程计算机上的存储器。RDMA使计算机可以执行此类存储器访问操作,而不涉及在计算机上运行的操作系统。RDMA在现代数据中心和计算机集群中得到了广泛应用,因为它提供了低延迟的远程操作和高网络带宽。RDMA将存储器操作从中央处理器(central processing unit,CPU)卸载到RDMA网络接口卡(network interface card,NIC)(RDMA network interface card,RNIC),该RNIC可以直接访问存储器。
有两种常见的RDMA技术:一种是在InfiniBand规范中定义的,另一种是在因特网工程任务组(Internet Engineering Task Force,IETF)中定义的。IETF协议也称为互联网广域RDMA协议(Internet wide area RDMA protocol,iWARP)。具体而言,InfiniBand RDMA有两个变体,使它可以在IP/以太网网络上运行,例如RoCE和RoCEv2。
这两种RDMA技术都将操作定义为软件层“动词”,然后将其转换为发布到RNIC队列的工作请求。这种工作请求称为工作队列元素(work queue element,WQE)。RDMA还定义了各种传输,RDMA动词在这些传输上执行。传输要么是可靠的,要么是不可靠的,其中,软件负责丢失数据包的重传,并且是面向连接或面向数据报的。当一对网络节点建立由队列对(queue pair,QP)指定的RDMA通信信道时,指示各种传输。所有当前的RDMA传输都提供软件编程模型,在该软件编程模型中,操作按照软件层发布这些操作的顺序(在时间上)发送已完成的信号。
如今,RDMA技术不支持可靠的传输服务,可靠的传输服务可以管理从多个来源或向多个目的地复用的短消息。在本申请的上下文中,“可靠传输”是指保证消息只交换一次,“短消息”表示操作的最大数据长度是网络的最大传输单元(maximum transfer unit,MTU)。因此,需要一种新的可靠RDMA传输方案,用于处理单个数据包长度的消息。
发明内容
鉴于上述情况,本发明的设备和方法旨在提供一种用于RDMA的设备和方法。目标是为短消息提出一种新的可靠RDMA传输,尤其,实现短消息的乱序处理。一个目的是支持在不依赖于先前或以后的操作的情况下执行每个消息。另一个目的是提供一种方案,用于将来自不同源上层进程或协议(upper-layer process/protocol,ULP)的RDMA操作复用到多个目的地。
上述和其他目的通过独立权利要求请求保护的主题来实现。其他实现方式在从属权利要求、说明书和附图中是显而易见的。
本发明的第一方面提供了一种用于RDMA的发送设备。所述发送设备用于:维护发送队列,其中,所述发送队列包括一个或多个WQE,其中,每个WQE包括所述WQE的目的地信息,其中,所述目的地信息包括以下各项中的至少一项:接收设备的地址、接收设备的标识和接收设备的目标应用的标识;为所述一个或多个WQE中的每一个分配事务标识(transaction identifier,XID),并将每个WQE转换为相应的数据包,其中,每个相应的数据包包括对应的WQE的所述XID,并与数据包序列号(packet sequence number,PSN)关联;将每个数据包发送到所述WQE的目的地信息的所述接收设备;从所述接收设备接收每个发送的数据包的通知消息,其中,所述通知消息指示所述发送的数据包是否在所述接收设备处被接收;基于所述通知消息、所述WQE中携带的信息和所述发送设备持有的信息,确定是否为每个WQE生成完成。
例如,WQE是由源ULP(例如,应用程序或软件)发布或发出并推送到QP中的RDMA操作或事务。WQE发送到对等体,或从对等体接收。QP表示通信端点,由发送队列(send queue,SQ)和接收队列(receive queue,RQ)或共享接收队列(shared receive queue,SRQ)组成。根据本发明,提供了一种方案,支持独立处理每个WQE或每个消息,即,不依赖于先前或以后的操作而执行每个WQE或每个消息。每个WQE包括其自己的目的地信息(例如,目标ID、目的地IP地址等),从而使第一方面的发送设备能够处理多个连续的WQE,每个WQE可以发往不同的目标。每个WQE都与唯一的XID关联,接收端可以使用该XID来检测重复操作,并保证消息只交换一次。
发送设备可以基于某些情况决定是否发送WQE完成的信号。传统上,RDMA QP始终在某些操作码(RQ处理等)上生成完成。没有进行控制来操作条件完成。根据本发明,完成可以是可配置的。
在第一方面的一种实现方式中,每个WQE携带仅限于适合于单个网络最大传输单元中的消息。
特别地,本发明提出了一种新的可靠RDMA传输方案,用于处理长达单个数据包长度的消息,即短消息。
在第一方面的一种实现方式中,当对应于相应数据包的所述WQE包括写入操作请求或发送操作请求时,并且所述通知消息指示所述相应数据包在所述接收设备处被接收时,所述发送设备还用于确定所述WQE成功完成。
RDMA操作包括读取、写入、发送、接收、原子操作等。对于写入操作或发送操作,例如,一旦接收设备确认接收到对应数据包,发送设备就认为写入操作或发送操作成功完成。
在第一方面的一种实现方式中,当对应于相应数据包的所述WQE包括读取操作请求或原子操作请求时,所述发送设备还用于:作为对所述原子操作请求或所述读取操作请求的原子操作响应或读取操作响应,分别接收指示所述相应数据包已经由所述接收设备处理的响应数据包,其中,所述响应数据包包括响应WQE的XID和包括所述读取操作请求或所述原子操作请求的所述WQE的XID;确定所述WQE成功完成。
例如,对于读取操作或原子操作,发送设备还期望来自接收设备的读取操作响应或原子操作响应。即,当接收设备确认接收到对应数据包,读取/原子WQE未完成,而是只有当发送设备接收到合适的响应数据包时才完成。在这种情况下,接收设备相应地操作以提供携带所需数据的响应数据包。例如,读取操作响应包括发送设备打算从接收设备获取的数据。根据本发明,响应数据包携带转换为响应数据包的响应WQE的XID,以及对应于操作请求的WQE的XID。需要说明的是,在这种情况下,接收设备也可以认为是发送携带WQE的数据包的“发送设备”。
在第一方面的一种实现方式中,获取与所述接收设备关联的最大可接受接收超时数量;当接收超时数量超过所述最大可接受接收超时数量时,确定对应于所述相应数据包的所述WQE完成但有错误。
可选地,根据本发明的服务传输包括用于以信号发送网络相关错误条件的阈值。例如,接收超时也可以命名为重传超时。例如,当数据包(携带相同的WQE)被重传太多次时,例如,超过最大可接受重传数量时,发送设备停止重传,并确定WQE完成但有错误。
在第一方面的一种实现方式中,每个发送的数据包的所述通知消息包括接收器未就绪(receiver not ready,RNR)指示,其中,所述RNR指示指示所述接收设备无法处理所述发送的数据包,其中,所述发送设备还用于:确定所述发送的数据包中包括的XID;在超时值到期之前,推迟发送包括相同XID的另一个数据包。
本发明提出了一种用于延迟其他消息的传输的RNR信号。特别地,当携带接收设备暂时无法处理的消息的接收到的数据包时,发送设备接收RNR指示。RNR信号仅影响发送设备上的特定消息,避免任何“头端”(Head-of-Line,HoL)阻塞。
在第一方面的一种实现方式中,所述WQE还包括指示最大可接受RNR指示数量的参数,其中,所述发送设备还用于:接收包括重传数据包的RNR指示的另一通知消息;当接收到的RNR指示的数量超过所述最大可接受RNR指示数量时,确定对应于所述重传数据包的所述WQE完成但有错误。
因此,发送设备被隐式告知WQE完成错误。
在第一方面的一种实现方式中,所述通知消息包括多个RNR指示,每个RNR指示指示所述接收设备无法处理特定发送的数据包。
可能的是,接收设备暂时无法处理的消息可能有一个以上,例如,如果接收设备没有可用资源。
在第一方面的一种实现方式中,所述RNR指示还指示所述超时值。
可能的是,只定义了有限数量的RNR超时值,以保持总体较低的完成延迟,并减少所需的计时器数量。
在第一方面的一种实现方式中,每个RNR指示还指示所述接收设备无法在特定超时值内处理特定发送的数据包。
可能的是,对于不同的消息,可以设置不同的超时值。
在第一方面的一种实现方式中,所述发送设备还用于基于所述RNR指示所指示的所述超时值,管理对应于接收到RNR指示的发送的数据包的WQE。
可选地,发送设备可以根据接收到的RNR超时值,将处于RNR“状态”的延迟WQE进行分组。根据本发明,当WQE处于RNR状态时,这表示接收到该WQE的RNR指示。处于RNR“状态”的WQE可以由发送设备一起管理。
在第一方面的一种实现方式中,支持的超时值的数量是可配置的,并在所有通信设备上商定。
在第一方面的一种实现方式中,所述发送队列的一个或多个WQE包括第一WQE和第二WQE,其中,所述第一WQE和所述第二WQE包括不同的目的地信息。
根据本发明,提出了一种方案,可以管理朝向不同目的节点(例如,不同接收节点)的WQE。
在第一方面的一种实现方式中,所述发送队列的一个或多个WQE包括WQE集合,所述WQE集合包括相同的目的地信息,其中,所述发送设备还用于:将对应于所述WQE集合的所述数据包分组到数据包流中;将所述数据包流发送到所述WQE集合的所述接收设备。
例如,每个WQE都包括其自己的目的地信息。对于共享同一目的节点的WQE,对应于这类WQE的数据包可以分组到数据包流,并由发送设备一起管理。
在第一方面的一种实现方式中,每个WQE还与从所述发送设备发送的优先级关联。
发送设备可以为将要发送的WQE配置优先级。优先级高的WQE可以在优先级低的WQE之前处理。
在第一方面的一种实现方式中,所述发送设备还用于从至少一个ULP获得所述一个或多个WQE。
可能的是,由发送设备处理的消息或WQE可以由不同的源ULP发布或发出。
在第一方面的一种实现方式中,包括所述相同的目的地信息的所述WQE集合是从不同的ULP中获取的。
例如,当从不同源ULP获取的WQE共享相同的目的地时,对应于这类WQE的数据包可以分组到数据包流中并一起发送。这样一来,就复用来自不同源的WQE。
在第一方面的一种实现方式中,从不同ULP获取的WQE的XID从相同的XID池中分配,与从不同ULP获取的所述WQE关联的数据包的PSN从相同的PSN池中分配。
可选地,发送设备可以分别为XID和PSN保持连续的数字空间。
在第一方面的一种实现方式中,每个WQE的所述优先级是基于从其获取所述WQE的所述ULP确定的。
例如,从某些ULP发布的WQE或任务的优先级可能高于其他WQE的优先级。
在第一方面的一种实现方式中,每个数据包还与标识流的流块ID关联,其中,所述流包括多个数据包,对应于所述WQE的所述数据包还包括所述流块ID。
根据本发明,也可以应用等价多路径(equal cost multiple path,ECMP)流块。ECMP流块(相对容易)通过将发起方节点与目标节点之间的数据包流划分为子流来支持。假设不同子流的数据包使用不同的路由穿越网络。
在第一方面的一种实现方式中,所述发送设备还用于通过所述流块向所述接收设备发送每个数据包,其中,所述流块与所述接收设备关联。
对于与特定流块ID关联的每个发送数据包,它通过可由该流块ID标识的流路由。
本发明的第二方面提供了一种用于RDMA的接收设备,其中,所述接收设备用于:从用于RDMA的发送设备接收一个或多个数据包,其中,所述一个或多个数据包的每个数据包与PSN关联,并包括对应WQE的XID,其中,每个WQE包括所述WQE的目的地信息,其中,所述目的地信息包括以下各项中的至少一项:所述接收设备的地址、所述接收设备的标识和接收设备的目标应用的标识;向所述发送设备发送通知消息,其中,所述通知消息指示所述一个或多个数据包在所述接收设备处被接收。
根据本发明,提供了一种接收设备,所述接收设备针对第一方面的发送设备相应地操作。本发明中提出的接收设备独立地处理每个接收到的数据包。即,每个接收到的数据包在接收时都可以安全地执行,而不管任何先前数据包的状态如何。
在第二方面的一种实现方式中,当对应于相应数据包的所述WQE包括写入操作请求或发送操作请求时,所述接收设备还用于:将所述写入操作请求上携带的数据放入所述接收设备中的目的存储器位置;或将所述发送操作请求上携带的数据从所述接收设备的接收队列中放入缓冲区。
例如,对于写入操作或发送操作,接收设备相应地放置数据包中携带的数据。
在第二方面的一种实现方式中,当对应于相应数据包的所述WQE包括读取操作请求或原子操作请求时,所述接收设备还用于:向所述发送设备发送指示所述相应数据包已经由所述接收设备处理的响应数据包。
例如,对于读取操作或原子操作,接收设备相应地操作以提供携带所需数据的响应数据包。例如,读取操作响应包括发送设备打算从接收设备获取的数据。
在第二方面的一种实现方式中,所述接收设备还用于:根据所述读取操作请求或所述原子操作请求创建响应WQE;为所述响应WQE分配XID,并将所述响应WQE转换为所述响应数据包,其中,所述响应数据包包括所述响应WQE的所述XID和包括所述读取操作请求或所述原子操作请求的所述WQE的所述XID。
相应地,接收设备为读取操作或原子操作请求生成响应WQE。需要说明的是,在这种情况下,接收设备可以视为第一方面所述的“发送设备”,其为响应WQE分配XID,将WQE转换为数据包,并进一步发送数据包。响应数据包与“正常”发送的数据包的区别在于,响应数据包还携带对应于操作请求(例如发送的数据包)的WQE的XID。即,响应数据包中携带两个XID。
在第二方面的一种实现方式中,所述接收设备还用于:当所述接收设备无法处理所述相应数据包时,生成接收到的数据包的RNR指示,其中,所述相应数据包的所述通知消息还包括向所述发送设备指示所述接收设备无法处理所述相应数据包的所述RNR指示。
如前所述,本发明提出了用于延迟其他消息的传输的RNR信号。特别地,接收设备暂时无法处理携带消息的接收到的数据包,例如,如果接收设备没有可用资源,则发送RNR指示。RNR信号仅影响发送设备处的特定消息,避免任何HoL阻塞。
在第二方面的一种实现方式中,所述RNR指示还指示预设超时值,其中,所述RNR指示指示所述接收设备无法在所述预设超时值内处理所述相应数据包。
在第二方面的一种实现方式中,所述通知消息包括多个RNR指示,每个RNR指示指示所述接收设备无法处理特定发送的数据包。
在第二方面的一种实现方式中,所述一个或多个数据包包括第一数据包和第二数据包,其中,所述第一数据包的PSN小于所述第二数据包的PSN,其中,所述接收设备还用于:乱序发送所述第一数据包的所述通知消息和所述第二数据包的所述通知消息;和/或对所述第一数据包和所述第二数据包进行乱序处理;向所述发送设备乱序发送所述第一数据包的所述响应消息和所述第二数据包的所述响应消息。
本发明的实施例提出了一种新的方案,其使得接收设备能够乱序执行接收到的数据包。因此,接收数据包的确认(acknowledgment,ACK),例如通知消息,也可以被乱序发送。同样,响应也可以乱序发送。
在第二方面的一种实现方式中,所述接收设备还用于维护存储在所述接收设备处接收的WQE的XID的数据库。
接收设备可以记录接收到的数据包中携带的XID。
在第二方面的一种实现方式中,所述接收设备还用于:通过检查包括在所述接收到的数据包中的WQE的XID是否已经存储在所述数据库中,确定每个接收到的数据包是否为重复的数据包;忽略任何重复的数据包。
为了避免不止一次执行同一WQE,接收设备检查存储在数据库中的XID。当新接收到的数据包中携带的XID已存储在数据库中时,接收设备忽略该数据包,而不是执行该数据包。这样一来,就可以保证消息将只执行一次。
在第二方面的一种实现方式中,所述数据库还包括指示所述WQE是否已经被处理的每个WQE的状态。
本发明的第三方面提供了一种用于RDMA的方法。所述方法包括:维护发送队列,其中,所述发送队列包括一个或多个WQE,其中,每个WQE包括所述WQE的目的地信息,其中,所述目的地信息包括以下各项中的至少一项:接收设备的地址、接收设备的标识和所述接收设备的目标应用的标识;为所述一个或多个WQE中的每一个分配XID,并将每个WQE转换为数据包,其中,每个数据包包括对应的WQE的所述XID,并与PSN关联;将每个数据包发送到所述WQE的目的地信息的所述接收设备;从所述接收设备接收每个发送的数据包的通知消息,其中,所述通知消息指示所述发送的数据包是否在所述接收设备处被接收;基于所述通知消息、所述WQE中携带的信息和所述发送设备持有的信息,确定是否为每个WQE生成完成。
第三方面及其实现方式的方法提供了与上文针对第一方面及其相应实现方式的发送设备所述的相同的优点和效果。
本发明的第四方面提供了一种用于RDMA的方法。所述方法包括:从用于RDMA的发送设备接收一个或多个数据包,其中,所述一个或多个数据包的每个数据包与PSN关联,并包括对应WQE的XID,其中,每个WQE包括所述WQE的目的地信息,其中,所述目的地信息包括以下各项中的至少一项:所述接收设备的地址、所述接收设备的标识和所述接收设备的目标应用的标识;向所述发送设备发送通知消息,其中,所述通知消息指示所述一个或多个数据包在所述接收设备处被接收和/或处理。
第四方面及其实现方式的方法提供了与上文针对第二方面及其相应实现方式的接收设备所述的相同的优点和效果。
本发明的第五方面提供了一种计算机程序,包括用于在处理器上实现时执行第三方面及其实现方式中任一项或第四方面及其实现方式中任一项所述的方法的程序代码。
需要说明的是,本申请中所述的所有设备、元件、单元和模块都可以在软件或硬件元件或其任何种类的组合中实现。本申请中描述的各种实体所执行的所有步骤以及所描述的各种实体要执行的功能均意在指相应发送设备用于执行相应步骤和功能。虽然在以下具体实施例的描述中,外部实体执行的具体功能或步骤没有在执行具体步骤或功能的发送设备的具体详述元件的描述中反映,但是技术人员应清楚,这些方法和功能可以通过相应的硬件或软件元件或其任何组合实现。
附图说明
结合所附附图,下面具体实施例的描述将阐述上述各个方面及其实现方式,其中:
图1示出了发送设备;
图2示出了原理图;
图3示出了信令流程图;
图4示出了信令流程图;
图5示出了WQE状态机的流程图;
图6示出了WQE状态机的流程图;
图7示出了原理图;
图8示出了接收设备;
图9示出了一种方法。
图10示出了另一种方法。
具体实施方式
结合附图描述了用于RDMA系统中短消息处理的方法、设备和程序产品的示例性实施例。尽管该描述提供了可能实现方式的详细示例,但需要说明的是,这些细节旨在是示例性的,并且不会限制本申请的范围。
此外,一个实施例/示例可以指其他多个实施例/示例。例如,一个实施例/示例中提及的任何描述,包括但不限于术语、元件、过程、解释和/或技术优势均适用于其他多个实施例/示例。
图1示出了本发明的实施例提供的适于RDMA的发送设备100。发送设备100可以包括处理电路(未示出),该处理电路用于执行、实施或启动本文所述的发送设备100的各种操作。处理电路可以包括硬件和软件。硬件可以包括模拟电路或数字电路,或模拟电路和数字电路两者。数字电路可以包括专用集成电路(application-specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)、数字信号处理器(digital signal processor,DSP)或多用途处理器等组件。发送设备100还可以包括存储器电路,该存储器电路存储可以由处理器或处理电路执行的一个或多个指令,特别是在软件的控制下。例如,存储器电路可以包括存储可执行软件代码的非瞬时性存储介质,该可执行软件代码由处理器或处理电路执行时,发送设备100执行各种操作。在一个实施例中,处理电路包括一个或多个处理器以及与一个或多个处理器连接的非瞬时性存储器。非瞬时性存储器可以携带可执行程序代码,当所述可执行程序代码由一个或多个处理器执行时,使发送设备100执行、实施或启动本文所述的操作或方法。
特别地,发送设备100用于维护发送队列101,其中,发送队列101包括一个或多个WQE 102、102'。特别地,每个WQE 102、102'包括WQE 102、102'的目的地信息。目的地信息包括以下各项中的至少一项:接收设备200的地址、接收设备(200、200')的标识和接收设备200、200'的目标应用的标识。发送设备100还用于为一个或多个WQE 102、102'中的每一个分配XID,并将每个WQE 102、102'转换为相应数据包103、103'。每个相应数据包103、103'包括对应的WQE 102、102'的XID,并与PSN关联。然后,发送设备100用于将每个数据包103、103'发送到WQE 102、102'的目的地信息的接收设备(200、200')。发送设备100还用于从接收设备200接收每个发送的数据包103的通知消息201,其中,通知消息201指示发送的数据包103是否在接收设备200处被接收。此外,发送设备100用于基于通知消息201、所述WQE102中携带的信息和所述发送设备100持有的信息,确定是否为每个WQE 102生成完成。
本发明的实施例引入了一种新的方法,其中,每个WQE(每个RDMA操作)或每个消息可以独立处理,例如,在不依赖于先前或以后的操作的情况下执行。每个WQE包括允许执行操作所需的所有信息,具体而言,目的节点(例如,接收设备200)和进程的指示(ID、地址等)。
例如,RDMA事务涉及发起方节点和目的地目标节点(或目标节点)。发起方节点发起或发送RDMA操作请求,目标节点接收RDMA操作请求并相应地响应。图1所示的发送设备100可以视为发起方节点,图1所示的接收设备200可以视为目标节点。
根据本发明的实施例,每个WQE与唯一的XID关联,这可以在接收端用来检测重复操作。每个发送的数据包都与唯一的PSN关联。需要说明的是,每个数据包都需要被确认为已接收。发起方节点使用这些ACK信号检测丢失的数据包,并例如应用选择性重复重传方案进行重传。
传统上,RDMA QP始终在某些操作码(RQ处理等)上生成完成。没有进行控制来操作条件完成。根据本发明的实施例,完成可以是可配置的。即,发送设备100可以基于某些情况(例如,发送设备100持有的信息),决定是否发送WQE完成的信号。
例如,发送设备100可以从ULP获取信息,该ULP将发送设备100设置为在每X个完成的WQE之后获取完成信号,使得ULP以较低的频率而不是针对每个独立的WQE检查完成队列(completion queue,CQ)的完成队列事件(completion queue event,CQE)。在另一个示例中,当没有更多的WQE要由某个节点到节点上下文(node-to-node context,NNC)处理时,可以指示发送设备100生成完成。可选地,发送设备100还可以针对每个高优先级WQE发送完成信号,并且仅为一组低优先级WQE发送完成信号。在这方面有许多实现方式。这些示例不用于限制本发明。
如本发明中描述的新服务方法可以称为短寿命数据报(short-lived datagram,SLD)。如前所述,传输类型可以是可靠的或不可靠的,以及面向连接的或面向数据报的。如本发明中描述的SLD适用于大多数传输,例如可靠连接(reliable connection,RC)、可靠数据报(reliabledatagram,RD)和不可靠数据报(unreliable datagram,UD),如图2所示。即,本发明公开了在传统RD、RC和UD传输之间的新服务。
需要说明的是,本发明的实施例提出的新RDMA传输方案用于处理短消息,例如,长达单个数据包长度的消息。根据本发明的实施例,每个WQE 102、102'携带仅限于适于单个网络最大传输单元中的消息。
通常,RDMA操作包括读取、写入、发送、接收、原子操作等。
图3示出了本发明的实施例提供的发起方节点(例如发送设备100)与目标节点(例如接收设备200)之间的信令流程图。发送设备100可以是如图1所示的发送设备,接收设备200可以是如图1所示的接收设备。特别地,图3示出了用于写入操作和发送操作的数据包交换。
在本实施例中,为来自源发送队列(source send queue,SSQ)(例如发送队列102)的发送(Tx)WQE分配XID W。WQE(例如,如图1所示的WQE 102)被转换为携带XID W的写入请求,例如,如图1所示的数据包103。在发送设备100发送数据包103之后,在发送设备100处接收ACK。相应地,发送设备100可以确定具有XID W的WQE成功完成。接收设备200在接收到写入请求之后,可以将写入请求上携带的数据放入接收设备200中的目的存储器位置。
在下文,将具有XID S的另一个WQE转换为携带XID S的发送请求。相应地,接收设备200可以将发送请求上携带的数据从接收设备200的RQ放入缓冲区中。在从接收设备100接收到发送请求的ACK之后,发送设备100可以确定具有XID S的WQE成功完成。需要说明的是,WQE可以在接收到WQE的ACK之后立即发送完成信号,而无需等待先前的WQE完成。
根据本发明的实施例,当对应于相应数据包103的WQE 102包括写入操作请求或发送操作请求时,并且通知消息201指示相应数据包103在接收设备200处被接收时,发送设备100还用于确定WQE 102成功完成。
图4示出了本发明的实施例提供的发起方节点(例如发送设备100)与目标节点(例如接收设备200)之间的另一信令流程图。发送设备100可以是如图1所示的发送设备,接收设备200可以是如图1所示的接收设备。特别地,图4示出了用于读取操作或原子操作的数据包交换。
在本实施例中,为Tx WQE分配XID R。WQE(例如,如图1所示的WQE 102)被转换为例如携带XID R的读取请求,例如,如图1所示的数据包103。在发送设备100发送数据包103之后,在发送设备100处接收ACK。
例如,对于读取操作,发送设备100还期望来自接收设备200的读取操作响应。即,当接收设备200确认接收到对应数据包时,读取WQE未完成,而是只有当发送设备100接收到合适的响应数据包时才完成。在这种情况下,接收设备200内部为WQE 102创建响应WQE。
例如,接收设备200打算将响应WQE发送回发送设备。在这种情况下,可以理解的是,“发送设备”和“接收设备”的角色切换。即,此处的接收设备200也可以认为是发送携带WQE的数据包的“发送设备”,WQE是响应WQE。根据本发明的实施例,接收设备200为读取操作请求生成响应WQE,并为响应WQE分配另一个XID,例如,如图4所示的XID Q。接收设备200还将响应WQE转换为响应数据包202,并将响应数据包202发送给发送设备100。
值得一提的是,响应数据包202与来自发送设备100的“正常”发送的数据包103的区别在于,响应数据包202还携带对应于操作请求(例如发送的数据包103)的WQE的原始XID(例如XID R)。即,响应数据包202中携带两个XID(例如XID R和XID Q)。
响应于接收到响应数据包202,发送设备100应发送ACK以通知接收设备200响应数据包202已经被接收。例如,在这种情况下,发送设备100在此处的表现类似于“接收设备”。
根据本发明的实施例,当Tx WQE携带原子操作请求时,发送设备100与接收设备200之间的数据包交换与读取操作的情况类似。此处不再赘述。
根据本发明的实施例,当对应于相应数据包103的WQE 102包括读取操作请求或原子操作请求时,发送设备100还用于,作为对原子操作请求或读取操作请求的原子操作响应或读取操作响应,分别接收指示相应数据包103已经由接收设备200处理的响应数据包202。特别地,响应数据包202包括响应WQE 102的XID和包括读取操作请求或原子操作请求的WQE102的XID。此外,发送设备100用于确定WQE 102成功完成。
图5示出了在发起方节点(例如发送设备100)处控制每个WQE处理的状态机的图示。每个WQE独立于所有其他WQE进行处理。特别地,即使对于由同一源ULP发出的WQE,它们仍然是独立处理的。
从图中可以看出,一旦WQE(例如,WQE Tx)被发送,则期望ACK。
对于接收到ACK的情况,可以相应地更新存储发送的数据包的状态的数据库(例如位图)。如果检测到数据包丢失,则可以应用快速重传机制来重传丢失的数据包。对于重传数据包,同样期望ACK。
在没有接收到ACK的情况下,发送设备可以等待重传超时到期,然后再重传数据包。例如,可以为发送设备配置最大可接受接收超时数量“RTOMAXN”。如果“RTOMAXN”的值大于0,则每当重传超时到期而没有接收到ACK时,“RTOMAXN”的值就会减少(例如,减1)。一旦该值达到0,发送设备100确定WQE完成但有错误。
根据本发明的实施例,发送设备100可以用于获取与接收设备200关联的最大可接受接收超时数量。当接收超时数量超过最大可接受接收超时数量时,发送设备100可用于确定对应于相应数据包103的WQE 102完成但有错误。
本发明还提出了一种用于延迟其他消息的传输的RNR信号。特别地,当携带接收设备暂时无法处理(例如,如果接收设备没有可用资源)的消息的接收到的数据包时,发送设备接收RNR指示。例如,当一行数据包被第一个数据包阻碍时发生的性能限制现象称为HoL阻塞。RNR信号仅影响发送设备处的特定消息,避免任何HoL阻塞。
可能的是,可以接收指示接收设备200暂时无法处理发送的数据包的RNR指示(或包括RNR指示的通知消息),而不是ACK。然后,将检查最大可接受RNR指示数量“RNRMAXN”的计数器。如果该计数器达到0,发送设备100确定WQE完成但有错误。如果计数器还没有达到0,对于每个接收到的RNR指示,计数器减少(例如,减1),一旦计数器达到0,发送设备100确定WQE完成但有错误。
根据本发明的实施例,图1所示的通知消息201可以包括RNR指示,其中,RNR指示指示接收设备200无法处理发送的数据包。发送设备100用于确定发送的数据包103中包括的XID。发送设备100还用于在超时值到期之前,推迟发送包含相同XID的另一个数据包。
在超时到期之后,发送设备100重传包括相同XID的数据包。接收设备200可能仍然无法处理发送的数据包。在这种情况下,可以从接收设备200发送用于重传数据包的另一个RNR指示。根据本发明的实施例,WQE 102还可以包括指示最大可接受RNR指示数量的参数,即,如图5所示的“RNRMAXN”。可能的是,发送设备100可以接收包括重传数据包的RNR指示的另一通知消息。发送设备100还可以用于:当接收到的RNR指示的数量超过“RNRMAXN”时,确定对应于重传数据包的WQE 102完成但有错误。
根据本发明的实施例,通知消息201可以包括多个RNR指示,每个RNR指示指示接收设备200无法处理特定发送的数据包。例如,超时值可以由RNR指示指示。
可选地,每个RNR指示还指示接收设备200在特定超时值内无法处理特定发送的数据包。
根据本发明的实施例,发送设备100还可以用于基于RNR指示所指示的超时值,管理对应于接收到RNR指示的发送的数据包103、103'的WQE 102、102'。
可选地,发送设备100可以根据接收到的RNR超时值,将处于RNR“状态”的延迟WQE进行分组。根据本发明,当WQE处于RNR状态时,这表示接收到该WQE的RNR指示。处于RNR“状态”的WQE可以由发送设备100(例如,发起方节点)一起管理,而不是每个NNC管理。通常,只定义了少数有限数量的RNR超时值,以保持总体较低的完成延迟,并减少所需的计时器数量。发起方节点根据接收到的RNR超时值将处于RNR“状态”的延迟WQE分组,该接收到的RNR超时值可以由目标节点(例如接收设备200)设置。
根据本发明的实施例,支持的超时值的数量是可配置的,并在所有通信设备上商定。
可选地,接收设备200可以用于基于接收设备200的当前条件设置超时值。例如,接收设备200可以基于其当前负载、连接的NNC的数量、剩余RQ元素(RQ内部)的数量来调整超时值。
图6示出了本发明的实施例提供的读取/原子WQE状态机的图示。图6是基于图5,而图5示出了所有RDMA操作的更一般的情况。
类似地,与图5一样,一旦WQE(例如,WQE Tx)被发送,则期望ACK。在没有接收到ACK的情况下,或者在发送设备100接收到指示接收设备200暂时无法处理发送的数据包的RNR指示来代替ACK的情况下,发送设备100的操作与图5中描述的类似。此处不再赘述。
对于接收到ACK的情况,可以相应地更新存储发送的数据包的状态的数据库(例如位图)。如果检测到数据包丢失,则可以应用快速重传机制来重传丢失的数据包。对于重传数据包,同样期望ACK。该部分也类似于图5中描述的内容。
如前所述,读取和/或原子“动词”操作要求目标节点将数据发送回发起方节点。即,当接收到读取/原子WQE的请求数据包的ACK时,读取/原子WQE未完成,而是只有当发起方节点接收到合适的响应数据包时才完成。
即,在接收到读取和/或原子请求数据包时,目标节点接收设备200存储内部响应WQE,用于管理响应数据包的传输,以及可能的重传。该WQE的此内部属性表示它对上层软件“隐藏”,ULP不发布该WQE,并且完成事件/信号不会报告给目标节点处的任何上层软件。
在接收设备200没有可用资源来存储该内部响应WQE的情况下,生成RNR信号数据包并将其发送回发送设备100。
根据本发明的实施例,目标节点(例如接收设备200)处理内部响应WQE,如图它是由ULP发布的一样。相同的状态机规则和条件也适用于这种情况,例如,重传响应数据包,直到接收到ACK或直到标识出错误条件(但此错误不会报告给任何ULP)。
根据本发明的实施例,发送队列101的一个或多个WQE 102、102'包括第一WQE和第二WQE,其中,第一WQE和第二WQE包括不同的目的地信息。
如前所述,每个WQE包括其自己的目的地信息(例如目标ID、目的地IP地址等),以使源ULP能够发布多个连续的WQE,每个WQE可以使用相同的QP类数据结构发往不同的目标ULP和网络节点。
根据本发明的实施例,发送队列101的一个或多个WQE 102、102'包括WQE集合,所述WQE集合包括相同的目的地信息,其中,发送设备100还用于:将对应于WQE集合的数据包分组到数据包流中;将数据包流发送到WQE集合的接收设备200。
各种WQE可以按其目的地分组到发往其目的地目标节点的数据包流中。此数据包流的管理是通过使用NNC数据结构完成的。单个NNC管理发起方-目标节点对之间的WQE。
根据本发明的实施例,每个WQE 102、102'还与从发送设备100发送的优先级关联。可选地,每个WQE 102、102'的优先级可以基于从其获取该WQE(102、102')的ULP确定。例如,如果由ULP创建的SLD QP与更高的优先级关联,则从SQ中提取的WQE将与更高的优先级关联。因此,在处理来自其他ULP SQ的WQE之前,将处理这类WQE,该SQ可能以较低的优先级创建。
根据本发明的实施例,发送设备100还可以用于从至少一个ULP获取一个或多个WQE 102、102'。
根据本发明的实施例,包括相同目的地信息的WQE集合是从不同的ULP中获取的。即,来自不同源ULP的各种WQE可以按其目的地分组到数据包流中。
根据本发明的实施例,从不同ULP获取的WQE的XID从相同的XID池中分配,与从不同ULP获取的WQE关联的数据包的PSN从相同的PSN池中分配。
从用于所有WQE的连续数字空间中为每个WQE分配唯一的XID,这些WQE共享相同的目的地目标节点。从用于所有数据包的连续数字空间中为每个Tx数据包分配唯一的PSN,这些数据包发送到同一目的地目标节点。
根据本发明的实施例,节点到节点上下文(node-to-node context,NNC)可以分为两个操作部分:发起方功能使用的NNC-Tx和目标功能使用的NNC-Rx。NNC-Tx为XID和PSN维护不同的连续数字空间。NNC-Rx处理接收到的ACK和RNR指示,以检测丢失的数据包,并触发NNC-Tx对这些数据包进行重传。还需要说明的是,计时器到期也会导致检测丢失的数据包,这将触发重传。
图7示出了本发明的实施例提供的SLD WQE分发器的示例性示意图。NNC-Rx可以存储“接收到的XID”状态,并标识重复的WQE,例如,使用PSN数据库和XID数据库。这些重复仅被确认,但不会再次执行。这是为了保证WQE只执行一次。NNC-Rx基于PSN构建ACK,以指示接收到和丢失的数据包。NNC-Rx构建RNR指示,以指示多个数据包的多个RNR信号。
此外,NNC可以包括用于以信号发送网络相关错误条件的阈值,例如接收/重传计时器的周期、最大计时器到期数量(不接收任何ACK/RNR数据包)。
NNC包括拥塞控制(congestion control,CC)相关的信息和参数,这些信息和参数控制由该NNC管理的数据包的传输。
值得一提的是,NNC-Rx的“Rx XID”状态数据库可以是一个共享资源池,任何NNC-Rx都可以根据需要从其中分配所需的资源。或者,单个RTO计时器可用于所有NNC-Tx实例。用于存储WQE的存储器可以是宿主机的存储器的一部分、连接到RNIC的专用存储器、内部存储器或其任何组合。为了避免单个ULP消耗过多的RNIC资源(用于WQE),从而使其他ULP“缺少资源”并拒绝它们有效的SLD服务,可以添加公平机制,以强制每个ULP的最大未完成WQE数量。
根据本发明的实施例,每个数据包103、103'还可以与标识流块的流块ID关联。特别地,流块包括多个数据包,对应于WQE 102、102'的数据包103、103'还包括流块ID。
根据本发明的实施例,发送设备100还可以用于通过流向接收设备200发送每个数据包103,其中,流块与接收设备200关联。
值得一提的是,ECMP流块由本发明中提出的新方法支持,并且传输是为流块设计的。ECMP流块(相对容易)通过将发起方节点与目标节点之间的数据包流划分为子流来支持。假设不同子流的数据包使用不同的路由穿越网络。为了支持ECMP流块,NNC-Tx为每个子流(例如流块)维护单独的(连续的)PSN空间。每个WQE都被分配一个流块ID,该流块ID也包括在Tx数据包中。每个ACK报告还包括该流块ID,当接收到ACK时,发起方节点仅触发该流块的数据包的重传。存在决策灵活性,从而使发起方节点可以动态选择用于重传的不同流块。该决策可以基于标准的任何组合,例如负载较少、速度更快、拥塞更少等的“更好”流块。本发明的实施例还支持每个NNC具有不同数量的流块,从而支持更高效地使用发起方节点,例如发送设备100处的资源。
图8示出了本发明的实施例提供的适于RDMA的接收设备200。接收设备200可以包括处理电路(未示出),该处理电路用于执行、实施或启动本文所述的接收设备200的各种操作。处理电路可以包括硬件和软件。硬件可以包括模拟电路或数字电路,或模拟电路和数字电路两者。数字电路可以包括专用集成电路(application-specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)、数字信号处理器(digital signal processor,DSP)或多用途处理器等组件。接收设备200还可以包括存储器电路,该存储器电路存储可以由处理器或处理电路执行的一个或多个指令,特别是在软件的控制下。例如,存储器电路可以包括存储可执行软件代码的非瞬时性存储介质,该可执行软件代码由处理器或处理电路执行时,接收设备200执行各种操作。在一个实施例中,处理电路包括一个或多个处理器以及与一个或多个处理器连接的非瞬时性存储器。非瞬时性存储器可以携带可执行程序代码,当所述可执行程序代码由一个或多个处理器执行时,使接收设备200执行、实施或启动本文所述的操作或方法。
特别地,接收设备200用于从用于RDMA的发送设备100接收一个或多个数据包103。可能的是,此处的发送设备100可以是图1所示的发送设备100。特别地,一个或多个数据包103中的每个数据包103与PSN关联,并包括对应WQE 102的XID。每个WQE 102包括WQE 102的目的地信息,其中,目的地信息包括以下各项中的至少一项:接收设备200的地址、接收设备200的标识和接收设备200的目标应用的标识。此外,接收设备200用于向发送设备100发送通知消息201,其中,通知消息201指示一个或多个数据包在接收设备200处被接收。
本发明的实施例还提供了一种接收设备200,其针对本发明中先前描述的发送设备100相应地操作。本发明中提出的接收设备200独立地处理每个接收到的数据包103。即,每个接收到的数据包在接收时都可以安全地执行,而不管任何先前数据包的状态如何。根据本发明,WQE可以乱序执行,并在接收到WQE的ACK之后立即发送乱序完成的信号。顺序是指WQE(例如由ULP)发布到RNIC的时间顺序。
值得一提的是,ACK支持聚合多个数据包的通知,并支持“选择性ACK”(SACK)以报告接收到和丢失的数据包。这种报告的数据包的数量,例如ACK数据结构的大小,是一个实现参数。
根据本发明的实施例,当对应于相应数据包103的WQE 102包括写入操作请求时,接收设备200还用于将写入操作请求上携带的数据放入接收设备200中的目的存储器位置。类似地,当对应于相应数据包103的WQE 102包括发送操作请求时,接收设备200还可以用于将发送操作请求上携带的数据从接收设备200的接收队列放入缓冲区中。
根据本发明的实施例,当对应于相应数据包103的WQE 102包括读取操作请求或原子操作请求时,接收设备200还用于向发送设备100发送指示相应数据包103已经被接收设备200处理的响应数据包202。
例如,对于读取操作或原子操作,接收设备200相应地操作以提供携带所需数据的响应数据包。例如,读取操作响应包括发送设备100打算从接收设备200获取的数据。
根据本发明的实施例,接收设备200还可以用于根据读取操作请求或原子操作请求创建响应WQE。接收设备200还用于为响应WQE分配XID,并将响应WQE转换为响应数据包202。特别地,响应数据包202包括响应WQE的XID和包括读取操作请求或原子操作请求的WQE102的XID。
应当理解,在这种情况下,接收设备200可以视为“发送设备”,其为(响应)WQE分配XID,将WQE转换为(响应)数据包,并进一步发送数据包。响应数据包与“正常”发送的数据包的区别在于,响应数据包还携带对应于操作请求(例如发送的数据包)的WQE的XID。即,响应数据包中携带两个XID。
根据本发明的实施例,接收设备200还可以用于:当接收设备200无法处理相应数据包103时,为接收到的数据包103生成RNR指示。特别地,相应数据包103的通知消息201还包括向发送设备100指示接收设备200无法处理相应数据包103的RNR指示。
作为目标节点的接收设备200暂时无法处理的接收到的消息被RNR信号延迟。例如,RNR信号仅影响发起方处的特定消息,从而避免任何HoL阻塞。处于RNR“状态”的WQE由发起方节点一起管理,而不是每个NNC管理。只定义了少数有限数量的RNR TO值,以保持总体较低的完成延迟,并减少所需的计时器数量。发起方节点根据目标节点设置的接收到的RNRTO值,将处于RNR“状态”的延迟WQE分组。
根据本发明的实施例,RNR指示还指示预设超时值,其中,RNR指示指示接收设备200无法在预设超时值内处理相应数据包103。
根据本发明的实施例,通知消息201包括多个RNR指示,每个RNR指示指示接收设备200无法处理特定发送的数据包。
可能的是,一个或多个数据包103包括第一数据包和第二数据包,其中,第一数据包的PSN小于第二数据包的PSN。根据本发明的实施例,接收设备200还可以用于乱序发送第一数据包的通知消息和第二数据包的通知消息。接收设备200还用于乱序处理第一数据包和第二数据包;向发送设备100乱序发送第一数据包的响应消息和第二数据包的响应消息。
根据本发明的实施例,接收设备200还可以用于维护存储在接收设备200处接收的WQE 102的XID的数据库。
根据本发明的实施例,接收设备200还可以用于:通过检查包括在接收到的数据包103中的WQE 102的XID是否已经存储在数据库中,确定每个接收到的数据包103是否为重复的数据包;忽略任何重复的数据包。这些重复仅被确认,但不会再次执行。这是为了保证WQE只执行一次。
根据本发明的实施例,数据库还包括指示WQE 102是否已经被处理的每个WQE 102的状态。
在本发明中,SLD是为有损网络设计的,而不是传统的IB的RDMA。此网络属性表示数据包丢失事件更有可能发生。SLD采用重传方案,该重传方案可能有两种互补机制:基于PSN和基于定时器。基于PSN的重传可以基于分配给每个发送的数据包的唯一严格单调增加的PSN,并在ACK报告回来的PSN中检测到“间隙”时快速标识丢失的数据包。基于定时器的重传类似于触发重传事件的传统方式:如果在可配置的时间段内没有接收到ACK,则所有未完成的数据包都会重传。未完成的数据包定义为已发送但尚未接收到ACK的数据包。
总之,本发明的实施例提出了一种在RC、RD和UC服务之间的新RDMA服务和传输(SLD)。SLD覆盖了所有RDMA操作,并具有更高效的重传方案。本发明的实施例能够复用来自不同ULP的操作/WQE,并且也能够复用到不同的目标。还支持ECMP流块。
图9示出了本发明的实施例提供的用于RDMA的方法900。在本发明的特定实施例中,方法900由如图1或图8所示的发送设备100执行。方法900包括步骤901:维护发送队列101,其中,发送队列101包括一个或多个WQE 102、102'。每个WQE 102、102'包括WQE 102、102'的目的地信息,其中,目的地信息包括以下各项中的至少一项:接收设备200的地址、接收设备200的标识和接收设备200的目标应用的标识。方法900还包括步骤902:为一个或多个WQE 102、102'中的每一个分配XID,并将每个WQE 102、102'转换为数据包103、103'。特别地,每个数据包103、103'包括对应的WQE 102、102'的XID,并与PSN关联。方法900还包括步骤903:将每个数据包103、103'发送到WQE 102、102'的目的地信息的接收设备(200、200')。方法900还包括步骤904:从接收设备200接收每个发送的数据包103的通知消息201,其中,通知消息201指示发送的数据包103在接收设备200处是否被接收。此外,方法900包括步骤905:基于通知消息201、WQE 102中携带的信息和发送设备100持有的信息,确定是否为每个WQE 102生成完成。
图10示出了本发明的实施例提供的用于RDMA的方法1000。在本发明的特定实施例中,方法1000由如图1或图8所示的接收设备200执行。方法1000包括步骤1001:从用于RDMA的发送设备100接收一个或多个数据包103。特别地,一个或多个数据包103中的每个数据包103与PSN关联,并包括对应WQE 102的XID。每个WQE 102包括WQE 102的目的地信息,其中,目的地信息包括以下各项中的至少一项:接收设备200的地址、接收设备200的标识和接收设备200的目标应用的标识。方法1000还包括步骤1002:向发送设备100发送通知消息201,其中,通知消息201指示一个或多个数据包在接收设备200处被接收和/或处理。
已经结合作为示例的各种实施例以及实现方式描述了本发明。但是,根据对附图、本发明和所附权利要求书的研究,本领域技术人员在实践所要求保护的发明时,能够理解和实现其他变化。在权利要求以及说明书中,词语“包括”不排除其他元件或步骤,且“一”或“一个”不排除多个。单个元件或其他单元可以满足权利要求书中描述的若干实体或项目的功能。在互不相同的从属权利要求中列举某些措施并不表示这些措施的组合不能用于有利的实现方式中。
此外,本发明的实施例提供的任何方法可以在具有代码模块的计算机程序中实现,该计算机程序由处理模块运行时,使处理模块执行方法步骤。计算机程序包括在计算机程序产品的计算机可读介质中。计算机可读介质基本上可以包括任何存储器,例如只读存储器(read-only memory,ROM)、可编程只读存储器(programmable read-only memory,PROM)、可擦除PROM(erasable PROM,EPROM)、闪存、电可擦除EPROM(electricallyerasable PROM,EEPROM)或硬盘驱动器。
此外,技术人员认识到,发送设备100或接收设备200的实施例包括用于执行方案的功能、模块、单元、元件等形式的必要通信能力。其他此类模块、单元、元件和功能的示例为:处理器、存储器、缓冲器、控制逻辑、编码器、解码器、速率匹配器、降速率匹配器、映射单元、乘法器、决策单元、选择单元、交换机、交织器、解交织器、调制器、解调器、输入端、输出端、天线、放大器、接收单元、发送单元、DSP、格码调制(trellis-coded modulation,TCM)编码器、TCM解码器、电源单元、电源馈线、通信接口、通信协议等,它们适当地布置在一起以执行方案。
具体地,例如,发送设备100或接收设备200的一个或多个处理器可以包括中央处理器(central processing unit,CPU)、处理单元、处理电路、处理器、专用集成电路(application specific integrated circuit,ASIC)、微处理器,或其他可以解释和执行指令的处理逻辑的一个或多个实例。表述“处理器”因此可以表示包括多个处理电路的处理电路,例如以上列举项中的任何、一些或所有项。处理电路系统还可以执行用于输入、输出和处理数据的数据处理功能,所述数据处理功能包括数据缓冲和设备控制功能,例如调用处理控制、用户界面控制等。
Claims (22)
1.一种用于远程直接存储访问(remote direct memory access,RDMA)的方法,其特征在于,所述方法由适于RDMA的设备执行,包括:
维护发送队列,所述发送队列包括一个或多个工作队列元素(working queueelement,WQE),其中,第一WQE包括目的地信息,其中,所述第一WQE为所述发送队列中一个WQE,所述目的地信息包括以下各项中的至少一项:接收设备的地址、接收设备的标识和接收设备的目标应用的标识;
为所述第一WQE分配事务标识(transaction identifier,XID);
将所述第一WQE转换为第一数据包,其中,所述第一数据包包括所述第一WQE的所述XID,所述第一数据包与数据包序列号(packet sequence number,PSN)关联;
根据所述目的地址信息向接收设备发送所述第一数据包。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述接收设备接收所述第一发送的数据包的通知消息,其中,所述通知消息指示所述第一数据包是否在所述接收设备处被接收;
基于所述通知消息、所述第一WQE中携带的信息和所述适于RDMA的设备持有的信息,确定是否为所述第一WQE生成完成。
3.根据权利要求1或2所述的方法,其特征在于,所述第一WQE携带仅限于适合于单个网络最大传输单元中的消息。
4.根据权利要求1至3中任一所述的方法,其特征在于,所述基于所述通知消息、所述第一WQE中携带的信息和所述适于RDMA的设备持有的信息,确定是否为所述第一WQE生成完成,包括:
当所述第一WQE包括写入操作请求或发送操作请求时,并且所述通知消息指示所述第一数据包在所述接收设备处被接收时,确定所述第一WQE成功完成。
5.根据权利要求1至3中任一所述的方法,其特征在于,所述基于所述通知消息、所述第一WQE中携带的信息和所述适于RDMA的设备持有的信息,确定是否为所述第一WQE生成完成,包括:
作为对所述原子操作请求或所述读取操作请求的原子操作响应或读取操作响应,接收指示所述第一数据包已经由所述接收设备处理的响应数据包,其中,所述响应数据包包括响应第一WQE的XID和包括所述读取操作请求或所述原子操作请求的所述第一WQE的XID;
确定所述第一WQE成功完成。
6.根据权利要求1至3中任一所述的方法,其特征在于,所述方法还包括:
获取与所述接收设备关联的最大可接受接收超时数量;
当接收超时数量超过所述最大可接受接收超时数量时,确定所述第一数据包的所述WQE完成但有错误。
7.根据权利要求1至3中任一所述的方法,其特征在于,所述方法还包括:
当所述第一数据包的所述通知消息包括接收器未就绪(receiver not ready,RNR)指示时,其中,所述RNR指示指示所述接收设备无法处理所述发送的数据包,确定所述第一数据包中包括的XID;
在超时值到期之前,推迟发送包括相同XID的另一个数据包。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述第一WQE还包括指示最大可接受RNR指示数量的参数时,接收包括重传数据包的RNR指示的另一通知消息;
当接收到的RNR指示的数量超过所述最大可接受RNR指示数量时,确定对应于所述重传数据包的所述第一WQE完成但有错误。
9.根据权利要求1至8中任一所述的方法,其特征在于,所述通知消息包括多个RNR指示,每个RNR分别指示所述接收设备无法处理特定发送的数据包。
10.根据权利要求8或9所述的方法,其特征在于,所述RNR指示还指示所述超时值。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
基于所述RNR指示所指示的所述超时值,管理对应于接收到RNR指示的发送的第一数据包的所述第一WQE。
12.根据权利要求11所述的方法,其特征在于,支持的超时值的数量是可配置的,并在所有通信设备上商定。
13.根据权利要求1至12中任一所述的方法,其特征在于,所述发送队列包括一个或多个WQE集合,第一WQE集合为所述发送队列中一个WQE集合,所述第一WQE集合中包括相同的目的地信息的一个或多个WQE,所述方法还包括:
将所述第一WQE集合的所述数据包分组到数据包流中;
将所述数据包流发送到与所述WQE集合的目的地信息向关联的所述接收设备。
14.根据权利要求1至13中任一项所述的方法,其特征在于,包括所述相同的目的地信息的所述WQE集合是从不同的上层进程(upper layer process,ULP)中获取的。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:
从不同ULP获取的WQE的XID从相同的XID池中分配,与从不同ULP获取的所述WQE关联的数据包的PSN从相同的PSN池中分配。
16.根据权利要求15所述的方法,其特征在于,所述第一WQE的所述优先级是基于从其获取所述第一WQE的所述ULP确定的。
17.根据权利要求1至16中任一项所述的方法,其特征在于,所述第一数据包还与标识流块的流块ID关联,其中,所述流块包括多个数据包。
18.根据权利要求17所述的方法,其特征在于,所述方法还包括:
通过所述流块向所述接收设备发送所述第一数据包,其中,所述流块与所述接收设备关联。
19.根据权利要求1至18中任一项所述的方法,其特征在于,所述方法还包括:
从其他适于RDMA的设备接收所述第一数据包,其中,所述第一数据包与数据包序列号(PSN)关联,并包括对应工作队列元素(WQE)的事务标识(XID);
向所述其他适于RDMA发送通知消息,其中,所述通知消息指示所述一个或多个数据包在所述接收设备处被接收。
20.根据权利要求19所述的方法,其特征在于,所述方法还包括:
将所述写入操作请求上携带的数据放入所述适于RDMA的设备中的目的存储器位置;或
将所述发送操作请求上携带的数据从所述适于RDMA的设备的接收队列中放入缓冲区。
21.一种适于RDMA的设备,其特征在于,所述设备包括处理器和存储器,所述存储器中用于存储计算机执行指令,所述设备运行时,所述处理器执行所述存储器中的计算机执行指令以利用所述设备中的硬件资源执行权利要求1至20中任一所述方法的操作步骤。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括指令,当其在计算机上运行时,使得计算机执行权利要求1至20中任一所述的方法的操作步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202411170362.5A CN119166567B (zh) | 2021-08-12 | 2021-08-12 | 用于远程直接存储器访问的设备和方法 |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/EP2021/072460 WO2023016646A1 (en) | 2021-08-12 | 2021-08-12 | A device and method for remote direct memory access |
| CN202411170362.5A CN119166567B (zh) | 2021-08-12 | 2021-08-12 | 用于远程直接存储器访问的设备和方法 |
| CN202180101453.1A CN117813595A (zh) | 2021-08-12 | 2021-08-12 | 用于远程直接存储器访问的设备和方法 |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202180101453.1A Division CN117813595A (zh) | 2021-08-12 | 2021-08-12 | 用于远程直接存储器访问的设备和方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN119166567A true CN119166567A (zh) | 2024-12-20 |
| CN119166567B CN119166567B (zh) | 2025-10-24 |
Family
ID=77447915
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202411170362.5A Active CN119166567B (zh) | 2021-08-12 | 2021-08-12 | 用于远程直接存储器访问的设备和方法 |
| CN202180101453.1A Pending CN117813595A (zh) | 2021-08-12 | 2021-08-12 | 用于远程直接存储器访问的设备和方法 |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202180101453.1A Pending CN117813595A (zh) | 2021-08-12 | 2021-08-12 | 用于远程直接存储器访问的设备和方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20240187482A1 (zh) |
| EP (1) | EP4363988B1 (zh) |
| CN (2) | CN119166567B (zh) |
| WO (1) | WO2023016646A1 (zh) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12047296B2 (en) * | 2021-08-12 | 2024-07-23 | Viscore Technologies Inc. | Scalable loss tolerant remote direct memory access over optical infrastructure with shaped quota management |
| US20240259318A1 (en) * | 2023-01-30 | 2024-08-01 | Meta Platforms, Inc. | Receiver-Based Traffic Scheduling for Incast Congestion Management in High-Performance AI/ML Networks |
| US20240311331A1 (en) * | 2023-03-16 | 2024-09-19 | DreamBig Semiconductor, Inc. | Merged Hardware RDMA Transport |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040049774A1 (en) * | 2002-09-05 | 2004-03-11 | International Business Machines Corporation | Remote direct memory access enabled network interface controller switchover and switchback support |
| US20170346742A1 (en) * | 2016-05-30 | 2017-11-30 | Mellanox Technologies Ltd. | End-to-end Enhanced Reliable Datagram Transport |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7346707B1 (en) * | 2002-01-16 | 2008-03-18 | Advanced Micro Devices, Inc. | Arrangement in an infiniband channel adapter for sharing memory space for work queue entries using multiply-linked lists |
| US20040049580A1 (en) * | 2002-09-05 | 2004-03-11 | International Business Machines Corporation | Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms |
| 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 |
| US8213315B2 (en) * | 2009-11-19 | 2012-07-03 | Mellanox Technologies Ltd. | Dynamically-connected transport service |
| US9059945B2 (en) * | 2011-10-31 | 2015-06-16 | Cavium, Inc. | Work request processor |
| US10509764B1 (en) * | 2015-06-19 | 2019-12-17 | Amazon Technologies, Inc. | Flexible remote direct memory access |
| US9985904B2 (en) * | 2015-12-29 | 2018-05-29 | Amazon Technolgies, Inc. | Reliable, out-of-order transmission of packets |
| CN109936510B (zh) * | 2017-12-15 | 2022-11-15 | 微软技术许可有限责任公司 | 多路径rdma传输 |
-
2021
- 2021-08-12 WO PCT/EP2021/072460 patent/WO2023016646A1/en not_active Ceased
- 2021-08-12 CN CN202411170362.5A patent/CN119166567B/zh active Active
- 2021-08-12 EP EP21758703.9A patent/EP4363988B1/en active Active
- 2021-08-12 CN CN202180101453.1A patent/CN117813595A/zh active Pending
-
2024
- 2024-02-12 US US18/439,289 patent/US20240187482A1/en active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040049774A1 (en) * | 2002-09-05 | 2004-03-11 | International Business Machines Corporation | Remote direct memory access enabled network interface controller switchover and switchback support |
| US20170346742A1 (en) * | 2016-05-30 | 2017-11-30 | Mellanox Technologies Ltd. | End-to-end Enhanced Reliable Datagram Transport |
Also Published As
| Publication number | Publication date |
|---|---|
| EP4363988B1 (en) | 2025-10-08 |
| CN117813595A (zh) | 2024-04-02 |
| WO2023016646A1 (en) | 2023-02-16 |
| EP4363988A1 (en) | 2024-05-08 |
| CN119166567B (zh) | 2025-10-24 |
| US20240187482A1 (en) | 2024-06-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20250126055A1 (en) | System and method for facilitating efficient packet forwarding in a network interface controller (nic) | |
| US12278763B2 (en) | Fabric control protocol with congestion control for data center networks | |
| US12212495B2 (en) | Reliable fabric control protocol extensions for data center networks with unsolicited packet spraying over multiple alternate data paths | |
| US10116574B2 (en) | System and method for improving TCP performance in virtualized environments | |
| US12341687B2 (en) | Reliable fabric control protocol extensions for data center networks with failure resilience | |
| US10355997B2 (en) | System and method for improving TCP performance in virtualized environments | |
| US20240187482A1 (en) | Device and method for remote direct memory access | |
| US9692560B1 (en) | Methods and systems for reliable network communication | |
| US8953631B2 (en) | Interruption, at least in part, of frame transmission | |
| JP2019506072A (ja) | データ伝送方法および関連するデバイス | |
| US12432145B2 (en) | System and method for congestion control using a flow level transmit mechanism | |
| CN114826496A (zh) | 乱序分组处理 | |
| CN106936730A (zh) | 一种报文发送方法、tcp代理以及tcp客户端 | |
| WO2019034099A1 (en) | LOAD BALANCING BASED ON MICRO-FLOWS | |
| US10461892B2 (en) | Low latency communications | |
| CN119324766B (zh) | 用于在网络传输协议中传送应答的设备和方法 | |
| WO2025031497A1 (zh) | 网络拥塞的控制方法和装置 | |
| CN111147386B (zh) | 用于处理数据传输拥塞的方法、电子设备和计算机可读介质 | |
| CN117917061A (zh) | 用于流检测和处理的设备和方法 | |
| WO2023011712A1 (en) | A device and method for remote direct memory access | |
| WO2021249651A1 (en) | Device and method for delivering acknowledgment in network transport protocols | |
| KR102184363B1 (ko) | 네트워크 커넥터의 호스트 및 클라이언트와의 통신 방법, 그리고 동일 방법을 수행하는 네트워크 커넥터 | |
| EP3386166A1 (en) | Technique for managing communications at a router | |
| WO2021223853A1 (en) | Device and method for delivering acknowledgment in network transport protocols | |
| KR20010113124A (ko) | 패킷 전송을 위한 메시지 처리방법 |
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 |