CN1487418A - 远端直接存储器存取启用网络适配器的存储器管理卸载 - Google Patents

远端直接存储器存取启用网络适配器的存储器管理卸载 Download PDF

Info

Publication number
CN1487418A
CN1487418A CNA031557813A CN03155781A CN1487418A CN 1487418 A CN1487418 A CN 1487418A CN A031557813 A CNA031557813 A CN A031557813A CN 03155781 A CN03155781 A CN 03155781A CN 1487418 A CN1487418 A CN 1487418A
Authority
CN
China
Prior art keywords
memory area
mark
affairs
iscsi
response
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
Application number
CNA031557813A
Other languages
English (en)
Other versions
CN1308835C (zh
Inventor
T
威廉·T·博伊德
˹��J��Լɪ��
道格拉斯·J·约瑟夫
A
迈克尔·A·科
J��ŷ����
瑞纳特·J·勒西欧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1487418A publication Critical patent/CN1487418A/zh
Application granted granted Critical
Publication of CN1308835C publication Critical patent/CN1308835C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

一种用于存储器管理的方法、计算机程序产品及分布数据处理系统。存储器区域响应接收包含虚拟地址的存储器操作请求而登记,并且它具有访问权限及其相关保护域,其中,虚拟地址用于对一个数据结构寻址。然后,使用第二数据结构来将虚拟地址转换成物理地址以执行操作。使用第三数据结构来允许进入请求响应所发起的远端操作。

Description

远端直接存储器存取启用网络适配器的存储器管理卸载
技术领域
本发明一般涉及主机计算机与输入/输出(I/O)设备之间的通信协议。更具体地说,本发明提供一种用于在主机与I/O设备之间通信的上下文中进行存储器管理的方法。
背景技术
在网际协议(IP)网络中,软件提供可以用来与输入/输出设备、通用计算机(主机)和专用计算机通信的消息传递机制。消息传递机制包括传输协议、高层协议和应用编程接口。目前在IP网络上使用的关键标准传输协议是传输控制协议(TCP)和用户数据报协议(UDP)。TCP提供可靠服务,而UDP提供不可靠服务。今后,流控制传输协议(SCTP)也将用来提供可靠服务。在设备或计算机上执行的进程通过高层协议如套接字、iSCSI、和直接访问文件系统(DAFS)来访问IP网络。
不幸的是,TCP/IP软件消耗相当大量的处理器和存储器资源。这一问题在有关参考文献中有详尽的描述(参见J.Kay,J.Pasquale,“Profiling and reducing processing overhead in TCP/IP(分析和降低TCP/IP中的处理开销)”,IEEE/ACM Transactions onNetworking(IEEE/ACM网络化学报),Vol 4,No.6,pp.817-828,1996年12月;以及D.D.Clark,V.Jacobson,J.Romkey,H.Salwen,“Ananalysis of TCP processing overhead(TCP处理开销的分析)”,IEEECommunications Magazine(IEEE通信杂志),Vol,27,第6期,1989年6月,pp.23-29)。今后,网络栈将由于下面若干原因而继续消耗大量资源:通过应用的网络化使用增大;使用网络安全协议;以及底层结构带宽比微处理器和存储器带宽以更高的速率增长。为了解决这一问题,业界正在将网络栈处理转给IP集卸载引擎(IP suite Offload Engine,IPSOE)。
目前业界存在两种卸载(offload)方法。第一方法使用现有TCP/IP网络栈,而不增加任何附加协议。该方法可以将TCP/IP转给硬件。但是不幸的是没有消除接收方复制的需要。如上面论文所述,复制对中央处理单元(CPU)使用的影响最大。为消除复制需要,业界正在寻求第二方法,包括添加帧、直接数据放置(DDP)和基于TCP的远端直接存储器存取(RDMA)以及基于SCTP的DDP和RDMA。支持这两种方法所需的IP集卸载引擎(IPSOE)是类似的,它们之间的关键不同之处在于采用第二方法硬件必须支持附加协议。
IPSOE提供可以通过套接字、iSCSI和DAFS用来在节点之间通信的消息传递机制。在主机计算机或设备上执行的进程通过将发送/接收消息投递到IPSOE上的发送/接收工作队列来访问IP网络。这些进程也称作使用者(consumer)”。
发送/接收工作队列(WQ)作为队列对(QP)分配给使用者。消息可以通过若干不同传输类型来发送:传统TCP、RDMA TCP、UDP或SCTP。使用者通过IPSOE发送和接收工作完成(WC)队列从完成队列(CQ)中提取这些消息的结果。源端IPSOE负责将外出消息进行分段,并且将它们发送到目的端。目的端IPSOE负责重新组装进入消息,并且将它们放置到由目的端使用者指定的存储器空间中。这些使用者使用IPSO动词来访问由IPSOE支持的功能。解释动词并且直接访问IPSOE的软件称作IPSO接口(IPSOI)。
目前,主机CPU执行大部分IP集处理。IP集卸载引擎提供一种用于与其他通用计算机和I/O设备进行通信的较高性能接口。通过IPSOE发送或接收数据需要CPU将数据从一个存储器位置复制到另一个位置,或者登记存储器从而使IPSOE可以直接访问存储器区域。这些选项均需要大量的CPU资源,其中,存储器登记选项更适合于大的存储传输。然而,随着网络速度的提高,所需的CPU资源量将增大。最好具有一种改进方法、装置和计算机指令,用于减少执行下列操作所需的CPU资源量:登记这些存储器位置,通过存储器窗口将它们暴露给远端系统,然后提供一次接触(One Touch)访问作为暴露存储器窗口的选项。另外,最好让该机制适用于iSCSI 1.0、RDMA和iSCSI-R。
发明内容
本发明提供一种方法、计算机程序产品及分布数据处理系统,用于登记存储器位置,通过存储器窗口暴露先前登记的存储器位置,然后提供一次接触访问作为暴露存储器窗口的选项。
具体地说,本发明涉及由根据本发明优选实施例的网际协议集卸载引擎(IPSOE)进行存取的存储器区域。提供一种机制用于隐式或显式登记存储器区域并且允许硬件通过存储器区域表和地址转换表直接使用该区域同时防止该区域被其他应用使用。一种利用标记表将请求与一个物理或虚拟地址相关联从而通过进入请求访问先前登记的存储器区域的方法。一种当通过进入消息第一次使用时对先前绑定的窗口去绑定的机制。
附图说明
被认为是本发明特征的新特性在所附权利要求中进行阐述。然而,通过参照下面结合附图对示例性实施例的详细描述,本发明本身以及优选使用模式及其另外目的和优点将变得更好理解,其中:
图1是示出根据本发明优选实施例的分布计算机系统的图;
图2是根据本发明优选实施例的主机处理器节点的功能方框图;
图3A是根据本发明优选实施例的IP集卸载引擎的图;
图3B是根据本发明优选实施例的交换机的图;
图3C是根据本发明优选实施例的路由器的图;
图4是示出根据本发明优选实施例的工作请求处理的图;
图5是示出其中使用TCP或SCTP传输的根据本发明优选实施例的分布计算机系统的一部分的图;
图6是示出根据本发明优选实施例的数据帧的图;
图7是示出根据本发明优选实施例的分布计算机系统的一部分的图;
图8是示出用于本发明的分布网络系统中的网络寻址的图;
图9是本发明优选实施例中的包含子网的分布计算机系统的一部分的图;
图10是用于本发明的优选实施例中的分层通信架构的图;
图11是示出根据本发明优选实施例的两种存储器登记机制的流程图及图表;
图12示出根据本发明优选实施例的存储器管理系统;
图13是示出根据本发明优选实施例的存储器区域表条目的图;
图14是示出根据本发明优选实施例的当登记存储器区域时必须进行的检查的流程图;
图15是示出根据本发明优选实施例的由IPSOE用来验证由使用者作为工作请求投递到IPSOE工作队列中的工作队列元素所执行的存储器存取的过程的流程图及图表;
图16是示出根据本发明优选实施例的用来区分可以与远端操作相关联的不同类型的流的过程的流程图及图表;
图17A是示出根据本发明优选实施例的与iSCSI QP相关联的存储器管理机制的流程图及图表;
图17B是示出根据本发明优选实施例的用来验证远端iSCSI 1.0操作的存储器管理过程的流程图及图表;以及
图18是示出根据本发明优选实施例的用来向一次接触访问机制提供不暴露给远端节点的注销功能并且验证远端RDMA读取请求、RDMA读取响应和RDMA写入消息的存储器管理过程的流程图及图表。
具体实施方式
本发明提供一种分布计算机系统,包括端节点、交换机、路由器和互连这些组件的链路。端节点可以是网际协议集卸载引擎或基于网际协议集的传统主机软件。各端节点使用收发队列对来接收和发送消息。端节点将消息分成多个帧,并且通过链路传输这些帧。交换机和路由器互连端节点,并且通过路由选择将这些帧传送到适当的端节点。端节点在目的端将这些段重新组装成消息。
现在参照附图特别是图1,示出根据本发明优选实施例的分布计算机系统的图。图1所示的分布计算机系统采用网际协议网络(IP网络)如IP网络100的形式,并且仅是为了示例的目的而提供的,并且下述本发明实施例可以在各种其他类型和结构的计算机系统上实现。例如,实现本发明的计算机系统的范围可以从具有一个处理器和一些输入/输出(I/O)适配器的小型服务器到具有成百上千处理器和数千I/O适配器的大型并行超级计算机系统。而且,本发明可以在由互联网或内部网连接的远端计算机系统的底层结构中实现。
IP网络100是互连分布计算机系统内的节点的高带宽、低延迟网络。节点是连至一个或多个网络链路并且在网络内形成消息源端和/或目的端的任何组件。在所示例子中,IP网络100包括采用主机处理器节点102、主机处理器节点104以及冗余阵列独立盘(RAID)子系统节点106形式的节点。由于IP网络100可以连接任何数目和任何类型的独立处理器节点、存储节点和专用处理节点,因此图1所示的节点仅是为了示例的目的。这些节点中的任一个均可以用作端节点,在此它被定义为在IP网络100中发起或最终使用消息或帧的设备。
在本发明的一个实施例中,错误处理机制存在于分布计算机系统中,其中,错误处理机制考虑到分布计算系统如IP网络100中端节点之间的TCP或SCTP通信。
在此所用的消息是应用定义的数据交换单元,它是在协作进程之间进行通信的基本单元。帧是用网际协议集首标和/或尾标封装的一个数据单元。首标一般提供控制和路由选择信息,用于引导帧通过IP网络100。尾标一般包含控制和循环冗余校验(CRC)数据,用于确保不传送带有被破坏内容的帧。
在分布计算机系统内,IP网络100包含支持各种形式的通信(traffic)如存储、进程间通信(IPC)、文件访问和套接字的通信和管理底层结构。图1所示的IP网络100包括交换通信结构116,它允许很多设备在安全、远端管理的环境中以高带宽和低延迟同时传输数据。端节点可以通过多个端口进行通信,并且利用多个路径通过IP网络结构。图1所示的通过IP网络的多个端口和路径可以用于容错和增大带宽数据传输。
图1中的IP网络100包括交换机112、交换机114和路由器117。交换机是将多个链路连接在一起并且允许使用层2目的端地址字段通过路由选择将帧从一个链路传送到另一链路的设备。当使用以太网作为链路时,目的端字段公知为介质访问控制(MAC)地址。路由器是根据层3目的端地址字段对帧执行路由选择的设备。当使用网际协议(IP)作为层3协议时,目的端地址字段是IP地址。
在一个实施例中,链路是任何两个网络结构单元如端节点、交换机或路由器之间的全双工通道。适当的链路例子包括但不限于铜缆、光缆、底板和印刷电路板上的印刷电路铜迹(copper trace)。
对于可靠服务类型(TCP和SCTP),端节点如主机处理器端节点和I/O适配器端节点产生请求帧,并且返回确认帧。交换机和路由器将帧从源端传到目的端。
在如图1所示的IP网络100中,主机处理器节点102、主机处理器节点104和RAID子系统节点106包括至少一个IPSOE以与IP网络100接口。在一个实施例中,各IPSOE是对在IP网络100上传输的源帧或信宿帧(sink frame)以足够的细节实现IPSOI的端点。主机处理器节点102包含采用主机IPSOE 118和IPSOE 120形式的IPSOE。主机处理器节点104包含IPSOE 122和IPSOE 124。主机处理器节点102还包括通过总线系统134互连的中央处理单元126-130和存储器132。主机处理器节点104类似地包括通过总线系统144互连的中央处理单元136-140和存储器142。
IPSOE 118提供与交换机112的连接,而IPSOE 124提供与交换机114的连接,并且IP集卸载引擎120和122提供与交换机112和114的连接。
在一个实施例中,IP集卸载引擎是以硬件或者硬件和卸载微处理器的组合来实现的。在这一实现中,IP集处理转给IPSOE。该实现还允许在交换网络上同时进行多个通信,而无需与通信协议相关联的传统开销。在一个实施例中,图1中的IPSOE和IP网络100在不涉及操作系统内核进程的情况下向分布计算机系统的使用者提供零处理器复制数据传输,并且采用硬件来提供可靠、容错的通信。
如图1所示,路由器117连至与其他主机或其他路由器的广域网(WAN)和/或局域网(LAN)连接。
在本例中,图1中的RAID子系统节点106包括处理器168、存储器170、IP集卸载引擎(IPSOE)172、以及多个冗余和/或条式(striped)存储盘单元174。
IP网络100处理用于存储、处理器间通信、文件访问和套接字的数据通信。IP网络100支持高带宽、可扩展和极其低延迟的通信。用户客户可以绕过操作系统内核进程,直接访问网络通信组件如IPSOE,这就允许高效的消息传递协议。IP网络100适于当前计算模型,并且是新形式的存储、群集(cluster)和通用网络化通信的构建块。此外,图1中的IP网络100允许存储节点在它们之间通信,或者与分布计算机系统中的任何或所有处理器节点通信。在存储设备连至IP网络100的情况下,存储节点大致具有与IP网络100中的任何主机处理器节点相同的通信能力。
在一个实施例中,图1所示的IP网络100支持通道语义和存储器语义。通道语义有时称作发送/接收或推送(push)通信操作。通道语义是在传统I/O通道中采用的通信类型,其中,源端设备推送数据,并且目的端设备确定数据的最终目的地。在通道语义中,从源进程传输的帧指定目的进程的通信端口,但是不指定帧将要写入的目的进程存储器空间位置。因此,在通道语义中,目的进程预先分配将传输数据置于何处。
在存储器语义中,源进程直接读取或写入远端节点目的进程的虚拟地址空间。远端目的进程仅需要与数据缓冲区的位置进行通信,并且不需要涉及任何数据传输。因此,在存储器语义中,源进程发送包含目的进程的目的缓冲区存储器地址的数据帧。在存储器语义中,目的进程先前向源进程授予存取其存储器的权限。
对于存储、群集和通用网络化通信,通道语义和存储器语义典型地都是必要的。典型的存储操作采用通道和存储器语义的组合。在图1所示的分布计算机系统的存储操作示例中,主机处理器节点如主机处理器节点102通过使用通道语义发起存储操作,以将盘写入命令发送到RAID子系统IPSOE 172。RAID子系统检查命令,并且使用存储器语义来直接从主机处理器节点的存储器空间读取数据缓冲区。在读取数据缓冲区之后,RAID子系统采用通道语义将I/O完成消息推送回到主机处理器节点。
在一个示例性实施例中,图1所示的分布计算机系统执行采用虚拟地址和虚拟存储器保护机制的操作以确保对所有存储器的正确和适当存取。运行在该分布计算机系统中的应用程序对于任何操作都不需要使用物理寻址。
下一步参照图2,示出根据本发明优选实施例的主机处理器节点的功能方框图。主机处理器节点200是主机处理器节点的例子,如图1中的主机处理器节点102。在本例中,图2所示的主机处理器节点200包括一组使用者202-208,它们是在主机处理器节点200上执行的进程。主机处理器节点200还包括IP集卸载引擎(IPSOE)210和IPSOE 212。IPSOE 210包含端口214和216,而IPSOE 212包含端口218和220。各端口连接到一个链路。这些端口可以连接到一个IP网络子网或多个IP网络子网,如图1中的IP网络100。
使用者202-208通过动词接口222以及消息和数据服务224将消息传输到IP网络。动词接口在本质上是IP集卸载引擎功能的抽象描述。操作系统可以通过其编程接口暴露一些或全部动词功能。基本上,该接口定义主机的行为。另外,主机处理器节点200包括消息和数据服务224,它是比动词层更高的高层接口,并且用来处理通过IPSOE 210和IPSOE 212接收的消息和数据。消息和数据服务224向使用者202-208提供一个接口来处理消息和其他数据。
现在参照图3A,示出根据本发明优选实施例的IP集卸载引擎的图。图3A所示的IP集卸载引擎300A包括一组队列对(QP)302A-310A,它们用来将消息传输到IPSOE端口312A-316A。对IPSOE端口312A-316A进行数据缓冲使用网络层的服务质量字段(QOSF)例如IP版本6规范中的通信类(Traffic Class)字段来引导(channel)。各网络层服务质量字段具有其自己的流控。网际工程任务组(IETF)标准网络协议用来配置连接到网络的所有IP集卸载引擎端口的链路和网络地址。两个这样的协议是地址解析协议(ARP)和动态主机配置协议。存储器转换和保护(MTP)338A是将虚拟地址转换成物理地址并且验证存取权限的机制。直接存储器存取(DMA)340A支持使用存储器350A对于队列对302A-310A的直接存储器存取操作。
单个IP集卸载引擎如图3A所示的IPSOE 300A可以支持上千队列对。各队列对包括发送工作队列(SWQ)和接收工作队列(RWQ)。发送工作队列用来发送通道和存储器语义消息。接收工作队列接收通道语义消息。使用者调用在此称作“动词”的特定于操作系统的编程接口,以将工作请求(WR)放置到工作队列中。
图3B示出根据本发明优选实施例的交换机300B。交换机300B包括通过链路或网络层服务质量字段如IP版本4的服务类型字段306B与多个端口304B通信的帧中继器302B。交换机如交换机300B一般可以通过路由选择将帧从一个端口传送到同一交换机上的任何其他端口。
类似地,图3C示出根据本发明优选实施例的路由器300C。路由器300C包括通过网络层服务质量字段如IP版本4的服务类型字段306C与多个端口304C通信的帧中继器302C。如同交换机300B,路由器300C一般将能够通过路由选择将帧从一个端口传送到同一路由器上的任何其他端口。
现在参照图4,示出根据本发明优选实施例的工作请求处理的图。在图4中,存在接收工作队列400、发送工作队列402和完成队列404用于处理使用者406的来往请求。来自使用者406的这些请求最终发送到硬件408。在本例中,使用者406产生工作请求410和412,并且接收工作完成信息414。如图4所示,放置在工作队列中的工作请求称作工作队列元素(WQE)。
发送工作队列402包含工作队列元素(WQE)422-428,描述要在IP网络结构上传输的数据。接收工作队列400包含工作队列元素(WQE)416-420,描述将来自IP网络结构的进入通道语义数据置于何处。工作队列元素由IPSOE中的硬件408进行处理。
动词还提供用于从完成队列404中提取完成工作的机制。如图4所示,完成队列404包含完成队列元素(CQE)430-436。完成队列元素包含有关先前完成的工作队列元素的信息。完成队列404用来为多个队列对创建单个完成通知点。完成队列元素是完成队列中的数据结构。该元素描述完成工作队列元素。完成队列元素包含足够信息来确定队列对和所完成的特定工作队列元素。完成队列上下文是包含管理各个完成队列所需的指针、长度和其他信息的信息块。
被支持用于图4所示的发送工作队列402的示例工作请求如下所述。发送工作请求是将一组本地数据段推送到由远端节点的接收工作队列元素引用的数据段的通道语义操作。例如,工作队列元素428包含对数据段4 438、数据段5 440和数据段6 442的引用。发送工作请求的数据段均包含部分虚拟连续存储器区域。用来引用本地数据段的虚拟地址位于创建本地队列对的进程的地址上下文中。
远端直接存储器存取(RDMA)读取工作请求提供一种存储器语义操作来读取远端节点上的虚拟连续存储器空间。存储器空间可以是存储器区域的一部分或存储器窗口的一部分。存储器区域引用先前登记的由虚拟地址和长度定义的虚拟连续存储器地址集。存储器窗口引用已绑定到先前登记区域的虚拟连续存储器地址集。
RDMA读取工作请求读取远端端节点上的虚拟连续存储器空间,并且将数据写入到虚拟连续本地存储器空间。类似于发送工作请求,由RDMA读取工作队列元素用来引用本地数据段的虚拟地址位于创建本地队列对的进程的地址上下文中。远端虚拟地址位于由RDMA读取工作队列元素把其作为目标的远端队列对所属进程的地址上下文中。
RDMA写入工作队列元素提供一种存储器语义操作来写入远端节点上的虚拟连续存储器空间。例如,接收工作队列400中的工作队列元素416引用数据段1 444、数据段2 446和数据段3 448。RDMA写入工作队列元素包含本地虚拟连续存储器空间的分散列表和将本地存储器空间写入其中的远端存储器空间的虚拟地址。
RDMA FetchOp(提取操作)工作队列元素提供一种存储器语义操作来对远端字执行原子操作。RDMA FetchOp工作队列元素是组合RDMA读取、修改和RDMA写入操作。RDMA FetchOp工作队列元素可以支持若干读取-修改-写入操作,例如比较并且如果相等则交换。RDMA FetchOp不包括在基于IP标准化方向的当前RDMA中,但是在此进行描述,因为它可以用作某些实现中的增值特性。
绑定(去绑定)远端存取键(STag)工作队列元素将一个命令提供给IP集卸载引擎硬件,以通过将存储器窗口与一个存储器区域进行关联(断开关联)来更改(销毁)存储器窗口。STag是各RDMA存取的一部分,并且用来验证远端进程准许访问缓冲区。
在一个实施例中,图4所示的接收工作队列400仅支持一种工作队列元素,它称作接收工作队列元素。接收工作队列元素提供一种通道语义操作来描述将进入发送消息写入其中的本地存储器空间。接收工作队列元素包括描述若干虚拟连续存储器空间的分散列表。进入发送消息写入到这些存储器空间。这些虚拟地址位于创建本地队列对的进程的地址上下文中。
对于处理器间通信,用户模式软件进程直接从缓冲区驻留在存储器中的位置通过队列对传输数据。在一个实施例中,通过队列对的传输绕过操作系统,并且占用很少主机指令循环。队列对允许不涉及操作系统内核的情况下的零处理器复制数据传输。零处理器复制数据传输提供高带宽和低延迟通信的高效支持。
当创建队列对时,队列对设为提供所选类型的传输服务。在一个实施例中,实现本发明的分布计算机系统支持三种传输服务:TCP、SCTP和UDP。
TCP和SCTP将本地队列对与一个且仅与一个远端队列对相关联。TCP和SCTP需要一个进程为它要通过IP网络结构进行通信的每个进程创建一个队列对。因此,如果N个主机处理器节点均包含P个进程,并且各节点上的所有P个进程都希望与所有其他节点上的所有进程进行通信,则每个主机处理器节点需要P2×(N-1)个队列对。而且,进程可以将一个队列对与同一IPSOE上的另一队列对相关联。
采用TCP或SCTP在分布进程之间通信的分布计算机系统的一部分在总体上如图5所示。图5的分布计算机系统500包括主机处理器节点1、主机处理器节点2和主机处理器节点3。主机处理器节点1包括进程A 510。主机处理器节点2包括进程C 520和进程D 530。主机处理器节点3包括进程E 540。
主机处理器节点1包括队列对4、6和7,它们均具有发送工作队列和接收工作队列。主机处理器节点2具有队列对9,并且主机处理器节点3具有队列对2和5。分布计算机系统500的TCP或SCTP将本地队列对与一个且仅与一个远端队列对相关联。因此,队列对4用来与队列对2通信;队列对7用来与队列对5通信;并且队列对6用来与队列对9通信。
置于一个发送队列中的WQE采用TCP或SCTP使数据写入到由相关队列对的接收WQE引用的接收存储器空间中。RDMA操作工作于相关队列对的地址空间。
在本发明的一个实施例中,TCP或SCTP由于硬件维护顺序号并且确认所有帧传输而变得可靠。硬件和IP网络驱动程序软件的组合重试任何失败通信。队列对的进程客户即使在出现比特错误、接收欠载和网络堵塞的情况下也获得可靠的通信。如果IP网络结构中存在替代路径,则即使在交换机结构、链路或IP集卸载引擎端口出现故障的情况下也可以保持可靠的通信。
另外,可以采用确认来可靠地跨越IP网络结构传送数据。确认可以是或可以不是进程级别确认,即验证接收进程已使用数据的确认。或者,确认可以是仅表示数据已到达其目的端的信息。
用户数据报协议是无连接的。UDP由管理应用程序用来发现新交换机、路由器和端节点并且将它们整合到给定分布计算机系统中。UDP不提供TCP或SCTP的可靠性保证。因此,UDP在每个端节点维护较少状态信息的情况下工作。
下一步参照图6,示出根据本发明优选实施例的数据帧示例。数据帧是根据路由选择通过IP网络结构的信息单元。数据帧是端节点到端节点构造,因此由端节点创建和使用。对于送往IPSOE的帧,数据帧既不由IP网络结构中的交换机和路由器产生,也不由其使用。相反,对于送往IPSOE的数据帧,交换机和路由器简单地将请求帧或确认帧移近最终目的端,从而在进程中修改链路首标字段。当帧跨越子网边界时,路由器可以修改帧的网络首标。在穿越子网中,单帧停留在单个服务级别上。
消息数据600包含数据段1 602、数据段2 604和数据段3 606,它们类似于图4所示的数据段。在本例中,这些数据段形成置于数据帧612内的帧有效载荷610中的帧608。另外,数据帧612包含用于错误校验的循环冗余校验(CRC)614。另外,数据帧612中还有路由首标616和传输首标618。路由首标616用来标识数据帧612的源和目的端口。本例中的传输首标618指定数据帧612的顺序号以及源和目的端口号。当建立通信时,对顺序号进行初始化,并且它对于帧首标、DDP/RDMA首标、数据有效载荷和CRC的每一字节增1。本例中的帧首标620指定与帧相关联的目的队列对号以及直接数据放置和/或远端直接存储器存取(DDP/RDMA)首标与数据有效载荷加上CRC的长度。DDP/RDMA首标622指定数据有效载荷的消息标识符和放置信息。消息标识符对于作为消息一部分的所有帧均不变。示例消息标识符例如包括:发送、写入RDMA和读取RDMA。
在图7中,示出分布计算机系统700的一部分来阐述示例请求和确认事务。图7中的分布计算机系统700包括运行进程A 716的主机处理器节点702和运行进程B 718的主机处理器节点704。主机处理器节点702包括IPSOE 706。主机处理器节点704包括IPSOE 708。图7中的分布计算机系统包括IP网络结构710,它包括交换机712和交换机714。IP网络结构包括将IPSOE 706连至交换机712的链路;将交换机712连至交换机714的链路;以及将IPSOE 708连至交换机714的链路。
在示例事务中,主机处理器节点702包括客户进程A。主机处理器节点704包括客户进程B。客户进程A通过包括发送队列724和接收队列726的队列对23 720与主机IPSOE 706交互。客户进程B通过队列对24 722与主机IPSOE 708交互。队列对23和24是包括发送工作队列和接收工作队列的数据结构。
进程A通过将工作队列元素投递到队列对23的发送队列来发起一个消息请求。该工作队列元素如图4所示。客户进程A的消息请求由包含在发送工作队列元素中的聚集列表(gather list)引用。聚集列表中的各数据段指向虚拟连续本地存储器区域的一部分,它包含消息的一部分,如图4中分别保存消息部分1、2和3的数据段1、2和3所示。
主机IPSOE 706中的硬件读取工作队列元素,并且将存储在虚拟连续缓冲区中的消息分段为多个数据帧如图6所示的数据帧。数据帧根据路由选择通过IP网络结构,并且对于可靠传输服务,由最终目的端节点进行确认。如果没有成功确认,则数据帧由源端节点进行重新传输。数据帧由源端节点产生,并且由目的端节点使用。
参照图8,示出本发明的用于分布网络系统中的网络寻址的图。主机名提供主机节点如主机处理器节点或I/O适配器节点的逻辑标识。主机名标识消息端点,从而使消息送往驻留在由主机名指定的端节点上的进程。因此,对于每一节点,都存在一个主机名,但是一个节点可以具有多个IPSOE。
单个链路层地址(例如,以太网介质访问层地址)804分配给端节点组件802的各端口806。组件可以是IPSOE、交换机或路由器。所有IPSOE和路由器组件都必须具有一个MAC地址。交换机上的介质访问点也分配有一个MAC地址。
一个网络地址(例如,IP地址)812分配给端节点组件802的各端口806。组件可以是IPSOE、交换机或路由器。所有IPSOE和路由器组件必须具有一个网络地址。交换机上的介质访问点也分配有一个MAC地址。
交换机810的各端口没有与之相关联的链路层地址。然而,交换机810可以具有介质访问端口814,其中,介质访问端口814具有与之相关联的链路层地址808和网络层地址816。
图9示出根据本发明优选实施例的分布计算机系统的一部分。分布计算机系统900包括子网902和子网904。子网902包括主机处理器节点906、908和910。子网904包括主机处理器节点912和914。子网902包括交换机916和918。子网904包括交换机920和922。
路由器创建并连接子网。例如,子网902通过路由器924和926连接到子网904。在一个示例实施例中,子网具有最大216个端节点、交换机和路由器。
子网被定义为作为单个单元管理的一组端节点和级联交换机。典型地,子网占据单个地理或功能区域。例如,一个房屋内的单个计算机系统可以被定义为子网。在一个实施例中,子网中的交换机可以对消息执行非常快的虫孔(wormhole)或直通(cut-through)路由选择。
子网内的交换机检查在子网内唯一的目的端链路层地址(例如,MAC地址)以允许交换机快速且高效地对进入消息帧执行路由选择。在一个实施例中,交换机是相对简单的电路,并且典型地被实现为单个集成电路。子网可以具有由级联交换机形成的成百上千个端节点。
如图9所示,为扩展成大得多的系统,子网通过路由器如路由器924和926来连接。路由器解释目的端网络层地址(例如,IP地址)和对帧执行路由选择。
交换机的一个示例实施例在总体上如图3B所示。交换机或路由器上的每个I/O路径均具有一个端口。通常,交换机可以通过路由选择将帧从一个端口传送到同一交换机上的任何其他端口。
在子网如子网902或子网904内,从源端口到目的端口的路径由目的端主机IPSOE端口的链路层地址(例如,MAC地址)来确定。在子网之间,路径由目的端IPSOE端口的网络层地址(IP地址)和将要用来到达目的端子网的路由器端口的链路层地址(例如,MAC地址)来确定。
在一个实施例中,请求帧及其相应肯定确认(ACK)帧所用的路径不要求是对称的。在一个采用遗忘路由选择的实施例中,交换机根据链路层地址(例如,MAC地址)选择输出端口。在一个实施例中,交换机对于所有其输入端口使用一组路由判定标准。在一个示例实施例中,路由判定标准包含在一个路由表中。在另一个实施例中,交换机对于各输入端口均采用单独的一组标准。
本发明的分布计算机系统中的数据事务典型地由若干硬件和软件步骤组成。客户进程数据传输服务可以是用户模式或内核模式进程。客户进程通过一个或多个队列对如图3A、5和8所示的队列对来访问IP集卸载引擎硬件。客户进程调用特定于操作系统的编程接口,在此称作“动词”。实现动词的软件代码将工作队列元素投递到给定队列对工作队列。
存在多种可能的工作队列元素投递方法和多种可能的工作队列元素格式,它们考虑到各种代价/性能设计点但不影响互操作性。然而,用户进程必须以完备定义的方式与动词进行通信,并且必须充分指定跨越IP网络结构传输的数据的格式和协议,以允许设备在不同厂商环境下互操作。
在一个实施例中,IPSOE硬件检测工作队列元素投递,并且访问工作队列元素。在该实施例中,IPSOE硬件转换并验证工作队列元素的虚拟地址,并且访问数据。
外出消息拆分成一个或多个数据帧。在一个实施例中,IPSOE硬件将DDP/RDMA首标、帧首标和CRC、传输首标和网络首标添加到各帧。传输首标包括顺序号和其他传输信息。网络首标包括路由信息如目的端IP地址和其他网络路由信息。链路首标包含目的端链路层地址(例如,MAC地址)或其他本地路由信息。
如果采用TCP或SCTP,当请求数据帧到达其目的端节点时,目的端节点使用确认数据帧来让请求数据帧发送者知道请求数据帧在目的端得到验证和接受。确认数据帧确认一个或多个有效且接受的请求数据帧。请求者在接收任何确认之前可以具有多个未决请求数据帧。在一个实施例中,当创建队列对时,确定多个未决消息即请求数据帧的数目。
用于实现本发明的分层架构1000的一个实施例在总体上如图10所示。图10的分层架构图示出数据通信路径各层以及在各层之间传递的数据和控制信息组织。
IPSOE端节点协议层(例如,由端节点1011采用)包括由使用者1003定义的高层协议1002,传输层1004;网络层1006,链路层1008,和物理层1010。交换机层(例如,由交换机1013采用)包括链路层1008和物理层1010。路由器层(例如,由路由器1015采用)包括网络层1006、链路层1008和物理层1010。
分层架构1000在总体上大致遵循经典通信栈,从而完成在使用者1003与1005之间传输数据的使用者操作1012。例如,对于端节点1011的各协议层,高层协议1002采用动词在传输层1004创建消息。传输层1004将消息1014传到网络层1006。网络层1006在网络子网之间对帧执行路由选择1016。链路层1008在网络子网内对帧执行路由选择1018。物理层1010将比特或比特组发送到其他设备的物理层。各层不知道高层或低层如何执行它们的功能。
使用者1003和1005表示采用其他层以在端节点之间通信的应用程序或进程。传输层1004提供端对端的消息移动。在一个实施例中,传输层提供如上所述的四种传输服务,它们是传统TCP、基于TCP的RDMA、SCTP和UDP。网络层1006执行通过一个子网或多个子网到目的端节点的帧路由选择。链路层1008执行跨越链路的流控1020、错误校验和优先帧传送。
物理层1010执行依赖于技术的比特传输。比特或比特组通过链路1022、1024和1026在物理层之间传递。链路可以用印刷电路铜迹、铜缆、光缆或其他适当链路来实现。
现在参照图11,提供示出根据本发明优选实施例的两种存储器登记机制的流程图及图表。在通过IPSOE登记存储器区域的“传统机制”(1120)中,使用者1100使用单个步骤1104来通过IPSOE登记存储器区域。该单个步骤使用存储器映射I/O(MMIO)、编程I/O(PIO)或者可能是直接存储器存取(DMA)CPU辅助来将存储器转换和保护表(TPT)条目传输到IPSOE 1112的存储器TPT 1108中。如果传统机制使用MMIO或PIO来执行传输,则使用者在能够使用新创建的存储器TPT之前,必须等待这些MMIO或PIO返回控制给主机CPU。依赖于具体实现,该延迟可能降低系统性能。
图11还示出基于发送队列的物理存储器登记机制1130。在该机制下,通过发送队列的物理存储器登记通过使用者用来访问IPSOE的动词来显式暴露。使用者1140必须首先在QP中激活使用该机制。这是基于发送队列的物理存储器登记机制的第一步骤(1144)。该步骤包括设置QP上下文1148中的“激活基于发送队列的物理存储器登记”字段。在QP上下文被激活支持基于发送队列的物理存储器登记之后,(1152)使用者1140通过将发送队列(SQ)工作请求(WR)投递到IPSOE SQ之一如SQ 1164中来请求IPSOE 1192在存储器TPT 1172中创建一个条目。动词接口立即返回与存储器登记WR相关联的STag,将存储器登记WR转换成SQ工作队列元素(WQE)1160,并且将存储器登记WQE放置到SQ 1164中(步骤1156)。当接收到立即返回时,使用者1140可以开始在置于同一SQ 1164中的本地或远端WR中使用该STag。
当IPSOE 1192的SQ 1164处理物理存储器登记WQE 1160时,它验证存储器登记WQE。如果QP已激活基于发送队列的物理存储器登记机制并且STag有效(例如,STag指向存储器TPT的一个条目,STagTag_Instance(标记实例)匹配该条目中的Tag_Instance,并且存储器TPT有足够的空间用于新条目),则创建新的存储器TPT条目1172(步骤1168)。
如果存储器登记WQE遇到错误(例如,STag不指向存储器TPT的一个条目,或者STag Tag_Instance不匹配STag所指向的条目中的Tag_Instance,或者STag所指向的条目没有足够的空间用于新存储器TPT条目),则可以采取两种语义选项来实现。选项1(步骤1174)是反应性(reactive)的,并且假定使用者1140不清楚存储器TPT空间。如果IPSOE实现使用选项1,则执行下面过程:IPSOE将与SQ相关联的QP置于发送队列耗尽状态,停止处理存储器登记WQE 1160之后的WQE(但是继续处理所有RQ WQE、所有进入RDMA读取请求、任何终止消息和所有以前SQ WQE),产生标识存储器登记WQE中的错误的完成错误CQE 1180,将CQE 1180置于完成队列1184中,并且通过CQ 1184对所有随后SQ WQE返回刷新(Flush)错误CQE。使用者1140可以重试以错误完成的存储器登记WR和所有随后WR。
选项2(步骤1176)是预期性(anticipatory)的,并且假定使用者1140清楚存储器TPT空间。也就是,使用者清楚IPSOE 1192正在如何使用存储器TPT空间。在这一选项下,使用者1140仅发出保证在存储器TPT中有足够空间的存储器登记WR。如果IPSOE实现使用选项2,则执行下面过程:IPSOE将与SQ相关联的QP置于错误状态,停止处理所有本地和远端操作,发出终止消息以关闭RDMA流,产生标识存储器登记WQE中的错误的完成错误CQE 1180,将CQE 1180置于完成队列1184中,并且通过CQ 1184对所有其他SQ和RQ WQE返回刷新错误CQE。
最后(步骤1188),使用者1140通过工作完成1188提取物理存储器登记WR的结果。
下一步参照图12,示出根据本发明优选实施例的存储器管理系统的图。存储器管理系统1200采用双表存储器转换和保护管理结构,它包括存储器区域/窗口表1202和地址转换表1204。这两个表合在一起称作存储器转换和保护表(存储器TPT)。存储器区域/窗口表1202包含由IPSOE硬件用来判定是否被授权访问在工作请求或远端操作中引用的存储器区域的信息。在本例中,访问可以在工作队列1208内的WQE数据段1206中请求。地址转换表1204包含用来将在WQE数据段1206中提供的虚拟地址转换成构成存储器区域如存储器区域1210内的数据缓冲区的页的一个或多个实际地址的列表的信息。
当接收到WQE数据段如WQE数据段1206时,使用WQE数据段内的键索引作为对存储器区域/窗口表1202的索引来识别存储器区域/窗口表内的存储器区域条目或存储器窗口条目如存储器区域条目1212或存储器窗口条目1213。存储器区域表条目1212用来判定所请求的存储器存取对于由存储器区域条目定义的存储器区域是否得到授权。如果存取得到授权,则访问地址转换表1204。存在多个地址转换表,其中,对于所定义的每一个存储器区域/窗口,都使用一个地址转换表。地址转换表中的每个条目是构成存储器区域/窗口一部分的页的实际地址。各条目以递增的与存储器区域/窗口相关联的虚拟地址所对应的递增次序来排列。IPSOE硬件根据对存储器区域/窗口的偏移来索引地址转换表1204,其中,该偏移是通过从在工作请求或远端操作分组首标中指定的虚拟地址1216中减去从存储器区域/窗口表条目1212中获得的存储器区域/窗口起始虚拟地址1214来算出的。该结果形成对所要访问的存储器区域的偏移1218。该偏移的低位比特用来索引在地址转换表条目中指定的页,并且高位比特用来索引地址转换表。在本例中,偏移1218导致将地址转换成标识页1220-1226的实际地址,其中,页1220-1226包含由WQE数据段1206引用的数据缓冲区。
图13示出根据本发明优选实施例的存储器区域/窗口表(MRWT)1300以及当登记存储器区域或者将存储器窗口与底层存储器区域绑定时分别插入的存储器区域和存储器窗口条目的布局。
在本例中,存储器区域/窗口条目1302包括存储器区域/窗口的起始虚拟地址1304,存储器区域/窗口长度1306、保护域1308、标记实例(tag_instance)1310、条目类型1311、有效条目1312、访问控制1314、iSCSI控制1315、ATT控制1316、页大小1318以及地址转换指针1320。
存储器区域/窗口表1300中的各条目定义存储器区域或存储器窗口的特征。存储器区域条目(1302)用来描述存储器区域。存储器窗口条目(1303)用来描述存储器窗口。这一节的其余部分将描述存储器区域条目的内容。除非另外指明,该描述适用于存储器窗口条目,因为MRE和MWE包含相同的字段。不过,存储器窗口条目可以经过优化来使用存储器窗口所绑定的存储器区域的地址转换表。
用来引用数据缓冲区的STag的一部分称作Tag_Index,并且这由IPSOE硬件用来索引存储器区域/窗口表以获取所要访问的存储器区域所对应的存储器区域表条目(MRE)。更具体地说,STag Tag_Index用来引用存储器区域。存储器区域的STag包括在绑定WQE中。
存储器区域的起始虚拟地址1304和存储器区域的长度1306定义存储器区域的边界。保护域(PD)1308用来判定发起工作队列请求的QP是否具有访问该存储器区域的权限。也就是,存储在存储器区域条目中的PD值必须匹配存储在QP中的PD值。Tag_Instance 1310是与存储器区域相关联的标记实例值,并且用来验证不同于Tag_Index的STag其他部分。当存储器区域的定义改变时,Tag_Instance提供访问控制。更具体地说,使用存储在该区域的存储器区域条目中的Tag_Instance来验证STag Tag_Instance。
条目类型1311指定条目用于下列哪一个:RDMA区域、RDMA窗口或iSCSI。它可以用两个比特实现,其中,使用三个值,并且保留一个值,或者用三个比特实现。
下面例子是两比特实现的情况:如果条目类型字段为‘00’b,则该条目用于RDMA区域;如果条目类型字段为‘01’b,则该条目用于RDMA窗口;如果条目类型字段为‘10’b,则该条目用于iSCSI区域;并且条目类型字段1‘1’b被保留未用。
如果条目用于RDMA区域(包括iSCSI-R),则存储器区域的第一地址转换表条目指向与存储器区域相关联的第一物理页的字节偏移。如果条目用于RDMA窗口(包括iSCSI-R),则存储器窗口的第一地址转换表条目可以作为对绑定到存储器窗口的存储器区域ATT的索引来实现。如果该条目用于iSCSI 1.0,则虚拟地址1304字段用作包含iSCSI命令的发送队列WQE的指针,并且用于iSCSI 1.0区域的第一地址转换表条目指向与iSCSI 1.0区域相关联的第一物理页的字节偏移。
有效条目1312表示条目是否有效。有效条目1312可以用一个比特实现。如果该比特置位,则条目有效,否则无效。
访问控制1314确定对该存储器区域的写入访问权限。访问控制1314字段包含三个子字段:访问控制类型1330、窗口绑定控制1332以及接触访问控制1334。
访问控制类型1330字段包含四个不同访问类型:本地读取、本地写入、远端读取以及远端写入。这些不同访问类型可以用四个比特来编码,其中,如果其中一个比特置位,则激活与该比特相关联的访问类型。如果其中一个比特未置位,则禁止与该比特相关联的访问类型。例如,如果本地写入访问比特置位,则激活本地写入访问。如果本地写入访问比特未置位,则禁止本地写入访问。注意:如果标准规范禁止窗口用于本地访问,则存储器窗口条目将只有两种不同访问类型:远端读取访问和远端写入访问。
窗口绑定控制1332字段包含单个比特来表示存储器窗口是否可以绑定到存储器区域。如果该比特置位,则存储器窗口可以绑定到存储器区域。如果该比特未置位,则存储器窗口不可以绑定到存储器区域。
接触访问控制1334字段包含至少两个比特:一次接触激活比特,指定条目是否激活一次接触;以及接触比特,只有一次接触激活比特置位,它才有意义,并且指定条目是否以前已被接触。
在进入字节流到达(line up with)与目标为该条目的第一RDMA消息相关联的最后段的结束之后,不能使用一次接触条目。在进入字节流到达与目标为区域的第一RDMA消息相关联的最后段的结束之后,可以使用多次接触条目。
对于一次接触存储器区域,当进入字节流到达与目标为该区域的第一RDMA消息相关联的最后段的结束时,对存储器区域的有效条目1312字段复位。对于多次接触存储器区域,当在进入字节流到达与目标为该区域的第一RDMA消息相关联的最后段的结束时,存储器区域的有效条目1312字段不受影响。该过程的更详细描述在图18及附文中提供。
如果标准规范仅允许对窗口的一次接触访问,则一种实现可以选择仅使用对存储器窗口条目的一次接触访问(或者可以提供对存储器区域的一次接触访问作为选项)。
存储DDP顺序号1315用来存储与DDP首标中最后一个比特置位的DDP段的有效载荷的最后一个字节相关联的DDP顺序号。该过程的更详细描述在图18及附文中提供。
ATT控制1316指定ATT条目是引用物理页地址(直接指针)、物理页地址列表(一级间接指针)或包含ATT页列表的间接ATT页(二级间接指针)。地址转换指针1212引用与该存储器区域相关联的地址转换表。注意,引用一个物理页的ATT第一条目可以指向对该页的偏移。类似地,最后一个条目可以从最后一个物理页的起点开始以一定的偏移结束。
页大小1318指定页大小。例如,4KB、8KB、64KB、1MB、16MB和256MB以及其他可能的大小都可以是有效的页大小,这一点本领域的技术人员清楚。
ATT条目1320指定一个或多个64比特物理地址。如果ATT控制字段1316设为直接指针1320,则各ATT条目1320指向一个物理地址。如果ATT控制字段1316设为一级间接指针1338,则各ATT条目1320指向一个物理地址列表1340。如果ATT控制字段1316设为二级间接指针1348,则各ATT条目1320指向一个ATT条目列表1350,并且ATT条目1350中的各条目指向一个物理地址列表1354。
图14是根据本发明优选实施例的由存储器登记使用者(简称为使用者)用来登记存储器区域的过程的流程图。首先,使用者检查存储器区域是否由具有公共地址转换表条目的多个进程共享(步骤1400)。如果存储器区域不是以这种方式共享的(步骤1400:否),则使用者必须创建存储器区域表条目(MRTE)和地址转换表条目(ATTE)。如果多个进程使用公共地址转换表条目(步骤1400:是),则使用者必须使用相同ATTE而仅创建MRTE(步骤1412)。
现在参照图15,它是示出根据本发明优选实施例的由IPSOE用来验证由使用者作为工作请求投递到IPSOE工作队列中的工作队列元素所执行的存储器访问的过程的流程图及图表。
首先(步骤1552),使用者1540将工作请求投递到IPSOE工作队列1564中。工作队列可以是发送队列或接收队列。工作请求包含零个或更多数据段。对于RDMA(包括iSCSI-R),各数据段包含STag、虚拟地址和长度。对于iSCSI 1.0:单个STag用于WR中的所有数据段;WR中的各数据段包含一个物理地址;第一数据段包含一个附加字段用来定义对第一物理页的起始偏移;最后一个数据段也包含一个附加字段用来定义对最后一个物理页的结束偏移;并且所有中间数据段仅包含一个物理地址,因为中间页必须以页边界开始和结束。
下一步(步骤1556),动词接口将WR转换成工作队列元素(WQE),并且将WQE 1560置于WQ 1564中。
然后(步骤1568),IPSOE 1592访问WQE 1560。如果WQ 1564为RDMA(包括iSCSI-R)WQ,则验证在WQE 1560中引用的各数据段。验证包括下面检查:a)有效条目字段置位;b)该条目的条目类型设为区域(即,窗口不能用于本地访问);c)与WQ 1564相关联的QP上下文中的PD(保护域)匹配由数据段STag引用的存储器区域条目1570的PD;d)作为数据段STag一部分的Tag_Instance匹配MRE 1570中的Tag_Instance;e)数据段的基址和长度位于与MRE 1570相关联的地址范围内;f)访问类型有效(SQ RDMA写入和发送WR需要本地读取访问;并且RQ WR需要本地写入访问);以及g)对于SQ绑定WR,绑定到存储器窗口的MRE 1570允许窗口访问。注意:如果WR是SQ绑定WR并且它请求对相关窗口设置一次接触访问,则当IPSOE创建相关窗口时,将对一次接触访问比特置位。
如果WQ是iSCSI 1.0 WQE,则使用在WQE中提供的STag来根据在WQE中提供的数据段列表创建iSCSI存储器区域。iSCSI 1.0存储器区域从零开始引用,因为它们没有虚拟地址字段。
如果使用者所提供的数据段有效,则访问相关存储器区域,并且处理WQE。当成功完成时,通过与WQ相关联的CQ返回CQE。
下一步(步骤1576),如果任一数据段无效,则不访问相关存储器区域,并且在与WQ 1564相关联的CQ 1584中通过CQE 1580返回错误。
最后,在步骤1588,使用者1540提取在步骤1552提交的WR的WC。
现在参照图16,它是用来区分可以与远端操作相关联的不同类型的流的过程的流程图及图表。
IPSOE接收进入TCP/IP段1600。
在步骤1604,IPSOE使用公知的TCP/IP/以太网验证机制来验证进入TCP段1604。在步骤1608,IPSOE检查在TCP/IP段验证期间是否遇到错误。如果进入TCP/IP段有效,则过程进入步骤1612。否则1616丢弃该段并且过程继续等待TCP/IP段(步骤1616)。
在步骤1612,在完成验证过程之后,使用进入TCP/IP段的TCP/IP五元组(传输类型、目的端TCP端口号、源端TCP端口号、目的端IP地址以及源端IP地址)来访问与进入TCP段相关联的QP上下文。
在步骤1620,如果对于进入TCP段不存在任何QP上下文,则使用者不使用任何IPSOE TCP/IP卸载机制,并且通过公知的传统NIC机制将进入TCP段上传给使用者。
在步骤1624,如果进入TCP段引用iSCSI 1.0 QP上下文,则对进入TCP段执行图17所示的处理。
在步骤1630,如果进入TCP段引用RDMA(包括iSCSI-R)QP上下文,则IPSOE使用带PDU对齐的标志器(Marker with PDU Alignment,MPA)机制来提取DDP段及其相关DDP首标,并且对进入TCP段执行图18所示的处理。
图17A是根据本发明优选实施例的与iSCSI QP相关联的存储器登记和注销机制的流程图及图表。图17A示出与在iSCSI模式下经过初始化的QP如IPSOE 170中的QP上下文1706相关联的存储器管理功能。
在步骤1704,当使用者1702(典型地是运行在主机CPU的操作系统内核中的iSCSI设备驱动程序)初始化QP上下文1706时,使用者1702将QP模式设为iSCSI 1.0。当QP上下文在iSCSI模式下经过初始化之后,投递到QP发送队列如SQ 1728的工作请求包含iSCSI命令及其相关数据传输数据段列表。IPSOE将遵循图17A所示的流程图:为iSCSI命令及其相关数据传输数据段创建(登记)一个存储器TPT条目;将iSCSI命令发送到目标端;执行与iSCSI命令相关联的数据传输(图17B),并且当接收到iSCSI响应时,销毁iSCSI命令的存储器TPT条目(注销),并且创建包含iSCSI响应的WC。
在使用者1702可以将iSCSI命令发送到目标端之前,使用者1702必须创建RQ WQE来接收iSCSI响应。在步骤1710,使用者1702对于将要与iSCSI命令相关联的iSCSI响应,将RQ WR传到IPSOE1708。在步骤1712,动词接口验证RQ WR,并且如果有效,则动词接口根据该WR创建RQ WQE 1714,将RQ WQE 1714置于相关RQ1716中,并且立即返回到使用者1702。如果WR无效,则动词接口返回一个错误给使用者1702。
在步骤1720,使用者1702然后通过将包含iSCSI命令及其相关数据传输数据段的SQ WR传到IPSOE 1708来请求该IPSOE执行iSCSI命令。在步骤1732,动词接口验证SQ WR,并且如果有效,则动词接口根据该WR创建一个SQ WQE,将SQ WQE 1724置于相关SQ1728中,并且立即返回一个iSCSI命令ID给使用者1702。该命令ID在使用者与IPSOE之间使用以将iSCSI响应与iSCSI命令相关联。如果WR无效,则动词接口返回一个错误给使用者1702。
当IPSOE 1708的SQ 1728处理iSCSI命令SQ WQE 1724时,它验证该WQE。在步骤1736,如果QP初始化为iSCSI模式,iSCSI命令对于它将要发送的设备类型有效,与该iSCSI命令相关联的数据传输数据段有效(例如,它们不重叠(wrap)),并且存储器TPT有足够空间用于新条目,则在存储器TPT 1744中创建新iSCSI存储器TPT条目1740。
如果iSCSI命令SQ WQE 1724遇到错误(例如,存储器TPT没有足够空间用于另一条目或者iSCSI命令操作码对于所引用的设备类型无效),则可以采取两种语义选项来实现。选项1(步骤1748)是反应性的,并且假定使用者1702不清楚存储器TPT空间。如果IPSOE实现使用选项1,则执行下面过程:IPSOE将与SQ相关联的QP置于发送队列耗尽状态,停止处理iSCSI命令SQ WQE 1724之后的WQE(但是继续处理所有RQ WQE、所有进入R2T、所有以前SQ WQE以及其他进入iSCSI控制消息),产生标识iSCSI命令SQ WQE 1724中的错误的完成错误CQE 1776,将CQE 1776置于完成队列1772中,并且通过CQ1772对所有随后SQ WQE返回刷新错误CQE。使用者1772可以重试以错误完成的iSCSI命令WR和所有随后WR。
选项2(步骤1152)是预期性的,并且假定使用者1702清楚存储器TPT空间。也就是,使用者清楚IPSOE正在如何使用存储器TPT空间。在这一选项下,使用者1702仅发出保证在存储器TPT中有足够空间的iSCSI命令WR。如果IPSOE实现使用选项2,则执行下面过程:IPSOE将与SQ相关联的QP(QP 1706)置于错误状态,停止处理所有本地和远端操作,终止iSCSI流,产生标识iSCSI命令SQ WQE中的错误的完成错误CQE 1776,将CQE 1776置于完成队列1772中,并且通过CQ 1772对所有其他SQ和RQ WQE返回刷新错误CQE。
在步骤1156,当IPSOE目标端处理逻辑获得iSCSI命令SQ WQE时,IPSOE将iSCSI命令发送到目标端。
下面描述的图17B中的流程图示出根据本发明优选实施例的由IPSOE用来执行iSCSI命令的数据传输阶段的机制。
当目标端完成iSCSI命令时,(步骤1764),目标端将iSCSI响应(或者,对于设备读取,包括数据输入消息中的iSCSI状态)发送到发起端。
在步骤1768,当IPSOE接收到iSCSI响应时,IPSOE验证QP上下文1706与接收iSCSI响应的流(例如,通过SCTP)或者连接(例如,通过TCP)相关联。对于TCP/IP,IPSOE通过确保与进入iSCSI响应相关联的五元组(传输类型、目的端端口号、源端端口号、目的端IP地址以及源端IP地址)匹配与QP上下文相关联的五元组来执行该步骤。然后,IPSOE验证与iSCSI响应消息相关联的其他iSCSI和TCP字段(例如,包含iSCSI响应的TCP段中的顺序号匹配存储在QP中的下一预期顺序号)。然后,IPSOE使用iSCSI发起端标记的Tag_Index部分来查询与iSCSl响应相关联的存储器TPT条目(1740)。IPSOE验证iSCSI发起端标记的Tag_Instance部分。
如果进入iSCSI响应有效(包括iSCSI发起端标记的Tag_Instance部分),则IPSOE 1708:访问存储器TPT条目1740来提取与iSCSI响应相关联的iSCSI命令的命令ID;从存储器TPT条目1740中提取命令ID;销毁(注销)存储器TPT条目1740;并且将命令ID和进入iSCSI响应置于与进入iSCSI响应相关联的QP的RQ WQE 1714中。否则,IPSOE 1708丢弃进入iSCSI响应。
最后,在步骤12 1778,使用者1702提取包含iSCSI命令ID和iSCSI响应的WC。使用者1702使用iSCSI命令ID来关联iSCSI响应与iSCSI命令。
图17A所示的机制可以应用于通用QP。也就是,存储器登记步骤可以与通用WR进行组合,并且注销步骤可以在远端节点发送一个包含要被注销的标记(例如,操纵标记(Steering Tag))的消息时执行。
图17B是示出根据本发明优选实施例的用来执行验证远端iSCSI 1.0数据传输(例如,R2T或数据输入)操作的iSCSI发起端数据传输部分的存储器管理过程的流程图及图表。下述实现仅包括数据传输消息。非数据传输消息通过iSCSI QP的接收队列上传给使用者。
在步骤1796,使用进入iSCSI首标的发起端任务标记的Tag_Index部分来验证进入DDP段。进入步骤B。
在步骤1794,对由进入iSCSI首标的发起端任务标记的Tag_Index部分索引的条目执行下面检查:a)有效条目字段置位;b)该条目的条目类型设为iSCSI 1.0(即,区域或窗口不能用于iSCSI 1.0);c)与进入TCP段相关联的QP上下文中的PD匹配存储器TPT条目的PD;d)作为iSCSI 1.0首标的发起端任务标记一部分的Tag_Instance匹配存储器TPT条目中的Tag_Instance;e)进入iSCSI 1.0段首标的偏移不超过存储在存储器TPT条目中的长度字段大小;f)访问类型有效(例如,对于R2T,存储器TPT条目激活远端读取访问,并且对于数据输入,存储器TPT条目激活远端写入访问);以及g)发起端的iSCSI命令(通过使用存储器TPT条目的虚拟地址字段来查询)匹配进入(目标端)iSCSI消息的操作(即,发起端iSCSI命令是盘写入并且进入iSCSI消息是R2T,或者iSCSI命令是盘读取并且进入iSCSI消息是数据)。如果这些检查均通过,则处理进入步骤1792。否则通过iSCSI QP的接收队列将错误的iSCSI消息传给使用者。
在步骤1792,确定iSCSI消息的类型。在步骤1790,如果进入iSCSI首标是R2T,则使用目标偏移来偏移到由发起端任务标记的标记索引部分指向的缓冲区,并且将直到在iSCSI首标中指定的长度的缓冲区内容传输到远端节点。iSCSI首标的控制信息通过iSCSI QP的接收队列传给使用者。
在步骤1788,如果进入iSCSI首标为数据输入传输,则使用目标偏移来偏移到由发起端任务标记的标记索引部分指向的缓冲区,并且将直到在iSCSI首标中指定的长度的缓冲区内容传输到远端节点。iSCSI首标的控制信息通过iSCSI QP的接收队列传给使用者。
在步骤1786,如果进入iSCSI首标不同于数据输入或R2T传输,则通过iSCSI QP的接收队列将整个iSCSI消息(控制信息和任何数据)传给使用者。
图18是示出根据本发明优选实施例所使用的存储器管理过程的流程图及图表:向一次接触访问机制提供不暴露给远端节点的注销功能;以及验证与远端RDMA读取请求、RDMA读取响应以及RDMA写入操作相关联的存储器存取。RDMA读取请求引用DDP未带标记缓冲区。RDMA读取响应或RDMA写入引用DDP带标记缓冲区。需要注意的是,RDMA发送消息处理在图11中有描述。
对于RDMA读取请求1800,如果进入DPP段首标引用带缓冲区号2的未带标记缓冲区,则使用进入DDP首标的消息顺序号(MSN)来索引RDMA读取资源队列。这对应于步骤1804。
为索引RDMA读取请求队列,IPSOE维护下一预期MSN。在步骤1806,如果进入DDP首标的MSN是下一预期MSN或者对应于将与可获得的RDMA读取请求队列条目相关联的MSN,然后将进入DDP段的有效载荷(即RDMA读取请求)置于由进入DDP首标的MSN引用的RDMA读取请求队列条目中。否则,由IPSOE调用RDMA流终止过程。RDMA流终止过程包括创建包含终止原因的终止RDMA消息,将终止RDMA消息发送到RDMA流的另一侧,然后断开RDMA流(例如,通过断开TCP连接)。
在步骤1808,使用进入RDMA读取请求首标的源STag的Tag_Index部分来验证进入RDMA读取请求。
在步骤1812,对由进入RDMA读取请求首标的源STag的Tag_Index部分索引的条目执行下列检查:a)有效条目字段置位;b)该条目的条目类型设为窗口(即,区域不能用于远端访问);c)与进入TCP段相关联的QP上下文中的PD匹配存储器窗口条目的PD;d)作为DDP首标STag一部分的Tag_Instance匹配MWE中的Tag_Instance;e)进入DDP段的基址(目标偏移)和长度(MPA首标长度)位于与MWE相关联的地址范围内;以及f)访问类型有效(即,MWE激活远端读取访问)。
如果所有检查均通过,则IPSOE通过读取由RDMA读取请求引用的存储器窗口并且发出RDMA读取响应来创建RDMA读取响应。否则,产生描述错误原因的终止消息。
对于RDMA读取响应或RDMA写入1814,在步骤1816,如果进入DDP段的首标引用带标记缓冲区,则使用DDP首标STag的Tag_Index部分来索引存储器区域/窗口表。
在步骤1820,对由进入DDP首标STag的Tag_Index部分索引的条目执行下列检查:a)有效条目字段置位;b)该条目的条目类型设为窗口(即,区域不能用于远端访问);c)与进入TCP段相关联的QP上下文中的PD匹配存储器窗口条目的PD;d)作为DDP首标STag一部分的Tag_Instance匹配MWE中的Tag_Instance;e)进入DDP段的基址(目标偏移)和长度(MPA首标长度)位于与MWE相关联的地址范围内;以及f)访问类型有效(即,MWE激活远端写入访问)。如果所有检查均通过,则处理进入步骤1824,否则,产生描述错误原因的终止消息。
在步骤1824,检查下列字段:进入DDP首标中的DDP标准最后一个比特(如果置位,则它表示进入DDP段为RDMA消息的最后一个DDP段);由STag引用的存储器TPT条目中所存储的一次接触激活比特;由STag引用的存储器TPT条目中所存储的接触比特;由STag引用的存储器TPT条目中所存储的存储DDP(字节流)顺序号;底层TCP字节顺序号;以及进入DDP段(字节流)顺序号的最后一个字节。在步骤1828,对上列字段执行下列检查。
如果最后一个比特未置位,则使用进入DDP首标的目标偏移字段来索引由存储器TPT条目引用的存储器区域/窗口,并且将进入DDP段的有效载荷传输到存储器区域/窗口中(以TO开始)。
如果最后一个比特置位并且与进入DDP段相关联的存储器TPT条目的一次接触激活比特未置位,则使用进入DDP首标的目标偏移来索引由存储器TPT条目引用的存储器区域/窗口,并且将进入DDP段的有效载荷传输到存储器区域/窗口中(以TO开始)。
如果最后一个比特置位并且与进入DDP段相关联的存储器TPT条目的一次接触激活比特和接触比特均置位,则对存储器TPT条目的有效条目比特复位,并且产生描述错误原因(例如,试图对一次接触区域/窗口进行两次访问)的终止消息。
如果最后一个比特置位并且与进入DDP段相关联的存储器TPT条目的一次接触激活比特和接触比特均未置位,并且进入DDP段(字节流)顺序号的最后一个字节等于下一预期TCP字节顺序号减1,则对存储器TPT条目的有效条目比特复位,并且使用进入DDP首标的目标偏移字段来索引由存储器TPT条目引用的存储器区域/窗口,并且将进入DDP段的有效载荷传输到存储器区域/窗口中(以TO开始)。这包括进入DDP段是带标记缓冲区消息的最后一段且有序接收的情况。
如果最后一个比特置位并且与进入DDP段相关联的存储器TPT条目的一次接触激活比特置位而接触比特未置位,并且进入DDP段(字节流)顺序号的最后一个字节在TCP字节顺序号窗口之内但不是下一预期TCP字节顺序号减1,则对存储器TPT条目的接触比特置位,将与进入DDP段的有效载荷的最后一个字节相关联的(字节流)顺序号存储在存储器TPT条目的DDP顺序号字段中,并且将进入DDP段的有效载荷传输到存储器区域/窗口中(以TO开始)。当进入比特流到达存储器TPT条目DDP顺序号字段的结束时,对存储器TPT的有效条目字段复位。这包括进入DDP段是带标记缓冲区消息的最后一段并且无序接收的情况。
如果最后一个比特置位并且与进入DDP段相关联的存储器TPT条目的一次接触激活比特置位而接触比特未置位,并且进入DDP段(字节流)顺序号的最后一个字节在TCP字节顺序号窗口之外,则丢弃进入DDP段(发送者将重新发送)。
值得注意的是,虽然本发明是在完全功能化数据处理系统的上下文中描述的,但是本领域的普通技术人员应该理解本发明的过程能够以指令或其他功能描述资料的计算机可读介质形式以及各种其他形式来分发,并且本发明同样适用而与实际用来实现分发的信号承载介质的具体类型无关。计算机可读介质的例子包括可记录型介质如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM以及传输型介质如数字和模拟通信链路、使用传输形式的有线或无线通信链路例如无线频率和光波传输。计算机可读介质可以采用针对具体数据处理器系统中的实际使用而解码的编码格式的形式。功能描述资料是将功能授予机器的信息。功能描述资料包括但不限于计算机程序、指令、规则、事实(fact)、可计算函数的定义、对象和数据结构。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计出适于特定用途的带有各种修改的各种实施例。

Claims (36)

1.一种方法,包括:
在网络卸载引擎中从主机接收工作请求;
响应接收工作请求,在转换表中登记与主机相关联的存储器区域。
2.如权利要求1所述的方法,其中,工作请求包括与存储器区域相关联的存储器保护信息,并且所述方法还包括:
在转换表中存储存储器保护信息。
3.如权利要求1所述的方法,其中,工作请求通过发送队列来接收。
4.如权利要求1所述的方法,还包括:
响应登记存储器区域,将一个标记返回给主机,其中,标记与存储器区域相关联。
5.如权利要求4所述的方法,其中,标记包括对转换表的索引。
6.如权利要求1所述的方法,还包括:
响应登记存储器区域,将一个完成队列元素置于完成队列中。
7.如权利要求1所述的方法,其中,工作请求包括iSCSI命令。
8.如权利要求7所述的方法,其中,响应处理iSCSI命令而登记存储器区域,并且所述方法还包括:
在完成iSCSI命令中执行一个事务;
接收与事务相关联的iSCSI响应;以及
响应接收iSCSI响应,注销与iSCSI事务相关联的存储器区域。
9.如权利要求1所述的方法,还包括:
产生与存储器区域相关联的标记;以及
使用标记引用存储器区域,在网络中通过连接协议执行与远端节点的输入/输出事务,其中,在输入/输出事务中,使用对存储器区域的直接访问来传输数据。
10.如权利要求9所述的方法,其中,连接协议是传输控制协议(TCP)。
11.如权利要求1所述的方法,还包括:
建立表示与存储器区域相关联的设置的数据,其中,所述设置表示存储器区域被配置为仅对远端节点的一次访问有效,从而将响应在完成有效进入远端操作中访问存储器区域而使存储器区域无效。
12.如权利要求1所述的方法,其中,响应处理与高层协议中的一个事务相关联的组合登记存储器区域与发送工作请求而登记存储器区域,并且所述方法还包括:
接收高层协议中的进入事务发送消息,其中,事务发送消息包括注销与存储器区域相关联的标记的请求;以及
响应接收到发送消息,注销与标记相关联的存储器区域。
13.一种方法,包括:
将工作请求置于网络卸载引擎内的发送队列中,其中,工作请求包含要通过网络卸载引擎登记的存储器区域的标识;以及
从网络卸载引擎接收与所登记的存储器区域相关联的标记。
14.一种方法,包括:
在网络卸载引擎中登记存储器区域,以用于与远端节点的事务使用;
对于存储器区域,与远端节点执行单个事务;以及
响应执行单个事务,注销存储器区域。
15.一种方法,包括:
从远端节点接收与存储器区域相关联的标记;
判定与标记相关联的存储器区域是否已被注销;以及
响应与标记相关联的存储器区域已被注销的判定结果,指示一个错误情况。
16.至少一种计算机可读介质中的一种计算机程序产品,包括当由计算机执行时允许计算机执行下列操作的功能描述资料:
在网络卸载引擎中从主机接收工作请求;
响应接收工作请求,在转换表中登记与主机相关联的存储器区域。
17.如权利要求16所述的计算机程序产品,其中,工作请求包括与存储器区域相关联的存储器保护信息,并且所述计算机程序产品还包括当由计算机执行时允许计算机执行下列另外操作的功能描述资料:
在转换表中存储存储器保护信息。
18.如权利要求16所述的计算机程序产品,其中,工作请求通过发送队列来接收。
19.如权利要求16所述的计算机程序产品,还包括当由计算机执行时允许计算机执行下列另外操作的功能描述资料:
响应登记存储器区域,将一个标记返回给主机,其中,标记与存储器区域相关联。
20.如权利要求19所述的计算机程序产品,其中,标记包括对转换表的索引。
21.如权利要求16所述的计算机程序产品,还包括当由计算机执行时允许计算机执行下列另外操作的功能描述资料:
响应登记存储器区域,将一个完成队列元素置于完成队列中。
22.如权利要求16所述的计算机程序产品,其中,工作请求包括iSCSI命令。
23.如权利要求22所述的计算机程序产品,其中,响应处理iSCSI命令而登记存储器区域,并且所述计算机程序产品还包括当由计算机执行时允许计算机执行下列另外操作的功能描述资料:
在完成iSCSI命令中执行一个事务;
接收与事务相关联的iSCSI响应;以及
响应接收iSCSI响应,注销存储器区域。
24.如权利要求16所述的计算机程序产品,还包括当由计算机执行时允许计算机执行下列另外操作的功能描述资料:
产生与存储器区域相关联的标记;以及
使用标记引用存储器区域,在网络中通过传输控制协议/网际协议(TCP/IP)执行与远端节点的输入/输出事务,其中,在输入/输出事务中,使用对存储器区域的直接访问来传输数据。
25.如权利要求16所述的计算机程序产品,还包括当由计算机执行时允许计算机执行下列另外操作的功能描述资料:
建立表示与存储器区域相关联的设置的数据,其中,所述设置表示存储器区域被配置为仅对远端节点的一次访问有效,从而将响应在完成有效进入远端操作中访问存储器区域而使存储器区域无效。
26.如权利要求16所述的计算机程序产品,其中,响应处理与高层协议中的一个事务相关联的组合登记存储器区域与发送工作请求而登记存储器区域,并且所述计算机程序产品还包括当由计算机执行时允许计算机执行下列另外操作的功能描述资料:
接收高层协议中的进入事务发送消息,其中,事务发送消息包括注销与存储器区域相关联的标记的请求;以及
响应接收到发送消息,注销与标记相关联的存储器区域。
27.至少一种计算机可读介质中的一种计算机程序产品,包括当由计算机执行时允许计算机执行下列操作的功能描述资料:
将工作请求置于网络卸载引擎内的发送队列中,其中,工作请求包含要通过网络卸载引擎登记的存储器区域的标识;以及
从网络卸载引擎接收与所登记的存储器区域相关联的标记。
28.至少一种计算机可读介质中的一种计算机程序产品,包括当由计算机执行时允许计算机执行下列操作的功能描述资料:
在网络卸载引擎中登记存储器区域,以用于与远端节点的事务使用;
对于存储器区域,与远端节点执行单个事务;以及
响应执行单个事务,注销存储器区域。
29.至少一种计算机可读介质中的一种计算机程序产品,包括当由计算机执行时允许计算机执行下列操作的功能描述资料:
从远端节点接收与存储器区域相关联的标记;
判定与标记相关联的存储器区域是否已被注销;以及
响应与标记相关联的存储器区域已被注销的判定结果,指示一个错误情况。
30.一种网络卸载引擎,包括:
一装置,用于从主机接收工作请求;
一装置,用于响应接收工作请求而在转换表中登记与主机相关联的存储器区域。
31.如权利要求30所述的网络卸载引擎,其中,工作请求通过发送队列来接收。
32.如权利要求30所述的网络卸载引擎,还包括:
一装置,用于产生与存储器区域相关联的标记;以及
一装置,用于使用标记引用存储器区域,在网络中通过传输控制协议/网际协议(TCP/IP)执行与远端节点的输入/输出事务,其中,在输入/输出事务中,使用对存储器区域的直接访问来传输数据。
33.一种主机数据处理系统,包括:
一装置,用于将工作请求置于与主机相关联的网络卸载引擎内的发送队列中,其中,工作请求包含要通过网络卸载引擎登记的存储器区域的标识;以及
一装置,用于从网络卸载引擎接收与所登记的存储器区域相关联的标记。
34.如权利要求33所述的主机数据处理系统,其中,标记包括对转换表的索引。
35.一种数据处理系统,包括:
一装置,用于登记存储器区域以用于与远端节点的事务使用;
一装置,用于对于存储器区域与远端节点执行单个事务;以及
一装置,用于响应执行单个事务而注销存储器区域。
36.一种网络卸载引擎,包括:
一装置,用于从远端节点接收与存储器区域相关联的标记;
一装置,用于判定与标记相关联的存储器区域是否已被注销;以及
一装置,用于响应与标记相关联的存储器区域已被注销的判定结果,指示一个错误情况。
CNB031557813A 2002-09-05 2003-09-02 远端直接存储器存取启用网络适配器的存储器管理卸载 Expired - Fee Related CN1308835C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/235,679 US7299266B2 (en) 2002-09-05 2002-09-05 Memory management offload for RDMA enabled network adapters
US10/235,679 2002-09-05

Publications (2)

Publication Number Publication Date
CN1487418A true CN1487418A (zh) 2004-04-07
CN1308835C CN1308835C (zh) 2007-04-04

Family

ID=31990540

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031557813A Expired - Fee Related CN1308835C (zh) 2002-09-05 2003-09-02 远端直接存储器存取启用网络适配器的存储器管理卸载

Country Status (3)

Country Link
US (1) US7299266B2 (zh)
CN (1) CN1308835C (zh)
TW (1) TWI265696B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101165664B (zh) * 2006-10-17 2010-04-21 国际商业机器公司 用于在数据处理系统中管理地址转换的方法和装置
CN1829231B (zh) * 2005-02-28 2010-11-03 惠普开发有限公司 直接接收入站数据的方法和装置
CN102165739A (zh) * 2008-09-29 2011-08-24 思科技术公司 使用散列对经由rdma写入的消息的可靠接收
CN102197381A (zh) * 2008-10-28 2011-09-21 Nxp股份有限公司 用于可拆卸装置的具有高速缓存和接口的数据处理电路
CN101741870B (zh) * 2008-11-07 2012-11-14 英业达股份有限公司 因特网小型计算机接口的储存系统
CN103838517A (zh) * 2012-11-23 2014-06-04 中国科学院声学研究所 一种用于传输多核处理器和磁盘阵列间数据的方法及系统
CN104782085A (zh) * 2012-10-25 2015-07-15 国际商业机器公司 由计算机系统使用至少两个通信协议进行网络通信的技术
CN105938460A (zh) * 2015-03-02 2016-09-14 Arm 有限公司 存储器管理
CN106502721A (zh) * 2016-09-26 2017-03-15 华为技术有限公司 一种命令卸载方法、装置及物理机
CN107111550A (zh) * 2014-12-22 2017-08-29 德克萨斯仪器股份有限公司 通过选择性页遗漏转换预取隐藏程序存储器控制器中转换遗漏时延
CN109587112A (zh) * 2018-10-25 2019-04-05 华为技术有限公司 一种发送数据的方法、接收数据的方法、设备及系统
CN110059027A (zh) * 2017-11-22 2019-07-26 Arm有限公司 执行维护操作的装置和方法
CN110119303A (zh) * 2013-11-12 2019-08-13 微软技术许可有限责任公司 构建虚拟主板和虚拟存储设备
CN112771501A (zh) * 2018-08-17 2021-05-07 甲骨文国际公司 事务性处理系统的远程直接存储器操作(rdmo)
CN113190177A (zh) * 2021-05-12 2021-07-30 西安雷风电子科技有限公司 数据存储方法、终端设备、服务器及系统
CN113326155A (zh) * 2021-06-28 2021-08-31 深信服科技股份有限公司 一种信息处理方法、装置、系统和存储介质

Families Citing this family (159)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JP2004192179A (ja) * 2002-12-10 2004-07-08 Fujitsu Ltd Rdma機能を持ったnicをハードウェアメモリ保護を行わないで、専用のモニタプロセスなしにシステムに組み込むための装置
US7565504B2 (en) * 2003-03-27 2009-07-21 Hewlett-Packard Development Company, L.P. Memory window access mechanism
US20040193832A1 (en) * 2003-03-27 2004-09-30 Garcia David J. Physical mode windows
US7089378B2 (en) * 2003-03-27 2006-08-08 Hewlett-Packard Development Company, L.P. Shared receive queues
US20040193833A1 (en) * 2003-03-27 2004-09-30 Kathryn Hampton Physical mode addressing
US7716323B2 (en) * 2003-07-18 2010-05-11 Netapp, Inc. System and method for reliable peer communication in a clustered storage system
US7593996B2 (en) * 2003-07-18 2009-09-22 Netapp, Inc. System and method for establishing a peer connection using reliable RDMA primitives
US7617376B2 (en) * 2003-08-14 2009-11-10 Hewlett-Packard Development Company, L.P. Method and apparatus for accessing a memory
US7852856B2 (en) * 2003-08-29 2010-12-14 Broadcom Corp. System and method for providing pooling or dynamic allocation of connection context data
US7404190B2 (en) * 2003-09-18 2008-07-22 Hewlett-Packard Development Company, L.P. Method and apparatus for providing notification via multiple completion queue handlers
US7275152B2 (en) * 2003-09-26 2007-09-25 Intel Corporation Firmware interfacing with network protocol offload engines to provide fast network booting, system repurposing, system provisioning, system manageability, and disaster recovery
US7512143B2 (en) * 2003-10-16 2009-03-31 International Business Machines Corporation Buffer management for a target channel adapter
US20050129039A1 (en) * 2003-12-11 2005-06-16 International Business Machines Corporation RDMA network interface controller with cut-through implementation for aligned DDP segments
US9213609B2 (en) * 2003-12-16 2015-12-15 Hewlett-Packard Development Company, L.P. Persistent memory device for backup process checkpoint states
US7921240B2 (en) * 2004-03-10 2011-04-05 Broadcom Corporation Method and system for supporting hardware acceleration for iSCSI read and write operations and iSCSI chimney
US20050216552A1 (en) * 2004-03-24 2005-09-29 Samuel Fineberg Communication-link-attached persistent memory system
US7783769B2 (en) * 2004-03-31 2010-08-24 Intel Corporation Accelerated TCP (Transport Control Protocol) stack processing
US20050220128A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for work request queuing for intelligent adapter
US20050223118A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for placement of sharing physical buffer lists in RDMA communication
US8078705B2 (en) * 2004-04-05 2011-12-13 Hewlett-Packard Development Company, L.P. Key-configured topology with connection management
US20060067346A1 (en) * 2004-04-05 2006-03-30 Ammasso, Inc. System and method for placement of RDMA payload into application memory of a processor system
GB0408868D0 (en) 2004-04-21 2004-05-26 Level 5 Networks Ltd Checking data integrity
GB0408877D0 (en) * 2004-04-21 2004-05-26 Level 5 Networks Ltd Signalling data reception
US7526574B2 (en) * 2004-04-21 2009-04-28 International Business Machines Corporation Method for communicating data transfer requests between data transfer protocols
US7577707B2 (en) * 2004-04-21 2009-08-18 International Business Machines Corporation Method, system, and program for executing data transfer requests
GB0408876D0 (en) * 2004-04-21 2004-05-26 Level 5 Networks Ltd User-level stack
US7779081B2 (en) * 2004-07-16 2010-08-17 International Business Machines Corporation Method, system, and program for forwarding messages between nodes
US7475153B2 (en) * 2004-07-16 2009-01-06 International Business Machines Corporation Method for enabling communication between nodes
US7813369B2 (en) 2004-08-30 2010-10-12 International Business Machines Corporation Half RDMA and half FIFO operations
US7522597B2 (en) 2004-08-30 2009-04-21 International Business Machines Corporation Interface internet protocol fragmentation of large broadcast packets in an environment with an unaccommodating maximum transfer unit
US8023417B2 (en) 2004-08-30 2011-09-20 International Business Machines Corporation Failover mechanisms in RDMA operations
US8364849B2 (en) 2004-08-30 2013-01-29 International Business Machines Corporation Snapshot interface operations
US7478138B2 (en) 2004-08-30 2009-01-13 International Business Machines Corporation Method for third party, broadcast, multicast and conditional RDMA operations
US7480298B2 (en) 2004-08-30 2009-01-20 International Business Machines Corporation Lazy deregistration of user virtual machine to adapter protocol virtual offsets
US20060075057A1 (en) * 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
US7430615B2 (en) 2004-08-30 2008-09-30 International Business Machines Corporation RDMA server (OSI) global TCE tables
US7564847B2 (en) * 2004-12-13 2009-07-21 Intel Corporation Flow assignment
US20060168092A1 (en) * 2005-01-21 2006-07-27 International Business Machines Corporation Scsi buffer memory management with rdma atp mechanism
US20060165084A1 (en) * 2005-01-21 2006-07-27 International Business Machines Corporation RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY TARGET
US7343527B2 (en) * 2005-01-21 2008-03-11 International Business Machines Corporation Recovery from iSCSI corruption with RDMA ATP mechanism
US20060168286A1 (en) * 2005-01-21 2006-07-27 International Business Machines Corporation iSCSI DATAMOVER INTERFACE AND FUNCTION SPLIT WITH RDMA ATP MECHANISM
US20060168094A1 (en) * 2005-01-21 2006-07-27 International Business Machines Corporation DIRECT ACCESS OF SCSI BUFFER WITH RDMA ATP MECHANISM BY iSCSI TARGET AND/OR INITIATOR
US20060168091A1 (en) * 2005-01-21 2006-07-27 International Business Machines Corporation RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY INITIATOR
GB0506403D0 (en) 2005-03-30 2005-05-04 Level 5 Networks Ltd Routing tables
GB0505300D0 (en) 2005-03-15 2005-04-20 Level 5 Networks Ltd Transmitting data
WO2006095184A2 (en) 2005-03-10 2006-09-14 Level 5 Networks Incorporated Data processing system
US20060236063A1 (en) * 2005-03-30 2006-10-19 Neteffect, Inc. RDMA enabled I/O adapter performing efficient memory management
US8458280B2 (en) * 2005-04-08 2013-06-04 Intel-Ne, Inc. Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations
US20060227799A1 (en) * 2005-04-08 2006-10-12 Lee Man-Ho L Systems and methods for dynamically allocating memory for RDMA data transfers
US7761619B2 (en) * 2005-05-13 2010-07-20 Microsoft Corporation Method and system for parallelizing completion event processing
US20060259570A1 (en) * 2005-05-13 2006-11-16 Microsoft Corporation Method and system for closing an RDMA connection
US7760741B2 (en) * 2005-05-18 2010-07-20 International Business Machines Corporation Network acceleration architecture
US8064459B2 (en) * 2005-07-18 2011-11-22 Broadcom Israel Research Ltd. Method and system for transparent TCP offload with transmit and receive coupling
US20090094359A1 (en) * 2005-07-26 2009-04-09 Thomson Licensing Local Area Network Management
JP2007148520A (ja) * 2005-11-24 2007-06-14 Hitachi Ltd 情報通知方法及び計算機システム
GB0600417D0 (en) 2006-01-10 2006-02-15 Level 5 Networks Inc Virtualisation support
US7895329B2 (en) * 2006-01-12 2011-02-22 Hewlett-Packard Development Company, L.P. Protocol flow control
US7889762B2 (en) * 2006-01-19 2011-02-15 Intel-Ne, Inc. Apparatus and method for in-line insertion and removal of markers
US7782905B2 (en) * 2006-01-19 2010-08-24 Intel-Ne, Inc. Apparatus and method for stateless CRC calculation
US7849232B2 (en) * 2006-02-17 2010-12-07 Intel-Ne, Inc. Method and apparatus for using a single multi-function adapter with different operating systems
US8316156B2 (en) * 2006-02-17 2012-11-20 Intel-Ne, Inc. Method and apparatus for interfacing device drivers to single multi-function adapter
US8078743B2 (en) * 2006-02-17 2011-12-13 Intel-Ne, Inc. Pipelined processing of RDMA-type network transactions
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
US7401201B2 (en) * 2006-04-28 2008-07-15 Freescale Semiconductor, Inc. Processor and method for altering address translation
US7836274B2 (en) * 2006-09-05 2010-11-16 Broadcom Corporation Method and system for combining page buffer list entries to optimize caching of translated addresses
US20080098197A1 (en) * 2006-10-20 2008-04-24 International Business Machines Corporation Method and System For Address Translation With Memory Windows
US20080306818A1 (en) * 2007-06-08 2008-12-11 Qurio Holdings, Inc. Multi-client streamer with late binding of ad content
US20080313029A1 (en) * 2007-06-13 2008-12-18 Qurio Holdings, Inc. Push-caching scheme for a late-binding advertisement architecture
US7996482B1 (en) 2007-07-31 2011-08-09 Qurio Holdings, Inc. RDMA based real-time video client playback architecture
US7805373B1 (en) 2007-07-31 2010-09-28 Qurio Holdings, Inc. Synchronizing multiple playback device timing utilizing DRM encoding
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
US7454478B1 (en) * 2007-11-30 2008-11-18 International Business Machines Corporation Business message tracking system using message queues and tracking queue for tracking transaction messages communicated between computers
US8103785B2 (en) * 2007-12-03 2012-01-24 Seafire Micros, Inc. Network acceleration techniques
US8762476B1 (en) 2007-12-20 2014-06-24 Qurio Holdings, Inc. RDMA to streaming protocol driver
US7900016B2 (en) * 2008-02-01 2011-03-01 International Business Machines Corporation Full virtualization of resources across an IP interconnect
US7904693B2 (en) * 2008-02-01 2011-03-08 International Business Machines Corporation Full virtualization of resources across an IP interconnect using page frame table
US8060904B1 (en) 2008-02-25 2011-11-15 Qurio Holdings, Inc. Dynamic load based ad insertion
FR2937755B1 (fr) 2008-10-24 2010-12-31 Commissariat Energie Atomique Dispositif pour gerer des tampons de donnees dans un espace memoire reparti sur une pluralite d'elements de memoire
US7921178B2 (en) * 2008-12-04 2011-04-05 Voltaire Ltd. Device, system, and method of accessing storage
US8892789B2 (en) * 2008-12-19 2014-11-18 Netapp, Inc. Accelerating internet small computer system interface (iSCSI) proxy input/output (I/O)
US8312487B1 (en) 2008-12-31 2012-11-13 Qurio Holdings, Inc. Method and system for arranging an advertising schedule
US9104406B2 (en) * 2009-01-07 2015-08-11 Microsoft Technology Licensing, Llc Network presence offloads to network interface
US8549092B2 (en) 2009-02-19 2013-10-01 Micron Technology, Inc. Memory network methods, apparatus, and systems
US8688798B1 (en) 2009-04-03 2014-04-01 Netapp, Inc. System and method for a shared write address protocol over a remote direct memory access connection
US8255475B2 (en) * 2009-04-28 2012-08-28 Mellanox Technologies Ltd. Network interface device with memory management capabilities
US8161494B2 (en) * 2009-12-21 2012-04-17 Unisys Corporation Method and system for offloading processing tasks to a foreign computing environment
US8577986B2 (en) 2010-04-02 2013-11-05 Microsoft Corporation Mapping RDMA semantics to high speed storage
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8549182B2 (en) 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
US8650335B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8639858B2 (en) 2010-06-23 2014-01-28 International Business Machines Corporation Resizing address spaces concurrent to accessing the address spaces
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8270963B1 (en) * 2010-10-01 2012-09-18 Viasat, Inc. Cross domain notification
US8458800B1 (en) 2010-10-01 2013-06-04 Viasat, Inc. Secure smartphone
US8495731B1 (en) 2010-10-01 2013-07-23 Viasat, Inc. Multiple domain smartphone
US8204480B1 (en) 2010-10-01 2012-06-19 Viasat, Inc. Method and apparatus for secured access
US9113499B2 (en) 2010-10-01 2015-08-18 Viasat, Inc. Multiple domain smartphone
US8949551B2 (en) 2011-02-23 2015-02-03 Freescale Semiconductor, Inc. Memory protection unit (MPU) having a shared portion and method of operation
US9116845B2 (en) 2011-02-23 2015-08-25 Freescale Semiconductor, Inc. Remote permissions provisioning for storage in a cache and device therefor
US8752063B2 (en) * 2011-06-23 2014-06-10 Microsoft Corporation Programming interface for data communications
US8639895B2 (en) 2011-07-14 2014-01-28 Freescale Semiconductor, Inc. Systems and methods for memory region descriptor attribute override
US8832216B2 (en) * 2011-08-31 2014-09-09 Oracle International Corporation Method and system for conditional remote direct memory access write
US8645663B2 (en) 2011-09-12 2014-02-04 Mellanox Technologies Ltd. Network interface controller with flexible memory handling
US9143467B2 (en) 2011-10-25 2015-09-22 Mellanox Technologies Ltd. Network interface controller with circular receive buffer
US9507639B2 (en) * 2012-05-06 2016-11-29 Sandisk Technologies Llc Parallel computation with multiple storage devices
US9256545B2 (en) 2012-05-15 2016-02-09 Mellanox Technologies Ltd. Shared memory access using independent memory maps
US8761189B2 (en) 2012-06-28 2014-06-24 Mellanox Technologies Ltd. Responding to dynamically-connected transport requests
US8745276B2 (en) 2012-09-27 2014-06-03 Mellanox Technologies Ltd. Use of free pages in handling of page faults
US8914458B2 (en) 2012-09-27 2014-12-16 Mellanox Technologies Ltd. Look-ahead handling of page faults in I/O operations
US9639464B2 (en) 2012-09-27 2017-05-02 Mellanox Technologies, Ltd. Application-assisted handling of page faults in I/O operations
US9298642B2 (en) 2012-11-01 2016-03-29 Mellanox Technologies Ltd. Sharing address translation between CPU and peripheral devices
US9286225B2 (en) * 2013-03-15 2016-03-15 Saratoga Speed, Inc. Flash-based storage system including reconfigurable circuitry
US9304902B2 (en) 2013-03-15 2016-04-05 Saratoga Speed, Inc. Network storage system using flash storage
US20140304525A1 (en) * 2013-04-01 2014-10-09 Nexenta Systems, Inc. Key/value storage device and method
US10110518B2 (en) 2013-12-18 2018-10-23 Mellanox Technologies, Ltd. Handling transport layer operations received out of order
WO2015116077A1 (en) 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Access controlled memory region
US9727503B2 (en) 2014-03-17 2017-08-08 Mellanox Technologies, Ltd. Storage system and server
US9696942B2 (en) 2014-03-17 2017-07-04 Mellanox Technologies, Ltd. Accessing remote storage devices using a local bus protocol
US10120832B2 (en) 2014-05-27 2018-11-06 Mellanox Technologies, Ltd. Direct access to local memory in a PCI-E device
US10031857B2 (en) 2014-05-27 2018-07-24 Mellanox Technologies, Ltd. Address translation services for direct accessing of local memory over a network fabric
US9485053B2 (en) 2014-07-09 2016-11-01 Integrated Device Technology, Inc. Long-distance RapidIO packet delivery
US9672180B1 (en) 2014-08-06 2017-06-06 Sanmina Corporation Cache memory management system and method
US9742855B2 (en) * 2014-09-04 2017-08-22 Mellanox Technologies, Ltd. Hybrid tag matching
US10083131B2 (en) * 2014-12-11 2018-09-25 Ampere Computing Llc Generating and/or employing a descriptor associated with a memory translation table
WO2016101288A1 (zh) * 2014-12-27 2016-06-30 华为技术有限公司 一种远程直接数据存取方法、设备和系统
US9444769B1 (en) * 2015-03-31 2016-09-13 Chelsio Communications, Inc. Method for out of order placement in PDU-oriented protocols
US10509764B1 (en) * 2015-06-19 2019-12-17 Amazon Technologies, Inc. Flexible remote direct memory access
US20170155717A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Direct memory access for endpoint devices
US10055343B2 (en) * 2015-12-29 2018-08-21 Memory Technologies Llc Memory storage windows in a memory system
CN105786624B (zh) * 2016-04-01 2019-06-25 浪潮电子信息产业股份有限公司 一种基于redis与RDMA技术的调度平台
US10148581B2 (en) 2016-05-30 2018-12-04 Mellanox Technologies, Ltd. End-to-end enhanced reliable datagram transport
WO2017209876A1 (en) * 2016-05-31 2017-12-07 Brocade Communications Systems, Inc. Buffer manager
US20180004681A1 (en) * 2016-07-02 2018-01-04 Intel Corporation Systems, Apparatuses, and Methods for Platform Security
US10198378B2 (en) 2016-11-18 2019-02-05 Microsoft Technology Licensing, Llc Faster data transfer with simultaneous alternative remote direct memory access communications
US10516710B2 (en) 2017-02-12 2019-12-24 Mellanox Technologies, Ltd. Direct packet placement
US11979340B2 (en) 2017-02-12 2024-05-07 Mellanox Technologies, Ltd. Direct data placement
US10652320B2 (en) 2017-02-21 2020-05-12 Microsoft Technology Licensing, Llc Load balancing in distributed computing systems
US10210125B2 (en) 2017-03-16 2019-02-19 Mellanox Technologies, Ltd. Receive queue with stride-based data scattering
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
US10367750B2 (en) 2017-06-15 2019-07-30 Mellanox Technologies, Ltd. Transmission and reception of raw video using scalable frame rate
US10521360B1 (en) 2017-10-18 2019-12-31 Google Llc Combined integrity protection, encryption and authentication
US10691619B1 (en) 2017-10-18 2020-06-23 Google Llc Combined integrity protection, encryption and authentication
US10958588B2 (en) * 2018-02-05 2021-03-23 International Business Machines Corporation Reliability processing of remote direct memory access
CN109067506A (zh) * 2018-08-15 2018-12-21 无锡江南计算技术研究所 一种基于多滑动窗口并发的轻量级异步消息实现方法
US11469890B2 (en) 2020-02-06 2022-10-11 Google Llc Derived keys for connectionless network protocols
US11940933B2 (en) 2021-03-02 2024-03-26 Mellanox Technologies, Ltd. Cross address-space bridging
US11934333B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Storage protocol emulation in a peripheral device
US11934658B2 (en) 2021-03-25 2024-03-19 Mellanox Technologies, Ltd. Enhanced storage protocol emulation in a peripheral device
US11726666B2 (en) 2021-07-11 2023-08-15 Mellanox Technologies, Ltd. Network adapter with efficient storage-protocol emulation
US11622004B1 (en) 2022-05-02 2023-04-04 Mellanox Technologies, Ltd. Transaction-based reliable transport
CN115499489B (zh) * 2022-11-16 2023-02-28 苏州浪潮智能科技有限公司 一种链路中子网管理的方法、装置、设备及可读介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2137488C (en) * 1994-02-18 1998-09-29 Richard I. Baum Coexecuting method and means for performing parallel processing in conventional types of data processing systems
US6034963A (en) * 1996-10-31 2000-03-07 Iready Corporation Multiple network protocol encoder/decoder and data processor
US5920881A (en) * 1997-05-20 1999-07-06 Micron Electronics, Inc. Method and system for using a virtual register file in system memory
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6321276B1 (en) * 1998-08-04 2001-11-20 Microsoft Corporation Recoverable methods and systems for processing input/output requests including virtual memory addresses
US6859867B1 (en) 2000-05-31 2005-02-22 Intel Corporation Translation and protection table and method of using the same to validate access requests
US20020107962A1 (en) * 2000-11-07 2002-08-08 Richter Roger K. Single chassis network endpoint system with network processor for load balancing
US6947970B2 (en) * 2000-12-19 2005-09-20 Intel Corporation Method and apparatus for multilevel translation and protection table
US7149817B2 (en) * 2001-02-15 2006-12-12 Neteffect, Inc. Infiniband TM work queue to TCP/IP translation
US6578122B2 (en) * 2001-03-01 2003-06-10 International Business Machines Corporation Using an access key to protect and point to regions in windows for infiniband
US7401126B2 (en) * 2001-03-23 2008-07-15 Neteffect, Inc. Transaction switch and network interface adapter incorporating same
US20030005039A1 (en) * 2001-06-29 2003-01-02 International Business Machines Corporation End node partitioning using local identifiers
US6834332B2 (en) * 2001-08-30 2004-12-21 International Business Machines Corporation Apparatus and method for swapping-out real memory by inhibiting i/o operations to a memory region and setting a quiescent indicator, responsive to determining the current number of outstanding operations
US20030046330A1 (en) * 2001-09-04 2003-03-06 Hayes John W. Selective offloading of protocol processing
US7620692B2 (en) * 2001-09-06 2009-11-17 Broadcom Corporation iSCSI receiver implementation
US6845403B2 (en) * 2001-10-31 2005-01-18 Hewlett-Packard Development Company, L.P. System and method for storage virtualization
US6983303B2 (en) * 2002-01-31 2006-01-03 Hewlett-Packard Development Company, Lp. Storage aggregator for enhancing virtualization in data storage networks
AU2003251492A1 (en) * 2002-06-11 2003-12-22 Ashish A. Pandya High performance ip processor for tcp/ip, rdma and ip storage applications
US7752361B2 (en) * 2002-06-28 2010-07-06 Brocade Communications Systems, Inc. Apparatus and method for data migration in a storage processing device
WO2004017173A2 (en) * 2002-08-14 2004-02-26 Broadcom Corporation One shot rdma having a 2-bit state
US8010707B2 (en) * 2002-08-30 2011-08-30 Broadcom Corporation System and method for network interfacing

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1829231B (zh) * 2005-02-28 2010-11-03 惠普开发有限公司 直接接收入站数据的方法和装置
CN101165664B (zh) * 2006-10-17 2010-04-21 国际商业机器公司 用于在数据处理系统中管理地址转换的方法和装置
CN102165739A (zh) * 2008-09-29 2011-08-24 思科技术公司 使用散列对经由rdma写入的消息的可靠接收
CN102165739B (zh) * 2008-09-29 2014-05-07 思科技术公司 使用散列对经由rdma写入的消息的可靠接收
CN102197381A (zh) * 2008-10-28 2011-09-21 Nxp股份有限公司 用于可拆卸装置的具有高速缓存和接口的数据处理电路
CN101741870B (zh) * 2008-11-07 2012-11-14 英业达股份有限公司 因特网小型计算机接口的储存系统
CN104782085B (zh) * 2012-10-25 2017-12-29 国际商业机器公司 由计算机系统使用至少两个通信协议进行网络通信的技术
CN104782085A (zh) * 2012-10-25 2015-07-15 国际商业机器公司 由计算机系统使用至少两个通信协议进行网络通信的技术
CN103838517A (zh) * 2012-11-23 2014-06-04 中国科学院声学研究所 一种用于传输多核处理器和磁盘阵列间数据的方法及系统
CN103838517B (zh) * 2012-11-23 2017-06-09 中国科学院声学研究所 一种用于传输多核处理器和磁盘阵列间数据的方法及系统
CN110119303A (zh) * 2013-11-12 2019-08-13 微软技术许可有限责任公司 构建虚拟主板和虚拟存储设备
CN110119303B (zh) * 2013-11-12 2023-07-11 微软技术许可有限责任公司 构建虚拟主板和虚拟存储设备
CN107111550A (zh) * 2014-12-22 2017-08-29 德克萨斯仪器股份有限公司 通过选择性页遗漏转换预取隐藏程序存储器控制器中转换遗漏时延
CN107111550B (zh) * 2014-12-22 2020-09-01 德克萨斯仪器股份有限公司 用于隐藏程序提取的页遗漏转换时延的方法和装置
CN105938460A (zh) * 2015-03-02 2016-09-14 Arm 有限公司 存储器管理
CN105938460B (zh) * 2015-03-02 2021-06-25 Arm 有限公司 存储器管理
CN106502721A (zh) * 2016-09-26 2017-03-15 华为技术有限公司 一种命令卸载方法、装置及物理机
CN110059027A (zh) * 2017-11-22 2019-07-26 Arm有限公司 执行维护操作的装置和方法
CN112771501A (zh) * 2018-08-17 2021-05-07 甲骨文国际公司 事务性处理系统的远程直接存储器操作(rdmo)
CN109587112A (zh) * 2018-10-25 2019-04-05 华为技术有限公司 一种发送数据的方法、接收数据的方法、设备及系统
CN109587112B (zh) * 2018-10-25 2021-02-12 华为技术有限公司 一种发送数据的方法、接收数据的方法、设备及系统
US11563832B2 (en) 2018-10-25 2023-01-24 Huawei Technologies Co., Ltd. Data sending method and device, data receiving method and device, and system
WO2020082986A1 (zh) * 2018-10-25 2020-04-30 华为技术有限公司 一种发送数据的方法、接收数据的方法、设备及系统
CN113190177A (zh) * 2021-05-12 2021-07-30 西安雷风电子科技有限公司 数据存储方法、终端设备、服务器及系统
CN113326155A (zh) * 2021-06-28 2021-08-31 深信服科技股份有限公司 一种信息处理方法、装置、系统和存储介质
CN113326155B (zh) * 2021-06-28 2023-09-05 深信服科技股份有限公司 一种信息处理方法、装置、系统和存储介质

Also Published As

Publication number Publication date
CN1308835C (zh) 2007-04-04
US7299266B2 (en) 2007-11-20
TW200404432A (en) 2004-03-16
US20040049600A1 (en) 2004-03-11
TWI265696B (en) 2006-11-01

Similar Documents

Publication Publication Date Title
CN1308835C (zh) 远端直接存储器存取启用网络适配器的存储器管理卸载
CN1239999C (zh) 处理iSCSI命令的方法和系统
CN1310475C (zh) 用于根据使用类来控制对设施的访问的装置和方法
CN1604057A (zh) 硬件实施通道适配器资源的逻辑分区的方法和系统
US11657015B2 (en) Multiple uplink port devices
EP3828715B1 (en) Non-posted write transactions for a computer bus
US11238203B2 (en) Systems and methods for accessing storage-as-memory
US10503679B2 (en) NVM express controller for remote access of memory and I/O over Ethernet-type networks
CN104823167B (zh) 现场错误恢复
US9696942B2 (en) Accessing remote storage devices using a local bus protocol
TWI570563B (zh) 後置中斷架構
JP4012545B2 (ja) リモート・ダイレクト・メモリ・アクセス対応ネットワーク・インタフェース・コントローラのスイッチオーバーとスイッチバックのサポート
EP1899830B1 (en) Automated serial protocol target port transport layer retry mechanism
CN1212574C (zh) 使用本地标识符的端节点分区
US20150261434A1 (en) Storage system and server
CN1969267A (zh) 用户级栈
CN1818890A (zh) 用于实现卸载发起方功能的方法和系统
CN1770110A (zh) 对I/O完成进行无锁InfiniBandTM轮询的方法、系统和存储介质
CN1617526A (zh) 在物理端口上模拟多个逻辑端口的方法和装置
CN1488105A (zh) 控制数据处理系统间经由存储器的数据流的方法和装置
CN1256681C (zh) 从外围设备向主计算机系统传输中断的方法和装置
EP3757811B1 (en) Predictive packet header compression
US20220222196A1 (en) Pci express chain descriptors
WO2020171989A1 (en) Rdma transport with hardware integration and out of order placement
US7761529B2 (en) Method, system, and program for managing memory requests by devices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070404

Termination date: 20210902