[go: up one dir, main page]

CN1487417A - iSCSI驱动程序与适配器的接口协议 - Google Patents

iSCSI驱动程序与适配器的接口协议 Download PDF

Info

Publication number
CN1487417A
CN1487417A CNA031557805A CN03155780A CN1487417A CN 1487417 A CN1487417 A CN 1487417A CN A031557805 A CNA031557805 A CN A031557805A CN 03155780 A CN03155780 A CN 03155780A CN 1487417 A CN1487417 A CN 1487417A
Authority
CN
China
Prior art keywords
iscsi
encapsulation
order
data
adapter
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
CNA031557805A
Other languages
English (en)
Other versions
CN1239999C (zh
Inventor
T
威廉·T·博伊德
˹��J��Լɪ��
道格拉斯·J·约瑟夫
A
迈克尔·A·科
J��ŷ����
瑞纳特·J·勒西欧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1487417A publication Critical patent/CN1487417A/zh
Application granted granted Critical
Publication of CN1239999C publication Critical patent/CN1239999C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种允许网际协议集卸载引擎(IPSOE)通过iSCSI驱动程序解释iSCSI命令、处理iSCSI命令并解释iSCSI命令完成结果的方法、计算机程序产品和分布数据处理系统。该分布数据处理系统包括端节点、交换机、路由器以及互连这些组件的链路。端节点使用收发队列对来接收和发送消息。端节点将消息分成多个帧,并且通过链路传输这些帧。交换机和路由器互连端节点,并且通过路由选择将这些帧传送到适当的端节点。端节点在目的端将这些帧重新组装成消息。

Description

iSCSI驱动程序与适配器的接口协议
技术领域
本发明一般涉及主机计算机与输入/输出(I/O)设备之间的通信协议。更具体地说,本发明提供一种可以使用基于传输控制协议的远端直接存储器存取所用的队列对(Queue Pair)资源来执行iSCSI存储协议的方法。
背景技术
在网际协议(IP)网络中,软件提供可以用来与输入/输出设备、通用计算机(主机)和专用计算机通信的消息传递机制。消息传递机制包括传输协议、高层协议和应用编程接口。目前在IP网络上使用的关键标准传输协议是传输控制协议(TCP)和用户数据报协议(UDP)。TCP提供可靠服务,而UDP提供不可靠服务。今后,流控制传输协议(SCTP)也将用来提供可靠服务。在设备或计算机上执行的进程通过高层协议如套接字、iSCSI、和直接访问文件系统(DAFS)来访问IP网络。
不幸的是,TCP/IP软件消耗相当大量的处理器和存储器资源。这一问题在有关参考文献中有详尽的描述(参见J.Kay,J.Pasquale,“Profiling and reducing processing overhead in TCP/IP(分析和降低TCP/IP中的处理开销)”,IEEE/ACM Transactions onNetworking(IEEE/ACM网络化学报),Vol 4,No.6,pp.817-828,1996年12月;以及D.D.Clark,V.Jacobson,J.Romkey,H.Salwen,“Ananalysis of TCP processing overhead(TCP处理开销的分析)”,IEEECommunications Magazine(IEEE通信杂志),Vol.27,第6期,1989年6月,pp.23-29)。今后,网络栈将由于下面若干原因而继续消耗大量资源:通过应用的网络化使用增大;使用网络安全协议;以及底层结构带宽比微处理器和存储器带宽以更高的速率增长。为了解决这一问题,业界正在将网络栈处理转给IP集卸载引擎(IP Suite Offload Engine,IPSOE)。
目前业界存在两种卸载(offload)方法。第一方法使用现有TCP/IP网络栈,而不增加任何附加协议。该方法可以将TCP/IP转给硬件。但是不幸的是没有消除接收方复制的需要。如上面论文所述,复制对CPU使用的影响最大。为消除复制需要,业界正在寻求第二方法,包括添加帧、直接数据放置(DDP)以及基于TCP和SCTP协议的远端直接存储器存取(RDMA)。支持这两种方法所需的IP集卸载引擎(IPSOE)是类似的,它们之间的关键不同之处在于采用第二方法硬件必须支持附加协议。
IPSOE提供可以通过套接字、iSCSI和DAFS用来在节点之间通信的消息传递机制。在主机计算机或设备上执行的进程通过将发送/接收消息投递到IPSOE上的发送/接收工作队列来访问IP网络。这些进程也称作使用者(consumer)”。
发送/接收工作队列(WQ)作为队列对(QP)分配给使用者。消息可以通过若干不同传输类型来发送:传统TCP、RDMA TCP、UDP或SCTP。使用者通过IPSOE发送和接收工作完成(WC)队列从完成队列(CQ)中提取这些消息的结果。源端IPSOE负责将外出消息进行分段,并且将它们发送到目的端。目的端IPSOE负责重新组装进入消息,并且将它们放置到由目的端使用者指定的存储器空间中。这些使用者使用IPSO动词来访问由IPSOE支持的功能。解释动词并且直接访问IPSOE的软件称作IPSO接口(IPSOI)。
目前,主机CPU执行大部分IP集处理。IP集卸载引擎为与其他通用计算机和I/O设备进行通信提供较高的性能。然而,需要一种简单的机制来允许IPSOE中的硬件机制解释iSCSI命令、处理iSCSI命令、以及解释iSCSI命令完成结果。
发明内容
本发明提供一种用于使iSCSI驱动程序与网际协议集卸载引擎(IPSOE)接口的方法、计算机程序产品和分布数据处理系统。该分布数据处理系统包括端节点、交换机、路由器以及互连这些组件的链路。端节点使用收发队列对来接收和发送消息。端节点将消息分成多个段,并且通过链路传输这些段。交换机和路由器互连端节点,并且通过路由选择将这些段传送到适当的端节点。端节点在目的端将这些段重新组装成消息。
本发明提供一种使IPSOE解释iSCSI命令、处理iSCSI命令并解释iSCSI命令完成结果的机制。使用本发明所提供的机制允许将iSCSI功能从主机CPU转给IPSOE,从而使更多的CPU资源可用于运行应用软件。
附图说明
被认为是本发明特征的新特性在所附权利要求中进行阐述。然而,通过参照下面结合附图对示例性实施例的详细描述,本发明本身以及优选使用模式及其另外目的和优点将变得更好理解,其中:
图1是示出根据本发明优选实施例的分布计算机系统的图;
图2是示出根据本发明优选实施例的主机处理器节点的功能方框图;
图3A是示出根据本发明优选实施例的IPSOE的图;
图3B是示出根据本发明优选实施例的交换机的图;
图3C是示出根据本发明优选实施例的路由器的图;
图4是示出根据本发明优选实施例的工作请求处理的图;
图5是示出其中使用TCP或SCTP传输的根据本发明优选实施例的分布计算机系统的一部分的图;
图6是示出根据本发明优选实施例的数据帧的图;
图7是示出根据本发明优选实施例的分布计算机系统的一部分的图;
图8是示出用于本发明的分布网络系统中的网络寻址的图;
图9是示出根据本发明优选实施例的分布计算机系统的一部分的图;
图10是示出用于本发明的优选实施例中的分层通信架构的图;
图11是示出本发明的QP状态的示意图;
图12是示出本发明的iSQP上下文的示意图;
图13是示出本发明的WQ的示意图;
图14是示出本发明的CQ和CQ上下文的示意图;
图15是示出根据本发明优选实施例的发起对目标适配器的iSCSI事务的主机过程的流程图;以及
图16是示出根据本发明优选实施例的通过目标适配器完成iSCSI命令的过程的流程图。
具体实施方式
本发明提供一种分布计算机系统,包括端节点、交换机、路由器和互连这些组件的链路。端节点可以是网际协议集卸载引擎或基于网际协议集的传统主机软件。各端节点使用收发队列对来接收和发送消息。端节点将消息分成多个帧,并且通过链路传输这些帧。交换机和路由器互连端节点,并且通过路由选择将这些帧传送到适当的端节点。端节点在目的端将这些段重新组装成消息。
现在参照附图特别是图1,示出根据本发明优选实施例的分布计算机系统的图。图1所示的分布计算机系统采用网际协议网络(IP网络)100的形式,并且仅是为了示例的目的而提供的,并且下述本发明实施例可以在各种其他类型和结构的计算机系统上实现。例如,实现本发明的计算机系统的范围可以从具有一个处理器和一些输入/输出(I/O)适配器的小型服务器到具有成百上千处理器和数千I/O适配器的大型并行超级计算机系统。而且,本发明可以在由互联网或内部网连接的远端计算机系统的底层结构中实现。
IP网络100是互连分布计算机系统内的节点的高带宽、低延迟网络。节点是连至一个或多个网络链路并且在网络内形成消息源端和/或目的端的任何组件。在所示例子中,IP网络100包括采用主机处理器节点102、主机处理器节点104以及冗余阵列独立盘(RAID)子系统节点106形式的节点。由于IP网络100可以连接任何数目和任何类型的独立处理器节点、存储节点和专用处理节点,因此图1所示的节点仅是为了示例的目的。这些节点中的任一个均可以用作端节点,在此它被定义为在IP网络100中发起或最终使用消息或帧的设备。
在本发明的一个实施例中,错误处理机制存在于分布计算机系统中,其中,错误处理机制考虑到分布计算系统如IP网络100中端节点之间的TCP或SCTP通信。
在此所用的消息是应用定义的数据交换单元,它是在协作进程之间进行通信的基本单元。帧是用网际协议集首标和/或尾标封装的一个数据单元。首标一般提供控制和路由选择信息,用于引导帧通过IP网络100。尾标一般包含控制和循环冗余校验(CRC)数据,用于确保不传送带有被破坏内容的帧。
在分布计算机系统内,IP网络100包含支持各种形式的通信(traffic)如存储、进程间通信(IPC)、文件访问和套接字的通信和管理底层结构。图1所示的IP网络100包括交换通信结构116,它允许很多设备在安全、远端管理的环境中以高带宽和低延迟同时传输数据。端节点可以通过多个端口进行通信,并且利用多个路径通过IP网络结构。图1所示的通过IP网络结构的多个端口和路径可以用于容错和增大带宽数据传输。
图1中的IP网络100包括交换机112、交换机114和路由器117。交换机是将多个链路连接在一起并且允许使用层2目的端地址字段通过路由选择将帧从一个链路传送到另一链路的设备。当使用以太网作为链路时,目的端字段公知为介质访问控制(MAC)地址。路由器是根据层3目的端地址字段对帧执行路由选择的设备。当使用网际协议(IP)作为层3协议时,目的端地址字段是IP地址。
在一个实施例中,链路是任何两个网络结构单元如端节点、交换机或路由器之间的全双工通道。适当的链路例子包括但不限于铜缆、光缆、底板和印刷电路板上的印刷电路铜迹(copper trace)。
对于可靠服务类型(TCP和SCTP),端节点如主机处理器端节点和I/O适配器端节点产生请求帧,并且返回确认帧。交换机和路由器将帧从源端传到目的端。
在如图1所示的IP网络100中,主机处理器节点102、主机处理器节点104和RAID子系统106至少包括IPSOE以与IP网络100接口。在一个实施例中,各IPSOE是对在IP网络结构100上传输的源帧或信宿帧(sink frame)以足够的细节实现IPSOI的端点。主机处理器节点102包含采用主机IPSOE 118和IPSOE 120形式的IPSOE。主机处理器节点104包含IPSOE 122和IPSOE 124。主机处理器节点102还包括通过总线系统134互连的中央处理单元126-130和存储器132。主机处理器节点104类似地包括通过总线系统144互连的中央处理单元136-140和存储器142。
IP集卸载引擎118提供与交换机112的连接,而IP集卸载引擎124提供与交换机114的连接,并且IP集卸载引擎120和122提供与交换机112和114的连接。
在一个实施例中,IP集卸载引擎是以硬件或者硬件和卸载微处理器的组合来实现的。在这一实现中,IP集处理转给IPSOE。该实现还允许在交换网络上同时进行多个通信,而无需与通信协议相关联的传统开销。在一个实施例中,图1中的IPSOE和IP网络100在不涉及操作系统内核进程的情况下向分布计算机系统的使用者提供零处理器复制数据传输,并且采用硬件来提供可靠、容错的通信。
如图1所示,路由器117连至与其他主机或其他路由器的广域网(WAN)和/或局域网(LAN)连接。
在本例中,图1中的RAID子系统节点106包括处理器168、存储器170、IP集卸载引擎(IPSOE)172、以及多个冗余和/或条式(striped)存储盘单元174。
IP网络100处理用于存储、处理器间通信、文件访问和套接字的数据通信。IP网络100支持高带宽、可扩展和极其低延迟的通信。用户客户可以绕过操作系统内核进程,直接访问网络通信组件如IPSOE,这就允许高效的消息传递协议。IP网络100适于当前计算模型,并且是新形式的存储、群集(cluster)和通用网络化通信的构建块。此外,图1中的IP网络100允许存储节点在它们之间进行通信,或者与分布计算机系统中的任何或所有处理器节点通信。在存储设备连至IP网络100的情况下,存储节点大致具有与IP网络100中的任何主机处理器节点相同的通信能力。
在一个实施例中,图1所示的IP网络100支持通道语义和存储器语义。通道语义有时称作发送/接收或推送(push)通信操作。通道语义是在传统I/O通道中采用的通信类型,其中,源端设备推送数据,并且目的端设备确定数据的最终目的地。在通道语义中,从源进程传输的帧指定目的进程的通信端口,但是不指定帧将要写入的目的进程存储器空间。因此,在通道语义中,目的进程预先分配将传输数据置于何处。
在存储器语义中,源进程直接读取或写入远端节点目的进程的虚拟地址空间。远端目的进程仅需要与数据缓冲区的位置进行通信,并且不需要涉及任何数据传输。因此,在存储器语义中,源进程发送包含目的进程的目的缓冲区存储器地址的数据帧。在存储器语义中,目的进程先前向源进程授予存取其存储器的权限。
对于存储、群集和通用网络化通信,通道语义和存储器语义典型地都是必要的。典型的存储操作采用通道和存储器语义的组合。在图1所示的分布计算机系统的存储操作示例中,主机处理器节点如主机处理器节点102通过使用通道语义发起存储操作,以将盘写入命令发送到RAID子系统IPSOE 172。RAID子系统检查命令,并且使用存储器语义来直接从主机处理器节点的存储器空间读取数据缓冲区。在读取数据缓冲区之后,RAID子系统采用通道语义将I/O完成消息推送回到主机处理器节点。
在一个示例性实施例中,图1所示的分布计算机系统执行采用虚拟地址和虚拟存储器保护机制的操作以确保对所有存储器的正确和适当存取。运行在该分布计算机系统中的应用程序对于任何操作都不需要使用物理寻址。
下一步参照图2,示出根据本发明优选实施例的主机处理器节点的功能方框图。主机处理器节点200是主机处理器节点的例子,如图1中的主机处理器节点102。
在本例中,图2所示的主机处理器节点200包括一组使用者202-208,它们是在主机处理器节点200上执行的进程。主机处理器节点200还包括IP集卸载引擎(IPSOE)210和IPSOE 212。IPSOE 210包含端口214和216,而IPSOE 212包含端口218和220。各端口连接到一个链路。这些端口可以连接到一个子网或多个IP网络子网,如图1中的IP网络100。
使用者202-208通过动词接口222以及消息和数据服务224将消息传输到IP网络。动词接口在本质上是IP集卸载引擎功能的抽象描述。操作系统可以通过其编程接口暴露一些或全部动词功能。基本上,该接口定义主机的行为。另外,主机处理器节点200包括消息和数据服务224,它是比动词层更高的高层接口,并且用来处理通过IPSOE 210和IPSOE 212接收的消息和数据。消息和数据服务224向使用者202-208提供一个接口来处理消息和其他数据。
现在参照图3A,示出根据本发明优选实施例的IP集卸载引擎的图。图3A所示的IP集卸载引擎300A包括一组队列对(QP)302A-310A,它们用来将消息传输到IPSOE端口312A-316A。对IPSOE端口312A-316A进行数据缓冲使用网络层的服务质量字段318A-334A例如IP版本6规范中的通信类(Traffic Class)字段来引导(channel)。各网络层服务质量字段具有其自己的流控。IETF标准网络协议用来配置连接到网络的所有IP集卸载引擎端口的链路和网络地址。两个这样的协议是地址解析协议(ARP)和动态主机配置协议。存储器转换和保护(MTP)338A是将虚拟地址转换成物理地址并且验证存取权限的机制。直接存储器存取(DMA)340A支持使用存储器350A对于队列对302A-310A的直接存储器存取操作。
单个IP集卸载引擎如图3A所示的IPSOE 300A可以支持上千队列对。各队列对包括发送工作队列(SWQ)和接收工作队列(RWQ)。发送工作队列用来发送通道和存储器语义消息。接收工作队列接收通道语义消息。使用者调用在此称作动词的特定于操作系统的编程接口,以将工作请求(WR)放置到工作队列中。
图3B示出根据本发明优选实施例的交换机300B。交换机300B包括通过链路或网络层服务质量字段如IP版本4的服务类型字段306B与多个端口304B通信的帧中继器302B。交换机如交换机300B一般可以通过路由选择将帧从一个端口传送到同一交换机上的任何其他端口。
类似地,图3C示出根据本发明优选实施例的路由器300C。路由器300C包括通过网络层服务质量字段如IP版本4的服务类型字段306C与多个端口304C通信的帧中继器302C。如同交换机300B,路由器300C一般将能够通过路由选择将帧从一个端口传送到同一路由器上的任何其他端口。
现在参照图4,示出根据本发明优选实施例的工作请求处理的图。在图4中,存在接收工作队列400、发送工作队列402和完成队列404用于处理使用者406的来往请求。来自使用者406的请求最终发送到硬件408。在本例中,使用者406产生工作请求410和412,并且接收工作完成信息414。如图4所示,放置在工作队列中的工作请求称作工作队列元素(WQE)。
发送工作队列402包含工作队列元素(WQE)422-428,描述要在IP网络结构上传输的数据。接收工作队列400包含工作队列元素(WQE)416-420,描述将来自IP网络结构的进入通道语义数据置于何处。工作队列元素由IPSOE中的硬件408进行处理。
动词还提供用于从完成队列404中提取完成工作的机制。如图4所示,完成队列404包含完成队列元素(CQE)430-436。完成队列元素包含有关先前完成的工作队列元素的信息。完成队列404用来为多个队列对创建单个完成通知点。完成队列元素是完成队列中的数据结构。该元素描述完成工作队列元素。完成队列元素包含足够信息来确定队列对和所完成的特定工作队列元素。完成队列上下文是包含管理各个完成队列所需的指针、长度和其他信息的信息块。
被支持用于图4所示的发送工作队列402的示例工作请求如下所述。发送工作请求是将一组本地数据段推送到由远端节点的接收工作队列元素引用的数据段的通道语义操作。例如,工作队列元素428包含对数据段4 438、数据段5 440和数据段6 442的引用。发送工作请求的数据段均包含部分虚拟连续存储器区域。用来引用本地数据段的虚拟地址位于创建本地队列对的进程的地址上下文中。
远端直接存储器存取(RDMA)读取工作请求提供一种存储器语义操作来读取远端节点上的虚拟连续存储器空间。存储器空间可以是存储器区域的一部分或存储器窗口的一部分。存储器区域引用先前登记的由虚拟地址和长度定义的虚拟连续存储器地址集。存储器窗口引用已绑定到先前登记区域的虚拟连续存储器地址集。
RDMA读取工作请求读取远端端节点上的虚拟连续存储器空间,并且将数据写入到虚拟连续本地存储器空间。类似于发送工作请求,由RDMA读取工作队列元素用来引用本地数据段的虚拟地址位于创建本地队列对的进程的地址上下文中。远端虚拟地址位于由RDMA读取工作队列元素把其作为目标的远端队列对所属进程的地址上下文中。
RDMA写入工作队列元素提供一种存储器语义操作来写入远端节点上的虚拟连续存储器空间。例如,接收工作队列400中的工作队列元素416引用数据段1 444、数据段2 446和数据段3 448。RDMA写入工作队列元素包含本地虚拟连续存储器空间的分散列表和将本地存储器空间写入其中的远端存储器空间的虚拟地址。
RDMA FetchOp(提取操作)工作队列元素提供一种存储器语义操作来对远端字执行原子操作。RDMA FetchOp工作队列元素是组合RDMA读取、修改和RDMA写入操作。RDMA FetchOp工作队列元素可以支持若干读取-修改-写入操作,例如比较并且如果相等则交换。RDMA FetchOp不包括在基于IP标准化方向的当前RDMA中,但是在此进行描述,因为它可以用作某些实现中的增值特性。
绑定(去绑定)远端存取键(R_Key)工作队列元素将一个命令提供给IP集卸载引擎硬件,以通过将存储器窗口与一个存储器区域进行关联(断开关联)来更改(销毁)存储器窗口。R_Key是各RDMA存取的一部分,并且用来验证远端进程准许访问缓冲区。
在一个实施例中,图4所示的接收工作队列400仅支持一种工作队列元素,它称作接收工作队列元素。接收工作队列元素提供一种通道语义操作来描述将进入发送消息写入其中的本地存储器空间。接收工作队列元素包括描述若干虚拟连续存储器空间的分散列表。进入发送消息写入到这些存储器空间。这些虚拟地址位于创建本地队列对的进程的地址上下文中。
对于处理器间通信,用户模式软件进程直接从缓冲区驻留在存储器中的位置通过队列对传输数据。在一个实施例中,通过队列对的传输绕过操作系统,并且占用很少主机指令循环。队列对允许不涉及操作系统内核的情况下的零处理器复制数据传输。零处理器复制数据传输提供高带宽和低延迟通信的高效支持。
当创建队列对时,队列对设为提供所选类型的传输服务。在一个实施例中,实现本发明的分布计算机系统支持三种传输服务:TCP、SCTP和UDP。
TCP和SCTP将本地队列对与一个且仅与一个远端队列对相关联。TCP和SCTP需要一个进程为它要通过IP网络结构进行通信的每个进程创建一个队列对。因此,如果N个主机处理器节点均包含P个进程,并且各节点上的所有P个进程都希望与所有其他节点上的所有进程进行通信,则每个主机处理器节点需要P2×(N-1)个队列对。而且,进程可以将一个队列对与同一IPSOE上的另一队列对相关联。
采用TCP或SCTP在分布进程之间通信的分布计算机系统的一部分在总体上如图5所示。图5的分布计算机系统500包括主机处理器节点1、主机处理器节点2和主机处理器节点3。主机处理器节点1包括进程A 510。主机处理器节点2包括进程C 520和进程D 530。主机处理器节点3包括进程E 540。
主机处理器节点1包括队列对4、6和7,它们均具有发送工作队列和接收工作队列。主机处理器节点2具有队列对9,并且主机处理器节点3具有队列对2和5。分布计算机系统500的TCP或SCTP将本地队列对与一个且仅与一个远端队列对相关联。因此,队列对4用来与队列对2通信;队列对7用来与队列对5通信;并且队列对6用来与队列对9通信。
采用TCP或SCTP置于一个发送队列中的WQE使数据写入到由相关队列对的接收WQE引用的接收存储器空间中。RDMA操作工作于相关队列对的地址空间。
在本发明的一个实施例中,TCP或SCTP由于硬件维护顺序号并且确认所有帧传输而变得可靠。硬件和IP网络驱动程序软件的组合重试任何失败通信。队列对的进程客户即使在出现比特错误、接收欠载和网络堵塞的情况下也获得可靠的通信。如果IP网络结构中存在替代路径,则即使在交换机结构、链路或IP集卸载引擎端口出现故障的情况下也可以保持可靠的通信。
另外,可以采用确认来可靠地跨越IP网络结构传送数据。确认可以是或可以不是进程级别确认,即验证接收进程已使用数据的确认。或者,确认可以是仅表示数据已到达其目的端的信息。
UDP是无连接的。UDP由管理应用程序用来发现新交换机、路由器和端节点并且将它们整合到给定分布计算机系统中。UDP不提供TCP或SCTP的可靠性保证。因此,UDP在每个端节点维护较少状态信息的情况下工作。
下一步参照图6,示出根据本发明优选实施例的数据帧示例。数据帧是根据路由选择通过IP网络结构的信息单元。数据帧是端节点到端节点构造,因此由端节点创建和使用。对于送往IPSOE的帧,数据帧既不由IP网络结构中的交换机和路由器产生,也不由其使用。相反,对于送往IPSOE的数据帧,交换机和路由器简单地将请求帧或确认帧移近最终目的端,从而在进程中修改链路首标字段。当帧跨越子网边界时,路由器可以修改帧的网络首标。在穿越子网中,单帧停留在单个服务级别上。
消息数据600包含数据段1 602、数据段2 604和数据段3 606,它们类似于图4所示的数据段。在本例中,这些数据段形成置于数据帧612内的帧有效载荷610中的帧608。另外,数据帧612包含用于错误校验的CRC 614。另外,数据帧612中还有路由首标616和传输首标618。路由首标616用来标识数据帧612的源和目的端口。本例中的传输首标618指定数据帧612的顺序号以及源和目的端口号。当建立通信时,对顺序号进行初始化,并且它对于帧首标、DDP/RDMA首标、数据有效载荷和CRC的每一字节增1。本例中的帧首标620指定与帧相关联的目的队列对号以及直接数据放置和/或远端直接存储器存取(DDP/RDMA)首标与数据有效载荷加上CRC的长度。DDP/RDMA首标622指定数据有效载荷的消息标识符和放置信息。消息标识符对于作为消息一部分的所有帧均不变。示例消息标识符包括:发送、写入RDMA和读取RDMA。
在图7中,示出分布计算机系统的一部分来阐述示例请求和确认事务。图7中的分布计算机系统包括主机处理器节点702和主机处理器节点704。主机处理器节点702包括IPSOE 706。主机处理器节点704包括IPSOE 708。图7中的分布计算机系统包括IP网络结构710,它包括交换机712和交换机714。IP网络结构包括将IPSOE 706连至交换机712的链路;将交换机712连至交换机714的链路;以及将IPSOE 708连至交换机714的链路。
在示例事务中,主机处理器节点702包括客户进程A。主机处理器节点704包括客户进程B。客户进程A通过队列对23与主机IPSOE硬件706交互。客户进程B通过队列对24与主机IPSOE硬件708交互。队列对23和24是包括发送工作队列和接收工作队列的数据结构。
进程A通过将工作队列元素投递到队列对23的发送队列来发起一个消息请求。该工作队列元素如图4所示。客户进程A的消息请求由包含在发送工作队列元素中的聚集列表(gather list)引用。聚集列表中的各数据段指向虚拟连续本地存储器区域的一部分,它包含消息的一部分,如图4中分别保存消息部分1、2和3的数据段1、2和3(444、446和448)所示。
主机IPSOE 706中的硬件读取工作队列元素,并且将存储在虚拟连续缓冲区中的消息分段为多个数据帧如图6所示的数据帧。数据帧根据路由选择通过IP网络结构,并且对于可靠传输服务,由最终目的端节点进行确认。如果没有成功确认,则数据帧由源端节点进行重新传输。数据帧由源端节点产生,并且由目的端节点使用。
参照图8,示出本发明的用于分布网络系统中的网络寻址的图。主机名提供主机节点如主机处理器节点或I/O适配器节点的逻辑标识。主机名标识消息端点,从而使消息送往驻留在由主机名指定的端节点上的进程。因此,对于每一节点,都存在一个主机名,但是一个节点可以具有多个IPSOE。
单个链路层地址(例如,以太网介质访问层地址)804分配给端节点组件802的各端口806。组件可以是IPSOE、交换机或路由器。所有IPSOE和路由器组件都具有一个MAC地址。交换机上的介质访问点也分配有一个MAC地址。
一个网络地址(例如,IP地址)812分配给端节点组件802的各端口806。组件可以是IPSOE、交换机或路由器。所有IPSOE和路由器组件必须具有一个网络地址。交换机上的介质访问点也分配有一个MAC地址。
交换机810的各端口没有与之相关联的链路层地址。然而,交换机810可以具有介质访问端口814,其中,介质访问端口814具有与之相关联的链路层地址808和网络层地址816。
图9示出根据本发明优选实施例的分布计算机系统的一部分。分布计算机系统900包括子网902和子网904。子网902包括主机处理器节点906、908和910。子网904包括主机处理器节点912和914。子网902包括交换机916和918。子网904包括交换机920和922。
路由器创建并连接子网。例如,子网902通过路由器924和926连接到子网904。在一个示例实施例中,子网具有最大216个端节点、交换机和路由器。
子网被定义为作为单个单元管理的一组端节点和级联交换机。典型地,子网占据单个地理或功能区域。例如,一个房屋内的单个计算机系统可以被定义为子网。在一个实施例中,子网中的交换机可以对消息执行非常快的虫孔(wormhole)或直通(cut-through)路由选择。
子网内的交换机检查在子网内唯一的目的端链路层地址(例如,MAC地址)以允许交换机快速且高效地对进入消息帧执行路由选择。在一个实施例中,交换机是相对简单的电路,并且典型地被实现为单个集成电路。子网可以具有由级联交换机形成的成百上千个端节点。
如图9所示,为扩展成大得多的系统,子网通过路由器如路由器924和926来连接。路由器解释目的端网络层地址(例如,IP地址)和对帧执行路由选择。
交换机的一个示例实施例在总体上如图3B所示。交换机或路由器上的每个I/O路径均具有一个端口。通常,交换机可以通过路由选择将帧从一个端口传送到同一交换机上的任何其他端口。
在子网如子网902或子网904内,从源端口到目的端口的路径由目的端主机IPSOE端口的链路层地址(例如,MAC地址)来确定。在子网之间,路径由目的端IPSOE端口的网络层地址(IP地址)和将要用来到达目的端子网的路由器端口的链路层地址(例如,MAC地址)来确定。
在一个实施例中,请求帧及其相应肯定确认(ACK)帧所用的路径不要求是对称的。在一个采用遗忘路由选择的实施例中,交换机根据链路层地址(例如,MAC地址)选择输出端口。在一个实施例中,交换机对于所有其输入端口使用一组路由判定标准。在一个示例实施例中,路由判定标准包含在一个路由表中。在另一个实施例中,交换机对于各输入端口均采用单独的一组标准。
本发明的分布计算机系统中的数据事务典型地由若干硬件和软件步骤组成。客户进程数据传输服务可以是用户模式或内核模式进程。客户进程通过一个或多个队列对如图3A和5所示的队列对来访问IP集卸载引擎硬件。客户进程调用特定于操作系统的编程接口,在此称作“动词”。实现动词的软件代码将工作队列元素投递到给定队列对工作队列。
存在多种可能的工作队列元素投递方法和多种可能的工作队列元素格式,它们考虑到各种代价/性能设计点但不影响互操作性。然而,用户进程必须以完备定义的方式与动词进行通信,并且必须充分指定跨越IP网络结构传输的数据的格式和协议,以允许设备在不同厂商环境下互操作。
在一个实施例中,IPSOE硬件检测工作队列元素投递,并且访问工作队列元素。在该实施例中,IPSOE硬件转换并验证工作队列元素的虚拟地址,并且访问数据。
外出消息拆分成一个或多个数据帧。在一个实施例中,IPSOE硬件将DDP/RDMA首标、帧首标和CRC、传输首标和网络首标添加到各帧。传输首标包括顺序号和其他传输信息。网络首标包括路由信息如目的端IP地址和其他网络路由信息。链路首标包含目的端链路层地址(例如,MAC地址)或其他本地路由信息。
如果采用TCP或SCTP,当请求数据帧到达其目的端节点时,目的端节点使用确认数据帧来让请求数据帧发送者知道请求数据帧在目的端得到验证和接受。确认数据帧确认一个或多个合法的接受请求数据帧。请求者在接收任何确认之前可以具有多个未决请求数据帧。在一个实施例中,当创建队列对时,确定多个未决消息即请求数据帧的数目。
参照图10,示出本发明的分层架构的一个实施例的图。图10的分层架构图示出数据通信路径各层以及在各层之间传递的数据和控制信息组织。
IPSOE端节点协议层(例如,由端节点1011采用)包括由使用者1003定义的高层协议1002,传输层1004;网络层1006,链路层1008,和物理层1010。交换机层(例如,由交换机1013采用)包括链路层1008和物理层1010。路由器层(例如,由路由器1015采用)包括网络层1006、链路层1008和物理层1010。
分层架构1000在总体上大致遵循经典通信栈。例如,对于端节点1011的各协议层,高层协议1002采用动词在传输层1004创建消息。传输层1004将消息(1014)传到网络层1006。网络层1006在网络子网之间对帧执行路由选择(1016)。链路层1008在网络子网内对帧执行路由选择(1018)。物理层1010将比特或比特组发送到其他设备的物理层。各层不知道高层或低层如何执行它们的功能。
使用者1003和1005表示采用其他层以在端节点之间通信的应用程序或进程。传输层1004提供端对端的消息移动。在一个实施例中,传输层提供如上所述的四种传输服务,包括传统TCP、基于TCP的RDMA、SCTP和UDP。网络层1006执行通过一个子网或多个子网到目的端节点的帧路由选择。链路层1008执行跨越链路的流控、错误校验和优先帧传送。
物理层1010执行依赖于技术的比特传输。比特或比特组通过链路1022、1024和1026在物理层之间传递。链路可以用印刷电路铜迹、铜缆、光缆或其他适当链路来实现。
iSCSI IPSOE支持iSCSI事务。iSCSI事务包括iSCSI命令、可选数据传输和iSCSI响应。来自操作系统的私有存储接口调用通过动词转换成IPSOE的iSCSI软件-硬件接口。动词被实现为系统存储器驻留数据结构、适配器存储器驻留数据结构和适配器寄存器的混合。一些iSCSI动词可以通过iSCSI库(对iSCSI功能提供应用编程接口或API的可链接库)从用户空间中直接访问(例如,发送iSCSI命令)。其他iSCSI动词只能通过iSCSI驱动程序从内核访问(例如,登记存储器区域)。
对于iSCSI主机适配器,iSCSI库创建一个封装iSCSI命令,它包含iSCSI命令和与该iSCSI命令相关联的数据传输数据段列表。封装iSCSI命令通过发送队列传输到iSCSI IPSOE。iSCSI IPSOE为iSCSI命令创建发起端标记(Initiator TAG)。发起端标记用于两个目的。第一,它关联iSCSI命令、可选相关数据传输和iSCSI响应。第二,对于需要数据传输的iSCSI命令(例如,写入到盘,从盘读取),发起端标记包含对适配器的存储器保护和转换表的索引和键值。
iSCSI主机适配器执行与iSCSI命令相关联的任何数据传输。iSCSI主机适配器将iSCSI命令的响应置于接收队列中。iSCSI库提取响应作为接收完成。
对于iSCSI目标适配器,适配器固件解释通过接收队列接收的iSCSI命令。iSCSI目标适配器创建与iSCSI命令相关联的目标端标记(Target TAG)。除了用来标识目标适配器存储器位置和状态之外,目标端标记用于与发起端标记相同的目的。iSCSI目标适配器将工作请求投递到发送队列,以执行与iSCSI命令相关联的任何数据传输。当iSCSI命令完成时,iSCSI目标适配器将响应消息投递到接收队列。
iSCSI适配器通过iSCSI IPSOE动词“打开”与iSCSI驱动程序相关联。该动词返回一个唯一引用iSCSI适配器的句柄,即,如果一个系统具有多个iSCSI适配器,则每个iSCSI适配器均具有一个唯一句柄。每次iSCSI库引用iSCSI适配器时,它必须使用该句柄。一旦iSCSI适配器与iSCSI驱动程序相关联,则它不能再次打开,直到它被关闭之后为止。
每个iSCSI适配器均具有一组固定和可变属性,例如,适配器支持多少iSCSI队列对。iSCSI驱动程序可以通过iSCSI IPSOE动词“查询”来确定这些属性。
iSCSI适配器的可变属性可以通过iSCSI IPSOE动词“修改”来修改。该动词还用来初始化iSCSI适配器控制结构如存储器保护表。
iSCSI驱动程序通过iSCSI IPSOE动词“关闭”将其自身与iSCSI适配器断开关联。
保护域(PD)用来将iSCSI队列对与iSCSI存储器区域和标记(TAG)相关联,作为一种激活和控制对主机系统存储器进行iSCSI IPSOE访问的手段。iSCSI主机适配器中的各队列对(QP)与单个PD相关联。多个队列对可以与同一PD相关联。
各存储器区域、标记或队列对与单个PD相关联。多个存储器区域、标记或队列对可以与同一PD相关联。
只有当队列对的PD匹配存储器区域的PD时,才允许队列对中存取存储器区域的操作。类似地,只有当存储器区域或标记的PD匹配队列对的PD时,才允许存储器区域或标记的操作。
iSCSI驱动程序产生iSCSI保护域(iSPD)。iSPD可以是进程ID。iSCSI驱动程序维护已由iSCSI库分配的所有iSPD的表。
iSCSI适配器在QP、存储器区域和标记条目中维护PD。这样,iSCSI适配器对于PD不需要任何特殊控制结构。
各iSCSI IPSOE实现支持特定数目的iSCSI队列对。iSQP的数目依赖于在IPSOE适配器中配置的存储器量。所支持的iSQP数由图11所示的SCSI上下文表寄存器(SCTR)1101给定。该SCTR还包含iSQP上下文表(SCT)1102的起始地址。SCT位于iSCSI适配器上。
SCT对于各iSQP均包含SCSI上下文表条目1103。SCTE包含iSCSI上下文1104、发送队列上下文1105、接收队列上下文1106以及IP上下文1107。
iSCSI库使用一个动词来将工作队列元素(WQE)1201提交给发送队列或接收队列,如图12所示。相关发送和接收队列统称作IPSOE SCSI队列对(iSQP)。iSQP不可以被SCSI使用者直接访问,而只能通过使用动词来操纵。
iSQP通过动词来创建。当创建iSQP时,必须通过iSCSI库指定初始属性的完全集。
当创建iSQP时,通过SCSI库设置可以在iSQP的各工作队列中未决的WQE 1201的最大数目。
未决WQE的最大数目包括队列中尚未完成的的WQE数目加上队列中尚未通过相关完成队列(CQ)释放的完成队列条目(CQE)数目。
iSQP上下文1202可以通过iSCSI IPSOE接口动词“查询iSQP”来提取。
iSQP上下文1202通过iSCSI IPSOE接口动词“修改iSQP”来修改。iSQP可以在WQE未决的时候进行修改。根据IPSOE WQ和CQ指针的位置,修改可能不是即时的。
iSQP通过iSCSI IPSOE接口动词“销毁iSQP”来销毁。当销毁iSQP时,任何未决WQE不再认为是处于IPSOE的范围。能够清除任何相关资源是SCSI库的责任。iSQP的析构释放在IPSOE内分配的任何资源。在该动词返回之后,未决WQE将不完成。
IPSOE SCSI发送工作队列包含iSCSI封装命令1203。封装iSCSI命令包含iSCSI命令以及与该命令相关联的数据的分散或聚集列表(SGL)1204。各SGL元素包含虚拟地址(VA)、L键(L_Key)以及长度。虚拟地址是SGL元素第一字节的地址。长度是以字节为单位的SGL元素长度。L_Key是与SGL元素相关联的存储器区域的句柄。
IPSOE SCSI接收工作队列包含iSCSI封装响应。封装iSCSI响应包含iSCSI响应以及任何相关辅助响应数据的分散列表。各SGL元素包含虚拟地址、L_Key和长度。
图13所示的完成队列(CQ)1301可以用来跨越同一IPSOE的iSQP复用来自多个工作队列的工作完成信息。IPSOE支持完成队列(CQ)作为用于WQE完成的通知机制。CQ可以具有零个或多个工作队列关联。任何CQ都能够对发送队列、接收队列或两者服务。来自多个iSQP的工作队列可以与单个CQ相关联。
完成队列通过iSQP IPSOE动词“创建CQ”来创建。当创建CQ时,通过iSCSI库设置可以在完成队列中未决的完成队列条目(CQE)1302的最大数目。确保所选最大数目足以用于SCSI使用者的操作是iSCSI库的责任;在任何情况下,它必须安排处理由于CQ溢出而造成的错误。
在从CQ提取下一CQE之前,由IPSOE检测并报告CQ溢出。该错误作为附属异步错误来报告。
仅有的完成队列属性是CQ的最大条目数。该属性可以通过iSQPIPSOE动词“查询CQ”来提取。iSCSI库负责记录哪些WQ与CQ相关联。
CQ可以通过iSQP IPSOE动词“修改CQ”来改变大小。当WQE在与CQ相关联的WQ中未决的时候,也允许改变CQ的大小。改变大小通过iSQP IPSOE动词“改变CQ大小”来执行。
完成队列通过iSQP IPSOE动词“销毁CQ”来销毁。如果当工作队列仍然与CQ相关联的时候调用CQ的析构,则IPSOE返回一个错误,并且CQ不被销毁。
CQ的析构释放代表CQ在IPSOE接口分配的任何资源。
示出iSQP状态转换的状态图如图14所示。这就保持状态定义一致,并且简化错误语义。iSCSI IPSOE动词“修改iSQP”将iSQP在状态之间转换。另外,IPSOE所遇到的完成错误将iSQP转换到错误状态1405中。
新创建的iSQP置于复位状态1401中。通过当修改iSQP属性时指定复位状态,可以从任何其他状态转换到复位状态。在复位状态下,iSQP上下文和WQ资源已被分配。当创建或转换到复位状态时,iSQP和WQ属性设为初始化缺省值。离开复位状态可以通过销毁iSQP来实现,从而退出状态图。IPSOE在其对应iSQP处于复位状态的时候,忽略已提交给工作队列的WQE。相应IPSOE WQ上下文被更新。当处于复位状态的时候,工作队列为空。没有WQE在工作队列中未决。所有工作队列处理被禁止。目标iSQP处于复位状态的进入消息被无声息地丢弃。
在初始化(Init)状态1402下,基本iSQP属性如动词“修改iSQP”所定义已被配置。只有从复位状态1401才可能进入该状态。在不销毁iSQP的情况下,“修改iSQP”动词是SCSI库导致离开初始状态的唯一方式。离开初始状态可以通过销毁iSQP来实现,从而退出状态图。WQE可以提交给接收队列,但是进入消息不被处理。将WQE提交给发送队列是一个错误。如果WQE提交给发送队列,则忽略它并且发送队列上下文不受影响。对这两个队列的工作队列处理被禁止。目标iSQP处于Init状态的进入消息被无声息地丢弃。
在准备接收(RTR)状态1403下,IPSOE支持将WQE投递到接收队列。目标iSQP处于RTR状态的进入消息以正常方式进行处理。只有从Init状态1402使用“修改iSQP”动词才可能进入该状态。离开RTR状态可以通过销毁iSQP来实现,从而退出状态图。对发送队列的工作队列处理被禁止。如果WQE提交给发送队列,则忽略它并且发送队列上下文不受影响。
在转换到准备发送(RTS)状态1404之前,必须完成TCP/SDP通信建立协议。请求者的iSQP和响应者的iSQP之间的连接已被建立。只有从RTR状态1403才可能进入该状态。在不销毁iSQP的情况下,“修改iSQP”动词是导致离开RTS状态的唯一方式。离开RTS状态可以通过销毁iSQP来实现,从而退出状态图。IPSOE支持将WQE投递到处于RTS状态的iSQP。处于RTS状态的iSQP中的WQE以正常方式进行处理。目标iSQP处于RTS状态的进入消息以正常方式进行处理。
在错误状态1405下,停止对iSQP的正常处理。引起完成错误从而导致进入错误状态的WQE通过完成队列返回错误的正确完成错误码。该WQE可能已被部分或完全执行,从而可能已经影响接收器的状态。发送操作可能已被部分或完全完成;因此,在接收器上可能已经或可能尚未产生完成队列条目。RDMA读取操作可能已被部分完成;因此,由其WQE的数据段指向的存储器位置的内容是不确定的。RDMA写入操作可能已被部分完成;因此,由其WQE的远端地址指向的存储器位置的内容是不确定的。引起完成错误从而导致进入错误状态的WQE之后的WQE,包括在转换之后提交的那些WQE通过完成队列返回刷新错误完成状态。当发生错误时,某些随后的WQE可能已在进行中。这可能影响远端节点的状态。可能的影响依赖于如上所述的WQE类型。“修改iSQP”是导致从错误状态1405转换到iSQP复位状态1401的唯一方式。离开错误状态也可以通过销毁iSQP来实现。对于附属异步错误,继续处理WQE可能是不可能的。在这种情况下,未决WQE不被完成。当处理错误通知时,保证所有错误处理在强制iSQP复位之前完成是iSCSI库的责任。
图15是根据本发明优选实施例的发起与目标适配器的iSCSI事务的主机过程的流程图。首先,对iSCSI库或操作系统内核进行请求或函数调用,以对特定存储器区域执行iSCSI命令(步骤1500)。响应请求或函数调用,iSCSI库或OS内核组合请求中的iSCSI命令与发起端标记,从而产生封装iSCSI命令(步骤1502)。发起端标记用作允许目标适配器对存储器区域寻址的存储器句柄。封装iSCSI命令置于发送队列中以传输到目标适配器(步骤1504)。一旦目标适配器接收到封装iSCSI命令,则通过直接存取存储器区域来执行事务(步骤1506)。在本质上,这意味着主机适配器将直接从目标适配器接收的数据记录到存储器区域,或者直接从存储器区域读取数据以传输到目标适配器。该直接存取方案允许在无需将数据复制到临时缓冲区或者从其复制数据作为中间步骤的额外开销的情况下执行I/O事务。相反,本发明的内容允许直接对最终源端或目的端存储器区域执行I/O读写。
图16是根据本发明优选实施例的通过目标适配器完成iSCSI命令的过程的流程图。目标适配器首先从主机适配器接收封装iSCSI命令(步骤1600)。该封装iSCSI命令将包含要受到iSCSI命令影响的目标适配器中的数据段列表。这些数据段引用目标适配器内的存储器区域。产生与这些存储器区域相关联的目标端标记(步骤1602)。产生在执行iSCSI命令中所要处理的工作请求,其中,每个工作请求均包含目标端标记(步骤1604)。工作请求最终置于目标适配器的发送队列中以在执行iSCSI命令中进行处理(步骤1606)。
值得注意的是,虽然本发明是在完全功能化数据处理系统的上下文中描述的,但是本领域的普通技术人员应该理解本发明的过程能够以指令或其他功能描述资料的计算机可读介质形式以及各种其他形式来分发,并且本发明同样适用而与实际用来实现分发的信号承载介质的具体类型无关。计算机可读介质的例子包括可记录型介质如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM以及传输型介质如数字和模拟通信链路、使用传输形式的有线或无线通信链路例如无线频率和光波传输。计算机可读介质可以采用针对具体数据处理器系统中的实际使用而解码的编码格式的形式。功能描述资料是将功能授予机器的信息。功能描述资料包括但不限于计算机程序、指令、规则、事实(fact)、可计算函数的定义、对象和数据结构。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。

Claims (24)

1.一种方法,包括:
将iSCSI命令与一个标记组合以形成封装iSCSI命令,其中,标记与用于保存与封装iSCSI命令相关联的数据的存储器区域相关联;
通过直接存取存储器区域,执行由封装iSCSI命令指定的iSCSI事务。
2.如权利要求1所述的方法,其中,直接存取存储器区域包括将与封装iSCSI命令相关联的数据写入到存储器区域。
3.如权利要求1所述的方法,其中,直接存取存储器区域包括从存储器区域读取与封装iSCSI命令相关联的数据。
4.如权利要求1所述的方法,其中,iSCSI事务包括将与封装iSCSI命令相关联的数据传输到目标适配器。
5.如权利要求1所述的方法,其中,iSCSI事务包括从目标适配器传输与封装iSCSI命令相关联的数据。
6.如权利要求1所述的方法,其中,标记包括对存储器转换表的索引。
7.如权利要求1所述的方法,还包括:
将封装iSCSI命令放置到硬件网络卸载引擎的发送队列中以进行处理。
8.如权利要求1所述的方法,还包括:
判定iSCSI事务是否已完成;以及
响应iSCSI事务已完成的判定结果,将完成队列元素放置到完成队列中。
9.一种工作于目标适配器的方法,包括:
从主机适配器接收封装iSCSI命令,其中,封装iSCSI命令包括iSCSI命令、发起端标记以及数据段列表;
响应接收到封装iSCSI命令,产生与对应于数据段列表的目标适配器中的至少一个存储器区域相关联的目标端标记;以及
响应接收到封装iSCSI命令,在完成iSCSI命令中将工作请求传输到主机适配器,其中,工作请求包括目标端标记。
10.如权利要求9所述的方法,其中,将工作请求传输到主机适配器包括将工作请求放置到发送队列中以进行处理。
11.如权利要求9所述的方法,其中,从主机适配器接收封装iSCSI命令包括从接收队列读取封装iSCSI命令。
12.至少一种计算机可读介质中的一种计算机程序产品,包括当由计算机执行时允许计算机执行下列操作的功能描述资料:
将iSCSI命令与一个标记组合以形成封装iSCSI命令,其中,标记与用于保存与封装iSCSI命令相关联的数据的存储器区域相关联;
通过直接存取存储器区域,执行由封装iSCSI命令指定的iSCSI事务。
13.如权利要求12所述的计算机程序产品,其中,直接存取存储器区域包括将与封装iSCSI命令相关联的数据写入到存储器区域。
14.如权利要求12所述的计算机程序产品,其中,直接存取存储器区域包括从存储器区域读取与封装iSCSI命令相关联的数据。
15.如权利要求12所述的计算机程序产品,其中,iSCSI事务包括将与封装iSCSI命令相关联的数据传输到目标适配器。
16.如权利要求12所述的计算机程序产品,其中,iSCSI事务包括从目标适配器传输与封装iSCSI命令相关联的数据。
17.如权利要求12所述的计算机程序产品,其中,标记包括对存储器转换表的索引。
18.如权利要求12所述的计算机程序产品,还包括当由计算机执行时允许计算机执行下列另外操作的功能描述资料:
将封装iSCSI命令放置到硬件网络卸载引擎的发送队列中以进行处理。
19.如权利要求12所述的计算机程序产品,还包括当由计算机执行时允许计算机执行下列另外操作的功能描述资料:
判定iSCSI事务是否已完成;以及
响应iSCSI事务已完成的判定结果,将完成队列元素放置到完成队列中。
20.至少一种计算机可读介质中的一种计算机程序产品,包括当由计算机执行时允许计算机执行下列操作的功能描述资料:
从主机适配器接收封装iSCSI命令,其中,封装iSCSI命令包括iSCSI命令、发起端标记以及数据段列表;
响应接收到封装iSCSI命令,产生与对应于数据段列表的目标适配器中的至少一个存储器区域相关联的目标端标记;以及
响应接收到封装iSCSI命令,在完成iSCSI命令中将工作请求传输到主机适配器,其中,工作请求包括目标端标记。
21.如权利要求20所述的计算机程序产品,其中,将工作请求传输到主机适配器包括将工作请求放置到发送队列中以进行处理。
22.如权利要求20所述的计算机程序产品,其中,从主机适配器接收封装iSCSI命令包括从接收队列读取封装iSCSI命令。
23.一种数据处理系统,包括:
主机计算机,包括至少一个处理器和存储器;以及
与主机计算机相关联的网络卸载引擎,适用于通过网络对iSCSI输入/输出适配器进行信息发送和接收,并且包括发送队列,
其中,所述至少一个处理器将iSCSI命令与一个标记组合以形成封装iSCSI命令,标记与用于保存与封装iSCSI命令相关联的数据的存储器区域相关联;
其中,主机计算机将封装iSCSI命令放置到发送队列中,并且
其中,网络卸载引擎通过直接存取存储器区域来执行由封装iSCSI命令指定的iSCSI事务。
24.如权利要求23所述的数据处理系统,其中,执行iSCSI事务包括通过网络将封装iSCSI命令传输到适配器。
CN03155780.5A 2002-09-05 2003-09-02 处理iSCSI命令的方法和系统 Expired - Fee Related CN1239999C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/235,686 US20040049603A1 (en) 2002-09-05 2002-09-05 iSCSI driver to adapter interface protocol
US10/235,686 2002-09-05

Publications (2)

Publication Number Publication Date
CN1487417A true CN1487417A (zh) 2004-04-07
CN1239999C CN1239999C (zh) 2006-02-01

Family

ID=31990544

Family Applications (1)

Application Number Title Priority Date Filing Date
CN03155780.5A Expired - Fee Related CN1239999C (zh) 2002-09-05 2003-09-02 处理iSCSI命令的方法和系统

Country Status (3)

Country Link
US (1) US20040049603A1 (zh)
CN (1) CN1239999C (zh)
TW (1) TWI234371B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100396065C (zh) * 2005-01-14 2008-06-18 清华大学 一种iSCSI存储系统的实现方法
CN100442256C (zh) * 2004-11-10 2008-12-10 国际商业机器公司 提供用于i/o适配器的队列对的方法、系统和存储介质
CN1753406B (zh) * 2005-10-26 2010-06-30 华中科技大学 一种基于iSCSI协议的IP存储控制方法及其装置
CN1834912B (zh) * 2005-03-15 2011-08-31 蚬壳星盈科技有限公司 用于可扩展互联网引擎的iSCSI引导驱动系统及方法
CN101741870B (zh) * 2008-11-07 2012-11-14 英业达股份有限公司 因特网小型计算机接口的储存系统
CN104011695A (zh) * 2011-10-31 2014-08-27 英特尔公司 虚拟环境中的远程直接存储器访问适配器状态迁移
US9134911B2 (en) 2010-06-23 2015-09-15 International Business Machines Corporation Store peripheral component interconnect (PCI) function controls instruction
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US9626298B2 (en) 2010-06-23 2017-04-18 International Business Machines Corporation Translation of input/output addresses to memory addresses
CN107391270A (zh) * 2016-04-13 2017-11-24 三星电子株式会社 高性能无锁可缩放目标的系统和方法
CN111064680A (zh) * 2019-11-22 2020-04-24 华为技术有限公司 一种通信装置及数据处理方法

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089280B1 (en) 2001-11-02 2006-08-08 Sprint Spectrum L.P. Autonomous eclone
US7415723B2 (en) * 2002-06-11 2008-08-19 Pandya Ashish A Distributed network security system and a hardware processor therefor
US7944920B2 (en) 2002-06-11 2011-05-17 Pandya Ashish A Data processing system using internet protocols and RDMA
US20040049580A1 (en) * 2002-09-05 2004-03-11 International Business Machines Corporation Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms
JP4123088B2 (ja) * 2003-08-06 2008-07-23 株式会社日立製作所 ストレージネットワーク管理装置及び方法
US8959171B2 (en) * 2003-09-18 2015-02-17 Hewlett-Packard Development Company, L.P. Method and apparatus for acknowledging a request for data transfer
US20060010273A1 (en) * 2004-06-25 2006-01-12 Sridharan Sakthivelu CAM-less command context implementation
US7522597B2 (en) 2004-08-30 2009-04-21 International Business Machines Corporation Interface internet protocol fragmentation of large broadcast packets in an environment with an unaccommodating maximum transfer unit
US7813369B2 (en) 2004-08-30 2010-10-12 International Business Machines Corporation Half RDMA and half FIFO operations
US8023417B2 (en) 2004-08-30 2011-09-20 International Business Machines Corporation Failover mechanisms in RDMA operations
US7480298B2 (en) 2004-08-30 2009-01-20 International Business Machines Corporation Lazy deregistration of user virtual machine to adapter protocol virtual offsets
US20060075057A1 (en) * 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
US7478138B2 (en) * 2004-08-30 2009-01-13 International Business Machines Corporation Method for third party, broadcast, multicast and conditional RDMA operations
US8364849B2 (en) 2004-08-30 2013-01-29 International Business Machines Corporation Snapshot interface operations
US7430615B2 (en) 2004-08-30 2008-09-30 International Business Machines Corporation RDMA server (OSI) global TCE tables
US7552240B2 (en) * 2005-05-23 2009-06-23 International Business Machines Corporation Method for user space operations for direct I/O between an application instance and an I/O adapter
US20060265525A1 (en) * 2005-05-23 2006-11-23 Boyd William T System and method for processor queue to linear block address translation using protection table control based on a protection domain
US20070005815A1 (en) * 2005-05-23 2007-01-04 Boyd William T System and method for processing block mode I/O operations using a linear block address translation protection table
US7464189B2 (en) * 2005-05-23 2008-12-09 International Business Machines Corporation System and method for creation/deletion of linear block address table entries for direct I/O
US7502872B2 (en) * 2005-05-23 2009-03-10 International Bsuiness Machines Corporation Method for out of user space block mode I/O directly between an application instance and an I/O adapter
US7502871B2 (en) * 2005-05-23 2009-03-10 International Business Machines Corporation Method for query/modification of linear block address table entries for direct I/O
TWI273399B (en) * 2005-07-11 2007-02-11 Via Tech Inc Command process method for RAID
US20070168567A1 (en) * 2005-08-31 2007-07-19 Boyd William T System and method for file based I/O directly between an application instance and an I/O adapter
US7577761B2 (en) * 2005-08-31 2009-08-18 International Business Machines Corporation Out of user space I/O directly between a host system and a physical adapter using file based linear block address translation
US7500071B2 (en) * 2005-08-31 2009-03-03 International Business Machines Corporation Method for out of user space I/O with server authentication
US7657662B2 (en) * 2005-08-31 2010-02-02 International Business Machines Corporation Processing user space operations directly between an application instance and an I/O adapter
US20070156974A1 (en) * 2006-01-03 2007-07-05 Haynes John E Jr Managing internet small computer systems interface communications
US20070258478A1 (en) * 2006-05-05 2007-11-08 Lsi Logic Corporation Methods and/or apparatus for link optimization
US7996348B2 (en) 2006-12-08 2011-08-09 Pandya Ashish A 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters
US9141557B2 (en) 2006-12-08 2015-09-22 Ashish A. Pandya Dynamic random access memory (DRAM) that comprises a programmable intelligent search memory (PRISM) and a cryptography processing engine
JP2008226040A (ja) * 2007-03-14 2008-09-25 Hitachi Ltd 情報処理装置及びコマンド多重度制御方法
TWI348850B (en) * 2007-12-18 2011-09-11 Ind Tech Res Inst Packet forwarding apparatus and method for virtualization switch
US8655974B2 (en) * 2010-04-30 2014-02-18 International Business Machines Corporation Zero copy data transmission in a software based RDMA network stack
US9092149B2 (en) 2010-11-03 2015-07-28 Microsoft Technology Licensing, Llc Virtualization and offload reads and writes
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
WO2013042174A1 (en) * 2011-09-22 2013-03-28 Hitachi, Ltd. Computer system and storage management method
CN102333210B (zh) * 2011-10-28 2014-03-26 杭州华三通信技术有限公司 一种视频数据存储方法及其设备
US9817582B2 (en) 2012-01-09 2017-11-14 Microsoft Technology Licensing, Llc Offload read and write offload provider
US9071585B2 (en) 2012-12-12 2015-06-30 Microsoft Technology Licensing, Llc Copy offload for disparate offload providers
US9251201B2 (en) 2012-12-14 2016-02-02 Microsoft Technology Licensing, Llc Compatibly extending offload token size
JP6378044B2 (ja) * 2014-10-31 2018-08-22 東芝メモリ株式会社 データ処理装置、データ処理方法およびプログラム
US20160248628A1 (en) * 2015-02-10 2016-08-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Queue pair state transition speedup
CN104731529A (zh) * 2015-03-17 2015-06-24 浪潮集团有限公司 一种iSCSI存储器的识别与配置使用方法
US10764367B2 (en) 2017-03-15 2020-09-01 Hewlett Packard Enterprise Development Lp Registration with a storage networking repository via a network interface device driver
EP4260195A4 (en) 2021-01-06 2025-02-26 Enfabrica Corp SERVER MATRIX ADAPTER FOR I/O SCALING OF HETEROGENEOUS AND ACCELERATED COMPUTE SYSTEMS
WO2022261325A2 (en) * 2021-06-09 2022-12-15 Enfabrica Corporation Transparent remote memory access over network protocol
US12248424B2 (en) 2022-08-09 2025-03-11 Enfabrica Corporation System and method for ghost bridging

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6034963A (en) * 1996-10-31 2000-03-07 Iready Corporation Multiple network protocol encoder/decoder and data processor
US5920881A (en) * 1997-05-20 1999-07-06 Micron Electronics, Inc. Method and system for using a virtual register file in system memory
US6226680B1 (en) * 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US20020107962A1 (en) * 2000-11-07 2002-08-08 Richter Roger K. Single chassis network endpoint system with network processor for load balancing
US7401126B2 (en) * 2001-03-23 2008-07-15 Neteffect, Inc. Transaction switch and network interface adapter incorporating same
US20030046330A1 (en) * 2001-09-04 2003-03-06 Hayes John W. Selective offloading of protocol processing
US7620692B2 (en) * 2001-09-06 2009-11-17 Broadcom Corporation iSCSI receiver implementation
US6845403B2 (en) * 2001-10-31 2005-01-18 Hewlett-Packard Development Company, L.P. System and method for storage virtualization
US7944920B2 (en) * 2002-06-11 2011-05-17 Pandya Ashish A Data processing system using internet protocols and RDMA
US7752361B2 (en) * 2002-06-28 2010-07-06 Brocade Communications Systems, Inc. Apparatus and method for data migration in a storage processing device
US8631162B2 (en) * 2002-08-30 2014-01-14 Broadcom Corporation System and method for network interfacing in a multiple network environment

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100442256C (zh) * 2004-11-10 2008-12-10 国际商业机器公司 提供用于i/o适配器的队列对的方法、系统和存储介质
CN100396065C (zh) * 2005-01-14 2008-06-18 清华大学 一种iSCSI存储系统的实现方法
CN1834912B (zh) * 2005-03-15 2011-08-31 蚬壳星盈科技有限公司 用于可扩展互联网引擎的iSCSI引导驱动系统及方法
CN1753406B (zh) * 2005-10-26 2010-06-30 华中科技大学 一种基于iSCSI协议的IP存储控制方法及其装置
CN101741870B (zh) * 2008-11-07 2012-11-14 英业达股份有限公司 因特网小型计算机接口的储存系统
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US9134911B2 (en) 2010-06-23 2015-09-15 International Business Machines Corporation Store peripheral component interconnect (PCI) function controls instruction
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US9383931B2 (en) 2010-06-23 2016-07-05 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US9626298B2 (en) 2010-06-23 2017-04-18 International Business Machines Corporation Translation of input/output addresses to memory addresses
CN104011695A (zh) * 2011-10-31 2014-08-27 英特尔公司 虚拟环境中的远程直接存储器访问适配器状态迁移
CN104011695B (zh) * 2011-10-31 2018-09-07 英特尔公司 用于虚拟环境中的rdma适配器状态迁移的方法和装置
CN107391270A (zh) * 2016-04-13 2017-11-24 三星电子株式会社 高性能无锁可缩放目标的系统和方法
CN107391270B (zh) * 2016-04-13 2022-11-08 三星电子株式会社 高性能无锁可缩放目标的系统和方法
CN111064680A (zh) * 2019-11-22 2020-04-24 华为技术有限公司 一种通信装置及数据处理方法

Also Published As

Publication number Publication date
TWI234371B (en) 2005-06-11
CN1239999C (zh) 2006-02-01
US20040049603A1 (en) 2004-03-11
TW200404430A (en) 2004-03-16

Similar Documents

Publication Publication Date Title
CN1239999C (zh) 处理iSCSI命令的方法和系统
CN1308835C (zh) 远端直接存储器存取启用网络适配器的存储器管理卸载
CN1604057A (zh) 硬件实施通道适配器资源的逻辑分区的方法和系统
CN1310475C (zh) 用于根据使用类来控制对设施的访问的装置和方法
CN1212574C (zh) 使用本地标识符的端节点分区
JP4012545B2 (ja) リモート・ダイレクト・メモリ・アクセス対応ネットワーク・インタフェース・コントローラのスイッチオーバーとスイッチバックのサポート
US10503679B2 (en) NVM express controller for remote access of memory and I/O over Ethernet-type networks
CN1617526A (zh) 在物理端口上模拟多个逻辑端口的方法和装置
TWI357561B (en) Method, system and computer program product for vi
TWI458307B (zh) 管理網路資訊處理的系統和方法
CN1633647A (zh) 用于管理网络中的数据传送的系统、方法和产品
US20090083392A1 (en) Simple, efficient rdma mechanism
CN1832489A (zh) 一种对目的磁盘进行访问的方法和扩展磁盘容量的系统
JP2003263352A (ja) Ipネットワーク上の遠隔データファシリティ
CN1458590A (zh) 用网络栈同步和上载已卸载网络栈连接的方法
CN1766851A (zh) 用于数据存储区管理的系统及方法
CN101040251A (zh) 用于在存储区域网络中的存储器件间直接传输数据的方法和系统
CN1671134A (zh) 存储系统
CN1739098A (zh) 智能网络适配器的状态恢复及故障修复
CN1717910A (zh) 用于在网络设备之间交换对等参数的方法和设备
JP2004531001A (ja) ホスト・コンピュータ・システムとイーサネット(r)・アダプタの間におけるデータ転送
CN1766885A (zh) 提供受管理数据的系统及方法
CN1818890A (zh) 用于实现卸载发起方功能的方法和系统
CN1924783A (zh) 存储系统以及存储控制方法
JP2003216592A (ja) ヘッド・オンリ循環バッファを介してインフィニバンド・ワーク及び完了キューを管理する方法及び装置

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: 20060201

Termination date: 20091009