首页> 中国专利> 使用本地标识符的端节点分区

使用本地标识符的端节点分区

摘要

一种用于将一物理元件(600)的一端节点(606)分区的方法,其包括以下步骤:使用一子网管理包(SMP)探查(702)一端口(644);通过探查该端口(644),检测到(704)与该端口(644)相关联的一交换机(612);将一本地标识符(694)分配给该交换机(612)的一SMP端口(686);检测(708)该交换机(612)的一其它端口(678);以及将一本地标识符(670)分配(710)给与该其它端口(678)相应的端节点(606)的一端口(650)。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-05-20

    专利权的终止(未缴年费专利权终止)

    专利权的终止(未缴年费专利权终止)

  • 2005-07-27

    授权

    授权

  • 2004-10-20

    实质审查的生效

    实质审查的生效

  • 2004-08-11

    公开

    公开

说明书

技术领域

本发明一般涉及计算机系统之间的通信。

背景技术

在系统区域网络(SAN)中,硬件提供了一种可用于输入/输出设备(I/O)和一般计算节点之间的进程间通信(IPC)的消息传递机制。用户(consumer)通过向SAN通道适配器(CA)上的发送/接收工作队列传递发送/接收消息来访问SAN消息传递硬件。该发送/接收工作队列(WQ)以队列对(QP)的形式分配给用户。消息可以通过5种不同的规定的传输类型而发送:可靠连接的(RC)、可靠数据报(RD)、不可靠连接(UC)、不可靠数据报(UD)、和原始数据报(RawD)。此外,还有一组可由制造商规定的操作码,其允许不同公司定义定制的包,这些包还具有相同的路由报头格式。用户经由SAN发送和接收工作完成(WC),从一完成队列(CQ)中获取定义的消息的结果。对于这些可由制造商定义的操作,并不规定它们是否使用与定义的包类型相同的排队结构。不管包的类型是什么,源通道适配器负责将输出的消息分段,并将它们发送到目的地。目的地通道适配器负责将输入的消息重新装配,并将它们置于由目的地的用户指定的存储器空间中。目前存在两种通道适配器类型,即主机通道适配器(HCA)和目标通道适配器(TCA)。通用计算节点使用主机通道适配器来访问SAN结构(fabric)。用户使用SAN动词(verb)来访问主机通道适配器的功能。解释动词并直接访问通道适配器的软件称为通道接口(CI)。

InfiniBand(InfiniBand行业协会的商标)组件在初始化过程中被分配一本地标识符(LID)。LID用来在一子网中为组件编址。所有InfiniBand包包含一源LID和一目的LID,其分别定义该包在该子网中的源和目的地址。InfiniBand组件也被分配至少一个分区关键字(P_Key)。该P_Key用来将一InfiniBand结构分区为一个或多个组。于是一些InfiniBand组件被置于所述的一个或多个组中。所有其它通信都是允许的。端节点被分组到一些区中,并且其访问是通过P_Key控制。InfiniBand分区机制实质上使得主机能够以一种受控制的方式提供适配器和共享适配器。

然而,InfiniBand没有提供这样一种机制,该机制用于将一端节点分区,使得多个操作系统实例可以共享单个通道适配器端口,而同时获得对InfiniBand子网的受控制的访问。现有技术的系统通常增加额外的一个或多个包报头以识别操作系统实例。通过增加一个或多个包报头,这导致了数据传输的更大复杂性。因此,这种端节点的分区机制的缺乏对于高端服务器来说构成了一个问题,其中的高端服务器通过逻辑的或物理的分区而支持在其处理和存储资源中进行分区。

因此,需要一种机制,允许单个物理组件表现为多个组件,所述多个组件中的每一单个组件具有唯一的访问控制级别。这些组件可以是主机通道适配器(HCA)、目标通道适配器(TCA)或交换机。

本发明提供了如权利要求1所述的方法,如权利要求2所述的相应的系统以及如权利要求3所述的计算机程序产品。

附图说明

在所附权利要求中提出了被认为是本发明特有的新特征。然而,本发明本身、以及采用的优选方式及其进一步的目的和优点,通过参照以下对示例性实施例的详细描述,并结合附图进行阅读,将获得最好的理解,其中:

图1示出了根据本发明的优选实施例的一网络计算系统的示意图;

图2示出了根据本发明的优选实施例的一主机处理器节点的功能框图;

图3示出了根据本发明的优选实施例的一主机通道适配器的示意图;

图4示出了描述根据本发明的优选实施例的工作请求处理的示意图;

图5示出了根据本发明的一优选实施例的数据包的图解;

图6示出了根据本发明的实施例的具有虚拟通道适配器和虚拟交换机的物理组件的示意图;

图7是一示例性流程图,其描述了根据合本发明的优选实施例的、用于物理元件的配置的一静态选择系统的操作;

图8是一示例性流程图,其描述了根据本发明的优选实施例的,当主机通道适配器及与其相关联的节点变为可供使用时或从运行中删除时,将它们报告;以及

图9是一示例性流程图,其描述了根据本发明的一优选实施例的、用于物理元件的配置的一动态选择系统的操作。

具体实施方式

网络计算系统具有端节点、交换机、路由器和把这些组件互连在一起的链路。端节点将消息分段为包,并将这些包通过链路传输。交换机和路由器将这些端节点互连在一起,并将这些包送到合适的端节点。这些端节点在目的地将这些包重新装配成消息。

现在参照附图,具体为图1,其中示出了根据本发明的优选实施例的一网络计算系统的示意图。图1所代表的网络计算系统采取了系统区域网络(SAN)100的形式,并且只是为说明目的而提供的,而如下所述的本发明的一些实施例可以在多种其它类型和配置的计算机系统上实施。

SAN 100是一种高带宽、低时延的网络,其将网络计算系统中的节点互连在一起。节点是连接到网络的一个或多个链路上、并构成该网络中消息的来源和/或目的地的任何组件。在图示的例子中,SAN 100包括的节点形式有主机处理器节点102、主机处理器节点104、独立磁盘冗余阵列(RAID)子系统节点106、I/O机架节点108,和PCI I/O机架节点184。图1所示的节点只是为了说明目的,因为SAN 100可以连接任何数量和任何类型的独立处理器节点、I/O适配器节点、和I/O设备节点。这些节点中的任何一个都可以作为一端节点,在这里端节点被定义为在SAN 100中发起和最终消耗掉消息或帧的设备。

在这里所用的消息是应用程序定义的数据交换单元,其是在相互合作的进程之间进行通信的基本单元。包是由网络连接协议报头和/或报尾所封装的数据单元。报头一般提供了用于在SAN中指引帧的控制和路由信息。报尾一般包含了用于确保包在传输时不带有被破坏的内容的控制和循环冗余检验(CRC)数据。

SAN 100包含了在网络计算系统中既支持I/O通信也支持处理器间通信(IPC)的通信和管理的基础结构。图1所示的SAN 100包括一个交换通信结构,其使得很多设备能够在一安全的、远程管理的环境中并行地以高带宽和低时延传输数据。端节点可以通过多个端口进行通信,并利用在SAN结构之中的多个路径。可利用图1所示的多个端口和在SAN之中的多个路径,以用于容错和增加带宽的数据传输。

图1中的SAN 100包括交换机112、交换机114、交换机146和路由器117。交换机是这样一种设备,其把多个链路连接起来,并允许使用一小的报头目的地本地标识符(DLID)字段将包从一子网中的一链路路由到另一链路。路由器是这样一种设备,其把多个子网连接在一起,并能够使用一大的报头目的地全局唯一标识符(DGUID)将包从第一子网中的一链路传送到第二子网中的另一链路。

在一个实施例中,链路是在任何两个网络结构单元如端节点、交换机或路由器之间的全双工通道。示例性的合适的链路包括但不限于,铜缆、光缆以及在底板和印刷电路板上的印刷电路铜迹线。

对于可靠的服务类型,端节点,例如主机处理器端节点和I/O适配器端节点,产生请求包并返回确认包。交换机和路由器将包从源一直传递到目的地。除了可变的CRC报尾字段是在网络中的每一阶段被更新外,交换机将包不作改变地传递下去。路由器在包被路由选择时更新该可变的CRC报尾字段,并且更新报头中的其它字段。

在如图1所示的SAN 100中,主机处理器节点102、主机处理器节点104、RAID I/O子系统106、I/O机架108、和PCI I/O机架184包括至少一个通道适配器(CA),以提供到SAN 100的接口。在一个实施例中,每个通道适配器是这样的一个端点,其以足够的细节实施通道适配器接口,以发出或接收在该SAN结构中传输的包。主机处理器节点102包含通道适配器,其形式为主机通道适配器118和主机通道适配器120。主机处理器节点104包含主机通道适配器122和主机通道适配器124。主机处理器节点102也包括由总线系统134互连起来的中央处理单元126-130和存储器132。同样地,主机处理器节点104包括由总线系统144互连起来的中央处理单元136-140和存储器142。主机通道适配器118提供了到交换机112的连接,主机通道适配器120和122提供了到交换机112和114的连接,而主机通道适配器124提供了到交换机114的连接。

在一个实施例中,主机通道适配器是由硬件实现的。在这种实现中,主机通道适配器硬件卸载了中央处理单元和I/O适配器通信的很大开销。主机通道适配器的这种硬件实现也允许在一交换网络上的多个并发通信,而没有与通信协议相关的传统开销。在一个实施例中,图1中的主机通道适配器和SAN 100为该网络计算系统的I/O和处理器间通信(IPC)的用户提供了零处理器副本的数据传输,而不牵涉操作系统内核进程,并利用硬件来提供可靠的、容错的通信。如图1所示,路由器117与连接其它主机或其它路由器的广域网(WAN)和/或局域网(LAN)相耦合。

图1中的I/O机架108包括一交换机146和多个I/O模块148-156。在这些例子中,I/O模块采取了适配器卡的形式。图1所示示例性的适配器卡包括用于I/O模块148的SCSI适配器卡;用于I/O模块152的连接到光纤通道集线器和光纤通道仲裁环(FC-AL)设备的适配器卡;用于I/O模块150的以太网适配器卡;用于I/O模块154的图形适配器卡;以及用于I/O模块156的视频适配器卡。任何已知类型的适配器卡都可以使用。I/O适配器也包括位于I/O适配器底板上的一交换机,以将这些适配器卡耦合到该SAN结构。这些模块包含目标通道适配器158-166。

在本例中,图1中的RAID子系统节点106包括一处理器168、一存储器170、一目标通道适配器(TCA)172、以及多个冗余的和/或条带化的存储器盘单元174。目标通道适配器172可以是一具有完整功能的主机通道适配器。

PCI I/O机架节点184包括一个TCA 186,以及通过PCI总线188连接到TCA 186的多个PCI输入/输出适配器(IOA)190-192。在这些例子中,IOA采取适配器卡的形式。图1所示的示例性适配器卡包括调制解调器适配器卡190和串行适配器卡192。TCA 186将自PCI IOA 190-192接收的PCI事务请求或响应封装为数据包,以便通过SAN结构传输给一HCA,如HCA 118。HCA 118判断收到的数据包是否包含PCI传输,并且如果是,就将该数据包解码,以获得所封装的PCI事务请求或响应,例如一DMA写或读操作。HCA 118将它发送给合适的单元,例如存储器132。如果该PCI事务是一DMA读请求,则HCA从存储器,例如存储器132接收响应,将该PCI响应封装为一数据包,并通过SAN结构将该数据包发回给请求的TCA 186。然后,该TCA从该数据包中将PCI事务解码,并通过PCI总线188将该PCI事务发送给PCI IOA 190或192。

类似地,从一处理器,例如CPU 126到一PCI IOA,例如PCI IOA 190或192的存储或加载请求由HCA 118封装为一数据包,以便通过SAN结构传输给与合适的PCI IOA 190或192相应的TCA 186。TCA 186将该数据包解码,以获得PCI传输,并通过PCI总线188将PCI存储或加载请求和数据传输给PCI IOA 190或192。如果该请求是一加载请求,则TCA186从PCI IOA 190或192接收一响应,TCA将该响应封装为一数据包,并通过SAN结构将其传输给HCA 118,而该HCA 118将该数据包解码,以获得PCI数据和命令,并将该PCI数据和命令发送给请求的CPU 126。这样,PCI适配器可以连接到SAN结构。

SAN 100处理用于I/O和处理器间通信的数据通信。SAN 100支持I/O所需的高带宽和可伸缩性,并且也支持处理器间通信所需的极低的时延和低的CPU开销。用户的客户程序可以绕过操作系统内核进程,并直接访问网络通信硬件,例如主机通道适配器,这样就允许高效的消息传递协议。SAN 100适合于目前的计算模型,并且是新形式的I/O和计算机群集通信的积木式结构。此外,图1所示的SAN 100使得I/O适配器节点能够相互之间通信,或者与网络计算系统中的任何或所有处理器节点通信。当一I/O适配器连接到SAN 100上时,所产生的I/O适配器节点实质上具有与SAN100中的任何主机处理器节点相同的通信能力。

图1意欲作为一个例子,而不是对本发明的结构限制,并且只是为说明目的而提供。如下所述的本发明的优选实施例可以在多种类型和配置的计算机系统上实施。例如,实施本发明的计算机系统的范围可以是从具有一个处理器和有限数量的输入/输出(I/O)适配器的一个小服务器到具有例如数百个处理器和数千个I/O适配器的一个或多个大规模并行超计算机系统。此外,本发明可以在由例如一因特网或一内部网连接起来的一些远程计算机系统的基础结构上实施。

图2描述了根据本发明的优选实施例的一主机处理器节点的功能框图。主机处理器节点200是诸如图1所示主机处理器节点102等主机处理器节点的一个例子。

在本例中,图2所示的主机处理器节点200包括一组用户202-208以及一个或多个PCI/PCI-X设备驱动程序230,它们是在主机处理器节点200上执行的进程。主机处理器节点200还包括通道适配器210和通道适配器212。通道适配器210包含端口214和216,而通道适配器212包含端口218和220。每个端口连接到一链路。这些端口可以连接到一个SAN子网或多个SAN子网,例如图1中的SAN 100。在这些例子中,这些通道适配器采取主机通道适配器的形式。

用户202-208通过动词接口222以及消息与数据服务224将消息传送到SAN。动词接口实质上是对主机通道适配器的功能的一抽象描述。操作系统可以通过其编程接口提供部分或全部动词功能。基本上,这一接口定义了该主机的行为。此外,主机处理器节点200包括消息与数据服务224,其是比该动词层更高层的接口,并用来处理通过通道适配器210和通道适配器212接收到的消息和数据。消息与数据服务224为用户202-208提供了一接口,以处理消息和其它数据。此外,通道适配器210和通道适配器212可以接收来自处理器的、目标为与SAN连接的PCI IOA的加载和存储指令。这些都绕过了该动词层,如图2所示。

图3示出了根据本发明的优选实施例的一主机通道适配器的示意图。图3所示的主机通道适配器300包括一组队列对(QP)302-310,其是一种用来将消息传送给主机通道适配器端口312-316的手段。数据到主机通道适配器端口312-316的缓冲是通过虚拟通道(VL)318-334引导的,其中每个VL具有自己的流控制。一子网管理器(未示出)使用用于每个物理端口的本地地址,即端口的LID,来配置通道适配器。子网管理器代理(SMA)336为了配置通道适配器,而与子网管理器通信。存储器转换与保护(MTP)338是一种将虚拟地址转换为物理地址并验证访问权限的机制。直接存储器访问(DMA)340提供了与队列对302-310有关的、使用存储器(也标记为340)的直接存储器访问操作。

如图3所示主机通道适配器300的单个通道适配器,可以支持数千个队列对。相比之下,I/O适配器中的一目标通道适配器通常支持数量少得多的队列对。

每个队列对由一发送工作队列(SWQ)和一接收工作队列组成。发送工作队列用于发送通道和存储器语义消息。接收工作队列接收通道语义消息。用户调用在这里被称为动词的、特定于操作系统的编程接口,以将工作请求(WR)置于工作队列中。

图4示出了一示意图,其描绘了根据本发明的优选实施例的工作请求处理。图4中具有接收工作队列400、发送工作队列402和完成队列404,用于处理来自用户406和用于用户406的请求。这些来自用户406的请求最终被发送给硬件408。在本例中,用户406产生工作请求410和412,并接收工作完成414。如图4所示,被置于一工作队列中的工作请求被称为工作队列元素(WQE)。

发送工作队列402包含工作队列元素(WQE)422-428,其描述将在SAN结构中传输的数据。接收工作队列400包含工作队列元素(WQE)416-420,其描述放置来自SAN结构的输入的通道语义数据的位置。工作队列元素由该主机通道适配器中的硬件408处理。

动词也提供了用于从完成队列404中获取完成的工作的机制。如图4所示,完成队列404包含完成队列元素(CQE)430-436。完成队列元素包含关于先前完成的工作队列元素的信息。完成队列404用来生成多个队列对的单一完成通知点。完成队列元素是在完成队列中的一种数据结构。该元素描述一个已被完成的工作队列元素。该完成队列元素包含足够的信息,以确定队列对和已完成的特定工作队列元素。一完成队列环境(context)是一信息块,其包含管理单个完成队列所需的指向该队列的指针、长度和其它信息。

所支持的用于图4所示的发送工作队列402的示例性工作请求描述如下。发送工作请求是一种通道语义操作,其把一组本地数据段推放到由一远程节点的接收工作队列元素所引用的数据段。例如,工作队列元素428包含对数据段4 438、数据段5 440、和数据段6 442的引用。发送工作请求的这些数据段中的每一个都包含一虚拟连续的存储器区域。用于引用本地数据段的虚拟地址处于创建该本地队列对的进程的地址环境中。

远程直接存储器访问(RDMA)读工作请求提供一种存储器语义操作,以读取远程节点上的一虚拟连续的存储器空间。存储器空间既可以是存储器区域的一部分,也可以是存储器窗口的一部分。存储器区域引用先前注册的、由虚拟地址和长度定义的一组虚拟连续的存储器地址。存储器窗口引用已被绑定到先前注册的区域的一组虚拟连续的存储器地址。

该RDMA读工作请求读取远程端节点上的一虚拟连续的存储器空间,并将该数据写入一虚拟连续的本地存储器空间。与发送工作请求相似,由该RDMA读工作队列元素引用本地数据段而采用的虚拟地址处于创建了该本地队列对的进程的地址环境中。例如,接收工作队列400中的工作队列元素416引用数据段1 444、数据段2 446、数据段3 448。该远程虚拟地址处于这样的进程的地址环境中,该进程拥有作为该RDMA读工作队列元素的目标的远程队列对。

RDMA写工作队列元素提供一种存储器语义操作,以写入在远程节点上的一虚拟连续的存储器空间。该RDMA写工作队列元素包含本地虚拟连续存储器空间以及被写入所述本地存储器空间的远程存储器空间虚拟地址的一分散列表(scatter list)。

RDMA FetchOp工作队列元素提供一种存储器语义操作,以对远程字执行一原子操作。该RDMA FetchOp工作队列元素是合并的RDMA读、修改、和RDMA写操作。该RDMA FetchOp工作队列元素可以支持几种读-修改-写操作,如“比较并在相等时交换”。

一绑定(解除绑定)远程访问关键字(R_Key)工作队列元素向主机通道适配器硬件提供一命令,以通过将一存储器窗口与一存储器区域相关联(解除关联),来修改(清除)该存储器窗口。R_Key是每个RDMA访问的一部分,并被用于验证远程进程已允许对缓冲区的访问。

在一实施例中,图4所示的接收工作队列400只支持一种类型的工作队列元素,其被称为接收工作队列元素。该接收工作队列元素提供一种通道语义操作,其描述输入的发送消息写入其中的一本地存储器空间。该接收工作队列元素包括一分散列表,其描述数个虚拟连续的存储器空间。输入的发送消息写入这些存储器空间中。这些虚拟地址处于创建该本地队列对的进程的地址环境中。

对于处理器间通信,一用户模式软件进程通过队列对直接从缓冲区在存储器中所在的位置传送数据。在一实施例中,通过队列对的传送绕过操作系统,并耗用很少的主机指令周期。队列对允许零处理器副本的数据传送,而不牵涉操作系统内核。该零处理器副本的数据传送对高带宽和低时延的通信提供了有效的支持。

当一队列对生成时,该队列对被设置为提供所选类型的传输服务。在一实施例中,实施本发明的网络计算系统支持4种类型的传输服务。

可靠和不可靠连接的服务将一本地队列对与一个且只有一个远程队列对相关联。连接的服务需要进程为每个将通过SAN结构与之通信的进程创建一队列对。因而,如果N个主机处理器节点中的每一个都包含P个进程,而每个节点上的所有P个进程都要与所有其它节点上的所有进程通信,则每个主机处理器节点需要P2×(N-1)个队列对。此外,一进程可将一队列对与同一主机通道适配器上的另一队列对相关联。

可靠数据报服务将一本地端到端(EE)环境与一个且只有一个远程端到端环境相关联。可靠数据报服务允许一个队列对的客户进程与任何其它远程节点上的任何其它队列对通信。在接收工作队列中,可靠数据报服务允许来自任何其它远程节点上的任何发送工作队列的输入消息。由于可靠数据报服务是无连接的,因此,可靠数据报服务极大地改进了可伸缩性。所以,与使用可靠连接传输服务相比,使用可靠数据报服务,具有固定数量的队列对的一端节点可以与多得多的进程和端节点通信。例如,如果N个主机处理器节点中的每一个都包含P个进程,并且每个节点上的所有P个进程都要与所有其它节点上的所有进程通信,则可靠连接服务在每个节点上需要P2×(N-1)个队列对。相比之下,无连接的可靠数据报服务在每个节点上只需要P个队列对加上(N-1)个EE环境,就可以进行完全相同的通信。

不可靠数据报服务是无连接的。不可靠数据报服务由管理应用程序使用,以发现新的交换机、路由器和端节点,并将它们集成到一给定的网络计算系统中。不可靠的数据报服务不提供可靠连接服务和可靠数据报服务的可靠性保证。因而,不可靠数据报服务利用在每个端节点上保持的较少的状态信息运行。

图5是根据本发明的优选实施例的一数据包的图解。消息数据500包含数据段1 502、数据段2 504、和数据段3 506,其与图4所示的数据段相似。在本例中,这些数据段构成包508,其被置于数据包512中的包净荷(payload)510中。此外,数据包512包含CRC 514,其用于错误检验。此外,在数据包512中还有路由报头516和传输报头518。路由报头516用于标识数据包512的源和目的端口。本例中的传输报头518指定数据包512的目的队列对。此外,传输报头518还提供用于数据包512的诸如操作码、包顺序号、和分区等信息。该操作码标识该包是否是一消息的第一个、最后一个、中间的、或唯一的包。该操作码也指定是否该操作是一发送RDMA写、读或原子操作。该包顺序号在通信建立时被初始化,并且每当队列对创建一新包时递增。端节点的端口可以被配置成为一个或多个有可能重叠的、被称为分区的集合的成员。

图6示出了根据本发明的实施例的、具有虚拟通道适配器和虚拟交换机的一物理组件的示意图。图6示出了一多功能芯片的内部结构,该芯片包含一个或多个交换机,这些交换机将一个或多个HCA互连到一个或多个子网。图6中的物理元件600包括虚拟主机处理器节点602和虚拟主机处理器节点604。虚拟主机处理器节点602包括虚拟主机通道适配器(HCA)606。虚拟主机处理器节点604包括虚拟主机通道适配器(HCA)608。虚拟HCA 606和608可以具有与物理HCA相同的属性。例如,在本例中,虚拟HCA 606和608具有强制性的队列对号码0和1。

图6所示的物理元件600包括SAN结构610,该SAN结构610包括交换机612。图6所示的SAN结构610包括将主机通道适配器606耦合到交换机612的一链路,以及将交换机612耦合到TCA 642的一链路。图6所示的网络计算系统600还包括SAN结构611,该SAN结构611包括交换机614。图6所示的SAN结构611包括将主机通道适配器608耦合到交换机614的一链路,以及将交换机614耦合到TCA 644的一链路。虚拟HCA 606包括端口650和652。端口650通过交换机612的端口678连接到子网646。端口652通过交换机614的端口682连接到子网648。与子网646相关联的一子网管理器已将LID 670分配给HCA 606的端口650,并将LID 694分配给交换机612的端口686。端口686是交换机612的InfiniBand子网管理端口0。与子网648相关联的一子网管理器已将LID672分配给HCA 606的端口652,并将LID 696分配给交换机614的端口688。端口688是交换机614的InfiniBand子网管理端口0。虚拟HCA 608包括端口654和656。端口654通过交换机612的端口680连接到子网646。端口656通过交换机614的端口684连接到子网648。与子网646相关联的一子网管理器已将LID 674分配给HCA 608的端口654。与子网648相关联的一子网管理器已将LID 676分配给HCA 608的端口656。

在示例性的事务中,主机处理器节点602包括客户进程A 616。主机处理器节点604包括客户进程B 618。客户进程A 616通过队列对620、完成队列632和转换保护表(TPT)634与主机通道适配器硬件606交互作用。客户进程B 618通过队列对622、完成队列636和TPT 638与主机通道适配器608交互作用。队列对620、队列对622、完成队列632、完成队列636、TPT 634和TPT 638是一些数据结构。队列对620包括一发送工作队列624和一接收工作队列626。队列对622包括一发送工作队列628和一接收工作队列630。完成队列632和636由单个完成队列组成。TPT 634和638由一存储器组成,该存储器由一存储器地址转换与保护表组成。

通道适配器,例如TCA或HCA,可以向将作为物理元件600的一部分而运行的软件、固件或硬件状态机提供一资源配置和分配接口。该资源配置和分配接口允许软件、固件或硬件状态机为虚拟HCA,例如图6所示的HCA 606和608,设置操作策略。该操作策略可能包括:

1)在一多功能芯片中使用的交换机的数量;

2)每个交换机的端口的数量;

3)分配给每个交换机的交换机资源的数量;

4)在该多功能芯片中使用的HCA的数量;

5)每个HCA的端口的数量;以及

6)分配给每个HCA的HCA资源的数量。

软件、固件或硬件状态机可以选择物理元件600的实际配置。一物理元件可以是,例如,一HCA。该选择可以是静态的或动态的。静态选择可能需要通过一结构的重新初始化和/或一节点的重新启动来改变HCA或交换机的配置。动态选择允许改变HCA或交换机的配置而不需要结构的重新初始化,但可能需要该节点的启动。

在静态选择机制下,物理元件600可能必须报告在结构初始化期间可以作为物理元件600的一部分而包括进来的虚拟交换机、HCA、和主机处理器节点的精确数量。静态选择机制可能提供在该物理元件上是否有任何端口可用的信息,但不提供关于端口状态的信息,如果没有对该信息的请求的话。使用静态选择机制,每个虚拟HCA可能表现为一有区别的物理HCA。在图6中,通过使用标准的InfiniBand子网管理包(SMP)探查端口644,与子网646相关联的一子网管理器检测到交换机612。对于与子网646相关联的该子网管理器,交换机612表现为一物理交换机,并且LID 694被分配给其SMP端口686。与子网646相关联的该子网管理器通过InfiniBand SMP识别交换机612具有两个其它的端口,即端口678和680。通过使用标准的InfiniBand SMP探查交换机612的端口678以及定位HCA 606的端口650,与子网646相关联的该子网管理器检测到HCA 606。对于与子网646相关联的该子网管理器,HCA 606表现为一物理HCA。与子网646相关联的该子网管理器使用InfiniBand SMP将LID 670分配给HCA 606的端口650。类似地,通过使用InfiniBand SMP,与子网646相关联的该子网管理器检测到HCA 608。对于与子网646相关联的该子网管理器,HCA 608表现为一物理HCA。与子网646相关联的该子网管理器使用InfiniBand SMP将LID 674分配给端口654。

使用动态选择机制,物理元件600可能报告虚拟交换机的最大可配置数量和它们相应的拓扑,但可能不报告在结构初始化期间可能作为物理元件600的一部分包括进来的HCA和主机处理器节点的精确数量。动态选择机制可能提供在该物理元件上是否有任何端口可用的信息,并可能提供在先前不可用的端口变为可供使用时的信息。类似地,动态选择机制可能在HCA及与其相关联的主机节点被从运行中删除时报告它们的删除。使用动态选择机制,每个虚拟HCA可以表现为一有区别的、物理的HCA。

在图6中,如果HCA 606在后来的一时刻变成可供使用的,则将发生以下过程。通过使用InfiniBand管理包(SMP)探查端口644,与子网646相关联的一子网管理器检测出交换机612。对于与子网646相关联的该子网管理器,交换机612表现为一物理交换机,并且LID 694被分配给其SMP端口686。与子网646相关联的该子网管理器通过标准的InfiniBand SMP识别交换机612具有两个其它的端口,即端口678和680。通过使用InfiniBand SMP探查交换机612端口678以及定位HCA 606的端口650,与子网646相关联的该子网管理器检测出HCA 606。对于与子网646相关联的该子网管理器,HCA 606表现为一物理HCA。与子网646相关联的该子网管理器使用InfiniBand SMP将LID 670分配给HCA的端口650。在后来的一时刻,通过与子网646相关联的子网管理器进行SMP扫描(sweep)以探查交换机612、端口680并定位HCA 608的端口654,与子网646相关联的该子网管理器可以检测到HCA 608。

或者,通过来自交换机612的、指明状态改变的一陷阱(trap),与子网646相关联的该子网管理器可能检测到HCA 608。这将导致与子网646相关联的该子网管理器使用InfiniBand SMP探查交换机612、端口680并定位HCA 608的端口654。对于与子网646相关联的该子网管理器,HCA608表现为一物理HCA。与子网646相关联的该子网管理器使用InfiniBandSMP将LID 674分配给HCA 608的端口654。

如上所述,本发明提供了用于对一物理元件进行端节点分区的方法和系统。该物理元件的配置的选择可以是静态的或动态的。使用静态选择机制,子网管理器可以探查该物理元件,例如一交换机或HCA,以确定该物理元件是否被检测到。如果该物理元件被检测到,则分配一LID给该物理元件的SM P端口。如果检测到该物理元件的其它端口,则为这些其它端口分配一LID。

使用动态选择机制,当HCA及与这些HCA相关联的主机节点变为可供使用时,它们将被报告。此外,当这些HCA及与这些HCA相关联的主机节点被从运行中删除时,该动态选择机制将报告这些HCA及与这些HCA相关联的主机节点的删除。当一HCA变为可供使用时,子网管理器将一LID分配给与该HCA相关联的一端口。

图7是一示例性流程图,其描绘了根据本发明的优选实施例的、用于物理元件的配置的一静态选择系统的操作。在本例中,该操作开始于由子网管理器使用InfiniBand子网管理包来探查一端口(步骤702)。响应于由该子网管理器使用InfiniBand子网管理包来探查该端口,判断是否检测到一交换机(步骤704)。如果未检测到交换机(步骤704:否),则该操作终止。如果检测到交换机(步骤704:是),则一LID被分配给该交换机的SMP端口(步骤706)。

然后判断是否该予网管理器已检测到该交换机的其它端口(步骤708)。如果该子网管理器已检测到该交换机的(一些)其它端口(步骤708:是),则LID被分配给(这些)其它端口(步骤710),并且操作返回到步骤708,在此判断是否该子网管理器已检测到该交换机的其它端口。如果该子网管理器没有检测到该交换机的其它端口(步骤708:否),则判断是否将对结构进行重新初始化(步骤712)。如果不对结构进行重新初始化(步骤712:否),则执行一节点的重新启动(步骤716)。然后,虚拟交换机、HCA和主机处理器节点的精确数量被报告给一子网管理器(步骤720),然后该操作终止。如果将对该结构进行重新初始化(步骤712:是),则执行该结构的重新初始化(步骤714)。然后判断是否将执行一节点的重新启动(步骤718)。如果将执行一节点的重新启动(步骤718:是),则执行该结点的重新启动(步骤716),并报告虚拟交换机、HCA和主机处理器节点的精确数量(步骤720),然后该操作终止。如果不执行一节点的重新启动(步骤718:否),则报告虚拟交换机、HCA和主机处理器节点的精确数量(步骤720),然后该操作终止。

图8是一示例性流程图,其描述了根据本发明的优选实施例,当主机通道适配器及与其相关联的节点变为可供使用或从运行中删除时将它们报告。在本例中,该操作开始于判断是否一HCA及与该HCA相关联的主机节点可供使用(步骤802)。如果该HCA及与该HCA相关联的主机节点是不可使用的(步骤802:否),则该操作终止。如果该HCA及与该HCA相关联的主机节点是可供使用的(步骤802:是),则该HCA及与该HCA相关联的主机节点在它们变为可供使用时将它们报告给一子网管理器(步骤804)。然后判断该HCA及与该HCA相关联的主机节点是否已从运行中删除(步骤806)。如果该HCA及与该HCA相关联的主机节点没有从运行中删除(步骤806:否),则该操作终止。如果该HCA及与该HCA相关联的主机节点已从运行中删除(步骤806:是),则报告该HCA及与该HCA相关联的主机节点已从运行中删除(步骤808),然后该操作终止。

图9是一示例性流程图,其描绘了根据本发明的优选实施例的、用于物理元件的配置的一动态选择系统的操作。在本例中,该操作开始于判断是否一HCA在接通电源之时的条件下变为可供使用的(步骤902)。如果HCA在接通电源之时的条件下没有变为可供使用的(步骤902:否),则判断是否HCA在接通电源之后的条件下变为可供使用的(步骤904)。如果HCA在接通电源之后的条件下没有变为可供使用的(步骤904:否),则该操作终止。如果HCA在接通电源之后的条件下变为可供使用的(步骤904:是),则该操作前进到步骤906,在此由一子网管理器使用InfiniBand子网管理包探查一端口。

回到步骤902,如果一HCA在接通电源之时的条件下变为可供使用的(步骤902:是),则由一子网管理器使用InfiniBand子网管理包探查一端口(步骤906)。判断是否检测到一交换机(步骤908)。如果没有检测到交换机(步骤908:否),则该操作终止。如果检测到交换机(步骤908:是),则一LID被分配给该交换机的SMP端口(步骤910)。然后判断是否子网管理器已使用SMP扫描检测到该交换机的其它端口(步骤912)。如果子网管理器已使用SMP扫描检测到该交换机的其它端口(步骤912:是),则一LID被分配给该其它端口,并且该操作前进到步骤914,在此判断是否该子网管理器已使用来自该交换机的、指明状态改变的一陷阱而检测到该交换机的其它端口。

如果该子网管理器未能使用SMP扫描检测到该交换机的其它端口(步骤912:否),则然后判断是否该子网管理器已使用来自该交换机的、指明状态改变的一陷阱而检测到该交换机的其它端口(步骤914)。如果该子网管理器已使用来自该交换机的、指明状态改变的一陷阱而检测到该交换机的其它端口(步骤914:是),则一LID被分配给该其它端口(步骤916),并且该操作返回到步骤912,在此判断是否该子网管理器已使用SMP扫描检测到该交换机的其它端口。

如果该子网管理器未能使用来自该交换机的、指明状态改变的一陷阱而检测到该交换机的其它端口(步骤914:否),则判断是否将进行结构的重新初始化(步骤918)。如果将进行结构的重新初始化(步骤918:是),则进行结构的初始化,并且该操作前进到步骤920,在此进行一节点的重新启动。如果不进行结构的初始化(步骤918:否),则进行一节点的重新启动(步骤920)。当HCA及主机处理器节点变为可供使用时,将它们报告(步骤922),然后该操作终止。

因此,本发明提供了一种机制,其允许单个物理组件表现为多个组件,所述多个组件中的每一单个组件都有自己独特的访问控制级别。这些组件可以是主机通道适配器(HCA)、目标通道适配器(TCA)或交换机。用来创建主机通道适配器和交换机的资源可以通过从一公共池中静态或动态地选择软件、固件和状态机来获得。这些资源的分配可以通过各种机制来进行。例如,可以使用一简单的1/N机制将资源分配给所有虚拟HCA。或者,可以使用一加权平均机制创建具有具有不同能力的虚拟HCA。这些资源可以包括但不限于所有HCA和QP可选择的修改量(modifier)。例如,这些HCA和QP可选择的修改量可以是QP的数量、CQ的数量、TPT的大小、P-Key表的大小、未完成的读RDMA的数量、及其类似物。

重要的是认识到,尽管已在一具有完整功能的数据处理系统的环境下描述了本发明,本领域的普通技术人员可以理解,本发明中的过程能够以包含指令的计算机可读介质的形式以及多种形式分布,而且不管实际用于进行这种分布的信号承载介质的特殊类型,本发明都同样适用。计算机可读介质的例子包括可记录类型的介质,如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM,也包括传输类型的介质,如数字和模拟通信链路,使用诸如射频和光波传输等传输形式的有线或无线通信链路。计算机可读介质可以采取编码格式的形式,这种编码格式被解码以实际用于一特定的数据处理系统。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号