CN101375263A - 轻型输入/输出协议 - Google Patents

轻型输入/输出协议 Download PDF

Info

Publication number
CN101375263A
CN101375263A CNA2004800013330A CN200480001333A CN101375263A CN 101375263 A CN101375263 A CN 101375263A CN A2004800013330 A CNA2004800013330 A CN A2004800013330A CN 200480001333 A CN200480001333 A CN 200480001333A CN 101375263 A CN101375263 A CN 101375263A
Authority
CN
China
Prior art keywords
server
client computer
request
rdma
lwio
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
CNA2004800013330A
Other languages
English (en)
Other versions
CN101375263B (zh
Inventor
A·H·莫哈米德
A·F·弗尔梅
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN101375263A publication Critical patent/CN101375263A/zh
Application granted granted Critical
Publication of CN101375263B publication Critical patent/CN101375263B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/10Streamlined, light-weight or high-speed protocols, e.g. express transfer protocol [XTP] or byte stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/26Special purpose or proprietary protocols or architectures

Abstract

揭示了使用能进行RDMA的网络互连从第一计算机(图1,101)向第二计算机(121)下传I/O处理的方法和系统。该方法和系统包括第一计算机(101)上的客户机(103),它借助轻型输入/输出(LWIO)协议通过RDMA连接(117)与第二计算机(121)上的服务器(123)通信。该协议通常包括网络发现阶段及随后的I/O处理阶段。在发现阶段,客户机(103)和服务器(123)确定共享的能进行RDMA的提供者的最小列表。在I/O处理阶段,客户机(103)发送I/O请求以便通过互相认证的RDMA通道(117)下传到第二机器(121)。I/O模型是非对称的,读操作使用RDMA实现而写操作使用常规的发送实现。能以轮询和中断模式完成读和写的请求。通过信用点机制管理缓存器。

Description

轻型输入/输出协议
技术领域
本发明一般涉及远程文件访问的系统和方法,尤其涉及使用远程直接存储器存取(RDMA)来下传(offload)输入/输出处理的技术。
背景技术
在计算环境中通常希望节省宝贵的CPU资源。对如应用程序服务器节点的网络那样的环境,那样的节省是尤其至关重要的。当网络变得更快时,它们对CPU提出更高要求来处理包并完成I/O操作,这导致更慢的应用程序性能。对于如数据库那样固有地I/O密集型应用程序这特别不利。
补救这一问题的一种方法是从CPU中下传过多的I/O和网络处理。在联网环境中,使用分布式文件系统和注入NFS或SMB/CIFS等传输协议,可能将I/O请求从本地机器发送到远程机器。然而,情况不必是本地机器使用这类方法能够达到显著的处理节省。
在单机情况下,通过将I/O任务下传到直接存储器存取(DMA)控制器,I/O处理的负担减轻了。远程直接存储器存取(RDMA)技术是用于多台连网计算机的最近发展的DMA扩展。RDMA使数据能在装有能够进行RDMA网络接口卡(NIC)的两台通信机器上的存储缓存器之间传送,而不必涉及源和目标机器双方的CPU和操作系统。能使用RDMA将I/O处理下传到远程机器,使本地机器能重新要求CPU周期用于应用程序。RDMA已被用于高速、高带宽互连技术,如虚拟接口体系结构(VIA)、InfiniBand和iWarp。这些互连特别为在数据中心或其它本地文件共享环境中服务器节点的集群之间的高可靠性网络连接而设计。
为了充分利用与RDMA技术关联的能力并有效地得到其好处,必须设计定义在本地下传节点和远程机器之间通信的协议。因此需要本发明的轻型输入/输出(LWIO)协议。
发明内容
按本发明的一方面,提供将I/O任务从第一计算机下传到第二计算机的系统。该系统包括在第一计算机上运行的客户机和在第二计算机上运行的服务器程序。该系统还包括链接第一计算机和第二计算机的一个或多个RDMA通道。客户机和服务器程序按照包括网络发现阶段和I/O处理阶段的LWIO协议通信。结合如SMB/CIFS等另外网络协议使用LWIO协议,充分调动了第二协议的安全性和认证的基础结构。为提供更好的安全模型,协议中的I/O模型是非对称的:读使用RDMA来实现,而写使用发送操作来实现。
按照本发明的另一方面,提供将I/O任务从第一计算机下传到第二计算机的方法。该方法利用两台计算上共同的能进行RDMA的通信设备,并与轻型输入/输出(LWIO)客户机一服务器协议关联。协议通常包括发现阶段及随后的I/O处理阶段。在发现阶段,客户机和服务器确定共享的能进行RDMA的提供者的最小列表。在I/O处理阶段,客户机发送I/O请求以便下传到第二机器。
在发现阶段,客户机最初从服务器器获得服务器请求继续键(resume key)。客户机随后打开通向服务器的管道,客户机通过此管道发送包含第一机器上能进行RDMA的提供者列表的协商请求。服务器通过该管道发送包含第二机器上匹配第一机器上的提供者的可用提供者的列表的协商响应。然后客户机创建通过共享的提供者到服务器的RDMA连接。客户机及服务器互相认证新的连接。客户机然后注册一个或多个文件为服务器使用。
I/O处理请求消息包括关闭消息、取消消息、读消息、写消息、向量化读消息、以及向量化写消息。为安全原因,协议表现非对称I/O模型。读数据使用RDMA写操作被发送到客户机,而写使用常规的发送来完成。由客户机指定读和写请求,让服务器以轮询模式或中断模式完成。若客户机表示,不应以轮询模式完成,则服务器借助通过RDMA传输发送状态块到第一计算机来完成I/O处理请求。若客户机表示应该以轮询模式完成,则客户机可请求在完成I/O之后服务器通过中断请求消息来唤醒它。
按本发明的另外方面,提供以I/O下传协议管理缓存器的方法。该方法涉及使用缓存器信用点(credit)机制。服务器—客户机信用点事务包括由服务器发动并完成的三路握手。服务器发送一增量信用点消息给客户机,包括设置成信用点数的信息字段。若该数为负数-N,则客户机必须放弃N个信用点。
本发明的另外方面包括作为计算机程序产品及数据结构体现在计算机可读介质的上述特征。
附图说明
虽然附后的权利要求以细节列出了本发明的特征,从下面结合附图的详细描述能更好地理解本发明及其目标和优点,附图中:
图1是一般示出示例性客户机—服务器计算环境的原理图,它包括两台能通过RDMA传输通信的计算机,该环境能加入本发明的各方面;
图2是按本发明的实施例一般示出的在LWIO协议的发现阶段中采取的初始步骤的流程图;
图3是按本发明的实施例一般示出示例性服务器请求继续键的表示的概略图;
图4A是按本发明的实施例一般示出示例性客户机协商请求消息的表示的概略图;
图4B是按本发明的实施例一般示出示例性服务器协商响应的表示的概略图;
图5是按本发明的实施例一般示出在LWIO协议的发现阶段采取的附加步骤的流程图;
图6A是按本发明的实施例一般示出示例性客户机认证请求消息的表示的概略图;
图6B是按本发明的实施例一般示出示例性服务器认证响应的表示的概略图;
图6C是按本发明的实施例一般示出完成认证的示例性服务器状态响应的表示的概略图;
图7A是按本发明的实施例一般示出示例性客户机注册文件消息的表示的概略图;
图7B是按本发明的实施例一般示出完成文件注册的示例性服务器状态响应的表示的概略图;
图8是按本发明的实施例一般示出对于以轮询模式和以非轮询模式完成I/O请求采取的步骤的流程图;
图9A是按本发明的实施例一般示出示例性客户机中断请求消息的表示的概略图;
图9B是按本发明的实施例一般示出完成中断请求的示例性服务器状态响应的表示的概略图;
图10是按本发明的实施例一般表示关于服务器—客户机信用点事务采取的步骤的流程图;
图11A是按本发明的实施例一般表示示例性服务器增量信用点消息的表示的概略图;
图11B是按本发明的实施例一般表示示例性客户机—服务器信用点消息的表示的概略图;
图11C是按本发明的实施例一般表示完成客户机—服务器信用点事务的示例性服务器状态响应的表示的概图;
图12A是按本发明的实施例一般示出示例性客户机关闭请求消息的表示的概略图;
图12B是按本发明的实施例一般示出完成关闭请求的示例性服务器状态响应的表示的概略图;
图13A是按本发明的实施例一般示出示例性客户机取消请求消息的表示的概略图;
图13B是按本发明的实施例一般表示完成取消请求的示例性服务器状态响应的表示的概略图;
图14A是按本发明的实施例一般示出在非轮询模式情况下的示例性客户机读请求消息的表示的概略图;
图14B是按本发明的实施例一般示出在非轮询模式情况下完成读请求的示例性服务器状态响应的表示的概略图;
图14C是按本发明的实施例一般示出在轮询模式情况下示例性客户机读请求消息的表示的概略图;
图14D是按本发明的实施例一般示出在轮询模式情况下完成读请求的示例性服务器I/O状态块的表示的概略图;
图15A是按本发明的实施例一般示出在非轮询模式情况下示例性客户机写请求消息的表示的概略图;
图15B是按本发明的实施例一般示出在非轮询模式情况下完成写请求的示例性服务器状态响应的表示的概略图;
图15C是按本发明的实施例一般示出在轮询模式情况下示例性客户机写请求消息的表示的概略图;
图15D是按本发明的实施例一般示出在轮询模式情况下完成写请求的示例性服务器I/O状态块的表示的概略图;
图16A是按本发明的实施例一般示出在非轮询模式情况下示例性客户机向量化读请求消息的表示的概略图;
图16B是按本发明的实施例一般示出在非轮询模式情况下完成向量化读请求的示例性服务器状态响应的表示的概略图;
图16C是按本发明的实施例一般示出在轮询模式情况下示例性客户机向量化读请求消息的表示的概略图;
图16D是按本发明的实施例一般示出在轮询模式情况下完成向量化读请求的示例性服务器I/O状态块的表示的概略图;
图17A是按本发明的实施例一般示出在非轮询模式、非崩溃情况下示例性客户机向量化写请求消息的表示的概略图;
图17B是按本发明的实施例一般示出在非轮询模式、崩溃情况下示例性客户机向量化写请求消息的表示的概略图;
图17C是按本发明的实施例一般示出在轮询模式、崩溃情况下示例性客户机向量化写请求消息的表示的概略图;
图17D是按本发明的实施例一般示例在非轮询模式情况下完成向量化写请求的示例性服务器器状态响应的表示的概略图;和
图17E是按本发明的实施例一般示出在轮询模式情况下完成向量化写请求的示例性服务器I/O状态块的表示的概略图。
具体实施方式
下面参考图1~17E来讨论本发明的某些实施例。然而本领域的技术人员容易理解,这里给出的结合附图的详细描述是为说明目的,本发明超越这些实施例而延伸。
图1是一般示出在其中可加入本发明的各方面的代表性网络化客户机/服务器环境的某些特征的原理图。在图1中画出两台计算机,标记为主机A 101和主机B121。虽然本发明可在包括许多不同类型和用途的计算机的环境中实施,然而在一个代表性情况下,主机A 101起着如数据库服务器等担负I/O密集型工作的应用程序服务器的作用。
每个主机A 101和主机B 121包括若干网络接口卡(NIC)109、111、113、133、135、137,允许从一个机器到另一机器的网络化数据通信。在这些NIC中NIC109、111、135、137允许RDMA数据传输。如图示,在两主机101、121之间给出非RDMA网络链路119和RDMA通道117。
在主机A 101上执行的是LWIO客户机应用程序程序103,它与负责处理I/O任务的应用程序程序关联,而I/O任务与核心模式I/O读/写服务器105交互。使用LWIO客户机103程序将I/O处理从主机A 101下传到主机B 121。在主机B 121上执行LWIO服务器123。按这里描述的LWIO协议,LWIO客户机103与LWIO服务器123通信。LWIO客户机103和LWIO服务器123使用发送的缓存器107、127,使与文件关联的数据借助RDMA通道连接117直接传输。借助LWIO协议消息,可将读和写的任务下传到主机B 121。服务器123将I/O请求传送到文件系统129,后者作为到硬盘131的接口。
通常,两类消息与RDMA连接117相关。第一类是普通的网络发送/接收,它在目标机器上生成一中断。第二类是RDMA读/写,其中不需远程CPU的帮助来访问远程机器中的存储空间,因此不必生成中断。远程CPU确定为RDMA展现的存储器区域,但通常不知道何时完成RDMA操作。
在这里描述的本发明的实施例中,结合如SMB或CIFS等另一网络协议使用LWIO协议,以便利用其它协议的现有安全和认证基础结构。这帮助最小化LWIO协议的开销。如图1所示,主机B121上的LWIO服务器123在SMB服务器125之上操作。SMB客户机(未示出)类似地在主机A 101上运行,并与LWIO客户机应用程序程序103交互。
LWIO协议包括两个阶段:发现阶段及随后的I/O阶段。与这里描述的实施例相关的数据结构、数据长度如下表示:
BYTE                     无符号8位整数
CHAR                     8位ASCII码字符
UINT16                   无符号16位整数
NINT32                   无符号32位整数
UINT64                   无符号64位整数
INT16                    带符号16位整数
INT32                    带符号32位整数
INT64                    带符号64位整数
WCHAR                    16位统一码(Unicode)字符
PVOID32                32位指针
PVOID64                64位指针
图2示出在本发明的实施例中在LWIO协议的发现阶段采取的步骤。对于在其上执行LWIO服务器的主机,在步骤201,LWIO服务器向在主机上运行的SMB/CIFS服务器注册。按此注册,在步骤203,SMB/CIFS服务器通知在LWIS服务器可用的远程主机上运行的SMB/CIFS客户机。在步骤205,LWIO客户机请求一服务器请求继续键。继续键是一种认证机制,它已在与本专利具有同一受让人的另一专利中揭示,该美国专利于2003年10月24日提交,序列号:______,名为“Method and Systemfor Accessing a File(Resume KeY)(访问文件的方法和系统(继续键))”,该专利通过引用整体结合于此。
在步骤207,LWIO服务器将服务器请求继续键送回客户机。在本发明的一实施例中,服务器请求继续键具有下列结构
        typedef struct_SRV_RESUME_KEY{
             UINT64            ResumeKey;
             UINT64            Timestamp;
             UINT64            Pid;
        }SRV_RESUME_KEY,*PSRV_RESUME_KEY;
        typedef struct_SRV_REQUEST_RESUME_KEY{
             SRV_RESUME_KEY     Key;
             UINT16             ContextLength;
             BYTE               Context[1];
        }SRV_REQUEST_RESUME_KEY,*PSRV_REQUEST_RESUME_KEY;
图3提供服务器请求继续键219的图示。在服务器上生成ResumeKey(继续键)221、Timestamp(时间标记)223和Pid(进程id)225,它们对客户机是不透明的。Context(上下文)229是包含由LWIO客户机使用来联系服务器的UNC名字的数组。ContextLength(上下文长度)227是在Context 229中字节数。
网络发现
当客户机应用程序接收服务器请求继续键219,它从Context字段229检索服务器UNC名字。回到图2,在步骤209,客户机打开通向LWIO服务器的管道。管道用于以下述方式对在网络上可用的能进行RDMA的设备的自动发现。这是本发明重要且有用的特征;通常VIA网络和类似网络缺少如ARP等地址解析机制。
客户机接着查询服务器以寻找其可用于LWIO协议的能将进行RDMA的设备(“提供者”)的列表。借助客户机构造并经在步骤211新开的管道发送到服务器的协商请求来完成查询。在本发明的实施例中,协商请求有如下结构:
typedef struct{
     LWIO_CONTROL_HEADER;
     WCHAR              ClientName[LWIO_MAX_HOST_NAME];
     UUID               Key;
     UINT16             ResponseLength;
     UINT16             ProviderCount;
     LwioAddressBlk_t   ProviderList[1];
} LwioNegotiateRequest_t;
typedef struct {
    CHAR             ProtocolId[4];
    UINT32           RevId;
    UINT16           Opcode;
    UINT16           Length;
} LWIO_CONTROL_HEADER;
typedef struct_GUID {
    UINT32           Data1;
    UINT16           Data2;
    UINT16           Data3;
    BYTE             Data4[8];
} GUID,UUID;
typedef struct {
    WCHAR            Name[LWIO_MAX_PROVIDER_NAME];
    UINT16           InstanceCount;
    LWIO_NET_ADDRESS InstanceTable[1];
} LwioAddressBlk_t;
typedef struct_LWIO_NET_ADDRESS{
    UINT16           HostAddressLen;
    UINT16           DiscriminatorLen;
    BYTE             HostAddressFollowedByDiscriminator[1];
}LWIO_NET_ADDRESS;
图4A提供在本发明实施例中的协商请求包231的图示。协商请求包括控制首部233、固定长度的统一代码(Unicode)客户机名字段235、用作密钥的客户机UUID237、用于接收响应的本地缓存器长度239、以及提供者列表241。在控制首部233,ProtocolID(协议ID)‘LWIO’243被储存为首部的前4个字节。
RevId245保存当前定义的值0x1001、LWIO_REV_ID。Opcode(操作码)247保存当前定义的值0xfe,LWIO_CONTROL_OPCODE_NEGOTIATE。Length(长度)249是包括所有操作码专用数据的拟发送给服务器的整个包的字节数。
服务器使用ClientName(客户机名)235来标识客户机。如下所述,Key(密钥)237用于随后的网络专用认证过程。如下所述,RespnoseLength(响应长度)239是用于从服务器接收协商响应的缓存器长度。ProviderCount(提供者计数)251是与客户机相关联并客户机正通知的服务器的提供者者的数量。提供者者列表241包含ProviderCount提供者的列表。
在提供者列表241的元素中,Name(名字)253是提供者的名。为了检测兼容网络,客户机和服务器最好对同一提供者使用同一名。InstanceCount(实例计数)255是特定提供者类型的设备数,实例表257是网络/鉴别器对的表,其中一对服务器以设备专用方式描述如何形成远程连接。HostAddressLen(主机地址长度)259是网络专用主机地址263的长度。DiscriminatorLen(鉴别器长度)261是网络专用鉴别器265的长度。这些长度字段之后是主机地址263的HostAddressLen字节和鉴别器265的DiscriminatorLen字节。
回到图2,在接收到与提供者的客户机列表的协商请求之后,在步骤213,服务器确定它与客户机具有哪些共同的能进行RDMA通信的设备。在步骤215,服务器经该管道发送包括共享提供者列表的协商响应到客户机。在本发明的一个实施例中,协商响应具有如下结构:
typedef struct{
     LWIO_CONTROL_HEADER;
     WCHAR                 SrvName[LWIO_MAX_HOST_NAME];
     UUID                  Key;
     UINT16                ProviderCount;
     LwioAddressBlk_t      ProviderList[1];
}LwioNegotiateResponse_t;
图4B提供在本发明的实施例中协商响应267的图示。控制首部269与协商请求的一样,不同处是Length 271现在反映响应消息267的长度。SrvName(服务器名)273保存服务器的名。Key(关键字)275是服务器生成的GUID,为客户机使用。如下进一步解释,客户机在认证请求中通过使用一个共同通信设备的新连接将Key送回给服务器。ProviderCount 277是在提供者列表279中提供者的数量。提供者列表279包含对服务器及客户机共同的提供者的列表。不保证客户机实际上能连接到这些提供者。
回到图2,此时服务器和客户机共享通信设备信息,并已确定共同提供者的最小列表。在步骤217,客户机通过一个或多个共享设备创建一个或多个到LWIO服务器的RDMA连接。在本发明的一个实施例中,如此处描述,对客户机-服务器的通信定义下列操作码:
 #define   LWIO_OPCODE_READ             0x0
 #define   LWIO_OPCODE_WRITE            0x1
 #define   LWIO_OPCODE_VEC_READ         0x2
 #define   LWIO_OPCODE_VEC_WRITE        0x3
 #define   LWIO_OPCODE_CLOSE            0x4
 #define   LWIO_OPCODE_CANCEL           0x5
 #define   LWIO_OPCODE_AUTH             0x6
 #define   LWIO_OPCODE_REGISTER         0x7
 #define   LWIO_OPCODE_CREDIT           0x8
 #define   LWIO_OPCODE_INTERRUPT        0x9
以下定义的标志用作在客户机-服务器通信中的修改符:
 #define   LWIO_HDR_FLAG_INTERRUPT      0x80
 #define   LWIO_HDR_FLAG_CONTROL        0x40
 #define   LWIO_HDR_FLAG_COLLAPSE_IO    0x20
在LWIO协议的对应客户机-服务器消息表征一共同的首部结构。在本发明的实施例中,共同的首部具有以下格式:
typedef struct {
     UINT32                 Length;
     union {
     UINT32                 Status;
     struct {
          BYTE              Opcode;
          BYTE              Flags;
          BYTE              Credits;
          BYTE              Marker;
     };
     };
     struct {
     UINT16                 Fid;
     UINT16                 Sequence;
     UINT32                 Tid;
     };
     UINT64                 Offset;
     // 数据缓存器块
     struct {
PVOID64                   DataVa;
union {
     UINT32               DataMh;
     struct {
     UINT16               NumPages;
          UINT16               PageSize;
          }Vec;
     };
     };
    //io状态块
    union {
     struct {
          UINT32               IosMh;
          PVOID64              IosVa;
     };
     struct {
         UINT32               ImmediateCookie;
         UINT64               Cookie;
     };
   };
}LWIO_COMMON_HEADER;
连接认证
图5示出在本发明的实施例中在LWIO协议的初始阶段余下部分由客户机和服务器采取的步骤。在步骤601,如上所述客户机建立通过共享通信设备到服务器的连接。现在客户机和服务器互相认证新的连接。在步骤603,客户机发送认证请求消息(LWIO_OPCODE_AUTH)到服务器。为防止服务器端和客户机端免受欺骗而作认证。若认证不能按时完成,连接终止。
图6A提供在本发明的实施例中客户机认证请求消息的图示。认证消息617包括共同首部619及随后的LWIO_AUTH_PARAMS结构621。在首部619中,Length 623被设置成发送到服务器的字节数(共同首部619的长度加上LWIO_AUTH_PARAMS 621的长度)。Opcode625被设为LWIO_OPCODE_AUTH(0×6)。标志627被设成LWIO_HDR_FLAG_INTERRUPT。在这个和其它客户机协议消息中,Cookie 629被设成由客户机选择的值,并在服务器应答中被送回。Cookie值通常被用于将请求与服务器应答匹配。DataVa 631被设成服务器应当对服务认证参数进行RDMA的地址。DataMh 633保存与DataVa 631关联的RDMA存储器句柄。
在本发明的实施例中,LWIO_AUTH_PARAMS结构具有如下格式:
#define LWIO_AUTH_OPTION_END                0
#define LWIO_UT_OPTION_EY                   1
#define LWIO_UT_OPTIO_SESSION_ID            2
#define LWIO_UT_OPTIO_SIGNATURE             3
#define LWIO_AUTH_OPTION_KEY_LENGTH         16
#define LWIO_UT_OPTIO_SESSION_ID_LENGTH     8
#define LWIO_AUTH_OPTION_SIGNATURE_LENGTH   16
 typedef struct {
      UCHAR               OptionCode;
      UCHAR               OptionLen;
      BYTE                OptionData[1];
 } LWIO_AUTH_OPTIONS,*LPLWIO_AUTH_OPTIONS;
 typedef struct {
      CHAR                Magic[4];//′LWIO′
      UINT16              RevId;
      UINT16              Endian;
      UINT16              PageSize;
      UINT16              BaseSequence;
      UINT32              MaxRdmaWindowSize;
      UINT32              MaxSendBufferSize;
      UINT32              MaxRecvBufferSize;
      UINT16              HeaderSize;
      UINT16              Credits;
      UINT16              RdmaReadSupported;
      LWIO_AUTH_OPTIONS   Options[1];
 } LWIO_AUTH_PARAMS,*LPLWIO_AUTH_PARAMS;
在认证消息617中,LWIO_AUTH_PARAMS 621构成包的第二部分。Magic 635设成‘LWIO’。RevId 627设成LWIO_REV_ID。Endian 639设成sizeof(ULONG_PTR)。PageSize 641设成CPU页面大小(在32位机器上为4K,在64位机器上为8K)。BaseSequence643设成0。MaxRdmaWindowSize 645试图设成客户机在一次RDMA传输中可接受的最大字节数;在图示的实施例中设成64K。MaxSendBufferSize 647试图设成客户机在单次请求中可向服务器发送的字节数;在图示的实施例中被设成1K。MaxRecvBufferSize 649试图设成客户机为了从服务器接收数据而发送的字节数;在图示的实施例中它被设成16字节。HeederSize 651被设成在LWIO控制首部619中的字节数。Credits 652设成客户机希望具有的缓冲器信用点的初始数量。信用点的使用如下解释。服务器可以满足也可以不满足客户机的请求。若客户机不支持RDMA读操作,RdmaRdadSupport 653设成0,若客户机支持RDMA读,则设成1。
LWIO_AUTH_PARAMS结构的部分是一个或多个选项的组。使用选项使认证更灵活。除了在列表中的最后选项LWIO_AUTH_OPTION_END外,每个选择具有选项码、长度和数据,该最后选项只有选项码,作为终止选项列表的空选项。在认证消息中,客户机发送给服务器下列选项:密钥(LWIO_AUTH_OPTION_KEY)和签名(LWIO_AUTH_OPTION_SIGNATURE)。Key 655设成服务器以前在协商响应中返回的密钥。Signature 657是除签名以外的LWIO_AUTH_PARAMS 621的MD5签署。
回到图5,在步骤605,若在认证消息中发送的Key匹配通过管道在协商响应中返回的密钥,则服务器作为认证响应向客户机RDMA发送LWIO_AUTH_PARAMS结构,它包括由客户机在认证消息中向DataVa地址及关联的DataMh存储器句柄提供的8字节SessionId。在步骤607,服务器发送LWIO_MSG_STATUS_RESPONSE以完成认证。
图6B提供在本发明的实施例中由服务器返回的LWIO_AUTH_PARAMS结构659的图示,Magic 611设成‘LWIO’。RevId663设成LWID_REV_ID。Endian 655设成sizeof(ULONG_PTR)。PageSize 667设成CPU页大小。BaseSequence 669试图设成(客户机的BaseSequewcet1)。MaxRdmaWindowSize 671试图设成客户机在RDMA传输中能接受的最大字节数;在描述的实施例中设成512K。MaxSendBufferSize 673试图设成服务器在单个响应中发送给客户机的字节数;在描述的实施例中设成16字节。MaxRecvBufferSize 675试图设成为从客户机接收数据服务器预发送的字节数;在描述的实施例中设成8K。HeaderSize 667设成在共同首部的字节数。Credits679被设成服务器对客户机可用的初始信用点数。若服务器不支持RDMA读,则RdmaReadSupported 681被设成0,若服务器支持RDMA读,则设成1。服务器发送下列选项:Key(LWIO_AUTH_OPTION_Key)683、SessionId(LWIO_AUTH_OPTION_SESSION_ID)685和Signature(LWIO_AUTH_OPTION_SIGNATURE)687。Key 683被设成客户机以前在协商请求中发送的Key。如下解释,客户机在向服务器注册客户机文件时使用该SessionId 685时值。Signature 687是LWIO_AUTH_PARAMS中除Signature外的MDS签署。
在本发明MSG_STATUS_RESPONSE的实施例中,LWIO_MSG_STATUS_RESPONSE结构具有下述格式:
typedef struct_LWIO_IO_STATUS_BLOCK {
     UINT32                 Information;
     UINT32                 Status;
} LWIO_IO_STATUS_BLOCK,*LPLWIO_IO_STATUS_BLOCK;
typedef struct_LWIO_MSG_STATUS_RESPONSE {
     UINT64                 Cookie;
     LWIO_IO_STATUS_BLOCK    Ios;
} LWIO_MSG_STATUS_RESPONSE,*LPLWIO_MSG_STATUS_RESPONSE;
图6C提供在本发明的实施例中为完成认证由服务器返回的LWIO_MSG_STATUS_RESPONSE 689的图示。Cookie 691被设成由客户机在认证消息的首部中设置的Cookie值。Information(信息)693被设成LWIO_AUTH_PARAMS的字节数加8个字节。Status 695设成0×0(表示成功)或0×C0000022(表示“访问被拒绝”)。
文件注册
回到图5,在步骤609,当新的连接被客户机及服务器互相认证时,客户机开始注册文件以供服务器使用。
图7A提供在本发明的实施例中由客户机向服务器发送的注册文件消息的图示。注册消息701包括共同首部703及随后的LWIO_FID_PARAMS结构705。Length(长度)设成发送到服务器的字节数(首部703的长度加上LWIO_FID_PARAMS 705的长度)。Opcode(操作码)709设成LWIO_OPCODE_REGISTER(0×7)。Flags(标志)711设成LWIO_HDR_FLAG_INTERRUPT。在此客户机消息及随后的客户机消息中,Credits(信用点)713设成在客户机上挂起的I/O请求的数量。如下进一步解释,Credits字段用作对服务器向连接分配更多信用点的暗示,从而允许额外的未完成的I/O请求。在任何时刻未完成的客户机请求的数量不能超过“Credits”值。如前所述,Cookie 715设成客户机指定的值。
在本发明的实施例中,LWIO_FID_PARRMS结构具有下述格式:
   typedef struct {
        SRV_RESUME_KEY    ResumeKey;
        INT64             SessionId;
        UINT32            FlagsAndAttributes;
} LWIO_FID_PARAMS,*LPLWIO_FID_PARAMS;
在注册文件消息701的LWIO_FID_PARRMS 705中,ResumeKey 717设成通过初始文件访问通道返回的服务器请求继续键。SessionId 719设成在连接认证阶段中由服务器返回的SessonId。FlagsAndAttributes(标志和属性)721设成最初用于打开文件的Win32创建标志。
回到图5,在步骤611,服务器用LWIO_MSG_STATUS_RESPONSE作出响出以完成文件注册。图7B提供在本发明中由服务器发送的LWIO_MSG_STATUS_RESPONSE723的图示。Information727设成Fid(文件ID),在发送I/O请求时使用。Status(状态)729设成0×0(成功)或在失败时设成另外的NTSTATUS码。Cookie 725设成客户机在注册文件消息的首部中的Cookie值。
I/O处理
在此时,建立了客户机连接,且文件已被注册,并开始LWIO协议的I/O处理阶段。LWIO协议的实施例的一个关键特征是对读和写的非对称I/O模型。读操作使用RDMA实现,而写使用发送操作实现。不使用RDMA实现写是为了提供更好的安全模型。若服务器对RDMA展现NIC上的地址空间,它会引入能由恶意客户机利用的数据破坏的弱点。在此情况,恶意的客户机在循环中发出给定服务器虚拟地址上的RDMA写操作。由于服务器地址空间是有限的,且在某一点服务器的虚拟地址必须被重新使用,因此恶意客户机最终捕捉服务器,对不同的连接使用同一虚拟地址,导致数据被写入到可能与不同的客户机关联的服务器缓存器。LWIO协议中的非对称I/O模型避免了这种可能性。此特征是LWIO协议和如DAFS等其它基于RDMA的文件传输协议之间的主要差别。
回到图5,在步骤613,客户机开始发送I/O处理请求。服务器-客户机的I/O请求的完成是非轮询模式或轮询模式。在非轮询模式中,I/O完成是基于中断的,使用普通的发送/接收消息。在轮询模式中,I/O的完成是使用RDMA,且不是基于中断的。
从LWIO服务器的一般观点来看,图8的流程图一般示出在本发明的实施例中以轮询模式或非轮询模式完成I/O请求所采取的步骤。客户机I/O请求指定,服务器是否应当发回后发送(post_send)(中断CPU)或RDMA消息。在步骤801,服务器确定是否在客户机I/O请求消息的共同首部中的LWIO_HDR_FLAG_INTERRUPT标志是否被置位。若该标志被置位,则在步骤803,服务器使用普通发送借助LWIO_MSG_STATUS_RESPNSE完成客户机请求。若LWIO_HDR_FLAG_INTERRUPT标志未被置位(轮询模式),则如步骤805所示,服务器通过用RDMA发送LWIO_ID_STATUS_BLOCK到客户机而完成客户机请求。
在轮询模式中唤醒客户机
在轮询模式中,客户机希望在等待从服务器完成I/O的同时休眠。在此情况借助RDMA将Completion(完成)发送到客户机,所以需要一种机制来唤醒客户机,通知它完成已发生。若客户机希望被唤醒,它发送中断请求(LWIO_OPCODE_INTERRUPT)消息到服务器,由服务器在图8的步骤807接收。接收中断请求的服务器在服务器完成I/O请求之前不发送响应(步骤809)。在步骤811借助普通发送,将“完成”发送到客户机,中断客户机。对给定客户机连接只有一个中断消息能是未完成的。
图9A提供在本发明的实施例中由客户机发给服务器的中断请求消息的图示。消息包括共同的首部815。Opcode(操作码)817被置成LWIO_OPCODE_REGISTER(0×9)。标志819被置成(LWIO_HDR_FLAG_INTERRUPT1LWIO_HDR_FLAG_CONTROL)(0×CO)。Credits(信用点)821被置成在客户机上挂起的I/O请求的数量,而Cookie823被设置成客户机指定的值。
在另一I/O请求已被处理之后服务器响应中断请求消息。图9B提供了在本发明的实施例中由服务器发送的LWIO_MSG_STATUS_RESPONSE消息825的图示。Information(信息)827设成0。Status(状态)829设成0×0(成功),或在失败时设成另一NTSTATUS码。Cookie 831设成由客户机发送的中断请求的首部中的Cookie值。
信用点(Credits)
已经提到,所有客户机-服务器的I/O请求包括在首部的信用点字段。信用点字段是对服务器关于客户机发送给服务器的未完成的I/O信用点数的暗示。管理信用点是服务器的责任。信用点提供对转储清除缓存器问题的新颖解决方法。若客户机当前具有N个信用点,为了服务器向客户机发送信用点消息,需要发送N+1个接收缓存器。在任何一个时刻服务器沿客户机连接只有一个未完成的信用点请求。信用点消息总是以中断模式发送。
信用点事务包括在客户机和服务器之间由服务器启动的三路握手。图10一般示出包括在本发明的实施例中信用点事务的步骤。在步骤1001,服务器沿客户机连接发送增量信用点请求消息。
图11A提供在本发明实施例中服务器增量信用点消息的图示。此消息采取LWIO_MSG_STATUS_RESPONSE 1011的形式。信用点对应于缓存器。信息1013设成客户机应放弃的信用点的数(负数)或服务器新分配给客户机使用的信用点(额外的缓存器)的数量(正数)。Status1015设成LWIO_NOTIFY_CREDIT(0×1)。Cookie1017设成0。
回到图10,客户机从服务器接收信用点消息。需要客户机在同一连接上用LWIO_OPCODE_CREDIT消息对服务器作出响应。此消息表示释放单个信用点或通知服务器客户机已使用的新分配的信用点数。若在服务器信用点消息中的信息字段包含负数-N(步骤1003),则如步骤1005表明,客户机发送N个LWID_OPCODE_CREDIT消息(对每个需要放弃的信用点一个)。若信息字段是正,则如步骤1007表明,客户机只发送一个LWIO_OPCODE_CREDIT消息。
图11B提供在本发明的实施例中由客户机发送的LWIO_OPCODE_CREDIT消息的图示。LWIO_OPCODE_CREDIT消息1019包括共同的首部1021。OPCODE 1023设成LWIO_OPCODE_CREDIT(0×8)。Flags(标志)1025设成LWIO_HDR_FLAG_INTERRUPT(0×80)。Credits(信用点)1027设成在客户机上挂起的I/O请求的数量。Cookie 1031设成客户机指定的值。若客户机接收到正的增量信用点消息,则Offset(偏置)1029的较高32位设成由服务器分配而客户机未使用的信用点的数量。一旦客户机在此字段返回大于零的值,在发送至少一个负的更新值之前,服务器通常不发送另一正的更新消息。通常客户机返回零。
如上提到,若客户机接收负(-N)增量信用点消息,则需要客户机发送N个信用点消息给服务器,对每个放弃的信用点一个。在此情况Offset 1029的较高32位相应地设成-N,-(N-1),…,-1。当服务器接收其Offset 1029的较高32位被设成-1的客户机信用点消息时,服务器认为客户机已完成处理服务器信用点消息,并适于接收新的信用点消息。
回到图10,如步骤1009所示,服务器通过发送LWIO_MSG_STATUS_RESPONSE消息到客户机完成三路握手。图11C提供在本发明的实施例中由服务器发送的LWIO_MSG_STATUS_RESPONSE 1033的图示。Information(信息)1037设成0。若在由客户机发送的LWIO_OPCODE_CREDIT消息的首部中Offset(偏置)的较高32位大于或等于0,则Status 1039设成0×0,表示成功。若Offset的较高32位设成负数,则为了使客户机能收回信用点,服务器将Status 1039设成LWIO_CREDIT_NOTIFY。Cookie 1035设成由客户机在LWIO_OPCODE_CREDIT消息的共同首部中设置的Cookie值。
关闭
关闭消息用于停止对在注册阶段交换的特定Fid的I/O处理。一旦服务器作出响应,在Fid被回收之前任何新的请求将失败。图12A提供在本发明的实施例中由客户机发送的关闭消息的图示。关闭消息1041包括共同的首部1043。Opcode(操作码)1045设成LWIO_OPCODE_CLOSE(0×4)。Flags(标志)1047设成LWIO_HDR_FLAG_INTERRUPT(0×80)。Credits(信用点)1049被设成在客户机上挂起的I/O请求的数量。Cookie 1053设成客户机指定的值。Fid 1051设成拟关闭的文件的文件id。
服务器用LWIO_MSG_STAUS_RESPONSE作出响应。图12B提供在本发明实施例中由服务器返回的关闭完成LWIO_MSG_STAUS_RESPONSE 1055的图示。Information(信息)1059设成0。Status(状态)1061设成0,表示成功。Cookie 1057设成在客户机关闭请求中设置的Cookie值。
取消
使用取消消息停止对在注册阶段交换的特定Fid的I/O处理。在发出取消时,服务器程序完成请求。然而不能取消的I/O请求仍可在服务器上进行。图13A提供在本发明的实施例中由客户机发出的取消消息的图示。取消消息1063包括共同的首部1065。Opcode 1067设成LWIO_OPCODE_CANCEL(0×5)。Flags(标志)1069设成LWIO_HDR_FLAG-INTERRUPT(0×80)。Credits(信用点)1071设成在客户机上挂起的I/O请求的数量。Cookie 1075设成客户机指定的值。Fid 1073设成发出取消的文件的文件id。
服务器用LWIO_MSG_STATUS_RESPONSE消息完成取消。图13B提供在本发明的实施例中由服务器返回的取消完成LWIO_MSG_STATUS_RESPONSE1077的图示。Information(信息)1081设成0。Status(状态)1083设成零,表示成功。Cookie1079设成在客户机取消请求中设置的Cookie值。
使用读消息从在注册阶段被交换的特定Fid中获取数据。对小于一千字节的读请求,若用户的缓存器未向NIC注册,则数据被接收到内部的预注册的缓存器中,且一旦从服务器接收数据,将复制完成到用户缓存器中。这样做是因为复制少量数据比注册小的用户缓存器更有效。对大的读,注册用户缓存器,并通过RDMA直接接收数据。按照单次读请求的读数据的量受服务器的MaxRdmaWindowSize限制。
图14A和14C提供在本发明的实施例中由客户机发送的读消息的图示,图14A给出非轮询情况而图14C给出轮询情况。读消息1401包括共同的首部1403。长度1405设成拟从相关文件读的字节数。Opcode(操作码)1407设成LWIO_OPCODE_READ(0×0)。Offset(偏置)1417设成文件读开始处的字节位置。Marker(标记)1413设成0×FF。Flags(标志)1409,1427在轮询情况1427设成0×0,或在非轮询情况1409设成LWIO_HDR_FLAG_INTERRUPT(0×80)。Credits(信用点)1411设成在客户机中挂起的I/O请求的数量。Fid 1415设成发出I/O的文件的文件id。DataVa 1419设成要对读数据进行RDMA的位置,而DataMh 1421设成关联的存储器句柄。
在非轮询情况,ImmediateCookie 1423和Cookie 1425设成用户程序指定的值。在此LWIO_MSG_STAUS_RESPONSE的情况下服务器借助常规发送完成读请求,或若读成功,在RDMA的情况下用立即数据完成。因而RDMA写的立即数据设成读请求的ImmediateCookie值。在轮询情况下,IosVa 1431设成对服务器响应状态(LWIO_IO_STATUS_BLOCK)进行RDMA的位置,而IosMh 1429设成关联的存储器句柄。
在非轮询情况下,服务器首先对读数据进行RDMA。然后,服务器用LWIO_MSG_STATUS_RESPONSE作出响应,或服务器能用RDMA读数据发送立即数据,在此情况下立即数据设成读请求的ImmediateCookie值。图14B提供在本发明的实施例中由服务器在非轮询情况下返回的LWIO_MSG_STATUS_RESPONSE 1433的图示。
Information(信息)1437设成读的字节数,Status(状态)1439设成0,表示成功,或设成另外的NTSTATUS,表示失败。Cookie 1435设成由客户机在读消息的首部中设置的Cookie值。
在轮询情况下,服务器首先对读数据进行RDMA。然后服务器用RDMA发送LWIO_IO_STATUS_BLOCK到客户机。图14D提供在本发明的实施例中由服务器返回的LWIO_IO_STATUS_BLOCK 1441的图示。Information(信息)1443设成读的字节数。Status(状态)1445设成0,表示成功,或设成NTSTATUS,表示失败。
使用写消息将数据放入在文件注册期间被交换的特定Fid。使用普通的发送操作发送所有写数据。写的数据量受服务器MaxRecvBufferSize的限制。若客户机发送比此更多数据,连接终止。
图15A和15C提供在本发明的实施例中由客户机发送的写消息的图示,图15A给出非轮询情况而图15C给出轮询情况。写消息1501包括共同的首部1503。长度1505设成拟写数据的字节数。Opcode 1507设成LWIO_OPCODE_WRITE(0×1)。Offset(偏置)1517设成开始写文件数据处的字节位置。Flags(标志)1509、1529在轮询情况1529被设成0×0,或在非轮询情况1509设成LWIO_HDR_FLAG-INTERRUPT(0×8)。Marker(标记)1513设成0×FF。Credit 1511设成在客户机处挂起的I/O请求的数量。Fid 1515设成在其上发出I/O的File(文件)Id。拟写的数据1527紧接在写消息的共同首部1503之后。
在非轮询情况下,Cookie 1525设成客户机指定的值,在轮询情况下,IosVa1533设成对服务器响应状态(LWIO_IO_STTAUS_BLOCK)进行RDMA的位置,而IosMh1531设成相关联的存储器句柄。
在非轮询情况下,服务器用LWIO_MSG_STAUS-RESPONSE响应写消息。图15B提供在本发明的实施例中由服务器返回的LWIO_MSG_STATUS_RESPONSE 1535的图示。信息1539设成被写的字节数。状态1541设成0,表明成功,或设成另一NTSTATUS,表明失败。Cookie 1537设成在写消息的首部由客户机设置的Cookie值。在轮询情况下服务器对LWIO_IO_STATUS_BLOCK进行RDMA。图15D提供在本发明的实施例中由服务器返回的LWIO_IO_STATUS_BLOCK 1543的图示。Information(信息)1545设成被写的字节数。Status(状态)1547设成0表示成功,或设成另一NTSTATUS表示失败。
向量化读
向量化读用于从在注册阶段交换的特定Fid获取数据,并在页的基础上将数据散布到请求者的多个段。所有读数据借助RDMA写发送到请求者,对每个读的段从服务器进行一次RDMA写。从盘读出的数据是连续的。写的数据的量受到在单次请求中描述的目标页的最大数量的限制。此限制是由sizeof(LWIO_RDMA_REGION)划分的服务器MaxRecvBufferSize。下面给出LWIO_REMA_REGION的结构。
图16A和16C提供在本发明的实施例中由客户机发送的向量化读消息的图示,图16A给出非轮询情况而图16C给出轮询情况。读消息1401包括共同首部1603,接着是一个或多个LWIO_REMA-REGION段1605、1607。在首部1603,Length(长度)1609设成拟从文件读取的数据的字节数。Opcode 1611设成LWIO_OPCODE_VEC_READ(0×2)。Offset(偏置)1621设成在开始读文件数据处的字节位置。Flags(标志)1613,1631在轮询情况1631设成0×0,或在非轮询情况1613设成LWIO_HER_FLAG_INTERRUPT(0×80)。Marker(标记)1617设成0×FF。Credits 1615设成在客户机挂起的I/O请求的数量。Fid 1619设成在其上发出I/O的文件Id。NumPages 1623设成跟在共同首部1603后的LWIO_RDMA_REGION的数量。PageSize 1625设成本地页的字节数。
在非轮询情况下,ImmediateCookie 1627和Cookie 1629被设成客户机指定的值。在LWIO_MSG_STATUS_RESPONSE的情况下服务器借助常规发送能完成向量化读请求,或若读成功,在RDMA情况下用直接数据完成。因而RDMA写的立即数据设成读请求的ImmediateCookie 1627值。在轮询情况下,IosVa 1635设成对服务器响应状态(LWIO_IO_STATUS_BLOCK)进行RDMA的位置,而IosMh 1633设成关联的存储器句柄。
共同的首部1603后面紧接足够数目的LWIO_RDMA_REGION段1605、1607以覆盖请求的长度。所有立即段必须是一页大小。最后段可小于一页,但它必须是后端(backend)盘扇区大小的倍数。在本发明的实施例中,LWIO_RDMA_REGION具有如下格式:
    typedef volatile struct {
         PVOID64       DataVa;
         UINT32        DataMh;
         UINT32        Length;
} LWIO_RDMA_REGION;
第一LWIO_RDMA_REGION对应于读的第一PageSize字节,第二LWIO_RDMA_REGION对应于读的第二PageSize字节,等等。DataVa 1637设成标志放置读数据的页开始处的位置。DataMh 1639设成DataVa 1637的存储器句柄。Length(长度)1641设成对除最后区域外所有区域的PageSize 1625,对最后区域长度可以小一些,但必须是后端盘扇区大小的倍数。
在非轮询情况下,服务器首先对读数据进行RDMA。然而服务器能用LWIO_MSG_STATUS_RESPONSE作出响应,或用RDMA读数据发送立即数据,在此情况,立即数被设成读请求的ImmediateCookie值。图16B提供在本发明的实施例中非轮询情况由服务器返回的LWIO_MSG_STATUS_RESPONSE 1643的图示。Information(信息)1647设成读字节数。Status(状态)1649设成0,表示成功,或另一NTSTATUS,表示失败。Cookie 1645设成在向量化读消息的首部由客户机设置的Cookie值。
在轮询情况下,服务器首先对读数据进行RDMA,然后服务器对LWIO_IO_STATUS_BLOK进行RDMA。图16D提供在本发明的实施例中由服务器返回的LWIO_IO_STATUS_BLOCK 1651的图示。Information(信息)1653设成读字节数。Status(状态)1655设成0,表示成功,或设成另一NTSTATUS,表示失败。向量化写
向量化写消息用于完成对在文件注册中交换的特定Fid的集成的写。所有写数据使用普通发送操作发送。写的数据量受服务器的MaxRecvBufferSize的限制。若客户机发送多于此的数据,连接终止。
图17A、17B和17C提供在本发明的实施例中由客户机发送的向量化写消息的图示,图17A示出非轮询不崩溃情况,图17B示出非轮询崩溃情况,图17C示出轮询崩溃情况。
写消息1701包括共同首部1703,紧接着是拟写的数据1705。在共同首部1703,长度1707设成被写的数据的字节数。Opcode 1709设成LWIO_OPCODE_WRITE(0×3)。Offset(偏置)1719设成在开始写文件数据处的字节位置。Marker(标记)1715设成0×FF。Credit(信用点)1713设成在客户机上挂起I/O信用点。Fid 1717设成发出I/O处的文件Id。
Flags(标志)1711、1721、1727设成0×0,表示轮询1727,或否则设成LWIO_HDR_FLAG_INTERRUPT(0×80)1711。在后面情况下,标志也能包括LWIO_HDR_FLAG_INTERRUPT 1721,以表明在写的所有页面包含同样数据,所以只发送单个页数据。这时试图使重复数据的传输最小化的优化。若注册的文件标志包括FILE_NO_INTERMEDIATE_BUFFERING(0×8)和在认证阶段交换的PageSize互相成偶数倍,则只能使用LWIO_HDR_FLAG_COLLAPSE。在崩溃的I/O的情况下,NumPage 1723设成I/O覆盖的数据的页数。由于Length(长度)参数,最后页面可以是部分的。PageSize 1725设成本地页面字节数。在轮询情况下,IosVa 1731设成拟用RDMA传输的服务器响应状态(LWIO_IO_STATUS_BLOCK)的位置。IosMh 1729与存储器句柄相关联。
在非轮询情况下,对非崩溃和崩溃的I/O情况,服务器用LWIO_MSG_STATUS_RESPONSE对写消息作出响应。
图17D提供在本发明的实施例中由服务器返回的LWIO_MSG_STATUS_RESPONSE1733的图示。Information(信息)1737设成写的字节数。Status(状态)1739设成0,表示成功,或设成另一NTSTATUS,表示失败。Cookie 1735设成由客户机在写消息首部设置的Cookie值。
在轮询情况下,对于非崩溃和崩溃的I/O,服务器对LWIO_IO_STATS_BLOCK进行RDMA。图17E提供在本发明的实施例中由服务器返回的LWIO_IO_STATS_BLOCK1741的图示。Information(信息)1743设成写的字节数。Status(状态)1745设成0,表示成功,或设成另一NTSTATUS,表示失败。
结论
虽然已图示及描述了本发明的图示实施例,然而可以理解,在不偏离本发明的情况可作出各种改变。类似地,这里描述的任何处理步骤可与其它步骤互换以达到同样结果。此外,上述的图示例子不是包括一切或试图将本发明限于描述的精确形式。相反,其目的是覆盖落在本发明的精神及范围内的所有修改、更换、结构和等价技术方案。

Claims (24)

1.一种用于将输入/输出(I/O)任务从第一计算机下传的第二计算机的系统,其特征在于,包括:
在所述第一计算机上运行的客户机;
在所述第二计算机上运行的服务器;以及
链接所述第一计算机和第二计算机的至少一个RDMA通道,其中,所述第一计算机和第二计算机按包括网络发现阶段和I/O处理阶段的协议进行通信。
2.如权利要求1所述的系统,其特征在于,在所述I/O处理阶段,读操作是使用RDMA来实现的,而写操作是使用发送操作来实现的。
3.如权利要求1所述的系统,其特征在于,所述协议是结合第二网络协议来使用的。
4.如权利要求3所述的系统,其特征在于,所述第二协议是SMB。
5.如权利要求3所述的系统,其特征在于,所述第二协议是CIFS。
6.一种计算机可执行指令和计算机可读数据的计算机可读介质,包括在将输入/输出(I/O)任务从第一计算机下传到第二计算机的系统中使用的计算机程序产品,其特征在于,所述系统包括:
链接所述第一计算机和第二计算机的至少一个RDMA通道,其中,所述第一计算机和第二计算机按包括网络发现阶段和I/O处理阶段的协议进行通信。
7.一种用于将输入/输出(I/O)任务从第一计算机下传到第二计算机的方法,其特征在于,包括:
由所述第一计算机上的客户机和所述第二计算机上的程序程序发现一个或多个共享的能进行RDMA的提供者;以及
由所述客户机发送I/O处理请求,以供所述第二计算机上的服务器完成。
8.如权利要求7所述的方法,其特征在于,发现一个或多个共享的能进行RDMA的提供者还包括:
由所述客户机从所述服务器获得服务器请求继续键;
由所述客户机打开通向所述服务器的管道;
由所述客户机经过所述管道发送协商请求;以及
由所述服务器经过所述通道发送包括共同提供者的最小列表的协商响应。
9.如权利要求7所述的方法,其特征在于,还包括:
由所述客户机创建经过共享的能进行RDMA的提供者到所述服务器的RDMA连接;以及
由所述客户机及所述服务器认证所述RDMA连接。
10.如权利要求9所述的方法,其特征在于,还包括:
由所述客户机通过所述RDMA连接向所述服务器注册一个或多个文件。
11.如权利要求10所述的方法,其特征在于,所述注册一个或多个文件包括:
由所述客户机向所述服务器发送注册文件消息;以及
由所述服务器向所述客户机发送注册文件完成消息。
12.如权利要求9所述的方法,其特征在于,所述认证RDMA连接还包括:
由所述客户机向所述服务器发送包括密钥的认证请求消息;
若所述密钥匹配以前由所述服务器向所述客户机发送的密钥,则由所述服务器向所述客户机发送认证响应消息。
13.如权利要求12所述的方法,其特征在于,所述之前的密钥是包含在由所述服务器向所述客户机发送的协商响应消息中的密钥。
14.如权利要求12所述的方法,其特征在于,还包括:
由所述服务器向所述客户机发送一状态响应消息,以完成所述认证。
15.如权利要求7所述的方法,其特征在于,所述发送I/O处理请求包括由所述客户机发送下列之一:(a)关闭请求,(b)取消请求,(c)读请求,(d)写请求,(e)向量化读请求,和(f)向量化写请求。
16.如权利要求15所述的方法,其特征在于,还包括:
由所述服务器通过使用RDMA写操作发送数据来完成所述读请求和所述向量化读请求;以及
由所述服务器通过使用常规发送操作发送数据来完成所述写请求和所述向量化写请求。
17.如权利要求15所述的方法,其特征在于,所述向量化写请求包括所述请求的首部的崩溃标志。
18.如权利要求7所述的方法,其特征在于,发送所述I/O请求还包括表明所述服务器是否应以轮询模式完成。
19.如权利要求18所述的方法,其特征在于,表明是否以轮询模式完成包括通过在所述I/O处理请求的首部中设置中断标志来表明不应以轮询模式完成。
20.如权利要求18所述的方法,其特征在于,还包括:
若所述客户机表明不应以轮询模式完成,则由所述服务器借助RDMA传输通过向所述第一计算机发送状态块来完成所述I/O处理请求。
21.如权利要求18所述的方法,其特征在于,还包括:
若所述客户机表明应以轮询模式完成,且所述客户机已向所述服务器发送中断请求消息,则由所述服务器借助普通发送向所述客户机发送中断响应消息。
22.如权利要求7所述的方法,其特征在于,所述发送I/O处理请求还包括在所述请求的首部指定信用点数。
23.一种存储用于实现将输入/输出(I/O)任务从第一计算机下传到第二计算机的方法的计算可执行指令的计算机可读介质,所述方法包括:
由所述第一计算机上的客户机和所述第二计算机上的服务器发现一个或多个共享的能进行RDMA的提供者;以及
由所述客户机发送I/O处理请求,以供所述第二计算机上的服务器完成。
24.一种用于管理输入/输出下传协议中的缓存器的方法,其特征在于,所述方法包括:
由服务器向客户机发送包括设成信用点数的信息字段的增量信用点消息,其中,若所述数字是负数-N,则所述服务器请求所述客户机收回N个信用点;
若所述信用点数是负数-N,则由所述客户机向所述服务器发送N个信用点消息,而否则由所述客户机向所述服务发送一信用点消息;以及
对每个由所述客户机发送的信用点消息,由所述服务器向所述客户机发送状态响应消息。
CN2004800013330A 2003-12-31 2004-07-26 用于将输入/输出i/o任务从第一计算机下传到第二计算机的系统和方法 Expired - Fee Related CN101375263B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/749,959 2003-12-31
US10/749,959 US7698361B2 (en) 2003-12-31 2003-12-31 Lightweight input/output protocol
PCT/US2004/024026 WO2005067430A2 (en) 2003-12-31 2004-07-26 Lightweight input/output protocol

Publications (2)

Publication Number Publication Date
CN101375263A true CN101375263A (zh) 2009-02-25
CN101375263B CN101375263B (zh) 2012-06-20

Family

ID=34701133

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004800013330A Expired - Fee Related CN101375263B (zh) 2003-12-31 2004-07-26 用于将输入/输出i/o任务从第一计算机下传到第二计算机的系统和方法

Country Status (17)

Country Link
US (2) US7698361B2 (zh)
EP (1) EP1700264A4 (zh)
JP (1) JP4564970B2 (zh)
KR (1) KR101084897B1 (zh)
CN (1) CN101375263B (zh)
AU (1) AU2004279182B2 (zh)
BR (1) BRPI0406413A (zh)
CA (1) CA2501521A1 (zh)
IL (1) IL168595A (zh)
MX (1) MXPA05006638A (zh)
MY (2) MY143575A (zh)
NO (1) NO20052054L (zh)
NZ (2) NZ540173A (zh)
RU (2) RU2388039C2 (zh)
TW (2) TW200522630A (zh)
WO (1) WO2005067430A2 (zh)
ZA (1) ZA200503161B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104202391A (zh) * 2014-08-28 2014-12-10 浪潮(北京)电子信息产业有限公司 共享系统地址空间的非紧耦合系统间的rdma通信方法
CN106411767A (zh) * 2011-06-29 2017-02-15 微软技术许可有限责任公司 通过远程直接存储器访问的任意大小的传输操作
US10630781B2 (en) 2011-09-09 2020-04-21 Microsoft Technology Licensing, Llc SMB2 scaleout

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529778B1 (en) 2001-12-12 2009-05-05 Microsoft Corporation System and method for providing access to consistent point-in-time file versions
US7698361B2 (en) * 2003-12-31 2010-04-13 Microsoft Corporation Lightweight input/output protocol
US7617256B2 (en) * 2004-07-19 2009-11-10 Microsoft Corporation Remote file updates through remote protocol
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
US8316129B2 (en) 2005-05-25 2012-11-20 Microsoft Corporation Data communication coordination with sequence numbers
US7549037B1 (en) * 2005-09-01 2009-06-16 Symantec Operating Corporation Efficient off-host backup of a file set clone
US8151116B2 (en) * 2006-06-09 2012-04-03 Brigham Young University Multi-channel user authentication apparatus system and method
ATE545248T1 (de) * 2006-07-27 2012-02-15 Contextream Ltd Verteiltes edge-netzwerk
US7836143B2 (en) 2007-04-25 2010-11-16 International Business Machines Corporation Message communications of particular message types between compute nodes using DMA shadow buffers
US8325633B2 (en) 2007-04-26 2012-12-04 International Business Machines Corporation Remote direct memory access
US7827024B2 (en) 2007-05-09 2010-11-02 International Business Machines Corporation Low latency, high bandwidth data communications between compute nodes in a parallel computer
US7966618B2 (en) * 2007-05-29 2011-06-21 International Business Machines Corporation Controlling data transfers from an origin compute node to a target compute node
US8037213B2 (en) 2007-05-30 2011-10-11 International Business Machines Corporation Replenishing data descriptors in a DMA injection FIFO buffer
US7921428B2 (en) 2007-06-18 2011-04-05 International Business Machines Corporation Multi-registration of software library resources
US8478834B2 (en) 2007-07-12 2013-07-02 International Business Machines Corporation Low latency, high bandwidth data communications between compute nodes in a parallel computer
US8018951B2 (en) 2007-07-12 2011-09-13 International Business Machines Corporation Pacing a data transfer operation between compute nodes on a parallel computer
US7805546B2 (en) * 2007-07-27 2010-09-28 International Business Machines Corporation Chaining direct memory access data transfer operations for compute nodes in a parallel computer
US8959172B2 (en) 2007-07-27 2015-02-17 International Business Machines Corporation Self-pacing direct memory access data transfer operations for compute nodes in a parallel computer
US8929372B2 (en) * 2007-10-30 2015-01-06 Contextream Ltd. Grid router
US8467295B2 (en) 2008-08-21 2013-06-18 Contextream Ltd. System and methods for distributed quality of service enforcement
IT1391040B1 (it) * 2008-10-01 2011-10-27 St Microelectronics Srl Procedimento per eseguire operazioni in reti di comunicazione, rete di comunicazione e prodotto informatico relativi
US8521821B2 (en) * 2009-03-17 2013-08-27 Brigham Young University Encrypted email based upon trusted overlays
US8949453B2 (en) 2010-11-30 2015-02-03 International Business Machines Corporation Data communications in a parallel active messaging interface of a parallel computer
US8806030B2 (en) * 2010-12-06 2014-08-12 Microsoft Corporation Multichannel connections in file system sessions
US8631277B2 (en) 2010-12-10 2014-01-14 Microsoft Corporation Providing transparent failover in a file system
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
FR2973185B1 (fr) * 2011-03-22 2013-03-29 Sagem Defense Securite Procede et dispositif de connexion a un reseau de haute securite
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US8949328B2 (en) 2011-07-13 2015-02-03 International Business Machines Corporation Performing collective operations in a distributed processing system
US8788579B2 (en) 2011-09-09 2014-07-22 Microsoft Corporation Clustered client failover
WO2012167531A1 (zh) * 2011-10-27 2012-12-13 华为技术有限公司 一种数据快速分发方法和装置
US8930962B2 (en) 2012-02-22 2015-01-06 International Business Machines Corporation Processing unexpected messages at a compute node of a parallel computer
CN102708062A (zh) * 2012-04-10 2012-10-03 深圳市佳信捷电子有限公司 基于数据块的多媒体存储方法和装置
US9111081B2 (en) 2012-06-26 2015-08-18 International Business Machines Corporation Remote direct memory access authentication of a device
US9251201B2 (en) * 2012-12-14 2016-02-02 Microsoft Technology Licensing, Llc Compatibly extending offload token size
US9986028B2 (en) * 2013-07-08 2018-05-29 Intel Corporation Techniques to replicate data between storage servers
AU2013245529A1 (en) 2013-10-18 2015-05-07 Cisco Technology, Inc. Network Interface
US20150326684A1 (en) * 2014-05-07 2015-11-12 Diablo Technologies Inc. System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access
RU2599937C1 (ru) * 2015-03-26 2016-10-20 Общество с ограниченной ответственностью "Научно-производственное предприятие "Цифровые решения" Способ предотвращения сбоев в локальной компьютерной сети, вызванных возникновением неправильно настроенных узлов
US10257273B2 (en) * 2015-07-31 2019-04-09 Netapp, Inc. Systems, methods and devices for RDMA read/write operations
US9952797B2 (en) 2015-07-31 2018-04-24 Netapp, Inc. Systems, methods and devices for addressing data blocks in mass storage filing systems
RU2638781C2 (ru) * 2016-09-29 2017-12-15 Общество с ограниченной ответственностью "ГРЭК" Способ организации прямого доступа в память при передаче информации между физическими объектами
JP2019016101A (ja) 2017-07-05 2019-01-31 富士通株式会社 情報処理システム、情報処理装置、および情報処理システムの制御方法
US10523675B2 (en) * 2017-11-08 2019-12-31 Ca, Inc. Remote direct memory access authorization
RU2731321C2 (ru) 2018-09-14 2020-09-01 Общество С Ограниченной Ответственностью "Яндекс" Способ определения потенциальной неисправности запоминающего устройства
RU2714219C1 (ru) 2018-09-14 2020-02-13 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования передачи операций ввода/вывода
RU2718215C2 (ru) 2018-09-14 2020-03-31 Общество С Ограниченной Ответственностью "Яндекс" Система обработки данных и способ обнаружения затора в системе обработки данных
RU2721235C2 (ru) 2018-10-09 2020-05-18 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для маршрутизации и выполнения транзакций
RU2714602C1 (ru) 2018-10-09 2020-02-18 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для обработки данных
RU2711348C1 (ru) 2018-10-15 2020-01-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для обработки запросов в распределенной базе данных
CN109377778B (zh) * 2018-11-15 2021-04-06 浪潮集团有限公司 一种基于多路rdma和v2x的协同自动驾驶系统及方法
RU2714373C1 (ru) 2018-12-13 2020-02-14 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования выполнения операций ввода/вывода
RU2749649C2 (ru) 2018-12-21 2021-06-16 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для планирования обработки операций ввода/вывода
RU2720951C1 (ru) 2018-12-29 2020-05-15 Общество С Ограниченной Ответственностью "Яндекс" Способ и распределенная компьютерная система для обработки данных
RU2746042C1 (ru) 2019-02-06 2021-04-06 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для передачи сообщения

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10612A (en) * 1854-03-07 Seaman
WO1995003586A1 (en) * 1993-07-21 1995-02-02 Persistence Software, Inc. Method and apparatus for generation of code for mapping relational data to objects
US6014681A (en) * 1997-07-15 2000-01-11 Microsoft Corporation Method for saving a document using a background save thread
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6219761B1 (en) * 1998-05-06 2001-04-17 International Business Machines Corporation Load/store assist engine
US6356863B1 (en) * 1998-09-08 2002-03-12 Metaphorics Llc Virtual network file server
AU7624100A (en) * 1999-09-29 2001-04-30 Cyberset Technologies, Inc. Method and apparatus for an active file system
US6718370B1 (en) * 2000-03-31 2004-04-06 Intel Corporation Completion queue management mechanism and method for checking on multiple completion queues and processing completion events
US7103626B1 (en) * 2000-05-24 2006-09-05 Hewlett-Packard Development, L.P. Partitioning in distributed computer system
JP4192416B2 (ja) * 2000-06-08 2008-12-10 株式会社日立製作所 計算機システムおよびそのデータ転送方法
US7313614B2 (en) * 2000-11-02 2007-12-25 Sun Microsystems, Inc. Switching system
WO2002069166A1 (en) * 2000-11-02 2002-09-06 Pirus Networks Switching system
US6891635B2 (en) * 2000-11-30 2005-05-10 International Business Machines Corporation System and method for advertisements in web-based printing
US6976174B2 (en) * 2001-01-04 2005-12-13 Troika Networks, Inc. Secure multiprotocol interface
US6898638B2 (en) * 2001-01-11 2005-05-24 International Business Machines Corporation Method and apparatus for grouping data for transfer according to recipient buffer size
US6748502B2 (en) * 2001-01-12 2004-06-08 Hitachi, Ltd. Virtual volume storage
US6898740B2 (en) * 2001-01-25 2005-05-24 Hewlett-Packard Development Company, L.P. Computer system having configurable core logic chipset for connection to a fault-tolerant accelerated graphics port bus and peripheral component interconnect bus
US7401126B2 (en) * 2001-03-23 2008-07-15 Neteffect, Inc. Transaction switch and network interface adapter incorporating same
US20020144037A1 (en) * 2001-03-29 2002-10-03 Bennett Joseph A. Data fetching mechanism and method for fetching data
US8051212B2 (en) * 2001-04-11 2011-11-01 Mellanox Technologies Ltd. Network interface adapter with shared data send resources
US20020184362A1 (en) * 2001-05-31 2002-12-05 International Business Machines Corporation System and method for extending server security through monitored load management
US6832297B2 (en) * 2001-08-09 2004-12-14 International Business Machines Corporation Method and apparatus for managing data in a distributed buffer system
US7231486B2 (en) * 2001-08-24 2007-06-12 Intel Corporation General input/output architecture, protocol and related methods to support legacy interrupts
US6895590B2 (en) * 2001-09-26 2005-05-17 Intel Corporation Method and system enabling both legacy and new applications to access an InfiniBand fabric via a socket API
US20030065856A1 (en) * 2001-10-03 2003-04-03 Mellanox Technologies Ltd. Network adapter with multiple event queues
US20030145230A1 (en) * 2002-01-31 2003-07-31 Huimin Chiu System for exchanging data utilizing remote direct memory access
US7487264B2 (en) * 2002-06-11 2009-02-03 Pandya Ashish A High performance IP processor
US20040003069A1 (en) * 2002-06-28 2004-01-01 Broadcom Corporation Selective early drop method and system
US6760793B2 (en) * 2002-07-29 2004-07-06 Isys Technologies, Inc. Transaction credit control for serial I/O systems
US7107385B2 (en) * 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7051140B2 (en) * 2002-11-13 2006-05-23 International Business Machines Corporation Connector that enables aggregation of independent system resources across PCI/PCI-X bus and interlocked method for aggregating independent system resources across PCI/PCI-X bus
US7366092B2 (en) * 2003-10-14 2008-04-29 Broadcom Corporation Hash and route hardware with parallel routing scheme
US7457861B1 (en) * 2003-12-05 2008-11-25 Unisys Corporation Optimizing virtual interface architecture (VIA) on multiprocessor servers and physically independent consolidated NICs
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
US8549170B2 (en) * 2003-12-19 2013-10-01 Nvidia Corporation Retransmission system and method for a transport offload engine
US20050137966A1 (en) * 2003-12-19 2005-06-23 Munguia Peter R. Flow control credit synchronization
US7698361B2 (en) * 2003-12-31 2010-04-13 Microsoft Corporation Lightweight input/output protocol

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106411767A (zh) * 2011-06-29 2017-02-15 微软技术许可有限责任公司 通过远程直接存储器访问的任意大小的传输操作
US10284626B2 (en) 2011-06-29 2019-05-07 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
CN106411767B (zh) * 2011-06-29 2019-08-13 微软技术许可有限责任公司 通过远程直接存储器访问的传输操作的方法、系统和介质
US10630781B2 (en) 2011-09-09 2020-04-21 Microsoft Technology Licensing, Llc SMB2 scaleout
CN104202391A (zh) * 2014-08-28 2014-12-10 浪潮(北京)电子信息产业有限公司 共享系统地址空间的非紧耦合系统间的rdma通信方法
CN104202391B (zh) * 2014-08-28 2018-09-25 浪潮(北京)电子信息产业有限公司 共享系统地址空间的非紧耦合系统间的rdma通信方法

Also Published As

Publication number Publication date
CA2501521A1 (en) 2005-06-30
RU2009109685A (ru) 2010-09-27
US20050198113A1 (en) 2005-09-08
AU2004279182A1 (en) 2005-07-14
NO20052054D0 (no) 2005-04-26
JP2007527057A (ja) 2007-09-20
MY143575A (en) 2011-05-31
CN101375263B (zh) 2012-06-20
EP1700264A4 (en) 2011-06-15
MXPA05006638A (es) 2006-02-22
NO20052054L (no) 2005-06-10
AU2004279182B2 (en) 2010-03-11
TW200522630A (en) 2005-07-01
RU2005120695A (ru) 2006-01-20
TW201240413A (en) 2012-10-01
MY158076A (en) 2016-08-30
WO2005067430A2 (en) 2005-07-28
ZA200503161B (en) 2008-01-30
EP1700264A2 (en) 2006-09-13
BRPI0406413A (pt) 2005-10-04
KR101084897B1 (ko) 2011-11-17
IL168595A (en) 2011-02-28
KR20060112178A (ko) 2006-10-31
NZ540173A (en) 2009-11-27
WO2005067430A3 (en) 2008-04-24
US7698361B2 (en) 2010-04-13
NZ580159A (en) 2011-01-28
RU2388039C2 (ru) 2010-04-27
JP4564970B2 (ja) 2010-10-20
US20100161855A1 (en) 2010-06-24

Similar Documents

Publication Publication Date Title
CN101375263B (zh) 用于将输入/输出i/o任务从第一计算机下传到第二计算机的系统和方法
US10165051B2 (en) High performance IP processor using RDMA
TWI244288B (en) Network interface and protocol
US6917987B2 (en) Methodology and mechanism for remote key validation for NGIO/InfiniBand™ applications
US7502826B2 (en) Atomic operations
US6339787B1 (en) Apparatus and method for increasing speed in a network file/object oriented server/client system
WO2020171988A1 (en) Rdma transport with hardware integration
US6615275B2 (en) System for increasing data access in network having compression device for determining and controlling data/object compression based on predetermined maximum percentage of CPU processing capacity
WO2020171989A1 (en) Rdma transport with hardware integration and out of order placement
US20070192431A1 (en) Method and apparatus for service oriented architecture infrastructure switch
US20130110904A1 (en) Method and apparatus to forward shared file stored in block storages
DeBergalis et al. Keith A. Smith, Sun Microsystems

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120620

Termination date: 20130726