CN106411767A - 通过远程直接存储器访问的任意大小的传输操作 - Google Patents

通过远程直接存储器访问的任意大小的传输操作 Download PDF

Info

Publication number
CN106411767A
CN106411767A CN201610903829.1A CN201610903829A CN106411767A CN 106411767 A CN106411767 A CN 106411767A CN 201610903829 A CN201610903829 A CN 201610903829A CN 106411767 A CN106411767 A CN 106411767A
Authority
CN
China
Prior art keywords
data
smb
packet
field
request
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
CN201610903829.1A
Other languages
English (en)
Other versions
CN106411767B (zh
Inventor
T·M·塔尔佩伊
G·R·卡拉莫
D·M·克鲁斯
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 Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN106411767A publication Critical patent/CN106411767A/zh
Application granted granted Critical
Publication of CN106411767B publication Critical patent/CN106411767B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/39Credit based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/72Admission control; Resource allocation using reservation actions during connection setup
    • H04L47/722Admission control; Resource allocation using reservation actions during connection setup at the destination endpoint, e.g. reservation of terminal resources or buffer space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques

Abstract

此处所描述的各实施例一般涉及用于在RDMA传输之上实现数据操作的协议,例如,SMB的版本。在各实施例中,各系统和方法使用指定用于协商RDMA连接并用于使用经协商的通信来传送SMB2数据的新消息的协议定义。新协议消息可包括新头部信息以确定消息大小、消息数和用于通过RDMA来发送SMB2数据的其他消息。该头部信息用于适应RDMA和SMB2之间的消息大小要求方面的差异。SMB直通(SMB Direct)协议允许SMB2数据被分段成多个单独的RDMA消息,接收方可随后将这些RDMA消息逻辑地串接成单个SMB2请求或SMB2响应。SMB直通协议还可允许SMB2经由高效的RDMA直通放置来传送应用数据并在该传送完成时用信号表示该应用数据的可用性。

Description

通过远程直接存储器访问的任意大小的传输操作
本申请是申请日为2012.6.6,申请号为201280032558.7(国际申请号为PCT/US2012/041049),名为“通过远程直接存储器访问的任意大小的传输操作”申请的分案申请。
背景
诸如服务器消息块(SMB)或其版本(例如,SMB2)之类的文件访问协议可以用作主要用于在网络上的各节点之间提供对文件以及杂项通信的共享访问的应用层网络协议。在历史上,SMB或SMB2在传输控制协议(TCP)传输和传统的网络基础结构之上操作。尽管SMB2作为针对通用远程文件访问的协议已非常成功,但SMB2尚未广泛适用于要求高吞吐量和低等待时间文件输入/输出的远程文件访问。
远程直接存储器访问(RDMA)是从一个计算机的存储器进入另一计算机的存储器而不涉及该另一计算机的操作系统的直接存储器访问。该直接传送准许通过网络的高吞吐量、低等待时间数据传输,这在性能关键的部署中尤其有用。在应用执行RDMA读或写请求时,使用有RDMA能力的网络适配器将应用数据从源存储器缓冲区直接递送到目的地存储器缓冲区,在该传输中这些有RDMA能力的网络适配器不涉及中央存储单元(CPU)(也被简称为处理器)或操作系统。这些RDMA传输会减少等待时间并允许快速消息传输。不幸地是,RDMA的这些好处尚未被使用SMB2的系统利用,因为SMB2尚未用RDMA来操作。
虽然本背景技术中着眼于特定的问题,但本发明决不旨在限于解决那些特定问题。
概述
各实施例一般涉及将诸如SMB2操作(或,例如SMB操作的其他版本或文件访问协议操作)之类的数据操作实现在RDMA传输之上的协议和处理。在各实施例中,该协议定义指定用于协商RDMA连接以及用于例如使用经协商的连接来传送SMB2数据的新消息。在一实施例中,用于将SMB2操作实现在RDMA传输之上的协议是SMB直通(SMB Direct)协议。然而,其他实施例提供其他SMB协议、SMB协议版本或其他数据操作协议,而不偏离本公开的精神和范围。根据一实施例,新的SMB直通消息可包括新的头部信息,该新的头部信息可包括但不限于,以下各项中的一个或多个:CreditsRequested(请求的积分)、CreditsGranted(授予的积分)、Flag(标志)、Reserved(保留的)、RemainingDataLength(剩余数据长度)、DataOffset(数据偏移)、和DataLength(数据长度)。由于RDMA传输支持接收仅由接收方固定的大小的消息,而SMB2消息的大小可以在从大约一百字节到超过兆字节的非常大消息的非常大的范围内改变,因此头部信息被使用。SMB2协议被修改以识别RDMA能力的存在,而SMB直通协议将新的层添加到联网栈,以允许多个单独的RDMA消息被逻辑地串接成单个请求或响应以适应RDMA消息的固定大小限制以及SMB2消息收发所固有的不确定大小要求两者。对SMB2协议的改变以及对SMB直通协议的添加允许数据在各对等体的存储器之间的直接传送。在各实施例中,SMB2服务器可使用RDMA来进行从客户机的存储器读取或向客户机的存储器写入,以执行对数据的直接放置。服务器执行到客户机的RDMA写以完成SMB2读,并执行RDMA读以完成SMB2写。尽管SMB直通协议允许SMB/SMB2数据在对等体的存储器之间的直接传送,但根据各实施例,SMB直通协议可适合于其他协议。根据各实施例,SMB直通协议的双向、对等特性使其本身适于多种类型的数据传送操作。
RDMA传输还再次用仅由接收方固定的值来限制任何时刻可被处理的消息的数目。为了符合RDMA的这个要求,各实施例为各对等体提供在指定发送方可向接收方发送的RDMA消息的数目的协议头部中交换或分配每一相互对等体所请求的并向每一相互对等体授予的“积分”(其为数值)。积分是动态的,并由每一对等体独立地管理。用于管理积分并使足够的积分可用于执行SMB2交换的规则由在此公开的各实施例中的协议来定义。
在各实施例中,提供独立、双向的积分可准许每一个对等体发送请求和响应,而无需接收对等体的显式协商或先验知识和同意。与RDMA相关联的顺序发送可准许交换出乎意料的大的消息,而不会引起RDMA处理中的错误,也不会在这种情况发生时采取较不高效的协商传送。
根据各实施例,附加消息可用于协商协议版本和其他参数。协商请求消息可包括例如以下字段:CreditsRequested(请求的积分)、Reserved(保留的)、MinVersion(最小版本)、MaxVersion(最大版本)、OutboundSendSize(出站发送大小)、MaxInboundSendSize(最大入站发送大小)等。相应地,响应于该请求消息而发送的协商响应消息可包括例如CreditsRequested(请求的积分)、CreditsGranted(授予的积分)、Version(版本)、Reserved(保留的)、Status(状态)、OutboundSendSize(出站发送大小)、InboundSendSize(入站发送大小)等字段。这些参数支持对能力的协商、对资源的端到端优化、和与该协议的未来增强版本的兼容性。
提供本概述是为了以简化的形式介绍将在以下具体实施例中进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也决不旨在用于限制所要求保护的主题的范围。
附图简述
可以参考附图来更容易地描述本发明的各实施例,附图中相同的数字指示相同的项。
图1示出了根据本公开的各实施例的用于通过RDMA来交换SMB2消息的环境或系统的示例逻辑表示。
图2A描绘了根据本公开的各实施例的用于通过RDMA来发送SMB2消息的客户机系统的示例逻辑表示。
图2B示出了根据本公开的各实施例的用于通过RDMA来接收SMB2消息的服务器系统的逻辑表示。
图3A-3E示出了根据本公开的各实施例的在通过RDMA使用SMB2消息交换数据时发送或接收的消息的逻辑表示。
图4A-4C描绘了解说根据本公开的各实施例的用于通过RDMA使用SMB2协商通信的过程的操作特性的流程图。
图5A-5D示出了解说根据本公开的各实施例的用于通过RDMA使用SMB2交换数据的过程的操作特性的流程图。
图6解说了描绘根据本公开的各实施例的用于使用RDMA直接数据传送来交换数据的过程的操作特性的流程图。
图7描绘其上可以实现本公开的各实施例的示例计算系统。
详细描述
本发明现将参考其中示出了各具体实施例的附图来更完整地描述各示例实施例。然而,其它方面能以许多不同的形式来实现,并且在本发明中包括具体的实施例不应被解释为将这些方面限于在此所述的各实施例。相反,包括附图中描绘的各实施例是为了提供全面和完整且将预期的范围完全地传达给本领域技术人员的公开。虚线可用于示出可选组件或操作。
各实施例一般涉及用于通过RDMA连接来交换SMB2数据的系统、方法和协议。RDMA提供传输数据方面的优点。例如,RDMA作出从一个存储器到另一设备或系统的存储器的传送。这些传送并不涉及处理器,并且因此减少了传输数据时所涉及的开销。此外,由于传输管理中不涉及处理器,因此RDMA用更少的时钟周期来传送数据。因此,RDMA提供低等待时间、高带宽的连接。
一般来说,SMB的版本(诸如,SMB2)是用于在网络上的各节点之间提供对文件和杂项通信的共享访问的应用层网络协议。SMB和SMB2因此是文件访问操作协议的示例。SMB2允许在于客户机和服务器之间交换消息时传送数据。此处的某些实施例的描述涉及SMB2。然而,在其他实施例中,SMB的任何版本或其他文件访问操作协议可被使用,而不偏离本公开的精神和范围。
一般由于操作中的差异,当前SMB2(或SMB)当前不通过RDMA来操作,而反倒使用TCP来传输数据。本文的各实施例创建了用于通过有RDMA能力的网络协议来交换SMB2消息的系统和协议。首先,客户机和/或服务器(其可被统称为对等体)使用SMB2的分量来发现彼此的能力或才能。在一实施例中,由客户机发送询问有关服务器的信息的请求。响应服务器可以用与以下有关的信息来回答:该服务器所具有的网络接口卡(NIC)的数目、这些NIC的因特网协议(IP)地址、这些NIC的速度,这些NIC是否有RDMA能力和/或可能IP地址。在各实施例中,询问客户机可使用该信息来确定如何与该服务器对接。
根据本公开的各实施例,如果服务器有RDMA能力,则有RDMA能力的客户机可随后与该服务器协商RDMA连接。新接口(在各实施例中称为RDMA接口)是有RDMA能力的网络适配器和其他系统组件(包括SMB客户机)之间的接口。此外,新模块被添加到被称为SMB直通客户机/服务器的栈。首先,SMB直通客户机可能响应于能力请求而通过保留存储器缓冲区的至少一部分来预先发布用于从其他对等体接收消息的接收。SMB直通客户机可随后发送SMB直通协商请求包。SMB直通协商请求启动在各对等体之间建立SMB直通连接的过程。根据各实施例,SMB直通协商请求包括定义RDMA连接将如何起作用的一个或多个字段。
在各实施例中,SMB直通协商请求的部分是对“积分”的请求。各积分是对接收对等体的存储器缓冲区中的空间的分配。由于RDMA直接从一个存储器传送到另一存储器,接收对等体在存储器缓冲区中保留发送对等体可放置所传输的数据的空间。存储器缓冲区被以块(例如,1K字节块)为单位进行分配。在各实施例中,分配是固定的,因为该块大小在SMB直通连接已被建立后就不会改变。在其他实施例中,分配不是固定的,其中块大小可改变。在分配是固定的情况下,到存储器缓冲区的任何传输都不可超过块大小。为了传送具有大于块大小的大小的SMB2数据,发送方发送被存储在存储器缓冲区的两个或更多分配中的两个或更多数据包。为了保留存储器分配,发送对等体请求积分,其中所请求的积分的数目可以通过本地策略来管控,并且不一定受到消息的组合的影响。每一积分表示存储器缓冲区的一个块,并因此表示请求方可发送给其他对等体的消息。
在本公开的各实施例中,服务器可以将响应(例如,SMB直通协商响应)发送给请求方。这个SMB直通协商响应还包括定义RDMA连接的各个字段。响应于该请求,SMB直通协商响应将多个积分提供给客户机。此外,SMB直通协商响应还可要求在客户机的存储器缓冲区中保留分配的积分。在各实施例中,SMB直通协商请求和SMB直通协商响应的交换建立RDMA连接。此后,可通过该连接来交换SMB2数据。
根据各实施例,通过RDMA连接来交换SMB2数据包括传送至少一个数据包。如果正被发送的SMB2数据小于块大小,则可以仅发送被称为SMB直通数据传送包的一个包。然而,根据一实施例,如果要被发送的SMB2数据大于块大小,则两个或更多个SMB直通数据传送包可被发送。RDMA允许顺序接收各数据包。因此,通信中接收到的第二数据包将被直接放置在第一接收到的数据包之后。为了利用RDMA的这个优点,SMB直通数据传送包包括通告要被发送的SMB2数据的总数以及在本数据包之后还留下多少要被发送的数据的字段。通过这种方式,SMB直通对等体可以确定SMB传送何时完成,并且SMB2数据可被重新组装。因此,SMB直通协议在各实施例中提供以低等待时间和低开销进行SMB2数据的快速传送,同时克服与通过RDMA传送SMB2数据相关联的问题。
图1中示出了根据此处所公开的各实施例的用于通过RDMA连接交换SMB2数据的示例逻辑环境或系统100。连接对等体(也被称为客户机102和服务器106)102和106可通过网络104跨RDMA NIC(RNIC)108a和108b之间的RDMA连接来移动SMB2数据。连接对等体可以是例如参考图7所描述的任何计算机系统。连接对等体在图1中被示为客户机/应用服务器102和文件服务器106。然而,这些对等体仅作为示例来提供。在这些实施例中,任何类型的客户机或服务器都可用作连接对等体。因此,RDMA连接可以例如在多个客户机、多个服务器、服务器场、服务器群集、消息服务器之间或在客户机和服务器之间。客户机/应用服务器102和文件服务器106仅出于理解本文所公开的各实施例的教示的目的而被作为示例来提供。
当通过网络104移动SMB2数据时,该网络104可以如例如参考图7所描述的。网络104(虽然被示为独立的单个网络)可以是本领域的普通技术人员常规上理解的任何类型的网络。根据一实施例,网络可以是全局网络(例如,因特网或万维网,即缩写为“Web”)。它也可以是局域网(例如,内联网)或广域网。根据各个实施例,通过网络104的通信根据一个或多个基于标准数据包的格式(例如,H.323、IP、以太网、和/或ATM)来进行。
此外,在各实施例中,RNIC 108(a和/或b)可以是支持RDMA的任何网络接口卡、网络适配器和/或网络接口控制器。存在提供RNIC的若干厂商。例如,iWARP或InfiniBand是支持RDMA的网络协议。RNIC可支持RDMA,其允许数据从存储器110a到存储器110b以及相反方向的直接传送。这些数据传送不需要或不包括处理器112a或112b的监督。因此,根据本公开的各实施例,RDMA传送是高带宽、低等待时间和低开销的。处理器112和存储器110可以如例如参考图7所描述的。
尽管图1示出了用于通过RDMA的SMB2数据交换的通用环境,图2A描绘了根据此处所公开的各实施例的用于通过RDMA连接来发送或接收SMB2数据的示例对等体102。在这个示例中,对等体102是客户机和/或应用服务器。根据本公开的各实施例,客户机102的各个组件可以包括软件和/或硬件。然而,为了解说的目的,此后的各组件将被描述为软件模块。在各实施例中,客户机102包括但不限于以下中的一个或多个:内核202a、至少一个用户应用220、存储器缓冲区222a、一个或多个计时器224a和/或一个或多个设置226a。在各实施例中,“内核”是在其中管理存储器、文件和外围设备,触发和启动应用以及分配系统资源的操作系统的核心。
在各实施例中,内核202a可包括但不限于以下中的一个或多个:文件应用编程接口(API)或等价物204、SMB2模块(被示为SMB2客户机208)、SMB直通模块(被示为SMB直通客户机214a)和RDMA接口216a。SMB直通模块和RDMA接口216a被引入来执行在此描述的各方法和过程。这些模块、组件和/或接口将被描述如下。
在各实施例中,文件API 204可以是内核202a和一个或多个用户应用220之间的接口。在一示例实施例中,文件API 204是微软操作系统中可用的API集合。几乎所有的程序与该API交互以执行各种功能。文件API 204的各实施例提供对系统可用的各资源(诸如,举例来说文件系统、设备和/或错误处理)的访问。根据各实施例,文件API 204可提供对内核以及其他功能的访问。在各实施例中,文件API 204还允许系统对各远程文件执行使用各底层的文件访问功能的各动作,这些底层的文件访问功能进而使用各种联网能力并允许远程访问。
在各实施例中,SMB2客户机208管理在各应用和SMB2服务器212b所提供的各接口之间的通信。由于各设备可以以可能与操作系统不匹配的速度操作,因此操作系统和设备驱动器之间的通信主要通过I/O请求包(IRP)来完成。这些数据包类似于例如网络数据包或消息数据包。将这些数据包从操作系统传递到特定驱动器,并从一个驱动器传递到另一驱动器。在各实施例中,SMB2客户机208可以将各I/O请求重定向到各网络资源,并组成各SMB消息以执行通过网络的通信。SMB2客户机208通过RDMA将SMB数据包传送到SMB直通客户机214a以交换SMB数据包或数据。类似地,根据一实施例,SMB2服务器212b也可使用各IRP来发送来自SMB2客户机208对服务器的存储的文件请求。
在各实施例中,SMB直通模块214是从内核202中的SMB直通网络提供商接口(NPI)创建的实例。SMB直通模块214将API(称为SMB直通NPI)展示给SMB2客户机和SMB2服务器模块。SMB2客户机/服务器模块使用这个SMB直通NPI来作出通过SMB直通连接发送或接收数据的请求。根据各实施例,SMB直通模块214实现SMB直通协议,并位于SMB2客户机/服务器模块和底层的RDMA接口之间。SMB直通NPI允许SMB直通协议。SMB直通NPI可创建和破坏SMB直通连接,通过SMB直通连接发送和接收数据、注册/注销存储器、通过SMB直通连接执行从对等体的RDMA读数据操作/到对等体的RDMA写数据操作、在SMB直通连接被对等体断开连接时接收通知、跨SMB直通连接编组/取消编组供传输的SMB2数据包及其他操作。为了完成这些任务,创建可管理发送按照RDMA协议存储的SMB2数据以及从存储器缓冲区222检索按照RDMA协议存储的SMB2数据的SMB直通模块214。因此,SMB直通模块214将数据从仅仅SMB2数据转换成RDMA,并从RDMA转换回SMB2。在本公开的各实施例中,SMB直通模块214与另一新模块通信(即,RDMA接口216)以执行这些操作。
根据各实施例,SMB直通模块214执行若干函数。SMB DirectReceiveEvent(SMB直通接收事件)回调函数向SMB2客户机208或SMB2服务器212b通知已在SMB直通端点上接收了消息。SMB DirectDisconnectEvent(SMB直通断开连接事件)事件回调函数向SMB2客户机208或SMB2服务器212b通知端点上的连接已被断开连接。SMB DirectAcceptEvent(SMB直通接受事件)事件回调函数向SMB2服务器212b通知监听端点上的传入连接已被接受。SMBDirectListen(SMB直通监听)函数创建监听给定的本地地址上的传入连接的监听器端点。SMB DirectCloseEndpoint(SMB直通关闭端点)函数关闭端点并释放任何关联资源。SMBDirectConnect(SMB直通连接)函数将端点连接到远程SMB直通传输地址。SMBDirectDisconnect(SMB直通断开连接)函数使端点与远程SMB直通传输地址断开连接。SMBDirectSend(SMB直通发送)函数将数据缓冲区发送到远程SMB直通对等体。SMBDirectRegisterMemory(SMB直通注册存储器)函数允许SMB2客户机208注册供在RDMA读/写操作中使用的存储器缓冲区。SMB DirectUnregisterMemory(SMB直通注销存储器)函数注销先前经由SMB DirectRegisterMemory API注册的存储器缓冲区。SMB DirectRdmaRead(SMB直通RDMA读)函数使得RDMA直接从与该端点连接的远程对等体的存储器中读数据。SMBDierctRdmaRead(SMB直通RDMA写)函数使得RDMA将数据直接写入与该端点连接的远程对等体的存储器中。这些函数及其操作将结合图6来解释。
在一实施例中,RDMA接口216是与各RNIC的厂商专用的RDMA功能对接的新接口。RDMA接口216可给予对RDMA设备的各功能的访问。RDMA设备的各功能可包括监听端口以接收SMB直通数据包,并将SMB2数据提供给SMB直通模块214。在一实施例中,RDMA设备可包括用于管理通过RDMA连接的通信的内核模式RDMA模块。此外,RDMA设备可包括RDMA访问层和扩展以用于对正发送RDMA消息的端口进行访问和监听。根据各实施例,代理驱动器可以与RNIC的硬件驱动器对接。
在各实施例中,用户应用220可以是处理器为用户或其他软件执行的任何软件。用户应用220的示例包括web浏览器、电子邮件等。这些用户应用220与内核202a对接以发送数据并特别地从远程存储位置(诸如文件服务器106)接收数据。
在一实施例中,存储器缓冲区222可以是如参考图7描述的任何类型的存储器。存储器缓冲区222可被用来接收SMB直通消息和/或这些消息中承载的SMB2数据,并可被用来在传输传出SMB直通消息之前准备(stage)那些消息。因此,根据各实施例,可将存储器缓冲区222划分成如此后描述的各块。
在各实施例中,计时器224是可从预定时间倒计时到零的时钟集合。因此,计时器224表示所存储的数据以及由处理器执行的时钟功能。计时器224的期满可以触发RDMA接口中的一个或多个功能,或者伴随SMB直通模块214的一个或多个功能。在其他实施例中,计时器可以从零计数到一阈值,或执行某种其他类型的计数。这些计时器中的一些可以包括SendCreditGrantTimer(发送积分授予计时器),SendCreditGrantTimer是在SendCreditCount(发送积分计数)达到零时启动并在计时器部分224中操作的计时器。远程连接的对等体必须直到这个计时器期满才能授予附加的发送积分。SendCreditGrantTimer(发送积分授予计时器)还可以调节客户机/服务器等待该对等体向其授予附加的发送积分的时间量。根据各实施例,当客户机/服务器发现由于SendCreditsCount(发送积分计数)的值为零而无法向对等体发送数据包时,则客户机/服务器设置将在预定秒数内期满的计时器。如果计时器在发送积分变得可用之前期满,则客户机/服务器将该连接断开连接。在一实施例中,空闲连接计时器调节客户机/服务器等待对等体发送数据包的时间量。如果在过去的预定秒数内没有从对等体接收到数据包,则客户机/服务器向该对等体发送保活请求,并设置KeepAliveResponse(保活响应)计时器。根据本公开的各实施例,如果在KeepAliveResponse计时器期满之前没有接收到响应,则该连接被断开连接。
根据本公开的各实施例,还可以为通过SMB直通连接的任何SMB直通数据传送设置KEEPALIVE_REQUESTED(已请求保活)标志。在一实施例中,KEEPALIVE_REQUESTED标志是对接收对等体尽快对发送方作出响应,使得发送方知道该接收方仍被连接并且是可作出响应的请求。一个或多个系统可尝试在没有消息交换的情况下使该连接过期。因此,具有KEEPALIVE_REQUESTED标志的消息可以维护该连接。在替换实施例中,设有KEEPALIVE_REQUESTED标志的消息可被用于请求或接收积分。
在一实施例中,设置226存储对与通过RDMA交换SMB消息相关的数据进行存储和检索。设置226可被存储在如参考图7所描述的任何类型的存储器或存储设备中。作为一示例,这些设置可包括被设置之后的多少秒内积分补充计时器期满、对等体愿意从另一对等体接收的最大大小的SMB直通数据传送包是什么、或者对等体将授予另一对等体的发送积分的数目的限制是什么等。
在各实施例中,SMB_DIRECT_ENDPOINT(SMB_直通_端点)结构可以是表示SMB直通端点的不透明结构。SMB直通端点在功能上与例如网络套接字类似。根据一实施例,SMB2客户机208或SMB2服务器212b可能不直接访问该结构的各成员,而是通过SMB直通模块214来访问该结构的各成员。SMB_DIRECT_ENDPOINT结构可包括若干操作的数据。MwReleaseList(存储器窗口释放列表)是可被释放回到该远程连接的对等体的存储器窗口的列表。这些存储器窗口与已完成的各RDMA读/写操作相关联。ReceiveCreditCount(接收积分计数)是要被授予远程连接的对等体的接收积分的数目。该端点的主机可具有至少这个数目的在该端点上待处理的接收区。SendCreditCount(发送积分计数)是该端点的主机当前具有的发送积分的数目。远程连接的对等体可具有至少这个数目的在其端点上待处理的接收。PendingRdmaReadCount(待处理RDMA读计数)是这个端点上已被发起但尚未完成的RDMA读操作的数目。PendingRdmaReadLimit(待处理RDMA读限制)是该端点上可同时待处理的RDMA读操作的最大数目。在各实施例中,DeferredInitiatorOpQueue(被推迟的发起方操作队列)是因用于发出各发起方操作的端点资源当前不可用而被推迟的这些发起方操作的队列。NdKQp(NDK队列对)是表示接收以及发起方请求队列的队列对对象。NdkReceiveCq(NDK接收完成队列)是NDK接收完成队列。将各接收请求完成排队在该队列中。NdkReceiveQueueCapacity(NDK接收队列容量)是该端点上可同时待处理的各接收请求的最大数目。NdkInitiatorCq(NDK发起方完成队列)是NDK发起方完成队列。例如,发送、绑定、快速注册、读、写和无效请求完成被排列在这个队列中。在各实施例中,NdkInitiatorQueueCapacity(NDK发起方队列容量)是该端点上可同时待处理的发送、绑定、快速注册、读、写和无效请求的最大数目。
图2B描绘了根据此处所公开的各实施例的用于通过RDMA连接来发送或接收SMB2数据的示例对等体106。在这个示例中,对等体106是文件服务器。文件服务器106的各个组件可包括软件和/或硬件。尽管各实施例将这些组件描述为软件模块,其他实施例提供其他类型的模块。在各实施例中,文件服务器106包括但不限于以下中的一个或多个:内核202b、NTFS 232、存储器缓冲区222b、一个或多个计时器224b和/或一个或多个设置226b。这些功能中的一些与图2A中描述的那些功能相同或相似。
根据各实施例,内核202b(和/或如参考图2A所描述的)可包括但不限于以下中的一个或多个:输入/输出(I/O)管理器206b、SMB2服务器212b、SMB直通服务器214b和RDMA接口216b。这些功能中的一些与图2A中描述的那些功能相同或相似。
在各实施例中,SMB2服务器212b是为各服务器实现服务器侧的SMB2协议的驱动器。其他实施例提供其他类型的服务器。SMB2服务器212b可启动并使用SMB来交换数据,并供应该数据或从I/O管理器206b接收该数据。在各实施例中,SMB2服务器212b通过网络连接发送或接收SMB2数据。SMB2服务器212b用于通过供服务器的网络来通信。因此,根据各实施例,SMB2服务器212b提供SMB2数据以供传输,或通过网络传输接收SMB2数据。
在各实施例中,新技术文件系统(NTFS)232可以是标准文件系统。NTFS包括支持元数据和使用先进的数据结构来改善性能、可靠性和盘空间利用,以及诸如安全性访问控制列表(ACL)和文件系统通信等附加扩展。NTFS用于组织并存储一个或多个客户机的文件数据。可通过与客户机的通信(诸如通过RDMA的SMB2数据传送)来将这些文件数据提供给客户机。
根据各实施例,SMB直通创建RDMA连接以交换SMB2数据。该协议通过协商过程创建RDMA连接。在对等体102和106协商了RDMA连接后,对等体102或106中的任一方可通过RDMA连接发送SMB2数据。
根据各实施例,第一SMB直通协商请求包300在图3A中被示出。相应地,在各实施例中,相关联的SMB直通协商响应请求包336在图3B中被示出。此外,根据各实施例,用于传送数据的SMB直通数据传送包338在图3C中被示出。每一消息或数据包可以例如被创建、传送、存储和/或接收。在各实施例中,数据包或消息可各自包括存储不同数据的部分或字段。
转至图3A,根据本公开的各实施例的SMB直通协商请求包300被示出。SMB直通协商请求包300可包括但不限于以下字段中的一个或多个,例如:MinVersion(最小版本)302、MaxVersion(最大版本)304、Reserved(保留的)306、CreditsRequested(请求的积分)308、PreferredSendSize(偏好的发送大小)310、MaxReceiveSize(最大接收大小)312、和/或MaxSMB2MessageSize(最大SMB2消息大小)314.SMB直通协商请求包300可包括比图3A中示出的那些字段更多或更少的字段,如省略号316所表示的。
在一实施例中,MinVersion字段302可包括客户机/请求方102支持的最低SMB直通协议版本的值。MaxVersion字段304可存储客户机/请求方102支持的最高SMB直通协议版本。这个值可等于或大于MinVersion字段302的值。在各实施例中,客户机/请求方支持在MinVersion字段302中的值和MaxVersion字段304中的值之间的范围中(包括)的所有协议版本。根据一实施例,Reserved字段306仅是针对将来的未知要求的保留字段,并且没有被客户机使用。
根据各实施例,CreditsRequested字段308包括客户机/请求方102正请求的来自服务器/接收方106的发送积分的数目的值。在各实施例中,CreditsRequested字段308中的值大于零(0),以确保SMB2数据可在后续消息中被发送。然而,根据各实施例,CreditsRequested字段308中的值可以是任何数字,并可基于平均使用来设置。在各替换实施例中,CreditsRequested字段308中的值可至少基于要被发送的SMB消息的大小。在又一些实施例中,请求积分时可考虑其他因素或附加因素。同样,在各实施例中,大型消息可使用RDMA来传送。
PreferredSendSize字段310可包括客户机/请求方102希望能够向服务器/接收方106传送的最大SMB直通数据传送包338的大小(可能以字节为单位)。MaxReceiveSize字段312包括客户机/请求方102将接受的来自服务器/接收方106的最大SMB直通数据传送消息的大小(可能以字节为单位)。在各实施例中,这个值可等于客户机102所设置的存储器缓冲区222a的块或预定分配。因此,没有单个SMB2数据传送会超过该存储器分配。在各实施例中,这个值大于或等于阈值128,该阈值128至少为数据传送包和小型SMB2消息中的SMB直通头部的大小。根据一实施例,MaxSmb2MessageSize字段314可以包括客户机/请求方将接受的来自服务器/接收方106的最大SMB2协议消息的大小(可能以字节为单位)。这个值被客户机102预先确定并设置。在各实施例中,MaxSmb2MessageSize字段314中的值可以不大于存储器缓冲区222a的总大小。通过这种方式,没有SMB消息可溢出存储器缓冲区222a。然而,根据一实施例,MaxSmb2MessageSize字段314的值可以小于如用户所确定的存储器缓冲区222a中的存储器量。
转至图3B,根据各实施例的SMB直通协商响应包336被示出。SMB直通协商响应包336可被对等体106发送以完成对RDMA连接的协商。SMB直通协商响应包336可包括但不限于以下字段中的一个或多个,例如:MinVersion(最小版本)302b、MaxVersion(最大版本)304b、PreferredVersion(偏好的版本)318、Reserved(保留的)306b、CreditsRequested(请求的积分)308b、CreditsGranted(授予的积分)320a、Status(状态)322、PreferredSendSize(偏好的发送大小)310b、MaxReceiveSize(最大接收大小)312b和/或MaxSMB2MessageSize(最大SMB2消息大小)314b。SMB直通协商响应包336可包括比图3B中示出的那些字段更多或更少的字段,如省略号324所表示的。
根据各实施例,MinVersion字段302b可包括服务器/接收方106支持的最低SMB直通协议版本的值。MaxVersion字段304b可存储服务器/接收方106支持的最高SMB直通协议版本。这个值可等于或大于MinVersion字段302b的值。在各实施例中,服务器/接收方106支持在MinVersion字段302b中的值和MaxVersion字段304b中的值之间的范围内(包括)的所有协议版本。PreferredVersion字段318存储常用SMB直通协议版本的值。在各实施例中,PreferredVersion字段318的值在由客户机的SMB直通协商请求包300的MinVersion字段302a和MaxVersion字段304a所指定的范围之内。在其他实施例中,PreferredVersion字段318的值在由服务器的SMB直通协商响应包336的MinVersion字段302b和MaxVersion字段304b所指定的范围之间。根据各实施例,Reserved字段306b仅是针对将来的未知要求的保留字段,并且没有被服务器使用。
根据各实施例,CreditsRequested字段308b包括服务器/接收方106正请求的来自客户机/请求方102的发送积分的数目的值。在各实施例中,CreditsRequested字段308b中的值大于零(0),以确保SMB2数据可在后续消息中被发送。然而,CreditsRequested字段308b中的值可以是任何数字,并可基于平均使用来设置。在各替换实施例中,CreditsRequested字段308b中的值基于要被发送的SMB消息的大小或者可基于其他因素。根据各实施例,大型消息可在一个积分被请求时被发送。CreditsGranted字段320a包括从服务器/接收方106向客户机/请求方102授予的积分的数目。在各实施例中,CreditsGranted字段320a的值大于零(0),以允许客户机/请求方102发送下一SMB直通消息。
在各实施例中,状态字段322包括至少一个标志或值。在一实施例中,状态字段322包括一个或两个值,即状态成功或状态不被支持。成功标志指定服务器/接收方106已接受了客户机/请求方的SMB直通协商请求包300。不被支持标志指定服务器/接收方106已拒绝了客户机/请求方102的SMB直通协商请求包300。
根据各实施例,PreferredSendSize字段310b可包括服务器/接收方106希望能够向客户机/请求方102传送的最大SMB直通数据传送包338的大小(可能以字节为单位)。在各实施例中,PreferredSendSize字段310b小于或等于SMB直通协商请求包300中的MaxReceiveSize字段312a。因此,服务器/接收方106所发送的数据包大小可以不大于客户机/请求方102的存储器缓冲区222a分配。
在各实施例中,MaxReceiveSize字段312b包括服务器/接收方10b将接受的来自客户机/请求方102的最大SMB直通数据传送消息的大小(可能以字节为单位)。这个值可以等于服务器/接收方106所设置的存储器缓冲区222b的块或预定分配。因此,在各实施例中,没有SMB2数据传送将超过该存储器分配。在各实施例中,这个值大于或等于阈值128,该阈值128至少是数据传送包中的SMB直通头部的大小。MaxSmb2MessageSize字段314b可包括服务器/接收方10b将接受的来自客户机/请求方102的最大SMB2协议消息的大小(可能以字节为单位)。这个值由服务器/接收方106预先确定并设置。在各实施例中,MaxSmb2MessageSize字段314b中的值可以不大于存储器缓冲区222b的总大小。通过这种方式,没有SMB消息可溢出存储器缓冲区222b。然而,根据一实施例,MaxSmb2MessageSize字段314b的值可以小于如用户所确定的存储器缓冲区222b中的存储器量。
根据在此公开的各实施例的SMB直通数据传送包338在图3C中示出。SMB直通数据传送包338可被发送以跨在协商期间建立的RDMA连接来传送SMB2数据。客户机/请求方102或服务器/接收方106中的任一方可发送或接收SMB2数据。由此,客户机/请求方102和服务器/接收方106两者一般被称为接收方和发送方。SMB直通数据传送包338可包括但不限于以下字段中的一个或多个,例如:CreditsRequested(请求的积分)308c、CreditsGranted(授予的积分)320b、Reserved(保留的)306c、RemainingDataLength(剩余数据长度)326、DataOffset(数据偏移)328、DataLength(数据长度)330和/或SMB2数据332。根据各实施例,SMB直通数据传送包338可包括比图3C中示出的那些字段更多或更少的字段,如省略号334所表示的。
在各实施例中,CreditsRequested字段308c包括发送方正请求的来自接收方的发送积分的数目的值。在各实施例中,CreditsRequested字段308c中的值大于零(0),以确保SMB2数据可在后续消息中被发送。然而,CreditsRequested字段308c中的值可以是任何数字,并且可基于所预测的将来使用(即,还要多少数据包来完成SMB2数据的传送)来设置。CreditsGranted字段320b包括从发送方向接收方授予的积分的数目。在各实施例中,CreditsGranted字段320b的值可以是零,因为对等体没有义务履行对等体对积分的请求。然而,对等体可以在CreditsGranted字段320b中提供积分以允许客户机/请求方102发送下一SMB直通消息。根据在此公开的各实施例,Reserved字段306c仅是针对将来的未知要求的保留字段,并且没有被客户机使用。
在各实施例中,RemainingDataLength字段326可包括接收方还需要接收的经分段的SMB2消息的字节数。因此,这个字段中除零以外的任何值均向接收方指示具有更多数据的另一SMB直通数据传送包338将被发送。根据各实施例,如果SMB直通数据传送包338承载完整的SMB2消息或为承载经分段的SMB2数据的两个或更多个SMB直通数据传送包338中的最后一个,则RemainingDataLength字段326中的值为零(0)。RDMA能够顺序发送各消息。由此,重新组装各消息被简化了,因为各顺序消息按被接收的严格次序来重新组装。因此,各实施例例如放弃了对头部中的消息标识符的需要,或者放弃了对其他更复杂的重新组装技术的使用。
在一实施例中,DataOffset字段328包括从SMB直通数据传送包338的开始处到所封装的SMB2协议消息的前8字节的对齐字节的偏移的以字节为单位的值。在各实施例中,如果DataLength字段330的值为零,则DataOffset字段328也被设置为零。根据一实施例,如果DataLength的值不是零,则DataOffset字段328为某一值,并且可大于或等于24字节,24字节是该头部中的其他字段的大小。DataLength字段330可包括SMB2数据字段332中所封装的SMB2协议消息的以字节为单位的大小。在各实施例中,如果SMB直通数据传送包338没有封装SMB2协议消息,则DataLength字段330的值被设为零。根据各实施例,SMB2数据字段包括任何SMB2协议消息。
根据在此公开的各实施例,SMB2读/写请求340在图3D中被示出。SMB2读/写请求340可以被封装在SMB直通数据传送包338中以执行直接的RDMA读/写。直接的RDMA读/写仅发送未经编码的应用数据。根据本公开的各实施例,SMB2读/写请求340在服务器106将执行到客户机102的RDMA写的情况下可以是SMB2读请求,并在服务器106将执行从客户机102的RDMA读的情况下可以是SMB2写请求。无论如何,SMB2读/写请求340中的各字段是类似的。应注意,服务器106执行客户机102所请求的RDMA传送。SMB2读/写请求340可包括但不限于以下字段中的一个或多个,例如:Channel(信道)342、ChannelInfoOffset(信道信息偏移)346和ChannelInfoLength(信道信息长度)348。在一实施例中,这些字段可包括用于完成RDMA数据传送的控制(steering)信息。根据一实施例,Reserved字段344仅是针对将来的未知要求的保留字段,并且没有被使用。SMB2读/写请求340可包括比图3D中示出的那些字段更多或更少的字段,如省略号351所表示的。所示的这些字段出于说明的目的被提供,并且不旨在进行限制。
在各实施例中,Channel字段342包括数据被寻找到的信道的值。RDMA连接可包括若干信道。根据各实施例,信道信息可包括对等体向RDMA设备提供来完成该传送的信息。例如,如图3E中所示出的,信道信息可包含一个或多个令牌、偏移、和各存储器片段的长度,以及其他RDMA专用的信息。
在一实施例中,ChannelInfoOffset字段346和ChannelInfoLength字段348是指向数据包中的偏移、令牌和长度信息的指针。这些指针给出这些信息可位于SMB2读或写请求中的位置。在各实施例中,标志350包括用于控制或改变RDMA直通数据传送的行为的任何信息。
转至图3E,根据在此所公开的各实施例,RDMA信道描述符352被示出。RDMA信道描述符352可通常在信道字段342中被封装在SMB直通请求中。RDMA信道描述符352可包括但不限于以下字段中的一个或多个,例如:Offset(偏移)354、Token(令牌)356和Length(长度)358。在一实施例中,这些字段为用于完成RDMA数据传送的控制信息。RDMA信道描述符352可包括比图3E中示出的那些字段更多或更少的字段,如省略号360所表示的。所示出的这些字段出于说明的目的被提供。为了完成直接数据传送,RDMA基于信道字段342中的信息被定向到具有将被读或写的数据以及该数据的长度的存储器。由于直通数据传送仅发送应用数据,因此该信息有助于确保合适的传送。
根据一实施例,Offset 354是数据开始之处的以字节或比特为单位的值。Offset354可以从存储器块起始地址开始测量,该存储器块起始地址可以使用Token 356中提供的信息来定位。Length 358是数据片段有多长的以比特或字节为单位的值。这一控制信息指导例如直接数据传送。
根据此处所公开的一实施例,图2A和图2B中描绘的各个软件功能模块的交互被进一步示出在图4A-4C中描绘的用于协商RDMA连接的各操作步骤400中。图4A示出了根据本公开的各实施例的数据包408和424在客户机102和服务器106之间的传送的表示400A。根据本公开的各实施例,图4B以客户机102的角度进行,而图4C以服务器106的角度进行。应注意,过程400被描述为客户机请求RDMA连接并且服务器106作出响应。然而,根据各实施例,服务器106作出请求并且客户机作出响应的相反情况可以为真。此外,该方法可例如在多个客户机之间和/或在多个服务器之间进行。
转至图4B,示出了根据一实施例的用于通过RDMA使用SMB2协商连接的示例操作步骤400B。过程400B在开始操作402B处被发起,并且过程400B前进到客户机预先发布接收区404。在各实施例中,RDMA接口216a自动地检测RNIC 108a/108b并利用RNIC 108a/108b以查看它们是否可用并被合适地配置。接着,在一实施例中,SMB直通NPI被SMB直通模块214展示。SMB直通客户机214a可以打开RDMA适配器的处理程序以形成针对SMB2客户机208的RDMA连接。在一实施例中,SMB直通客户机214a随后通过RDMA接口216a请求RDMA连接。SMB直通客户机214a还可创建存储器缓冲区222a中的分配,并确定对于初始发送积分要请求什么,以及对于接收积分什么将被允许。在各实施例中,存储器缓冲区222a中的分配可以具有预定大小。根据各实施例,存储器缓冲区222a中的存储器总量也可被确定。
返回到图4B,SMB直通客户机214a可随后构建406SMB直通协商请求包300来发送到RDMA接口216a。SMB直通协商请求包300在例如图3A中被描述。由此,SMB直通客户机214a设置了SMB直通协商请求包300中的各字段。因此,SMB直通客户机214a确定客户机102可支持的SMB直通的最小版本和最大版本。SMB直通客户机214a确定要请求的积分数。在各实施例中,要请求的积分数可基于要发送的已知的将来SMB消息、基于将来可能发生的预测的SMB流量、基于对SMB的历史使用、或依据某一其他方法。发送大小用内部函数和速度考虑来确定。最大接收大小可与存储器缓冲区分配的大小挂钩。最后,最大SMB消息大小被确定并被设置(一般,最大SMB消息大小大到足以允许对等体发送大型SMB2数据包,但并不大到会使用所有存储器)。根据本公开的各实施例,该收集的信息被输入到SMB直通协商请求包300中。
接着,SMB直通客户机214a发送408B SMB直通协商请求包300。在一实施例中,SMB直通客户机214a通过发送操作请求RDMA接口216a发送SMB直通协商请求包300。RDMA接口216a与RDMA接口216b通信,并将SMB直通协商请求包300发送给服务器106。通过发送SMB直通协商请求包300,SMB直通客户机214a启动协商请求期满计时器410。协商请求期满计时器可具有预订的值,并从该值到零倒计时。SMB直通客户机214a随后等待对SMB直通协商请求包300的响应。如果确定411协商请求期满计时器在接收到对SMB直通协商请求包300的响应之前期满,则过程400B以否继续前进至结束操作432B,在操作432B该连接被停止。
转到图4C的开始操作402C,在各实施例中,服务器106预测SMB直通协商请求包300并且预先发布接收区412。根据各实施例,SMB2服务器212b可监听活动,并自动发现RDMA在RNIC 108b的端口上可用并被绑定在该端口上。SMB2服务器212b打开监听器端点,并确定在RNIC 108b上RDMA可用。接着,SMB2服务器212b随后开始与SMB直通服务器214b的通信。SMB直通服务器214b可打开RDMA连接,并接收RDMA适配器处理程序。SMB直通服务器214b随后通过RDMA接口216b请求RDMA连接。SMB直通服务器214b可随后接受RDMA连接,由此向客户机102通知该连接请求成功了。来自RDMA接口216a的这个成功指示触发客户机发送协商请求。
根据各实施例,SMB直通服务器214b还可创建存储器缓冲区222b中的分配,并确定对于初始发送积分要请求什么,以及对于接收积分什么将被允许。存储器缓冲区222b中的分配可以具有预定大小。根据本公开的各实施例,存储器缓冲区222b中的存储器总量也可被确定。
返回到图4C,SMB直通服务器214b可随后启动协商请求期满计时器414。在各实施例,服务器106处的协商请求期满计时器可具有预定值,并从该值到零倒计时。SMB直通服务器214b随后等待以接收SMB直通协商请求包300。在等待时,SMB直通服务器214b监视RDMA连接,并确定416该协商请求期满计时器是否在接收SMB直通协商请求包300之前期满。如果协商请求计时器期满,则过程400C以否前进至结束操作432C,在操作432C该连接被停止。
然而,如果SMB直通协商请求包300在协商请求期满计时器的期满之前到达RNIC108b及RDMA接口216b,则过程400C以是前进至通过RDMA接口216b来接收并确认408C SMB直通协商请求包300,并将该数据包放置在存储器缓冲区222b中。接着,SMB直通服务器214b被通知该数据,并确定SMB直通协商请求包300是否有效418。
在各实施例中,为了确认SMB直通协商请求包300,SMB直通服务器214b从该SMB直通协商请求包300读数据,并确定以下,例如:MaxVersion字段304的值是否小于MinVersion字段302的值或是否该范围中的值都不被支持;CreditsRequested字段308的值是否为零;MaxReceiveSize字段312的值是否小于预定阈值(例如,128字节);或者,MaxSmb2MessageSize字段314的值是否小于预定阈值。如果以上各项中的任一项为真,则SMB直通协商请求包300不是有效的,并且过程400C以否前进至结束操作432C,在操作432C,SMB直通服务器214b断开连接。如果所有这些检查都不为真,则过程400C以是前进至处理SMB直通响应420,在该处理中,SMB直通协商请求包300被SMB直通服务器214b发送到SMB直通客户机214a。
在各实施例中,在处理SMB直通协商请求包300时,SMB直通服务器214b将设置ProtocolVersion(协议版本)设为等于客户机102和服务器106所共享的最大协议版本。SMB直通服务器214b还确定要授予多少积分。在各实施例中,要授予的积分数取决于存储器缓冲区222b中的可用空间或其他因素。在作出这些确定后,SMB直通服务器214b生成422SMB直通协商响应包336。在一实施例中,SMB直通服务器214b设置SMB直通协商响应包336中的各字段。例如,PreferredVersion字段被设置成设置ProtocolVersion中的值。根据一实施例,CreditsGranted 320a被设置成SMB直通服务器214b所确定的积分数。以与SMB直通协商请求包300类似的方式来填充其他字段。SMB直通协商响应包336被随后发送424C到客户机。在各实施例中,SMB直通服务器214b将SMB直通协商响应包336发送给RDMA接口216b来发送。
返回到图4B,根据各实施例,SMB直通客户机214a可确定411该响应是否在协商期满计时器的期满之前被接收到。如果该响应在该计时器的期满之前被接收到,则过程400B以是前进至确认424B SMB直通协商响应包336。RDMA接口216a将消息接收到存储器缓冲区222a中。SMB直通客户机214a读SMB直通协商响应包336并随后确认该消息。为了确认SMB直通协商响应包336,SMB直通客户机214a确定428以下,例如:根据本公开的各实施例,Status字段322是否不是STATUS_SUCCESS(状态_成功);PreferredVersion字段318是否不包含处于由客户机的SMB直通协商请求包300的MinVersion字段302和MaxVersion字段304所指定的范围内的值;CreditsRequested字段308b是否为零;CreditsGranted字段320a是否为零;PreferredSendSize字段310b是否大于由客户机的SMB直通协商请求包330的MaxReceiveSize字段312所指定的值;或者,MaxReceiveSize字段312b是否小于预定阈值(例如,128字节)。如果以上中的任一个为真,则SMB直通协商响应包336不是有效的,并且过程400B以否前进到结束操作432B,在操作432B,SMB直通客户机214a断开连接。根据此处所公开的各实施例,如果所有这些检查都不为真,则过程400B以是前进至处理SMB直通响应430,在该处理中,SMB直通协商响应包336被SMB直通客户机214a处理。
在各实施例中,在处理SMB直通协商响应包336时,SMB直通客户机214a完成以下,例如:将在设置226中的该连接的PeerTargetSendCreditsCount(对等体目标发送积分计数)设置设为等于CreditsRequested字段308b;将在SMB直通连接属性中的该连接的SendCreditsCount(发送积分计数)设置设为等于CreditsGranted字段320a;将在设置226中的该连接的MaxSendSize(最大发送大小)设置设为等于MaxReceiveSize(最大接收大小)字段312b;将在设置226中的该连接的ReceiveSize设置设为等于PreferredSendSize字段310b;将在设置226中的该连接的MaxOutboundFragmentedMessageSiz(最大出站经分段消息的大小)设置设为等于MaxReceiveSize字段312b;以及,将该连接的空闲连接计时器设为在预定时间量(例如,几小时、几分钟等)内期满并启动该计时器。一旦执行了以上步骤,RDMA连接协商就完成了,并且客户机102和服务器106可启动交换SMB直通数据传送包。过程400B随后在结束操作432B终止。
根据此处所公开的一实施例,图2A和图2B中所描绘的各个软件功能模块的交互还被示出在图5A-5D中所描绘的用于通过所建立的RDMA连接来交换SMB2数据的操作步骤500中。根据本公开的各实施例,在请求和响应通信中,通过将SMB2数据封装成SMB直通数据传送包338的数据载荷来通过所建立的SMB直通连接在客户机102和服务器106之间传送该SMB2数据。请求和响应通信可用于例如控制信道通信、交换文件元数据、或用于其他过程。图5A示出了根据本公开的各实施例的数据包516/518、530、532和546在客户机102和服务器106之间的传送的表示500A。图5B和图5C采用客户机102的角度,而图5D采用服务器106的角度。应该注意,过程500被描述成客户机独立地或者响应于来自服务器的请求而将SMB2数据发送给服务器106。然而,服务器106对请求作出响应并将数据发送回客户机102的相反情况可以为真。因此,在各实施例中,此处所描述的各过程适用于服务器发送请求并要求积分的情况。此外,该方法可以例如在多个客户机之间或者在多个服务器之间进行。
转至图5B,示出了根据此处公开的各实施例的用于通过RDMA使用SMB2交换数据的示例操作步骤500B。开始操作502被发起,并且过程500B前进到客户机102建立RDMA连接504。根据本公开的各实施例,建立RDMA连接可以如参考图4A-4C所描述的。在一实施例中,SMB直通客户机214a设置若干连接属性,包括将MaxSendSize设置设为等于MaxReceiveSize字段312b,将该连接的ReceiveSize设置设为等于PreferredSendSize字段310b,以及将在设置226中的该连接的MaxOutboundFragmentedMessageSize设置设为等于MaxReceiveSize字段312b。根据各实施例,通过这种方式,客户机102建立了可以向服务器106发送的数据包的大小。
返回到图5B,根据各实施例,SMB直通客户机214a可确定将SMB2消息传输到服务器106所需的SMB直通数据传输包的数目。为了作出该确定,SMB直通客户机214a可首先检索在协商期间设置的MaxSendSize(被指定为R)。SMB直通客户机214a随后可确定要发送的SMB2协议消息的大小;在各实施例中,该值被设为“S”。SMB直通客户机214a还确定SMB直通数据传送包338的头部所消耗的字节数(在各实施例中被指定为P)以及为使SMB直通数据传送包338的有效载荷在8字节对齐的边界上开始的边距(例如,DataOffset 328等)。在各实施例中,SMB直通客户机214a随后确定S是否小于或等于(R-P),并且根据各实施例,如果如此,则可通过将S除以(R-P)来确定数据包的数目。
过程500B随后前进至由SMB直通客户机214a确定分段是否被使用510。在一实施例中,在SMB2协议消息不“容纳”到单个SMB直通数据传送包338中时,分段被使用。换言之,S大于(R–P)吗?如果不要使用分段,则过程500B以否前进至发送一个SMB直通数据传送包518B。另一方面,如果分段被使用,则过程500B以是前进至初始化各传送缓冲区字节512。
返回步骤518,根据各实施例,SMB2协议消息可以被传送,而无需进行分段。用于传送数据包的存储器缓冲区222a的一部分被初始化。在各实施例中,前P个字节被初始化以设置SMB直通数据传送包338的头部信息,并添加为零的边距字节以确保SMB2载荷为8字节对齐的。因此,根据各实施例,在该缓冲区中,DataOffset字段328被设为P,DataLength字段330被设为S,且RemainingDataLength字段326被设为零(0)。有关积分的信息或对积分的请求被存储在CreditsRequested字段308c或CreditsGranted字段320b中。因此,客户机102可以在SMB直通数据传送包338中请求或授予更多积分。在各实施例中,SMB直通数据传送包的发送方必须将CreditsRequested字段设为至少为一(1)。存储器缓冲区222a中的接着的S个字节被初始化,并且SMB2协议消息被存储在SMB数据字段332中。在SMB直通数据传送包338被组装后,SMB直通客户机214a将该数据包发送518B给RDMA接口216a以通过RDMA连接将其发送到服务器106。过程500B随后通过页面连接符B 522前进到结束操作548C,并且过程500B终止。
返回步骤512,根据各实施例,在步骤512,在S大于(R-P)的情况下,SMB2协议消息被划分成两个或更多个部分。这些部分随后被拍成序列以在一系列RDMA发送操作中被发送,这些RDMA发送操作中的每一个操作承载SMB2协议消息的一部分(被称为片段)。为了将SMB2协议消息划分成片段,第一有效载荷的大小被设为X,X等于或小于(R-P)。根据一实施例,X表示将至少由第一RDMA发送操作来传送的SMB2协议消息的字节数。正如步骤518B一样,用于传送数据包的存储器缓冲区222a的一部分被初始化。在各实施例中,前P个字节被初始化以设置SMB直通数据传送包338的头部信息以及边距字节。接着,DataOffset字段328被设为P,DataLength字段330被设为X,并且RemainingDataLength字段326被设为(S–X)514。在各实施例中,RemainingDataLenght字段326指示SMB2协议消息中还剩多少字节要被传送。在各实施例中,当SMB2协议消息的最后一个片段被传送时,(S-X)将为零(0)。在最后一个数据包中,RemainingDataLength字段326随后被设为零,这指示SMB直通数据传送包338承载SMB2协议消息的最后一个片段。有关积分的信息或对积分的请求被存储在CreditsRequested字段308c或CreditsGranted字段320b中。因此,在各实施例中,客户机102在SMB直通数据传送包338中请求或授予更多积分。存储器缓冲区222a的接着的X个字节随后被初始化。根据此处所公开的各实施例,SMB2协议消息的片段可随后被存储在SMB2数据字段332中。
在将SMB直通数据传送包338与SMB2协议消息的前X个未经传送的字节组装在一起后,SMB直通数据传送包338被发送516B至服务器。在各实施例中,SMB直通客户机214a将SMB直通数据传送包338发送516B到RDMA接口216a以通过RDMA连接发送到服务器106。过程500B随后通过页面连接符A 520前进到可选步骤526,在步骤526,SMB直通客户机214a确定526是否要发送包含另一片段的另一SMB直通数据传送包338。因此,在各实施例中,SMB直通客户机214a确定在发送了最后一个数据包之后,(S-X)是否为0。如果(S-X)为0或小于零,则意味着最后一个片段已经在最后一个SMB直通数据传送包338中被发送,过程500B以否前进到结束操作548C,并且过程500B终止。然而,如果(S-X)大于0,则过程500B以是前进到确定是否存在足够的发送积分528。在各实施例中,步骤526可以是可选的(如图所示),因为传输这些片段的SMB直通数据传送包338可以在存储器缓冲区222a中被预先准备,并被顺序地发送。当缓冲区222a为空时,过程500B终止。随后不存在确定下一数据包是否要被发送的需要。应注意,根据各实施例,在SMB2协议消息被分段时,承载这些片段的RDMA发送操作被顺序并单调地发送,并且可能不会受到与该经分段的SMB2协议消息无关的其他RDMA发送操作的干扰。根据一实施例,在接收方处RDMA传送排序将保留这些片段的顺序,使得接收对等体可重新构造原始消息。
返回到步骤528,SMB直通客户机214a确定528是否存在用于发送下一片段的足够积分。本质上,SMB直通客户机214a确定是否还留存一个发送积分。如果存在一发送积分,则过程500B通过页面连接符C 524以是前进到步骤512。在各实施例中,RDMA传输具有由接收方在发送方可发送数据包之前预先发布的接收缓冲区。这个规则需要发送方和接收方之间的协调,以确保发送方不会在接收方已预先发布接收区之前尝试发送数据包。根据本公开的各实施例,SMB直通使用发送积分的系统来实现所需的协调。
在一实施例中,从服务器106或客户机102授予的发送积分表示该服务器106或客户机102上的单个预先发布的接收。对等体被授权用一个发送积分执行一个RDMA发送操作。客户机102还可以通过设置CreditsRequested字段308c或者以分开的发送积分请求(根据一实施例,其不会在传输经分段的SMB2数据的一组SMB直通数据传送包338的中间被发送)的形式来向服务器106提供与客户机102需要多少发送积分来高效地支持其工作负载有关的信息。发送积分在SMB直通数据传送包338的CreditsGranted字段320b中被授予。因此,SMB直通客户机214a可通过将CreditsRequest字段308c中的值设置成较高的数字(可能覆盖所有将来的经分段数据包)来请求更多的发送积分。根据一实施例,SMB直通客户机214a可随后通过等待从服务器106发送的SMB直通数据传送包338来等待530C以接收发送积分,该SMB直通数据传送包338不具有数据但在该SMB直通数据传送包338的CreditsGranted字段320b中包括发送积分。SMB直通客户机214a可以通过设置计时器224a中的SendCreditesGrantedTimer(发送积分授予计时器)以在查询532C处确定积分是否被接收。如果SendCreditsGrantedTimer在积分被授予之前期满547,则过程500B以“是”前进至使传送操作失败或者终止,并且过程500B随后在“结束”操作548C处终止。然而,如果积分被授予532C,则过程500B通过页面连接符C 524以“是”前进到步骤512。根据一实施例,如果没有设置计时器和/或该计时器尚未期满547,则过程500B以“否”前进并且不使传送操作失败或终止,而改为继续等待530C以接收发送积分。
转至图5D和过程500D的开始操作502D,在服务器106处,SMB直通数据传送包338被接收516D。在一实施例中,RDMA接口216b接收SMB直通数据传送包338并将其发送到SMB直通服务器214b。首先,SMB直通服务器214b读头部信息。SMB直通服务器214b前进到查询536以确定RemainingDataLength字段326是否为除零以外的某个数。在一实施例中,如果RemainingDataLength字段326为零,则SMB直通数据传送包338是唯一数据包,并且过程500D以“否”前进到处理SMB数据包数据544,此处SMB直通服务器214b处理该数据包数据并将SMB2协议消息发送到SMB2服务器212b。如果RemainingDataLength字段326是除零以外的某个数,则过程500D以“是”前进到分配重新组装缓冲区538。
在步骤538,在一实施例中,SMB直通服务器214b分配存储器缓冲区222b的一部分以便在该缓冲区222b中重新组装SMB2协议消息。因此,SMB直通服务器214b可分配存储器缓冲区222b中的足够块来接受当前SMB直通数据传送包338中的以及即将到来的SMB直通数据传送包338中的数据,这基于DataLength字段330的值以及RemainingDataLength字段326的值。根据本公开的各实施例,SMB直通服务器214b可随后从SMB2数据字段332中读SMB2数据,并将该数据复制到所分配的缓冲区540中。
接着,一实施例为SMB直通服务器214b提供等待并接收546D下一SMB直通数据传送包338。在一实施例中,SMB2数据字段332中的数据还被复制到存储器缓冲区222b中的下一部分。在一替换实施例中,SMB直通服务器214b可以可选地确定此下一SMB直通数据传送包338是否是包含经分段的数据542的最后一个数据包。为了作出该确定,SMB直通服务器214b检查RemainingDataLength字段326是否为零。如果RemainingDataLength字段326为零,则SMB直通服务器214b理解没有更多数据包将被接收,并且过程500D以“是”前进到处理来自存储器缓冲区222b的SMB2协议消息544。过程500D随后在“结束”操作548D终止。另一方面,根据一实施例,如果RemainingDataLength字段326为除零以外的某个数,则SMB直通服务器214b理解另一(另一些)数据包将被接收,并且过程500D以“否”前进到接收546D下一SMB直通数据传送包338。
根据此处所公开的一实施例,图2A和图2B中描绘的各个软件功能模块的交互被进一步示出在图6中描绘的用于执行RDMA直通数据传送的各操作步骤600中。图6示出了根据本公开的各实施例的在客户机102和服务器106之间的数据传送的表示。
如图6中所示出的,过程600在开始操作602处被发起,并且SMB2客户机208创建604SMB2读/写请求340。应用220可以请求要被传送给服务器106的数据或要从服务器106读取的数据。根据本公开的各实施例,数据传送可以被SMB2客户机208定向到利用RDMA直通数据传送,使得SMB2服务器106唯一地执行实际的RDMA请求。为了开始该传送,SMB2客户机208注册目标存储器缓冲区,以提供或接收未经编码的应用数据,并随后生成将通过RDMA发送并执行的SMB读/写命令。该命令可被包括在SMB2读/写请求340中,并被发送至SMB直通客户机214a,该SMB直通客户机214a将SMB2读/写请求340封装606在SMB直通数据传送包中。在各实施例中,SMB2读/写请求340被存储在SMB直通数据传送包中的SMB2数据字段332中。SMB直通数据传送包可随后通过RDMA接口216被发送608到服务器106。在一实施例中,服务器106接收SMB Diret数据传送包,并从SMB2数据字段332中读取SMB2读/写请求340。SMB直通服务器214b可随后从SMB2读/写请求340中读取包括信道342、ChannelInfoOffset(信道信息偏移)346和ChannelInfoLength(信道信息长度)348在内的数据。该信息可将SMB直通服务器214b定向到RDMA信道描述符352中的控制信息610。通过该控制信息,SMB直通服务器214b可通过将未经编码的应用数据发送612到客户机102的缓冲区中的存储器位置或从该存储器位置检索612未经编码的应用数据来启动直通数据传送。过程600随后在“结束”操作614处终止。
图4A-4C、图5A-5D以及图6分别示出了根据此处所公开的各实施例的用于通过RDMA使用文件访问协议协商通信以及通过RDMA使用文件访问协议交换数据的示例操作特征。在各实施例中,所描绘的各操作步骤可被组合到其他步骤中和/或被重新安排。此外,可使用例如更少或更多的步骤。
一般来说,积分是本发明各实施例的优点。发送积分表示已被预先发布来接收对等体上的传入数据的缓冲区。由此,发送积分表示已被提交给对等体使得该对等体可使用其来传送数据的有限接收方资源(存储器、存储器区域等)。在各实施例中,由于RDMA的特性,接收区一旦被发布后就不可被取消。对于要被释放的与接收区相关联的资源,这些资源被用于服务于传入发送。在其中接收对等体开始在各资源上慢速运行并想要回收这些资源中它已专用于尚未解决的接收区的一些资源的各实施例中,这造成可能的问题。根据此处所公开的各实施例,由于接收区无法被取消,因此回收这些资源取决于对等体的协作。
根据一实施例,对于SMB直通中的这一问题的解决方案被称为发送积分撤销。向对等体传送的SMB直通数据传送包具有指定多少附加的发送积分已被授予对等体的CreditsGranted字段。在替换实施例中,通过在SMB直通数据传送包338中设置CreditRevocation(积分撤销)标志(未示出),CreditsGranted字段320b的含义改变为对等体可保持的发送积分的数目。例如,如果CreditRevocation标志被设置且CreditsGranted字段320b的值为十(10),则十(10)为接收方可保留的积分数。如果接收方当前持有多于十(10)个发送积分,则接收方执行一系列RDMA发送操作来将所撤销的发送积分用完,使得接收方最终具有十(10)个或更少的发送积分。被执行来将所撤销的发送积分用完的发送操作可包括发送空SMB直通数据传送包338(不具有数据有效载荷的数据包)。根据各实施例,在接收到传入的空SMB直通数据传送包338后,撤销发送积分的对等体可以根据其认为合适的释放这些资源或重新使用它们。
尽管发送积分允许两个对等体使它们的发送和接收操作同步,在各实施例中这些对等体尝试避免发送积分死锁。想象其中对等体Y具有来自对等体X的单个发送积分并且对等体X具有来自对等体Y的单个发送积分的场景。在这个场景中,每一对等体被授权在任何时刻对其对等体执行单次发送。想象X和Y两者都使用该过程中的它们的单个发送积分来同时执行发送操作,但由两个对等体传送的SMB直通数据传送包338没有向对等体授予附加发送积分。所得的状态被称为发送积分死锁。X和Y两者都已使用了其最后的发送积分。为了能够向对等体发送附加的数据包,每一对等体需要附加的发送积分。然而,发送积分是经由SMB直通数据传送包338来授予的,并且任一方都不可执行任何进一步的发送操作。结果是任一对等体都不可传送任何附加的数据包,并且不存在它们可获取进一步发送积分的机制。因此,死锁已发生。
根据本公开的各实施例,这个问题的解决方案只是一规则。根据一实施例,在SMB直通对等体使用了它的最后一个发送积分时,正被发送的SMB直通数据传送数据包338向该对等体授予至少一个(1)附加发送积分。如果两个对等体都遵循这个规则,则死锁不会发生,因为每一对等体将总是能够通过授予附加的发送积分来对另一方作出响应。
最后,图7示出可在其上实现本文公开的各实施例的示例计算机系统700。根据此处所公开的各实施例,描绘了诸如例如客户机/应用服务器102或文件服务器106之类的、具有至少一个处理器702的用于如此处所示的交换消息数据的计算机系统700。系统700具有存储器704,包括例如系统存储器、易失性存储器和非易失性存储器。在其最基本的配置中,计算系统700在图7中由虚线706示出。另外,系统700还可包括另外的存储(可移动和/或不可移动),其中包括但不限于磁盘、光盘或磁带。在图7中通过可移动存储708和不可移动存储710示出这样的附加存储。
如这里所使用的术语计算机可读介质可以包括计算机存储介质。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器704、可移动存储708和不可移动存储710都是计算机存储介质(即,存储器存储)的示例。计算机存储介质可以包括,但不限于,RAM、ROM、电可擦除只读存储器(EEPROM)、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或可用于存储信息且可以由计算系统700访问的任何其他介质。任何这样的计算机存储介质都可以是系统700的一部分。图7中的说明不意图以任何方式限制本公开的范围。
如这里所使用的术语计算机可读介质还包括通信介质。通信介质由诸如载波或其他传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据来体现,并包括任何信息传递介质。术语“已调制数据信号”可以描述以对该信号中的信息进行编码的方式设定或者改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接等有线介质,以及诸如声学、射频(RF)、红外线和其他无线介质等无线介质。
系统700还可包含允许该设备与其它设备通信的通信连接716。此外,系统700还可具有输入设备714,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备等等。还可包括输出设备712,诸如显示器、扬声器、打印机等等。所有这些设备在本领域中是公知的并且不必在此详细讨论。上述设备是示例且可以使用其他设备。
以上参考附图描述了本发明的各实施例,可以理解,可以对本发明做出本领域技术人员易于想到且被包含在所公开并如所附权利要求书所定义的本发明的精神和范围内的众多修改。尽管出于本发明的目的描述了各实施方式,但可以做出落入本发明的范围内的各种改变和修改。
同样地,虽然本发明使用了对结构特征、方法动作和含有这些动作的计算机可读介质专用的语言,但是应该理解,在所附权利要求书中定义的本发明不必限于此处描述的具体结构、动作、特征或介质。例如,尽管在各实施例的各描述方面中使用了特定名称或命名约定(诸如,API、例程等的名称),但可以对这样的名称和/或命名约定作出多种修改,这些修改被涵盖在本公开的精神和范围内。上述特定结构、特征、动作、名称、命名约定和/或介质是作为实现权利要求的示例形式而公开的。各实施例的各方面允许多个客户机/应用服务器、多个文件服务器、多个网络、多个连接对等体等。或者,在其他实施例中,使用具有单个服务器和单个网络的单个客户机计算机。所属领域技术人员将认识到在本公开的范围和精神内的其他实施例或改进。因此,这些具体结构、动作、或介质是作为实现所要求保护的本发明的示例性实施例而公开的。本发明由所附权利要求书进行定义。

Claims (20)

1.一种用于建立连接以交换数据的计算机实现的方法,所述方法包括:
由接收机接收第一数据包,其中所述数据包包括第一字段和数据,其中所述第一字段等于接收机已经接收的分段消息的字节数;
确定存储在所述第一字段中的值是否为零;
当所述值为零时:
处理所述第一分组中的所述数据;
当所述值不为零时:
为所述连接分配一个重新组装缓冲区;
将所述数据从所述第一数据包复制到所述重新组装缓冲区中;
接收包括第二数据的第二数据包;以及
将所述第二数据从所述第二数据包复制到所述重新组装缓冲区中。
2.如权利要求1所述的方法,其特征在于,所述第一数据包包括由以下项组成的组中的一个或多个字段:
请求的积分字段;
授予的积分字段;
数据偏移字段;以及
数据长度字段。
3.如权利要求2所述的方法,其特征在于,所述授予的积分字段描绘多少积分被提供给第一数据包的发送方。
4.如权利要求1所述的方法,其特征在于,积分是标识所述发送方能发送的消息的数目的值。
5.如权利要求1所述的方法,其特征在于,进一步包括:
确定所述第二数据包是否是最后的数据包;
如果所述第二数据包是最后的数据包,处理在所述重新组装缓冲区中的数据;
如果所述第二数据包不是最后的数据包,接收至少一个第三数据包并将第三数据从所述第三数据包复制到所述重新组装缓冲区中。
6.如权利要求5所述的方法,其特征在于,其中所述重新组装缓冲区包括来自至少两个数据包的数据。
7.如权利要求5所述的方法,其特征在于,其中所述确定所述第一数据包是否是最后的数据包包括确定存储在所述第一字段中的所述值是否等于零。
8.如权利要求1所述的方法,其特征在于,进一步包括:
预先发布协商请求的接收;
设置协商请求期满计时器;
确定在协商请求期满计时器期满之前是否接收到所述协商请求;
如果在所述协商请求期满计时器期满之前没有接收到所述协商请求,则取消所述协商请求的接收;
如果在所述协商请求期满计时器期满之前接收到所述协商请求,则接收所述协商请求,其中所述协商请求请求建立所述连接以使用远程直接存储器访问发送数据;
验证所述协商请求;
处理所述协商请求;
响应于处理所述协商请求,生成响应,其中所述响应允许所述连接并将至少一个积分分配给所述协商请求的发送方以发送数据包;
发送所述响应。
9.如权利要求8所述的方法,其特征在于,所述协商请求包括来自由下述项组成的组中的一个或多个字段:
请求版本字段;
第一积分请求字段;
指示第一大小的偏好大小字段;以及
指示第二大小的最大大小字段。
10.如权利要求9所述的方法,其特征在于,所述请求包括来自由下述项组成的组中的一个或多个字段:
请求版本字段;
偏好版本字段;
第二积分请求字段;
授予的积分字段;以及
状态字段。
11.一种存储了计算可执行指令的计算机可读存储介质,所述计算可执行指令在由一个处理器执行时,执行一种用于交换数据的方法,所述方法包括:
建立与服务器的连接;
与所述服务器协商连接,其中所述协商建立所述服务器将在该连接中接收的最大字节数;
确定用于将与所述连接相关联的数据发送给所述服务器的数据包的数目;
确定是否要使用对所述数据的分段;
当不使用对所述数据的分段时:
将第一数据包和所述数据发送给所述服务器;
当使用对所述数据的分段时:
初始化所述传送缓冲区内的第一字节,以作为所述第一数据包中的数据来发送;
设置对应于数据长度的第一字段和对应于在所述第一数据包中剩余的数据的第二字段,其中所述第二字段等于服务器已经接收的分段消息的字节数;
将所述第一数据包发送给所述服务器;
初始化所述传送缓冲区内的多个字节,以作为所述第二协议数据包中的数据来发送;
设置对应于在所述第二数据包中的剩余数据的第三字段;以及
将所述第二数据包发送给所述服务器。
12.如权利要求11所述的计算机可读存储介质,其特征在于,确定是否要使用分段包括确定用于发送所述数据所需的数据包的数目是否大于1。
13.如权利要求12所述的计算机可读存储介质,其特征在于,确定要发送的数据包的数目包括确定所述服务器可在所述连接中接收的最大字节数是否小于要被发送的数据的字节数。
14.如权利要求11所述的计算机可读存储介质,其特征在于,与所述服务器协商连接包括:
预先发布接收区;
构建协商请求;
将所述协商请求发送给所述服务器;
设置协商期满计时器;
确定对所述协商请求的响应是否在所述协商期满计时器期满之前被接收到;
如果对所述协商请求的响应没有在所述协商期满计时器期满之前被接收到,则重新发送所述协商请求;
如果对所述协商请求的响应在所述协商期满计时器期满之前被接收到,则接收协商响应;
确认所述协商响应;以及
处理所述协商响应,其中所述协商响应提供至少一个积分以发送所述协议数据包。
15.如权利要求14所述的计算机可读存储介质,其特征在于,还包括:
如果存在足够积分用于发送所述第二数据包,则发送所述第二数据包;
如果不存在足够的积分来发送所述第二数据包,则向所述服务器请求至少又一个积分;
确定是否接收到足够的积分;
如果没有接收到足够的积分,则终止所述连接;以及
如果接收到足够的积分,则发送所述第二数据包。
16.被配置为交换数据的系统,所述系统包括:
第一客户机,包括:
第一处理器;以及
存储器编码计算机可执行指令,当由所述第一处理器执行时执行第一方法,包括:
在两个或更多消息中传送分段数据,其中每个消息包括第一字段,并且其中所述第一字段等于接收机已经接收的分段消息的字节数;以及
创建接收缓冲区以交换积分,其中所述积分确定发送方能向接收方发送的消息的数目。
17.如权利要求16所述的系统,其特征在于,进一步包括:
第二客户机,包括:
第一处理器;以及
存储器编码计算机可执行指令,当由所述第一处理器执行时执行一方法,包括:
创建读/写请求以指示服务器执行直接数据传送;以及
将所述读/写请求发送给所述第一客户机;以及
其中所述第一方法还包括:
将所述读/写请求封装在第一数据包中;以及
将所述第一数据包发送给所述服务器。
18.如权利要求17所述的系统,其特征在于,所述读/写请求包括标识信道描述符信息的第二字段。
19.如权利要求18所述的系统,其特征在于,所述信道描述符信息包括控制信息,并且其中所述服务器确定所述控制信息,并使用由所述控制信息所标识出的存储器地址执行未经编码的应用的写或读。
20.如权利要求19所述的系统,其特征在于,所述写包括直接存储器访问写,而所述读包括直接存储器访问读。
CN201610903829.1A 2011-06-29 2012-06-06 通过远程直接存储器访问的传输操作的方法、系统和介质 Active CN106411767B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/172,757 2011-06-29
US13/172,757 US9331955B2 (en) 2011-06-29 2011-06-29 Transporting operations of arbitrary size over remote direct memory access
CN201280032558.7A CN103636181B (zh) 2011-06-29 2012-06-06 通过远程直接存储器访问的任意大小的传输操作

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201280032558.7A Division CN103636181B (zh) 2011-06-29 2012-06-06 通过远程直接存储器访问的任意大小的传输操作

Publications (2)

Publication Number Publication Date
CN106411767A true CN106411767A (zh) 2017-02-15
CN106411767B CN106411767B (zh) 2019-08-13

Family

ID=47391756

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610903829.1A Active CN106411767B (zh) 2011-06-29 2012-06-06 通过远程直接存储器访问的传输操作的方法、系统和介质
CN201280032558.7A Active CN103636181B (zh) 2011-06-29 2012-06-06 通过远程直接存储器访问的任意大小的传输操作

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201280032558.7A Active CN103636181B (zh) 2011-06-29 2012-06-06 通过远程直接存储器访问的任意大小的传输操作

Country Status (6)

Country Link
US (2) US9331955B2 (zh)
EP (1) EP2737685A4 (zh)
JP (1) JP6047158B2 (zh)
KR (1) KR102047142B1 (zh)
CN (2) CN106411767B (zh)
WO (1) WO2013002980A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111400212A (zh) * 2019-09-29 2020-07-10 杭州海康威视系统技术有限公司 一种基于远程直接数据存取的传输方法、设备
US10997132B2 (en) 2017-02-07 2021-05-04 Oracle International Corporation Systems and methods for live data migration with automatic redirection
CN113127387A (zh) * 2021-03-12 2021-07-16 山东英信计算机技术有限公司 一种存储器和服务器

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8332526B2 (en) 2005-05-25 2012-12-11 Microsoft Corporation Data communication protocol including negotiation and command compounding
US8631277B2 (en) 2010-12-10 2014-01-14 Microsoft Corporation Providing transparent failover in a file system
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US8788579B2 (en) 2011-09-09 2014-07-22 Microsoft Corporation Clustered client failover
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US9473596B2 (en) * 2011-09-27 2016-10-18 International Business Machines Corporation Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections
US9495324B2 (en) * 2012-03-30 2016-11-15 Intel Corporation Efficient distribution of subnet administration data over an RDMA network
US20140280669A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Memory Sharing Over A Network
US20140337456A1 (en) * 2013-05-07 2014-11-13 Dell Products L.P. Systems and methods for enabling rdma between diverse endpoints
US10404520B2 (en) 2013-05-29 2019-09-03 Microsoft Technology Licensing, Llc Efficient programmatic memory access over network file access protocols
US9641614B2 (en) 2013-05-29 2017-05-02 Microsoft Technology Licensing, Llc Distributed storage defense in a cluster
US10223326B2 (en) * 2013-07-31 2019-03-05 Oracle International Corporation Direct access persistent memory shared storage
US10277678B2 (en) * 2014-05-14 2019-04-30 Hitachi Data Systems Engineering UK Limited Method and an apparatus, and related computer-program products, for managing access request to one or more file systems
US9584429B2 (en) * 2014-07-21 2017-02-28 Mellanox Technologies Ltd. Credit based flow control for long-haul links
CN105450588B (zh) * 2014-07-31 2019-02-12 华为技术有限公司 一种基于rdma的数据传输方法及rdma网卡
US9582463B2 (en) * 2014-12-09 2017-02-28 Intel Corporation Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message
US10469581B2 (en) 2015-01-05 2019-11-05 International Business Machines Corporation File storage protocols header transformation in RDMA operations
US10073809B2 (en) * 2015-04-27 2018-09-11 Intel Corporation Technologies for scalable remotely accessible memory segments
CN106664290B (zh) * 2015-05-26 2019-12-06 华为技术有限公司 一种光电混合网络的数据传输方法及装置
US20170034267A1 (en) * 2015-07-31 2017-02-02 Netapp, Inc. Methods for transferring data in a storage cluster and devices thereof
CN105141603B (zh) * 2015-08-18 2018-10-19 北京百度网讯科技有限公司 通信数据传输方法及系统
CN105446936B (zh) * 2015-11-16 2018-07-03 上海交通大学 基于htm和单向rdma操作的分布式哈希表方法
CN105938446B (zh) * 2016-01-12 2019-01-25 上海交通大学 基于rdma和硬件事务性内存支持的数据复制容错方法
EP3286631A4 (en) 2016-01-29 2018-05-30 Hewlett-Packard Enterprise Development LP Remote direct memory access
CN107533537B (zh) * 2016-01-29 2021-02-26 慧与发展有限责任合伙企业 存储系统、用于存储的方法和非暂时性计算机可读介质
CN107179878B (zh) * 2016-03-11 2021-03-19 伊姆西Ip控股有限责任公司 基于应用优化的数据存储的方法和装置
US11190454B2 (en) * 2016-03-23 2021-11-30 Purdue Research Foundation Receiver-directed computer network congestion control system
US10169238B2 (en) 2016-09-30 2019-01-01 International Business Machines Corporation Memory access for exactly-once messaging
US9794366B1 (en) * 2016-10-19 2017-10-17 Red Hat, Inc. Persistent-memory management
CN106411922A (zh) * 2016-10-31 2017-02-15 四川长虹电器股份有限公司 一种安全的身份认证方法及系统
US10198378B2 (en) * 2016-11-18 2019-02-05 Microsoft Technology Licensing, Llc Faster data transfer with simultaneous alternative remote direct memory access communications
US10803039B2 (en) 2017-05-26 2020-10-13 Oracle International Corporation Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
CN109756464B (zh) * 2017-11-07 2021-12-03 阿里巴巴集团控股有限公司 一种通信方法及服务器、客户端
US10911547B2 (en) * 2017-12-28 2021-02-02 Dell Products L.P. Systems and methods for SMB monitor dialect
CN108319428A (zh) * 2017-12-29 2018-07-24 杭州华为数字技术有限公司 一种数据读取的方法及装置
US11321249B2 (en) 2018-03-26 2022-05-03 Samsung Electronics Co., Ltd. Mechanism to autonomously manage SSDS in an array
US11394776B2 (en) 2018-06-07 2022-07-19 Tuxera, Inc. Systems and methods for transport layer processing of server message block protocol messages
US20200007608A1 (en) * 2018-06-29 2020-01-02 R-Stor Inc. System and method for performing fast file transfers
US11019132B2 (en) 2018-06-29 2021-05-25 R-Stor Inc. System and method for performing fast file transfers with dynamic bandwidth provisioning
US11128575B2 (en) * 2018-07-20 2021-09-21 Bank Of America Corporation System for increasing processing efficiency through automated resource field transformation
US11403253B2 (en) 2018-09-13 2022-08-02 Microsoft Technology Licensing, Llc Transport protocol and interface for efficient data transfer over RDMA fabric
US11295205B2 (en) * 2018-09-28 2022-04-05 Qualcomm Incorporated Neural processing unit (NPU) direct memory access (NDMA) memory bandwidth optimization
CN111262798B (zh) * 2018-11-30 2023-03-14 深圳市中兴微电子技术有限公司 一种信息处理方法、设备及计算机存储介质
US10951549B2 (en) 2019-03-07 2021-03-16 Mellanox Technologies Tlv Ltd. Reusing switch ports for external buffer network
KR20210030073A (ko) * 2019-09-09 2021-03-17 삼성전자주식회사 엣지 컴퓨팅 서비스를 위한 방법 및 장치
CN111277988B (zh) * 2020-03-17 2023-06-23 北京百瑞互联技术有限公司 一种提高微信小程序蓝牙传输速度的方法
US20220187992A1 (en) * 2020-12-16 2022-06-16 Kioxia Corporation Systems and methods for data copy offload for storage devices
US11558316B2 (en) 2021-02-15 2023-01-17 Mellanox Technologies, Ltd. Zero-copy buffering of traffic of long-haul links
CN115328408B (zh) * 2022-10-14 2023-01-03 联想凌拓科技有限公司 用于数据处理的方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6347337B1 (en) * 1999-01-08 2002-02-12 Intel Corporation Credit based flow control scheme over virtual interface architecture for system area networks
US20020024963A1 (en) * 2000-07-05 2002-02-28 Andrew Reeve Buffer management
CN1870642A (zh) * 2005-05-25 2006-11-29 微软公司 数据通信协议
US20080301311A1 (en) * 2007-05-30 2008-12-04 Caitlin Bestler Method and system for extended steering tags (stags) to minimize memory bandwidth for content delivery servers
CN101375263A (zh) * 2003-12-31 2009-02-25 微软公司 轻型输入/输出协议

Family Cites Families (275)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4399504A (en) 1980-10-06 1983-08-16 International Business Machines Corporation Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
JPS6019341A (ja) 1983-07-13 1985-01-31 Usac Electronics Ind Co Ltd 回線制御方式
JPS6019341U (ja) 1983-07-19 1985-02-09 ヤンマー農機株式会社 コンバインの脱穀装置
JPS613496U (ja) 1984-06-13 1986-01-10 株式会社東芝 タ−ビンミサイルの防護装置
US4825354A (en) 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
JPS62256165A (ja) 1986-04-30 1987-11-07 Fujitsu Ltd 構造解析デ−タ処理装置
US4736369A (en) 1986-06-13 1988-04-05 International Business Machines Corp. Adaptive session-level pacing
US4780821A (en) 1986-07-29 1988-10-25 International Business Machines Corp. Method for multiple programs management within a network having a server computer and a plurality of remote computers
JPH076917B2 (ja) 1986-09-01 1995-01-30 富士写真フイルム株式会社 乾式分析方法における検量線の補正方法
US4914570A (en) 1986-09-15 1990-04-03 Counterpoint Computers, Inc. Process distribution and sharing system for multiple processor computer system
JPS6361148U (zh) 1986-10-08 1988-04-22
US4887204A (en) 1987-02-13 1989-12-12 International Business Machines Corporation System and method for accessing remote files in a distributed networking environment
JPS63205747A (ja) 1987-02-13 1988-08-25 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 通信方法及びデータ処理システム
US5202971A (en) 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US4791566A (en) 1987-03-27 1988-12-13 Digital Equipment Corporation Terminal device session management protocol
JPS63256165A (ja) 1987-04-14 1988-10-24 Seiko Epson Corp 嫌気性液体の定量吐出方法
JPS6461148A (en) 1987-08-31 1989-03-08 Nec Corp Flow control system
CA1321994C (en) 1987-10-28 1993-09-07 Reid Von Borstel Acylated uridine and cytidine and uses thereof
US5008853A (en) 1987-12-02 1991-04-16 Xerox Corporation Representation of collaborative multi-user activities relative to shared structured data objects in a networked workstation environment
US4891785A (en) 1988-07-08 1990-01-02 Donohoo Theodore J Method for transferring data files between computers in a network response to generalized application program instructions
JPH0821969B2 (ja) 1988-09-13 1996-03-04 日本電気株式会社 伝送制御方法
JPH02101847A (ja) 1988-10-11 1990-04-13 Nec Corp 通信制御方式
US5124909A (en) 1988-10-31 1992-06-23 Hewlett-Packard Company Software program for providing cooperative processing between personal computers and a host computer
JPH02101847U (zh) 1989-01-24 1990-08-14
CA1323448C (en) 1989-02-24 1993-10-19 Terrence C. Miller Method and apparatus for translucent file system
US5109519A (en) 1989-03-28 1992-04-28 Wang Laboratories, Inc. Local computer participating in mail delivery system abstracts from directory of all eligible mail recipients only served by local computer
US5560008A (en) 1989-05-15 1996-09-24 International Business Machines Corporation Remote authentication and authorization in a distributed data processing system
US5113519A (en) 1989-05-15 1992-05-12 International Business Machines Corporation Maintenance of file attributes in a distributed data processing system
US5218696A (en) 1989-07-24 1993-06-08 International Business Machines Corporation Method for dynamically expanding and rapidly accessing file directories
US5265261A (en) 1989-08-14 1993-11-23 Microsoft Corporation Method and system for network communications using raw mode protocols
US5261051A (en) 1989-08-14 1993-11-09 Microsoft Corporation Method and system for open file caching in a networked computer system
JPH0374745A (ja) 1989-08-15 1991-03-29 Oki Electric Ind Co Ltd データ処理装置
JPH0754462Y2 (ja) 1989-11-10 1995-12-18 株式会社竹中工務店 被連結部材の連結装置
JPH03245939A (ja) 1990-02-20 1991-11-01 Fudoo Kk 工具ホルダー把持装置
JP2575543B2 (ja) 1990-04-04 1997-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 同時アクセス管理方法
US5130986A (en) 1990-04-27 1992-07-14 At&T Bell Laboratories High speed transport protocol with two windows
JPH04172039A (ja) 1990-11-05 1992-06-19 Matsushita Electric Ind Co Ltd パケット通信装置
KR940001700B1 (ko) 1991-05-25 1994-03-05 한국전기통신공사 전전자 교환기의 운용 명령어 수행상태 조회 및 삭제방법
JPH0589048A (ja) 1991-09-25 1993-04-09 Nec Corp コマンド処理方式
JPH05143488A (ja) 1991-11-18 1993-06-11 Nippon Telegr & Teleph Corp <Ntt> 複数コマンドの転送方法
JPH0619771A (ja) 1992-04-20 1994-01-28 Internatl Business Mach Corp <Ibm> 異種のクライアントによる共用ファイルのファイル管理機構
JPH0675890A (ja) 1992-08-26 1994-03-18 Chugoku Nippon Denki Software Kk クライアント・サーバ間の要求データ応答データ授受方式
US5349642A (en) 1992-11-03 1994-09-20 Novell, Inc. Method and apparatus for authentication of client server communication
US5452447A (en) 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
US5493728A (en) 1993-02-19 1996-02-20 Borland International, Inc. System and methods for optimized access in a multi-user environment
US5491752A (en) 1993-03-18 1996-02-13 Digital Equipment Corporation, Patent Law Group System for increasing the difficulty of password guessing attacks in a distributed authentication scheme employing authentication tokens
JPH0675890U (ja) 1993-04-02 1994-10-25 市光工業株式会社 コーナリングランプ点灯回路
JP2513127B2 (ja) 1993-05-31 1996-07-03 日本電気株式会社 ホットスタンバイ高速切替えシステム
JPH0736760A (ja) 1993-07-20 1995-02-07 Nippon Telegr & Teleph Corp <Ntt> 装置多重化機能とモジュール間共用機能を併用した外部記憶装置の高信頼化方法
US5522042A (en) 1994-01-28 1996-05-28 Cabletron Systems, Inc. Distributed chassis agent for distributed network management
US5588117A (en) 1994-05-23 1996-12-24 Hewlett-Packard Company Sender-selective send/receive order processing on a per message basis
US5513314A (en) 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
JPH08314784A (ja) 1995-05-19 1996-11-29 Toshiba Corp ファイル管理装置
US5628005A (en) 1995-06-07 1997-05-06 Microsoft Corporation System and method for providing opportunistic file access in a network environment
US5826027A (en) 1995-10-11 1998-10-20 Citrix Systems, Inc. Method for supporting an extensible and dynamically bindable protocol stack in a distrubited process system
US5764887A (en) 1995-12-11 1998-06-09 International Business Machines Corporation System and method for supporting distributed computing mechanisms in a local area network server environment
US5633899A (en) 1996-02-02 1997-05-27 Lsi Logic Corporation Phase locked loop for high speed data capture of a serial data stream
US6343313B1 (en) 1996-03-26 2002-01-29 Pixion, Inc. Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability
US6438691B1 (en) 1996-04-01 2002-08-20 Hewlett-Packard Company Transmitting messages over a network
RU2118051C1 (ru) 1996-04-30 1998-08-20 Лихачев Александр Геннадьевич Способ доступа к ресурсам "всемирной паутины" через шлюзы-представители
US6434120B1 (en) 1998-08-25 2002-08-13 Cisco Technology, Inc. Autosensing LMI protocols in frame relay networks
US5933602A (en) 1996-07-31 1999-08-03 Novell, Inc. System for selecting command packet and corresponding response packet from communication stream of packets by monitoring packets sent between nodes on network
US6208952B1 (en) 1996-10-24 2001-03-27 Microsoft Corporation Method and system for delayed registration of protocols
JPH10133971A (ja) 1996-10-25 1998-05-22 Nec Corp ファイル転送処理方式
US6125122A (en) 1997-01-21 2000-09-26 At&T Wireless Svcs. Inc. Dynamic protocol negotiation system
FR2759518B1 (fr) 1997-02-07 1999-04-23 France Telecom Procede et dispositif d'allocation de ressources dans un reseau numerique de transmission par paquets
US5987621A (en) 1997-04-25 1999-11-16 Emc Corporation Hardware and software failover services for a file server
US5931913A (en) 1997-05-07 1999-08-03 International Business Machines Corporation Methods, system and computer program products for establishing a session between a host and a terminal using a reduced protocol
JP3341637B2 (ja) 1997-06-20 2002-11-05 日本電気株式会社 トランザクション処理システムにおける端末状態管理方法及びコンピュータ読み取り可能な記録媒体
US6219799B1 (en) 1997-07-01 2001-04-17 Unisys Corporation Technique to support pseudo-names
US6092199A (en) 1997-07-07 2000-07-18 International Business Machines Corporation Dynamic creation of a user account in a client following authentication from a non-native server domain
JPH1155314A (ja) 1997-07-30 1999-02-26 Nippon Telegr & Teleph Corp <Ntt> データ転送制御方法
US6275953B1 (en) 1997-09-26 2001-08-14 Emc Corporation Recovery from failure of a data processor in a network server
US6247139B1 (en) 1997-11-11 2001-06-12 Compaq Computer Corp. Filesystem failover in a single system image environment
US6131125A (en) 1997-11-14 2000-10-10 Kawasaki Lsi U.S.A., Inc. Plug-and-play data cable with protocol translation
US6085247A (en) 1998-06-08 2000-07-04 Microsoft Corporation Server operating system for supporting multiple client-server sessions and dynamic reconnection of users to previous sessions using different computers
US6516351B2 (en) 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
US7010532B1 (en) 1997-12-31 2006-03-07 International Business Machines Corporation Low overhead methods and apparatus for shared access storage devices
KR100272567B1 (ko) 1997-12-31 2000-11-15 서평원 이동통신 네트워크를 이용한 이동 인터넷
US6243862B1 (en) 1998-01-23 2001-06-05 Unisys Corporation Methods and apparatus for testing components of a distributed transaction processing system
US6317844B1 (en) 1998-03-10 2001-11-13 Network Appliance, Inc. File server storage arrangement
JPH11265361A (ja) 1998-03-17 1999-09-28 Nec Corp 多重計算機システム、通信処理装置、トランザクション処理システム、トランザクション処理システム運転引き継ぎ方法、トランザクション処理システム運転引き継ぎプログラムを記録した記録媒体
JP3506920B2 (ja) 1998-08-25 2004-03-15 日本電信電話株式会社 全命令トレースデータの2次記憶装置への格納競合防止方法
AU1105600A (en) * 1998-10-07 2000-04-26 Adobe Systems Incorporated Distributing access to a data item
US6230190B1 (en) 1998-10-09 2001-05-08 Openwave Systems Inc. Shared-everything file storage for clustered system
US6401123B1 (en) 1998-11-24 2002-06-04 International Busines Machines Corporation Systems, methods and computer program products for employing presumptive negotiation in a data communications protocol
JP2000163369A (ja) 1998-11-30 2000-06-16 Nippon Telegr & Teleph Corp <Ntt> 処理結果分散管理方法及びシステム及び処理結果分散管理サーバ装置及び処理結果分散管理プログラムを格納した記憶媒体
US6883000B1 (en) 1999-02-12 2005-04-19 Robert L. Gropper Business card and contact management system
US6453354B1 (en) 1999-03-03 2002-09-17 Emc Corporation File server system using connection-oriented protocol and sharing data sets among data movers
US6324581B1 (en) 1999-03-03 2001-11-27 Emc Corporation File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems
US20040139004A1 (en) 1999-04-08 2004-07-15 Aceinc Pty Ltd. Secure online commerce transactions
US6938096B1 (en) 1999-04-12 2005-08-30 Softricity, Inc. Method and system for remote networking using port proxying by detecting if the designated port on a client computer is blocked, then encapsulating the communications in a different format and redirecting to an open port
US7562129B1 (en) 1999-04-15 2009-07-14 Alcatel-Lucent Canada Inc. Subscription management system for data communication network
US6349350B1 (en) 1999-05-04 2002-02-19 International Business Machines Corporation System, method, and program for handling failed connections in an input/output (I/O) system
AU4839300A (en) 1999-05-11 2000-11-21 Webvan Group, Inc. Electronic commerce enabled delivery system and method
US7318102B1 (en) 1999-05-24 2008-01-08 Hewlett-Packard Development Company, L.P. Reliable datagram
US6430691B1 (en) 1999-06-21 2002-08-06 Copytele, Inc. Stand-alone telecommunications security device
US6490666B1 (en) 1999-08-20 2002-12-03 Microsoft Corporation Buffering data in a hierarchical data storage environment
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
JP2001077844A (ja) 1999-09-06 2001-03-23 Axle Linkage Labo Inc ネットワーク制御方法、サーバ装置、クライアント装置、遊技台装置用ネットワーク制御方法、ホールサーバコンピュータ装置、遊技台装置
JP2001094613A (ja) 1999-09-21 2001-04-06 Canon Inc 通信制御装置、方法および記録媒体
US6775707B1 (en) 1999-10-15 2004-08-10 Fisher-Rosemount Systems, Inc. Deferred acknowledgment communications and alarm management
US6910082B1 (en) 1999-11-18 2005-06-21 International Business Machines Corporation Method, system and program products for reducing data movement within a computing environment by bypassing copying data between file system and non-file system buffers in a server
US6658476B1 (en) 1999-11-29 2003-12-02 Microsoft Corporation Client-server protocol support list for standard request-response protocols
US7050984B1 (en) 1999-12-22 2006-05-23 Ge Medical Systems, Inc. Integrated interactive service to a plurality of medical diagnostic systems
US7111060B2 (en) 2000-03-14 2006-09-19 Aep Networks, Inc. Apparatus and accompanying methods for providing, through a centralized server site, a secure, cost-effective, web-enabled, integrated virtual office environment remotely accessible through a network-connected web browser
US6883015B1 (en) 2000-03-30 2005-04-19 Cisco Technology, Inc. Apparatus and method for providing server state and attribute management for multiple-threaded voice enabled web applications
US6993587B1 (en) 2000-04-07 2006-01-31 Network Appliance Inc. Method and apparatus for election of group leaders in a distributed network
WO2001077844A1 (fr) 2000-04-10 2001-10-18 Fujitsu Limited Systeme de traitement d'informations et serveur associe
US7225244B2 (en) 2000-05-20 2007-05-29 Ciena Corporation Common command interface
US6452903B1 (en) 2000-05-31 2002-09-17 Fujitsu Network Communications, Inc. Network switch supporting rate-based and credit-based flow control mechanisms on a link-by-link basis
US6961858B2 (en) 2000-06-16 2005-11-01 Entriq, Inc. Method and system to secure content for distribution via a network
US7693976B2 (en) 2000-07-11 2010-04-06 Ciena Corporation Granular management of network resources
US6732289B1 (en) 2000-08-31 2004-05-04 Sun Microsystems, Inc. Fault tolerant data storage system
US6349250B1 (en) 2000-10-26 2002-02-19 Detroit Diesel Corporation Clear historic data from a vehicle data recorder
US20020062379A1 (en) 2000-11-06 2002-05-23 Widegren Ina B. Method and apparatus for coordinating quality of service requirements for media flows in a multimedia session with IP bearer services
JP2002183000A (ja) 2000-12-11 2002-06-28 Hitachi Ltd ネットワークを介するデータ参照方法及びそのシステム
US20020073211A1 (en) 2000-12-12 2002-06-13 Raymond Lin System and method for securely communicating between application servers and webservers
US6862692B2 (en) 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
KR100750735B1 (ko) 2001-02-03 2007-08-22 삼성전자주식회사 홈네트워크내의 기기 제어장치 및 방법 및 이를 적용한홈네트워크 시스템
US7493391B2 (en) 2001-02-12 2009-02-17 International Business Machines Corporation System for automated session resource clean-up by determining whether server resources have been held by client longer than preset thresholds
US7055036B2 (en) 2001-04-06 2006-05-30 Mcafee, Inc. System and method to verify trusted status of peer in a peer-to-peer network environment
US8051212B2 (en) 2001-04-11 2011-11-01 Mellanox Technologies Ltd. Network interface adapter with shared data send resources
US20030093678A1 (en) 2001-04-23 2003-05-15 Bowe John J. Server-side digital signature system
JP3797236B2 (ja) 2001-04-27 2006-07-12 日本ビクター株式会社 記録再生装置および記録再生方法
JP2002328828A (ja) 2001-04-27 2002-11-15 Fujitsu Ltd ストレージサービス方法、ストレージサービスユーザ及びストレージサービスプロバイダ
US6640226B1 (en) 2001-06-19 2003-10-28 Informatica Corporation Ranking query optimization in analytic applications
US7287079B2 (en) * 2001-06-29 2007-10-23 Qualcomm Incorporated Implementing and coordinating configuration of protocol processes
JP4249915B2 (ja) 2001-07-13 2009-04-08 株式会社バンダイ 配信システム、そのサーバ及び収容装置と、携帯端末システムと、プログラム
US7409420B2 (en) 2001-07-16 2008-08-05 Bea Systems, Inc. Method and apparatus for session replication and failover
US6944785B2 (en) 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
JP2003069610A (ja) 2001-08-22 2003-03-07 Canon Inc 通信装置、その制御方法、通信システム、及び制御プログラム
JP3663627B2 (ja) 2001-10-18 2005-06-22 ソニー株式会社 通信処理装置、および通信処理方法、並びにコンピュータ・プログラム
US7136982B2 (en) 2001-11-09 2006-11-14 Danger, Inc. Apparatus and method for allocating memory blocks
CN100366025C (zh) 2001-12-07 2008-01-30 捷讯研究有限公司 从主服务到移动台分布信息的方法
US7394764B2 (en) 2001-12-14 2008-07-01 Sasken Communication Technologies Limited Technique for improving transmission control protocol performance in lossy networks
US7313816B2 (en) 2001-12-17 2007-12-25 One Touch Systems, Inc. Method and system for authenticating a user in a web-based environment
JP3969089B2 (ja) 2001-12-25 2007-08-29 株式会社日立製作所 階層構成サーバシステム
US7111035B2 (en) 2001-12-26 2006-09-19 Hewlett-Packard Development Company, L.P. Fault tolerance associations for IP transport protocols
US20030140129A1 (en) 2002-01-24 2003-07-24 Noam Livnat Installing communication protocol in a handheld device
US20030154398A1 (en) 2002-02-08 2003-08-14 Eaton Eric Thomas System for providing continuity between session clients and method therefor
US6829606B2 (en) 2002-02-14 2004-12-07 Infoglide Software Corporation Similarity search engine for use with relational databases
US7178050B2 (en) 2002-02-22 2007-02-13 Bea Systems, Inc. System for highly available transaction recovery for transaction processing systems
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US7388866B2 (en) 2002-03-07 2008-06-17 Broadcom Corporation System and method for expediting upper layer protocol (ULP) connection negotiations
US7668306B2 (en) 2002-03-08 2010-02-23 Intel Corporation Method and apparatus for connecting packet telephony calls between secure and non-secure networks
JP2003281091A (ja) 2002-03-25 2003-10-03 Fujitsu Ltd 同時受付制御システム
JP4315696B2 (ja) 2002-03-29 2009-08-19 富士通株式会社 ホスト端末エミュレーションプログラム、中継用プログラムおよびホスト端末エミュレーション方法
CA2385344A1 (en) 2002-05-08 2003-11-08 Bell Globemedia Inc. Data transfer method and apparatus
JP2003337717A (ja) 2002-05-22 2003-11-28 Nec Corp オンライントランザクション処理の障害時復旧同期システム
JP4000905B2 (ja) 2002-05-22 2007-10-31 ソニー株式会社 情報処理システムおよび方法、情報処理装置および方法、記録媒体、並びにプログラム
EP1512261A1 (en) 2002-06-10 2005-03-09 Caplin Systems Limited Resource management
US7290141B2 (en) 2002-06-27 2007-10-30 Nokia, Inc. Authentication of remotely originating network messages
US20040003210A1 (en) 2002-06-27 2004-01-01 International Business Machines Corporation Method, system, and computer program product to generate test instruction streams while guaranteeing loop termination
AU2003246189A1 (en) 2002-07-01 2004-01-19 Kabushiki Kaisha Toshiba Seamless system, recording medium, computer system processing continuation method
CA2393502A1 (en) 2002-07-15 2004-01-15 Mark J. Frazer System and method for reliable transport in a computer network
US20040019660A1 (en) 2002-07-24 2004-01-29 Sandhya E. Lock holding multi-threaded processes for distibuted data systems
US6829473B2 (en) 2002-07-25 2004-12-07 Utstarcom, Inc. Roaming and hand-off support for prepaid billing for wireless data networks
AU2003259297A1 (en) 2002-07-29 2004-02-16 Eternal Systems, Inc. Consistent message ordering for semi-active and passive replication
US7386855B2 (en) 2002-08-12 2008-06-10 Ntt Docomo, Inc. Application mobility service
US20040032876A1 (en) 2002-08-19 2004-02-19 Ajay Garg Selection of transmission channels
JP3846384B2 (ja) 2002-08-28 2006-11-15 ブラザー工業株式会社 端末装置、接続制御方法、接続制御用プログラム及び記録媒体
US6957367B2 (en) 2002-08-30 2005-10-18 Hewlett-Packard Development Company L.P. System and method for controlling activity of temporary files in a computer system
JP3938002B2 (ja) 2002-10-18 2007-06-27 キヤノン株式会社 印刷システムの制御方法
US7109430B2 (en) 2002-11-05 2006-09-19 Emrise Corporation Low profile rotary switch with detent in the bushing
US7386889B2 (en) 2002-11-18 2008-06-10 Trusted Network Technologies, Inc. System and method for intrusion prevention in a communications network
US7475142B2 (en) 2002-12-06 2009-01-06 Cisco Technology, Inc. CIFS for scalable NAS architecture
US7421502B2 (en) 2002-12-06 2008-09-02 International Business Machines Corporation Method and system for storage-aware flow resource management
US7664991B1 (en) 2002-12-17 2010-02-16 Symantec Operating Corporation System and method for distributed file system I/O recovery
US20040153700A1 (en) 2003-01-02 2004-08-05 Nixon Mark J. Redundant application stations for process control systems
US7290051B2 (en) 2003-01-09 2007-10-30 Sun Microsystems, Inc. Method and apparatus for hardware implementation independent verification of network layers
US7519834B1 (en) 2003-01-24 2009-04-14 Nortel Networks Limited Scalable method and apparatus for transforming packets to enable secure communication between two stations
JP3999135B2 (ja) 2003-01-24 2007-10-31 株式会社エヌ・ティ・ティ・ドコモ 通信システム、データ送信方法、通信装置、プログラムおよび記録媒体
US7151939B2 (en) 2003-02-18 2006-12-19 Qualcomm Incorporated Method, apparatus, and machine-readable medium for providing indication of location service availability and the quality of available location services
US7072807B2 (en) 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7490152B2 (en) 2003-04-11 2009-02-10 Alcatel-Lucent Usa Inc. Version caching mechanism
US7339885B2 (en) 2003-06-05 2008-03-04 International Business Machines Corporation Method and apparatus for customizable surveillance of network interfaces
US20040255202A1 (en) 2003-06-13 2004-12-16 Alcatel Intelligent fault recovery in a line card with control plane and data plane separation
US7363629B2 (en) 2003-06-19 2008-04-22 International Business Machines Corporation Method, system, and program for remote resource management
US7698115B2 (en) 2003-06-30 2010-04-13 Microsoft Corporation System and method for dynamically allocating resources in a client/server environment
US7693998B2 (en) 2003-06-30 2010-04-06 Microsoft Corporation System and method for message-based scalable data transport
US7526640B2 (en) 2003-06-30 2009-04-28 Microsoft Corporation System and method for automatic negotiation of a security protocol
US20050015511A1 (en) 2003-07-02 2005-01-20 Nec Laboratories America, Inc. Accelerated large data distribution in overlay networks
JP4229774B2 (ja) 2003-07-11 2009-02-25 日本電信電話株式会社 セッション制御プログラムと通信端末装置
US7296264B2 (en) 2003-07-18 2007-11-13 Bea Systems, Inc. System and method for performing code completion in an integrated development environment
KR100984497B1 (ko) 2003-07-24 2010-10-01 파나소닉 주식회사 파일 관리 방법 및 정보 처리 장치
US8028078B2 (en) 2003-08-07 2011-09-27 Teamon Systems, Inc. Communications system including protocol interface device providing enhanced operating protocol selection features and related methods
CN100547583C (zh) 2003-08-14 2009-10-07 甲骨文国际公司 数据库的自动和动态提供的方法
US7870268B2 (en) 2003-09-15 2011-01-11 Intel Corporation Method, system, and program for managing data transmission through a network
US20050091226A1 (en) 2003-10-23 2005-04-28 Yun Lin Persistent caching directory level support
US7539722B2 (en) 2003-10-24 2009-05-26 Microsoft Corporation Method and system for accessing a file
US7231397B2 (en) 2003-10-24 2007-06-12 Microsoft Corporation Method and system for transacted file operations over a network
EP1680746B1 (en) 2003-11-07 2009-03-25 Sony Electronics Inc. File transfer protocol for mobile computer
US7673066B2 (en) 2003-11-07 2010-03-02 Sony Corporation File transfer protocol for mobile computer
JP4836432B2 (ja) 2003-11-17 2011-12-14 株式会社リコー 文書管理システム、文書管理装置、文書管理方法、文書管理プログラム及び記録媒体
US7188273B2 (en) 2003-11-24 2007-03-06 Tsx Inc. System and method for failover
US20050111030A1 (en) 2003-11-25 2005-05-26 Berkema Alan C. Hard copy imaging systems, print server systems, and print server connectivity methods
FI20031779A0 (fi) 2003-12-05 2003-12-05 Nokia Corp Menetelmä, järjestelmä ja lähetettävän puolen yhteyskäytäntöyksikkö datapakettien lähettämiseksi kuittaamattoman toimintamuodon palveluissa
US7730489B1 (en) 2003-12-10 2010-06-01 Oracle America, Inc. Horizontally scalable and reliable distributed transaction management in a clustered application server environment
US7383483B2 (en) 2003-12-11 2008-06-03 International Business Machines Corporation Data transfer error checking
US7177941B2 (en) 2003-12-11 2007-02-13 International Business Machines Corporation Increasing TCP re-transmission process speed
US7243284B2 (en) 2003-12-11 2007-07-10 International Business Machines Corporation Limiting number of retransmission attempts for data transfer via network interface controller
US7478381B2 (en) 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US20050177635A1 (en) 2003-12-18 2005-08-11 Roland Schmidt System and method for allocating server resources
US7493394B2 (en) 2003-12-31 2009-02-17 Cisco Technology, Inc. Dynamic timeout in a client-server system
US7383463B2 (en) 2004-02-04 2008-06-03 Emc Corporation Internet protocol based disaster recovery of a server
JP2007529838A (ja) 2004-03-17 2007-10-25 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ディスク状の情報記憶媒体をスキャニングするための方法及び装置
US7444536B1 (en) 2004-04-16 2008-10-28 Sun Microsystems, Inc. RMI-IIOP request failover mechanism
US7627627B2 (en) 2004-04-30 2009-12-01 Hewlett-Packard Development Company, L.P. Controlling command message flow in a network
US20050246803A1 (en) 2004-04-30 2005-11-03 Spencer Andrew M Peripheral device for processing data from a computing device
JP2005321953A (ja) 2004-05-07 2005-11-17 Hitachi Ltd ストレージ制御装置、その動作プログラム、及びアクセス制御方法
JP2005322016A (ja) 2004-05-10 2005-11-17 Yokogawa Electric Corp サーバ装置および情報配信方法
US7380080B2 (en) 2004-05-17 2008-05-27 Hewlett-Packard Development Company, L.P. Calculating unneeded data storage credits for a data transmission to a pair of storage devices
US7330910B2 (en) 2004-05-20 2008-02-12 International Business Machines Corporation Fencing of resources allocated to non-cooperative client computers
US7487353B2 (en) 2004-05-20 2009-02-03 International Business Machines Corporation System, method and program for protecting communication
US7434087B1 (en) 2004-05-21 2008-10-07 Sun Microsystems, Inc. Graceful failover using augmented stubs
US7080173B2 (en) 2004-05-27 2006-07-18 Microsoft Corporation Reducing information reception delays
US20060059118A1 (en) 2004-08-10 2006-03-16 Byrd Stephen A Apparatus, system, and method for associating resources using a behavior based algorithm
US8023417B2 (en) 2004-08-30 2011-09-20 International Business Machines Corporation Failover mechanisms in RDMA operations
US7418709B2 (en) 2004-08-31 2008-08-26 Microsoft Corporation URL namespace to support multiple-protocol processing within worker processes
US7418712B2 (en) 2004-08-31 2008-08-26 Microsoft Corporation Method and system to support multiple-protocol processing within worker processes
US7428655B2 (en) 2004-09-08 2008-09-23 Hewlett-Packard Development Company, L.P. Smart card for high-availability clustering
KR20060025100A (ko) 2004-09-15 2006-03-20 삼성전자주식회사 다국어를 지원하는 메타 데이터를 기록한 정보저장매체 및메타 데이터 처리방법
US20060067244A1 (en) 2004-09-30 2006-03-30 Microsoft Corporation Registration identifier reuse
US7451347B2 (en) 2004-10-08 2008-11-11 Microsoft Corporation Failover scopes for nodes of a computer cluster
JP4398843B2 (ja) 2004-10-13 2010-01-13 日本放送協会 配信サーバ及び配信プログラム
CN1767472A (zh) 2004-10-27 2006-05-03 乐金电子(天津)电器有限公司 家庭网络系统
US8156049B2 (en) 2004-11-04 2012-04-10 International Business Machines Corporation Universal DRM support for devices
US7457722B1 (en) 2004-11-17 2008-11-25 Symantec Operating Corporation Correlation of application instance life cycle events in performance monitoring
JP4451293B2 (ja) 2004-12-10 2010-04-14 株式会社日立製作所 名前空間を共有するクラスタ構成のネットワークストレージシステム及びその制御方法
US8522293B2 (en) 2004-12-15 2013-08-27 Time Warner Cable Enterprises Llc Method and apparatus for high bandwidth data transmission in content-based networks
US8515490B2 (en) 2004-12-30 2013-08-20 Alcatel Lucent Method and apparatus for providing same session switchover between end-user terminals
JP2008530835A (ja) 2005-02-08 2008-08-07 テレフオンアクチーボラゲット エル エム エリクソン(パブル) パケット交換ネットワーク上のオンデマンドマルチチャネルストリーミングセッション
US7743245B2 (en) 2005-03-10 2010-06-22 Intel Corporation Security protocols on incompatible transports
US7453879B1 (en) 2005-04-04 2008-11-18 Sun Microsystems, Inc. Method and apparatus for determining the landing zone of a TCP packet
US20060281525A1 (en) 2005-05-17 2006-12-14 Milo Borissov Slot type game with player input opportunity
JP2006333433A (ja) 2005-05-25 2006-12-07 Microsoft Corp データ通信プロトコル
EP1727055B1 (en) 2005-05-25 2016-09-07 Microsoft Technology Licensing, LLC Data communication coordination with sequence numbers
JP2007058506A (ja) 2005-08-24 2007-03-08 Ricoh Co Ltd 文書管理サーバ、文書管理システム、及び、文書管理プログラムとその記録媒体
GB0519246D0 (en) 2005-09-21 2005-10-26 Ibm A method, apparatus and computer program for handling web server failure
RU2313824C2 (ru) 2005-09-26 2007-12-27 Михаил Васильевич Беляев Информационная система клиент - сервер и способ предоставления графического пользовательского интерфейса
US20070150602A1 (en) 2005-10-04 2007-06-28 Peter Yared Distributed and Replicated Sessions on Computing Grids
US7962129B2 (en) 2005-10-24 2011-06-14 At&T Intellectual Property I, L.P. Method and system of creating customized ringtones
US8108548B2 (en) 2005-12-22 2012-01-31 Microsoft Corporation Methodology and system for file replication based on a peergroup
US8051179B2 (en) 2006-02-01 2011-11-01 Oracle America, Inc. Distributed session failover
US8024439B2 (en) 2006-03-17 2011-09-20 Microsoft Corporation Server session management application program interface and schema
US7526668B2 (en) 2006-06-08 2009-04-28 Hitachi, Ltd. Failover method of remotely-mirrored clustered file servers
US7685227B2 (en) 2006-11-10 2010-03-23 Gerber Robert H Message forwarding backup manager in a distributed server system
US7774544B1 (en) 2006-11-15 2010-08-10 Netapp, Inc. Reliable disk ownership changes
KR20080057483A (ko) 2006-12-20 2008-06-25 삼성전자주식회사 서버, 클라이언트, 로드 밸런싱 시스템 및 그의 로드밸런싱 방법
US7809828B2 (en) 2007-04-11 2010-10-05 International Business Machines Corporation Method for maintaining state consistency among multiple state-driven file system entities when entities become disconnected
WO2008130983A1 (en) 2007-04-16 2008-10-30 Attune Systems, Inc. File aggregation in a switched file system
US8073922B2 (en) 2007-07-27 2011-12-06 Twinstrata, Inc System and method for remote asynchronous data replication
KR20100080822A (ko) 2007-09-28 2010-07-12 엑세리온 악티에볼라그 네트워크 오퍼레이팅 시스템
EP2066101B1 (en) 2007-11-28 2012-10-17 Alcatel Lucent System and method for an improved high availability component implementation
US20090158221A1 (en) 2007-12-17 2009-06-18 Nokia Corporation Device feature manipulation based on presented content
CN101217483A (zh) 2008-01-21 2008-07-09 中兴通讯股份有限公司 用于实现集群服务器内负载分担代理的方法
US8458298B2 (en) 2008-03-03 2013-06-04 Microsoft Corporation Failover in an internet location coordinate enhanced domain name system
JP5054618B2 (ja) 2008-06-10 2012-10-24 京セラドキュメントソリューションズ株式会社 ネットワークファイル処理システム
JP4549408B2 (ja) 2008-06-24 2010-09-22 富士通株式会社 ファイルサーバのクラスタノード制御プログラム,クラスタノード制御方法及びクラスタノード制御装置
US7840730B2 (en) 2008-06-27 2010-11-23 Microsoft Corporation Cluster shared volumes
US8700760B2 (en) 2008-08-18 2014-04-15 Ge Fanuc Intelligent Platforms, Inc. Method and systems for redundant server automatic failover
US8275815B2 (en) 2008-08-25 2012-09-25 International Business Machines Corporation Transactional processing for clustered file systems
US8185566B2 (en) 2009-01-15 2012-05-22 Microsoft Corporation Client-based caching of remote files
CN101594320B (zh) 2009-06-23 2012-05-09 中兴通讯股份有限公司 一种基于snmp协议的消息交互方法
US9749387B2 (en) 2009-08-13 2017-08-29 Sap Se Transparently stateful execution of stateless applications
JP2011119794A (ja) 2009-11-30 2011-06-16 Toshiba Corp 電子機器及び通信制御方法
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
US9331955B2 (en) 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US8856582B2 (en) 2011-06-30 2014-10-07 Microsoft Corporation Transparent failover
US8788579B2 (en) 2011-09-09 2014-07-22 Microsoft Corporation Clustered client failover
US20130067095A1 (en) 2011-09-09 2013-03-14 Microsoft Corporation Smb2 scaleout
US8844201B2 (en) 2012-03-05 2014-09-30 Gator Kennels Llc Hinged gate with latch
US9888068B2 (en) 2013-04-06 2018-02-06 Citrix Systems, Inc. Systems and methods for maintaining session persistence in a cluster system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6347337B1 (en) * 1999-01-08 2002-02-12 Intel Corporation Credit based flow control scheme over virtual interface architecture for system area networks
US20020024963A1 (en) * 2000-07-05 2002-02-28 Andrew Reeve Buffer management
CN101375263A (zh) * 2003-12-31 2009-02-25 微软公司 轻型输入/输出协议
CN1870642A (zh) * 2005-05-25 2006-11-29 微软公司 数据通信协议
US20080301311A1 (en) * 2007-05-30 2008-12-04 Caitlin Bestler Method and system for extended steering tags (stags) to minimize memory bandwidth for content delivery servers

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10997132B2 (en) 2017-02-07 2021-05-04 Oracle International Corporation Systems and methods for live data migration with automatic redirection
CN111400212A (zh) * 2019-09-29 2020-07-10 杭州海康威视系统技术有限公司 一种基于远程直接数据存取的传输方法、设备
CN111400212B (zh) * 2019-09-29 2022-02-08 杭州海康威视系统技术有限公司 一种基于远程直接数据存取的传输方法、设备
CN113127387A (zh) * 2021-03-12 2021-07-16 山东英信计算机技术有限公司 一种存储器和服务器

Also Published As

Publication number Publication date
US20130007180A1 (en) 2013-01-03
CN103636181A (zh) 2014-03-12
KR20140034872A (ko) 2014-03-20
US10284626B2 (en) 2019-05-07
JP6047158B2 (ja) 2016-12-21
CN106411767B (zh) 2019-08-13
EP2737685A4 (en) 2015-07-01
WO2013002980A2 (en) 2013-01-03
US9331955B2 (en) 2016-05-03
US20160226951A1 (en) 2016-08-04
KR102047142B1 (ko) 2019-11-20
CN103636181B (zh) 2016-11-02
EP2737685A2 (en) 2014-06-04
JP2014528107A (ja) 2014-10-23
WO2013002980A3 (en) 2013-03-14

Similar Documents

Publication Publication Date Title
CN106411767A (zh) 通过远程直接存储器访问的任意大小的传输操作
US6687758B2 (en) Port aggregation for network connections that are offloaded to network interface devices
AU2011338481B2 (en) Multichannel connections in file system sessions
JP2003179626A (ja) 中継コネクション管理プログラムおよび中継コネクション管理方法
EP2216955B1 (en) Network interface device
KR20060079108A (ko) 버스 프로토콜들 또는 네트워크들의 통합을 용이하게 하는버스 추상화 방법 및 시스템
US9264495B2 (en) Apparatus and methods for handling network file operations over a fibre channel network
CN101194250A (zh) 用于关闭rdma连接的方法和系统
EP1704699B1 (en) Interface between ethernet and storage area network
EP1759317B1 (en) Method and system for supporting read operations for iscsi and iscsi chimney
WO2022148363A1 (zh) 数据传输方法及数据传输服务器
US8352619B2 (en) Method and system for data processing
TW583543B (en) Infiniband work and completion queue management via head only circular buffers
CN102843435A (zh) 一种在集群系统中存储介质的访问、响应方法和系统
Tian et al. Accelerating distributed deep learning using multi-path RDMA in data center networks
WO2011098033A1 (zh) 虚拟链路建立的方法、通信网元及以太网网络系统
JP2001036581A (ja) 通信帯域設定システムと方法
WO2023162130A1 (ja) データを収集するシステム、方法及びプログラム
WO2023162128A1 (ja) データを収集するシステム、方法及びプログラム
Fox et al. IBM's Shared Memory Communications over RDMA (SMC-R) Protocol
MXPA05013937A (en) Bus abstraction

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant