首页> 中国专利> 用于根据使用类来控制对设施的访问的装置、系统和方法

用于根据使用类来控制对设施的访问的装置、系统和方法

摘要

本发明提供了用于根据请求者的使用类来控制对设施的访问的装置、系统和方法。使用本发明的装置、系统和方法,提供一种两级保护机制来保护主信道适配器(HCA)设施避免未经授权的访问。利用本发明,第一级访问是通过虚拟地址翻译和这样一种机制提供,所述机制用于确定访问的请求者是否可以访问与虚拟地址映射的实际地址相关联的系统存储器地址空间页面。第二级访问是通过分配使用类和确定用于访问HCA设施的所需的使用类来提供。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2010-06-23

    未缴年费专利权终止 IPC(主分类):H04L12/28 授权公告日:20070411 申请日:20040408

    专利权的终止

  • 2007-04-11

    授权

    授权

  • 2004-12-29

    实质审查的生效

    实质审查的生效

  • 2004-10-13

    公开

    公开

说明书

技术领域

本发明涉及一种用于根据使用类(usage class)来控制对设施的访问的装置、系统和方法。更具体而言,本发明提供了一种用于根据与访问请求者相关联的使用类来控制对与逻辑部分相关联的主机信道适配器设施的访问的机制。

背景技术

在诸如InfiniBand(IB)网络的系统区域网络(SAN)中,硬件提供了消息传送机制,它可以用于输入/输出器件(I/O)和在一般计算节点之间的进程间通信(IPC)。在器件上执行的进程通过向在SAN信道适配器(CA)上的发送/接收工作队列登记(posting)发送/接收消息来访问SAN消息传送硬件。这些进程也被称为“消耗者”。

所述发送/接收工作队列(WQ)被分配到一个消耗者来作为队列对(QP)。可以通过5种不同的传送类型来发送所述消息。可靠连接(RC)、可靠数据报(RD)、不可靠连接(UC)、不可靠数据报(UD)和原始数据报(RawD)。消耗者通过SAN发送和接收工作完成(WC)队列来从完成队列(CQ)检索这些消息的结果。所述源信道适配器涉及维护将输出消息分段并且将它们向目的地发送。目的地信道适配器涉及将输入消息重新装配,并且将它们布置在由目的地的消耗者指定的存储器空间中。

在SAN结构、主信道适配器(HCA)和目标信道适配器(TCA)的节点中存在两种信道适配器类型。主信道适配器被通用计算节点使用来访问SAN结构。消耗者使用SAN动词(verbs)来访问主信道适配器功能。翻译动词和直接访问信道适配器的软件被称为信道接口(CI)。

目标信道适配器(TCA)被作为从主信道适配器发送的消息的主题的节点使用。目标信道适配器与主信道适配器在向目标节点提供对SAN结构的访问点中具有类似的功能。

因此,利用上述的SAN结构,一个以太网器件驱动器可以通过向主信道适配器(HCA)登记发送/接收消息来与以太网适配器通信,并且通过HCA的发送和接收工作队列检索这些消息的结果。以太网适配器包括目标信道适配器,它是附加在SAN上的部件。因此,为了附加在诸如因特网协议(IP)和以太网网络的局域网(LAN),需要一个以太网适配器以及将以太网适配器附加到基于IP的LAN上的开关或路由器。

一般来说,将一个系统逻辑分区以便支持多个操作系统环境是有益的。这样的逻辑分区使得每个操作系统和工作在那个操作系统环境中的应用程序可以检验对那个操作系统专用的系统的资源,即使实际上所述资源被多个操作系统环境共享。这样的逻辑分区使得一个系统可以支持多个不同的环境,因此在通过共享资源来降低维护不同环境的成本的同时提高了系统的通用性。

虽然逻辑分区在本领域内是公知的,但是逻辑分区还没有被应用到系统区域网络,诸如InifiniBand网络结构。而且,在本发明之前不知道如何实现对在已经被逻辑分区的系统区域网络中的资源的访问控制以便操作系统和应用程序不能访问被分配到其他逻辑分区的资源。因此,有益的是,具有一种装置、系统和方法来实现在诸如InifiniBand网络的系统区域网络中的逻辑分区,在所述网络内对于与逻辑分区相关联的资源的访问被控制。

发明内容

本发明提供了用于根据请求者的使用类来控制对设施的访问的装置、系统和方法。使用本发明的装置、系统和方法,一种两级保护机制被提供类用于保护主信道适配器(HCA)设施避免未经授权的访问。利用本发明,通过虚拟地址翻译和这样一种机制提供第一级访问,所述机制用于确定访问的请求者是否可以访问与虚拟地址映射的实际地址相关联的系统存储器地址空间页面。第二级访问的提供是通过分配使用类和确定用于访问HCA设施的所需使用类。

附图说明

在所附的权利要求中给出了相信有本发明的特点的新颖特征。但是,通过结合附图下面详细说明图解的实施例,本发明本身以及使用的优选方式及其另外的目的和优点将会得到最佳地理解。

图1是图解按照本发明的一个优选实施例的分布式计算机系统的图;

图2是按照本发明的一个优选实施例的主处理器节点的功能方框图;

图3A是按照本发明的一个优选实施例的主信道适配器的图;

图3B是按照本发明的一个优选实施例的开关的图;

图3C是按照本发明的一个优选实施例的路由器的图;

图4是图解按照本发明的一个优选实施例的工作请求的处理的图;

图5是图解按照使用可靠连接服务的本发明的一个优选实施例的分布式计算机系统的一部分的图;

图6是图解按照使用可靠的数据报服务连接的本发明的一个优选实施例的分布式计算机系统的一部分的图;

图7是按照本发明的一个优选实施例的数据分组的图示;

图8是按照本发明的一个优选实施例的分布式计算机系统的一部分的图;

图9是图解在按照本发明的分布式联网系统中使用的网络寻址的图;

图10是图解按照图解SAN结构子网的结构的本发明的一个优选实施例的、分布式计算系统的一部分的图;

图11是在本发明的一个优选实施例中使用的分层通信结构的图;

图12是图解按照本发明的逻辑分区的主信道适配器的示意图;

图13是按照本发明的存储器空间的示意图;

图14图解了按照本发明的、分配到示范队列对的系统存储器地址空间页面的扩展图;

图15图解了当确定是否应当向对HCA设施的访问请求者提供对HCA设施的访问时、本发明的一个示范实施例的整体操作;

图16是按照本发明的一个优选实施例的、用于确定是否应当准予对HCA设施的访问的示范处理的流程图。

具体实施方式

本发明提供了一种用于根据使用类来控制对系统资源的访问的装置、系统和方法。本发明的优选实施例将通过InifiniBand架构来描述,InifiniBand架构是可以使用本发明的一种可能的系统区域网络。因此将参照图1-11来提供对InfiniBand网络的说明。

现在参见所述附图,具体参见图1,它图解了按照本发明的一个优选实施例的分布式计算机系统的图。图1中所表示的分布式计算机系统采用系统区域网络(SAN)100的形式,并且被提供来仅仅用于说明目的,下述的本发明的实施例可以在多种其他类型和配置的计算机系统上被实现。例如,实现本发明的计算机系统的范围可以从具有一个处理器和一些输入/输出(I/O)适配器的小服务器到具有成千上万的处理器和成千上万的I/O适配器的整体并列超计算机系统。而且,本发明可以被实现在由因特网或内联网连接的远程计算机系统的基础结构中。

SAN 100是高带宽、低等待事件的网络,它互连在分布式计算机系统内的节点。一个节点是附加在网络的一个或多个链路并且形成在网络内的消息的起始地和/或目的地的任何部件。在所述的示例中,SAN 100包括下述形式的节点:主处理器节点102、主处理器节点104、冗余阵列独立盘(RAID)子系统节点106和I/O底板节点108。在图1中所图解的节点仅仅用于说明目的,因为SAN 100可以连接任何数量和任何类型的独立处理器节点、I/O适配器节点和I/O器件节点。节点的任何一个可以作为终端节点,它在此被定义为始发或最终消耗在SAN 100中的消息或帧的器件。

在本发明的一个实施例中,提供了在分布式计算机系统内的一种差错处理机制,其中所述差错处理机制使得可以获得在诸如SAN 100的分布式计算机系统内的终端节点之间的可靠连接或可靠的数据报通信。

在此使用的消息是数据交换的应用限定单位,它是在合作的处理之间通信的原始单位。分组是通过联网协议首标和/或尾标封装的数据的一个单位。首标一般提供用于通过SAN引导帧的控制和路由信息。尾标一般包括控制和循环冗余检验(CRC)数据,用于保证不向分组提供损坏的内容。

SAN 100包括通信和管理基础结构,用于支持在分布式计算机系统内的I/O和处理器之间的通信(IPC)。图1所示的SAN 100包括开关通信结构116,它允许多个器件在安全的、远程管理的环境中以高带宽和低等待事件来同时传送数据。终端节点可以通过多个端口通信和通过SAN结构来利用多个路径。图1所示的通过SAN的多个端口和路径可以用于默认的容差和带宽提高的数据传送。

图1中的SAN 100包括开关112、开关114、开关146和路由器117。开关是这样的器件,它将多个链路连接在一起,并且使得可以使用小首标目的地局部标识符(DLID)字段从在子网内的一个链路向另一个链路传递分组。一个路由器是这样的器件,它将多个子网连接在一起,并且能够使用大首标目的地全局唯一标识符(DGUID)来从第一子网内的一个链路到在第二子网内的另一个链路传递帧。

在一个实施例中,链路为在诸如终端节点、开关或路由器的任何两个网络结构元件之间的全双工信道。作为示例的适当链路包括但不限于铜缆、光缆和在底板和印刷电路板上的印刷电路铜迹线。

对于可靠的服务类型,诸如主处理器终端节点和I/O适配器终端节点的终端节点产生请求分组并返回确认分组。开关和路由器从源向目的地传送分组。除了在网络的每个级更新的变化的CRC尾标字段之外,开关将分组无改变地传送。路由器当传递分组时更新变化的CRC尾标字段并修改首标中的其他字段。

在图1所示的SAN 100中,主处理器节点102、主处理器节点104和I/O底板108包括至少一个连接到SAN 100的信道适配器(CA)。在一个实施例中,每个信道适配器是一个端点,它足够详细地实现信道适配器接口以始发或吸收在SAN结构100上发送的分组。主处理器节点102包括主信道适配器118和主信道适配器120形式的信道适配器。主处理器节点104包括主信道适配器122和主信道适配器124。主处理器节点102也包括由总线系统134互连的中央处理单元126-130和存储器132。主处理器节点104类似地包括由总线系统144互连的中央处理单元136-140和存储器142。

主信道适配器118和120提供到开关112的连接,同时主信道适配器122和124提供到开关112和114的连接。

在一个实施例中,以硬件来实现主信道适配器。在这种实现方式中,主信道适配器硬件卸载中央处理单元和I/O适配器通信开销的大部分。主信道适配器的这种硬件实现方式也允许通过开关网络的多个同时通信而没有与通信协议相关联的传统开销。

在一个实施例中,图1中的主信道适配器和SAN 100向I/O和处理器之间通信(IPC)的分布式计算机系统的消耗者提供零处理器复制(processor-copy)数据传送而不涉及操作系统核心处理,并且使用硬件来提供可靠的容错通信。如图1所示,路由器116连接到与其他主机或其他路由器连接的广域网(WAN)和/或局域网(LAN)连接。

图1中的I/O底板108包括I/O开关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可以是全功能的主信道适配器。

SAN 100处理用于I/O和处理器之间的数据通信。SAN 100支持I/O所需要的高带宽和可扩展性,并且也支持处理器之间通信所需要的极其低的等待时间和极其低的CPU开销。用户客户可以绕过操作系统核心处理并且直接访问网络通信硬件,诸如主信道适配器,它们能实现有效的消息传送协议。SAN100被适配于当前的计算模型,并且是用于新形式的I/O和计算机簇通信的建立块。而且,图1中的SAN 100使得I/O适配器节点可以在其之间通信或与在分布式计算机系统内的任何或所有处理器节点通信。在附加到SAN 100的I/O适配器的情况下,I/O适配器节点具有与在SAN 100中的任何主处理器节点实质相同的通信能力。

在一个实施例中,图1所示的SAN 100支持信道语义和存储器语义。信道语义有时指的是发送/接收或推送通信操作。信道语义是在传统的I/O信道中使用的通信类型,其中源器件推送数据,并且目的地器件确定数据的最终目的地。在信道语义中,从源进程发送的分组指定目的地集成的通信端口,但是不指定分组将被写到目的地进程的存储器空间中的何处。因此,在信道语义中,目的地进程预先分配在何处布置所发送的数据。

在存储器语义中,源进程直接读取或写入远程节点目的地进程的虚拟地址空间。所述远程目的地进程仅仅需要通信数据的缓冲器的位置,并且不必涉及到任何数据的传送中。因此,在存储器语义中,源进程发送包括目的地进程的目的地缓冲存储器地址的数据分组。在存储器语义中,目的地进程提前许可源进程访问其存储器。

信道语义和存储器语义通常是I/O和处理器之间通信所需要的。典型的I/O操作使用信道和存储器语义的组合。在图1所示的说明性示例分布式计算机系统的I/O操作中,诸如主处理器节点102的主处理器节点通过使用信道语义来启动I/O操作以向诸如RAID子系统目标信道适配器(TCA)172的盘I/O适配器发送盘写入命令。盘I/O适配器检验命令和使用存储器语义来直接从主处理器节点的存储空间中读取数据缓冲器。在读取数据缓冲器之后,盘I/O适配器使用信道语义来向主处理器节点回推I/O完成消息。

在一个示范实施例中,图1所示的分布式计算机系统执行使用操作:使用虚拟地址和虚拟存储器保护机制来保证正确的和适当的对所有存储器的访问。在这样的分布式计算系统中运行的应用不需要使用用于任何操作的物理寻址。

接着转向图2,其中描述了按照本发明的一个优选实施例的主处理器节点的功能方框图。主处理器节点200是诸如图1中的主处理器节点102的主处理器节点的示例。

在这个示例中,图2所示的主处理器节点200包括一组消耗者202-208,它们是在主处理器节点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提供接口以处理消息和其他数据。

现在参见图3A,其中描述按照本发明的一个优选实施例的主信道适配器的图,图3A所示的主信道适配器300A包括一组队列对(QP)302A-310A,它们用于向主信道适配器端口312A-316A传送消息。到主信道适配器端口312A-316A的数据的缓冲通过虚拟通道(VL)318A-334A引导,其中每个VL具有其本身的流控制。子网管理器将信道适配器配置每个物理端口即端口的LID的局部地址。

子网管理器代理(SMA)336A是与子网管理器通信以用于配置信道适配器的实体。存储器翻译和保护(MTP)338A是将虚拟地址翻译为物理地址并且使得访问权生效的机制。直接存储器访问(DMA)340A使用相对于队列对302A-310A的存储器340A来提供直接存储器访问操作。

诸如图3A所示的主信道适配器300A的单个信道适配器可以支持成千上万的队列对。相反,在I/O适配器中的目标信道适配器通常支持少得多的队列对。每个队列对包括发送工作队列(SWQ)和接收工作队列。发送工作队列用于发送信道和存储器语义消息。接收工作队列接收信道和存储器语义消息。消耗者调用在此被称为动词的操作系统指定的编程接口,以将工作请求(WR)放到一个工作队列上。

图3B描述了按照本发明的一个优选实施例的开关300B。开关300B包括分组中继器302B,它通过诸如虚拟通道306B这样的虚拟通道与多个端口304B通信。一般,诸如开关300B这样的开关可以从在同一开关上的一个端口向另一个端口传递分组。

类似地,图3C描述了按照本发明的一个优选实施例的路由器300C。路由器300C包括分组中继器302C,它通过诸如虚拟通道306C的虚拟通道与多个端口304C通信。像开关300B那样,路由器300C一般能够从在同一路由器上的一个端口向任何其他端口传递分组。

信道适配器、开关和路由器使用在单个物理链路内的多个虚拟通道。如图3A、3B和3C中所示,物理端口将终端节点、开关和路由器连接到子网。插入到SAN结构中的分组从分组的源,沿着一个或多个虚拟通道到分组的目的地。所选择的虚拟通道是从与分组相关联的服务级映射的。在任何时候,仅仅一个虚拟通道在给定的物理链路上有作为。虚拟通道提供了一种技术,用于向一个虚拟通道施加链路级流控制而不影像其他的虚拟通道。当在一个虚拟通道上的分组由于争用、服务质量(QoS)或其他因素而阻塞时,在不同的虚拟通道上的分组被允许有作为。

因为多个原因而使用虚拟通道,其中一些原因如下:虚拟通道提供QoS。在一个示例实施例中,某些虚拟通道被保留来用于高优先级或同步的通信以提供QoS。

虚拟通道提供死锁避免。虚拟通道允许包括回路的布局,以便通过所有的物理链路发送分组,并且保证所述回路不引起可能引起死锁的反向压力依赖性(back pressure dependency)。

虚拟通道减轻了线路头部阻塞(head-of-line blocking)。当一个开关不再有可用于利用给定的虚拟通道的分组的信用时,利用不同的具有足够信用的虚拟通道的分组被允许继续有作为。

现在参见图4,其中描述了按照本发明的一个优选实施例的图解工作请求的处理的图。在图4中,存在接收工作队列400、发送工作队列402和完成队列404来用于处理来自和去往消耗者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用于建立用于多个队列对的完成通知的单个点。完成队列元素是在完成队列上的数据结构。这个元素描述了完成的工作队列元素。所述完成队列元素包括足够的信息来确定队列对和完成的具体工作队列元素。完成队列范围是包括指向独立完成队列的指针、独立完成队列的长度和管理独立完成队列所需要的其他信息的信息的块。

被支持用于图4所示的发送工作队列402的示例工作请求如下。发送工作请求是信道语义操作,用于将一组本地数据段推送到由远程节点的接收工作队列元素引用的数据段。例如,工作队列元素428包括对数据段4438、数据段5440和数据段6442的引用。每个发送工作请求的数据段包括一个虚拟连续的存储器区域。用于引用本地数据段的虚拟地址在建立本地队列对的进程的地址范围内。

一个远程直接存储器访问(RDMA)读取工作请求提供存储器语义操作以读取在远程节点上的虚拟连续存储器空间。存储器空间可以或者是存储器预取的一部分或者是存储器窗口的一部分。存储器区域引用通过虚拟地址和长度定义的、先前登记的一组虚拟连续存储器地址。存储器窗口引用已经被捆绑到先前登记的区域中的、一组虚拟连续的存储器地址。

RDMA读取工作请求读取在远程终端节点上的虚拟连续存储器空间,并且向虚拟连续的本地存储器空间写入数据。与发送工作请求类似,由RDMA读取工作队列元素使用来引用本地数据段的虚拟地址在建立本地队列对的进程的地址范围内。例如,在接收工作队列400中的工作队列元素416引用数据段1444、数据段2446和数据段448。远程虚拟地址在拥有由RDMA读取工作队列元素作为目标的远程队列对的进程的地址范围内。

RDMA写入工作队列元素提供存储器语义操作来在远程节点上写入一个虚拟连续存储器空间。RDMA写入工作队列元素包括本地虚拟连续存储器空间和其中写入本地存储器空间的远程存储器空间的虚拟地址的散布列表。

RDMA FetchOp工作队列元素提供存储器语义操作以对远程词汇执行原子操作(atomic opertion)。RDMA FetchOp工作队列元素是组合的RDMA读取、修改和RDMA写入操作。RDMA FetchOp工作队列元素可以支持几个读取-修改-写入操作,诸如如果等同时的比较和交换。

捆绑(bind)(不捆绑)远程访问密钥(R_Key)工作队列元素向主信道适配器硬件提供命令以通过将存储器窗口与存储器区域相关联(或解除关联)来修改(破坏)存储器窗口。R_Key是每个RDMA访问的一部分,并且用于验证远程进程已经许可了对缓冲器的访问。

在一个实施例中,图4所示的接收工作队列400仅仅支持一种工作队列元素,它被称为接收工作队列元素。接收工作队列元素提供了一种信道语义操作,用于描述其中写入输入的发送消息的本地存储器空间。接收工作队列元素包括描述几个虚拟连续的存储器空间的散布列表。输入的发送消息被写入到这些存储器空间中。虚拟地址在建立本地队列对的进程的地址范围中。

对于处理器之间的通信,用户模式软件进程通过队列对直接从缓冲器在存储器中驻留的位置来传送数据。在一个实施例中,通过队列对的传送绕过操作系统并且消耗较少的主指令周期。队列对允许零处理器复制数据传送,其中不涉及任何操作系统核心。零处理器复制数据传送提供高带宽和低等待时间通信的有效支持。

当建立一个队列对时,所述队列对被设置来提供选择类型的传送服务。在一个实施例中,实现本发明的分布式计算机系统支持四种传送服务:可靠的、不可靠的、可靠的数据报和不可靠的数据报连接服务。

可靠的和不可靠的连接服务将一个本地队列对与一个并且仅仅一个远程队列对相关联。连接服务需要一个进程来建立用于要通过SAN结构通信的每个进程的一个队列对。因此,如果N个主处理器节点的每个包括P个进程,并且在每个节点上的所有P个进程希望与在所有其他节点上的所有进程通信,则每个主处理器节点需要P2x(N-1)个队列对。而且,一个进程可以将一个队列对连接到在同一主信道适配器上的另一个队列对。

在图5中一般地图解了使用可靠的连接服务来在分布的进程之间通信的分布式计算机系统的一部分。图5中的分布计算机系统500包括主处理器节点1、主处理器节点2和主处理器节点3。主处理器节点1包括进程A510。主处理器节点2包括进程C520和进程D530。主处理器节点3包括进程E540。

主处理器节点1包括队列对4、6和7,每个具有发送工作队列和接收工作队列。主处理器节点2具有队列对9,主处理器节点3具有队列对2和5。分布式计算机系统500的可靠连接服务将本地队列对与一个并且仅仅一个远程队列对相关联。因此,队列对4用于与队列对2通信;队列对7用于与队列对5通信;队列对6用于与队列对9通信。

被布置在可靠连接服务中的一个队列对上的WQE使得数据被写入由连接队列对的接收WQE引用的接收存储器空间中。RDMA操作对连接的队列对的地址空间作用。

在本发明的一个实施例中,使得可靠连接服务可靠,因为硬件保持序号,并且确认所有的分组传送。硬件和SAN驱动器软件的组合重新尝试任何失败的通信。队列对的进程客户即使在存在比特误差、接收欠载运行(underrun)和网络拥塞的情况下也获得可靠的通信。如果在SAN网络中存在替代的路径,则可以即使在存在结构开关、链路或信道适配器端口故障的情况下也能够保持可靠的通信。

另外,可以使用确认来通过SAN结构可靠地提供数据。所述确认是也可以不是进程级确认,即验证数据进程已经消耗了数据的确认。或者,确认可以是仅仅指示数据已经达到了其目的地的确认。

可靠的数据报服务将本地端到端(EE)范围与一个并且仅仅一个远程端到端范围相关联。可靠的数据报服务允许一个队列对的客户端进程与在任何其他远程节点上的任何其他队列对通信。在接收工作队列,可靠的数据报服务允许来自在任何其他远程节点上的任何发送工作队列的输入消息。

可靠的数据报服务大大地改善了可扩展性,因为可靠的数据报服务是无连接的。因此,具有固定数量的队列对的终端节点可以与比具有可靠连接传送服务的进程和终端节点更多的、具有可靠数据报服务的进程和终端节点通信。例如,如果N个主处理器节点的每个包括P个进程,并且在每个节点上的所有P个进程希望与在所有其他节点上的所有进程通信,则可靠的连接服务在每个节点上需要P2x(N-1)个队列对。通过比较,无连接可靠数据报服务仅仅在每个节点上需要P个队列对+(N-1)EE范围来用于完全相同的通信。

图6中图解了使用可靠的数据报服务来在分布的进程之间通信分布式计算机系统。图6的分布式计算机系统600包括主处理器节点1、主处理器节点2和主处理器节点3。主处理器节点1包括具有队列对4的进程A610。主处理器节点2包括具有队列对24的进程C620和具有队列对25的进程D630。主处理器节点3包括具有队列对14的进程E640。

在分布式计算机系统600上实现的可靠数据报服务中,队列对连接在所谓的无连接传送服务内。例如,可靠的数据报服务将队列对4连接到队列对24、25和14。具体上,可靠的数据报服务允许队列对4的发送工作队列可靠地向在队列对24、25和14中的接收工作队列传送消息。类似地,队列对24、25和14的发送队列可以可靠地向在队列对4中的接收工作队列传送消息。

在本发明的一个实施例中,可靠的数据报服务使用与每个消息帧相关联的序号和确认,以保证与可靠连接服务相同程度的可靠性。端到端(EE)范围保持端到端的具体状态以记录序号、确认和超时值。在EE范围内保存的端到端状态被在一对终端节点之间的所有无连接队列对通信共享。每个终端节点需要至少一个EE范围来用于它希望在可靠数据报服务中与其通信的每个终端节点(例如,一个给定的终端节点需要能够与N个其他终端节点具有可靠的数据报服务的至少N个EE范围)。

不可靠的数据报服务是无连接的。由管理应用使用不可靠数据报服务来发现新的开关、路由器和终端节点和将它们集成到给定的分布式计算机系统中。不可靠的数据报服务不提供可靠连接服务和可靠数据报服务的可靠性保证。不可靠数据报服务因此使用在每个终端节点中保存的较少状态信息来工作。

接着转向图7,其中描述了按照本发明的一个优选实施例的数据分组的图示。一个数据分组的通过SAN结构传递的信息的单位。数据分组是终端节点到终端节点的构造,因此被终端节点建立和消耗。对于要到达信道适配器(主或目标)的分组,数据分组不在SAN结构中的开关和路由器产生或消耗。与对于要到达信道适配器的分组相反,开关和路由器仅仅将请求分组或确定分组移动到靠近最后的目的地,用于修改在进程中的可变链接首标字段。路由器当分组通过子网边界时也修改分组的网络首标。在穿过子网时,单个分组驻留在单个服务级上。

消息数据700包括数据段1702、数据段2704和数据段3706,它们类似于图4中图解的数据段。在这个示例中,这些数据段形成分组708,它被布置到数据分组712内的分组有效载荷710内。另外,数据分组712包括CRC714,它用于差错检验。另外,在数据分组712内存在路由选择首标716和传送718。路由选择首标716用于识别数据分组712的源和目的地端口。在这个示例中的传送首标718指定数据分组712的目的地队列对。另外,传送首标718也提供信息,诸如数据分组的712的操作代码、分组序号和分区。

操作代码识别分组是否是消息的第一个、最后一个、中间或唯一分组。所述操作代码也指定操作是否是发送RDMA写入、读取或原子的。当通信被建立并且每次队列对建立新的分组时递增的时候,初始化分组序号。终端节点的端口可以被配置为称为分区的一个或多个可能重叠的组的成员。

在图8中,描述了分布式计算机系统的一部分以图解一个示例请求和确定事务。图8中的分布式计算机系统包括主处理器节点802和主处理器节点804。主处理器节点802包括主信道适配器806。主处理器节点804包括主信道适配器808。图8中的分布式计算机系统包括SAN结构810、它包括开关812和开关814。SAN结构包括将主信道适配器806连接到开关812的链路、将开关812连接到开关814的链路、将主信道适配器808连接到开关814的链路。

在示例事务中,主处理器节点802包括客户端进程A。主处理器节点804包括客户端进程B。客户端进程A通过队列对824与主信道适配器硬件806交互。客户端进程B通过队列对828与硬件主信道适配器808交互。队列对824和828是包括发送工作队列和接收工作队列的数据结构。

进程A通过向队列对824的发送队列登记工作队列元素来启动消息请求。图4中图解了这样的工作队列元素。客户端进程A的消息请求被在发送工作队列元素中包括的汇总列表引用。在汇总列表中的每个数据段指向虚拟的连续本地存储器区域,它包括消息的一部分,诸如由数据段1、2、3所示的那些,它们分别保存在图4中的消息部分1、2、3。

在主信道适配器806中的硬件读取工作队列元素,并且将存储在虚拟连续缓冲器中的消息划分为数据分组,诸如图7所示的数据分组。数据分组通过SAN结构传递,并且对于可靠传送服务被最后的目的地终端节点确认。如果未成功地被确认,则数据分组被源终端节点重新发送。数据分组被源终端节点产生并且被目的地终端节点消耗。

参见图9,描述了说明按照本发明的、在分布式联网系统中使用的网络寻址的图。主名称提供对于诸如主处理器节点或I/O适配器节点的主节点的逻辑识别。主名称识别消息的终端节点,以便消息到达在由主名称指定的终端节点上驻留的进程。因此,每个机电存在一个主名称,但是一个节点可以具有多个CA。

单个IEEE分配的64比特标识符(EUI-64)902被分配到每个分量。一个分量可以是开关、路由器或CA。

每个CA端口906分配一个或多个全局唯一ID(GUID)标识符904。由于几个原因而使用多个GUID(也称为IP地址),其中一些被下列示例图解。在一个实施例中,不同的IP地址识别在一个终端节点上的不同的分区或服务。在不同的实施例中,使用不同的IP地址来指定不同的服务质量(QoS)属性。在另一个实施例中,不同的IP地址识别通过在子网内的路由的不同的路径。一个GUID 908被分配到开关910。

局部ID(LID)指的是用于识别在单个子网内的CA端口的短地址ID。在一个示例实施例中,一个子网具有多达216个终端节点、开关和路由器,因此LID是16位。源LID(SLID)和目的地LID(DLID)是在局域网首标中使用的源和目的地LID。单个CA端口906具有分配到它的多达2LMC个LID912。LMC表示在CA中的LID掩码控制字段。掩码是用于接受或拒绝在一个终端节点中的另一组数据、分区或服务中的比特模式的比特模式。在另一个实施例中,不同的LID用于指定不同的QoS属性。在另一个实施例中,不同的LID指定通过子网的不同路径。每个开关910具有与其相关联的一个LID918。

不必在LID和GUID之间存在一对一的对应,因为CA可以具有比每个端口的GUID更多或更少的LID。对于具有对多个SAN结构的冗余端口和冗余传导性的CA,CA在每个其端点上可以但不要求使用相同的LID和GUID。

图10中图解了按照本发明的一个优选实施例的分布式计算机系统的一部分。分布式计算机系统1000包括子网1002和子网1004。子网1002包括主处理器节点1006、1008和1010。子网1004包括主处理器节点1012和1014。子网1004包括主处理器节点1012和1014。子网1002包括开关1016和1018。子网1004包括开关1020和1022。

路由器连接子网。例如,子网1022使用路由器1024和1026来连接到子网1004。在一个示例实施例中,子网具有高达216个终端节点、开关和路由器。

子网被定义为被管理为单个单元的一组终端节点和级联开关。通常,子网占用单个地理或功能区域。例如,在一个房间内的单个计算机系统可以被定义为一个子网。在一个实施例中,在子网中的开关可以执行很快的、对于消息的虫孔式或切入式路由选择(wormho1e or cut-through routing)。

子网内的开关检验在子网内唯一的DLID,以允许所述客户迅速和有效地传递输入的消息分组。在一个实施例中,所述开关是较为简单的电路,并且通常被实现为单个集成电路。子网可以具有成千上万的由级联客户形成的终端节点。

如图10所示,为了扩展到更大的系统,使用诸如路由器1024和1026的路由器来连接子网。路由器翻译IP目的地ID(例如IPv6目的地ID),并且传递IP类分组。

开关的一个示例实施例被一般地图解在图3B中。在开关或路由器上的每个I/O路径具有一个端口。一般,一个开关可以从在同一开关上的一个端口向任何其他端口传递分组。

在诸如子网1002或子网1004的一个子网内,从源端口到目的地端口的一个路径被目的地主信道适配器端口的LID确定。在子网之间,通过目的地主信道适配器端口的IP地址(例如IPv6地址)和通过将用于达到目的地子网的另一端端口的LID地址来确定路径。

在一个实施例中,不要求由请求分组使用的路径和请求分组的对应肯定确认(ACK)或否定确认(NAK)帧对称。在使用忘却的路由的一个实施例中,开关根据DLID来选择输出端口。在一个实施例中,开关使用一组路由判定标准来用于其所有的输入端口。在一个示例实施例中,在一个路由表中包括路由判定标准。在一个替代实施例中,开关使用独立的一组标准来用于每个输入端口。在本发明的分布式计算机系统中的数据事务通常包括几个硬件和软件步骤。客户端进程数据传送服务可以是用户模式或核心模式进程。客户端进程通过诸如在图3A、5和6中图解的队列对的一个或多个队列对来访问主信道适配器硬件。客户端进程调用操作系统专用编程接口,它在此被称为“动词”。实现动词的软件代码向给定的队列对工作队列登记工作队列元素。

存在登记工作队列元素的许多可能的方法,并且存在许多可能的工作队列元素格式,它们允许各种成本/性能设计点,但是它们不影响互用性。但是,一个用户进程必须以良好定义的方式向动词通信,并且通过SAN结构传送的数据的格式和协议必须被充分地指定以便使得器件可以共同工作在异类的厂商环境中。

在一个实施例中,信道适配器硬件检测工作队列元素登记和访问所述工作队列元素。在这个实施例中,信道适配器硬件翻译和验证工作队列元素的虚拟地址和访问数据。

输出的消息被划分为一个或多个数据分组。在一个实施例中,信道适配器硬件向每个分组增加一个传送首标和一个网络首标。传送首标包括路由信息,诸如目的地IP地址和其他网络路由信息。链路首标包括目的地本地标识符(DLID)或其他本地路由选择信息。适当的链路首标总是被添加到分组。如果目的地终端节点驻留在远程子网上,则适当的全局网络首标被加到给定的分组。

如果使用可靠的传送服务,则当其数据分组到达其目的地终端节点时,由目的地终端结果使用确认数据分组来让请求数据分组发送者知道请求数据分组在目的地被验证和接受。确认数据分组确认一个或多个有效的和被接受的请求数据分组。请求者可以在它接收到任何确认之前具有多个未决的请求数据分组。在一个实施例中,当建立一个队列对时确定多个未决的消息、即请求数据分组的数量。

用于实现本发明的分层结构1100的一个实施例在图11中以图的形式被一般地图解。图11中的分层结构图示出了数据通信路径的各种层以及在层之间穿过的数据和控制信息的组织。

主信道适配器终端节点协议层(例如由终端节点1111使用)包括由消耗者1103定义的上层协议1102、传送层1104、网络层1106、链路层1108和物理层1110。开关层(例如由开关1113使用)包括链路层1108和物理层1110。路由器层(例如由路由器1115使用)包括网络层1106、链路层1108和物理层1110。

分层结构1100一般遵循经典的通信堆栈轮廓。关于终端节点1111的协议层,例如,上层协议1102使用动词(1112)来在传送层1104建立消息。传送层1104向网络层1106传送消息(1114)。网络层1106在网络子网(1116)之间传递分组。链路层1108在网络子网内传递分组(1118)。物理层1110向其他器件的物理层发送比特或比特组。每个层不知道上层或下层如何执行它们的功能。

消耗者1103和1105表示使用用于在终端节点之间通信的其他层的应用或进程。传送层1104提供端到端消息移动。在一个实施例中,传送层提供如上所述的三种类型的传送服务,它们是可靠的连接服务;可靠数据报服务;不可靠的数据报服务。网络层1106执行通过一个子网或多个子网到目的地终端节点的分组路由选择。链接层1108执行流控制、差错检验和跨链路优先化分组传送。

物理层1110执行与技术相关的比特传输。比特或比特组经由链路1122、1124和1126在物理层之间传送。可以使用印刷电路板铜迹线、铜缆、光缆或使用其他适当的链路来实现链路。

如上所述,本发明涉及用于系统区域网络的改进装置、系统和方法,所述系统区域网络诸如InfiniBand网络,其中逻辑分区被系统区域网络的主信道适配器(HCA)支持。使用本发明提供的对于HCA的逻辑分区支持,多个操作系统可以共享单个物理HCA的资源。逻辑分区保证每个操作系统不知道正在与其他操作系统共享HCA硬件资源,并且还保证防止特定分区的独立操作系统和应用访问与其他分区相关联的HCA硬件资源。

图12是图解由主信道适配器支持的逻辑元件的物理主信道适配器的示意图。图12所示的主信道适配器对应于图3A所示的主信道适配器,但是具有本发明的改进以提供在主信道适配器内的逻辑分区支持。

如图12所示,主信道适配器(HCA)1200包括与图3A所示的主信道适配器类似的两个物理端口1210和1220。另外,在HCA 1200上提供了队列对1232-1242,用于向主系统资源发送数据分组和从主系统资源接收数据分组。另外的设施被提供,它们允许逻辑开关和逻辑HCA作为外部子网管理器的通常开关和HCA而出现。

主系统的资源以本领域内公知的方式被逻辑地分区为逻辑分区LPAR1-LPARn。为了每个LPAR具有主信道适配器的结构上准确的视图,管理器建立逻辑主信道适配器的图像,其中一个或多个逻辑端口附加在一个逻辑开关上,所述逻辑开关继而连接到物理主信道适配器的物理端口。如此作所采取的行为包括分配独立的主信道适配器资源,诸如队列对、完成队列、事件队列,对于每个逻辑主信道适配器/逻辑端口发送和接收数据计数器和存储器翻译表项目。这些分配通常不同时发生,因为来自应用的资源请求是随着时间动态的。但是,当每个资源被分配时,管理器向资源分配拥有的逻辑分区的逻辑分区标识符,以便在操作期间验证拥有权。

返回图12,在HCA中的某些队列对通过由管理器1260分配的逻辑分区标识符而与逻辑分区LPAR1-LPARn相关联。例如,当逻辑分区的操作系统请求使用不是另外要被分配到另一个逻辑分区的队列对时,那个队列对将被分配对应于操作系统的逻辑分区的逻辑分区标识符。以这种方式,仅仅管理器(它是可以访问任何HCA资源的可信软件)、操作系统和与操作系统的逻辑分区相关联的用户应用可以访问队列对。而且,操作系统和逻辑分区的应用检验所述操作系统和应用专用的系统,并且不知道其他的逻辑分区。

具有相同逻辑分区标识符的资源包括HCA的一个逻辑分区。在逻辑分区划分中使用的概念向每个操作系统提供了它们工作在它们自己的地址空间的视图。但是,要求HCA硬件访问被内部保存在硬件以及位于系统存储器中实际存储器地址的数据结构。使用与HCA资源相关联的逻辑分区标识符以及内置的HCA硬件检验向硬件提供了这样的手段:保证它代表工作请求刺激(经由队列对)做出的所有访问对于请求的逻辑分区确实有效。

每个逻辑分区具有其本身的地址空间,以防止未经授权的软件访问逻辑分区的硬件资源。仅仅作为可信代码和具有访问硬件资源的最高优先权的管理器、逻辑分区的操作系统和在逻辑分区内的应用可以访问被分配到逻辑分区的HCA的资源。

为了向HCA中的适当逻辑分区引导输入的数据分组和从逻辑分区向适当的物理端口引导输出的数据分组,每个逻辑分区包括这样的逻辑HCA1282-1286,它具有逻辑端口、与物理端口1292-1294相关联的逻辑开关和在子网管理代理1250内的逻辑开关控制点。子网管理器能够向逻辑HCA端口分配唯一的逻辑标识符(LID)和全局标识符(GID),管理器更新队列对设施以将每个队列对与LID和GID相关联。管理器1260保存一个或多个表以识别每个逻辑分区的资源的唯一LID和GID。

换句话说,每个逻辑端口具有相关联的LID/GID。逻辑端口属于已经被分配到一个逻辑分区的逻辑主信道适配器。队列对1232-1242与特定的逻辑端口相关联。以这种方式,每个逻辑分区工作就像它具有其本身的逻辑主信道适配器1282-1286。

每个逻辑主信道适配器1282-1286可以具有被分配到一个逻辑分区的多个队列对1232-1242,它们具有被配置来提供对多个物理端口1292-1294的访问的属性。因为每个队列对1232-1242可以对于多个物理端口1292-1294发送数据分组和接收分组,因此每个队列对1232-1242提供这样的设施,它们指示与其相关联的物理端口。

每个物理端口1292-1294也提供附加的设施,它们用于控制到特定目的地LID的分组是否被传递出物理端口1292-1294或传递到在HCA 1200内包括的队列对。即,HCA硬件使用端口设施来检验被发送到特定的队列对1232-1242的向内的分组,以便保证它们满足队列对属性。HCA硬件也使用端口设施来检验向外的分组以确定目的地是否是在物理HCA 1200内的另一个队列对1232-1242,在这种情况下,传递分组到内部队列对1232-1242。HCA硬件通过下列方式来执行这个检验:查看目的地逻辑标识符(DLID)以看DLID是否被分配到在由这个物理主信道适配器1200支持的逻辑主信道适配器1282-1286上定义的逻辑端口。这些传递到内部的分组也被检验以保证它们也满足目的地队列对的属性。队列对设施和端口设施被管理器软件保存,并且建立在队列对和物理端口之间存在开关的逻辑视图。

这些逻辑开关在图12中被图解为项目1296-1298。如上所述,对于输入数据分组,管理器1260的逻辑开关1296-1298执行查找在具有队列对属性的数据分组首标中给出的属性值,以便确定应当向哪个队列对写入数据分组。对于输出的数据分组。管理器1260的逻辑开关1296-1298执行查找,以便确定向哪个物理端口1210-1220发送数据分组或数据分组是否要被发送到在同一物理HCA 1200中的另一个队列对。这些传递到内部的分组也被检验以保证它们也满足目的地队列对的属性。

管理器1260提供虚拟地址翻译和保护表,其输入项目与HCA资源的独立逻辑分区相关联。即,每个设施可以在所述虚拟地址翻译和保护表中具有一个输入项目,并且所述输入项目可以与特定的逻辑分区相关联。通过在所述虚拟地址翻译和保护表中提供独立的逻辑分区,与操作系统的队列对相关联的直接存储器访问(DMA)操作被限制到那个队列对的授权存储器空间。因此,例如,在逻辑分区1中的应用不可以访问逻辑分区2的资源,因为在所述虚拟地址翻译和保护表中逻辑分区2的资源的地址与逻辑分区1不相关联。换句话说,在逻辑分区2中的资源的地址将超出在逻辑分区1的虚拟地址翻译和保护表中的范围。

因此,每个逻辑分区通过在所述虚拟地址翻译和保护表中的独立输入项目与其他逻辑分区保持分离。但是,一个逻辑分区的操作系统和应用可以经由正常的InifiniBand协议与另一个逻辑分区的操作系统和应用通信或与外部器件通信。

如上所述,管理器1260负责向队列对分配逻辑分区标识符。这个逻辑分区标识符将队列对和它们相关联的HCA资源编组为逻辑分区。这个逻辑分区标识符还用于当从特定的队列对的工作队列输入项目(WQE)产生完成队列输入项目(CQE)或事件队列输入项目(EQE)的时候执行检验。

可以从__提交的、题目为“APPARATUS,SYSTEM AND METHODFORPROVIDING MULTIPLE LOGICAL CHANNEL ADAPTERS WITHIN ASINGLE PHYSICAL CHANNEL ADAPTER IN A SYSTEM AREANETWORK(用于在系统区域网络中的单个物理信道适配器内提供多个逻辑信道适配器的装置、系统和方法)”的、共同转让和待审的美国专利申请序号第_号(律师备审案件目录表编号:AUS920020715US1)获得便于在主系统内的逻辑分区的、关于HCA的逻辑分区划分的附加信息,所述美国专利申请在此通过引用并入。

如上所述,主信道适配器(HCA)通常包括支持多个队列对(QP)、完成队列(CQ)、事件队列(EQ)和存储器区域(MR)所需要的存储器设施。在此使用的术语“设施”指的是任何硬件资源,诸如寄存器。队列对通常被分配到在主处理器上运行的用户程序。除了队列对的组之外,完成队列、事件队列、存储器区域等可以如上所述被分配到逻辑分区。

期望仅仅允许与特定队列对相关联的程序访问在HCA中的队列对的设施。而且,期望仅仅允许分配到一个逻辑分区的操作系统和用户应用访问与那个逻辑分区相关联的HCA设施。以这种方式,一个逻辑分区的操作系统和用户应用不能干扰另一个逻辑分区的操作系统和用户应用的功能。而且,如果在一个逻辑分区中存在失败或故障,则所述失败或故障被与那个特定的逻辑分区隔离,并且不干扰其他逻辑分区的功能。本发明提供了一种机制,用于控制对HCA设施的访问,以便仅仅逻辑分区的用户应用和操作系统或者诸如管理器的可信代码可以访问给定的逻辑分区的HCA设施。

如上所述,本发明涉及用于系统区域网络的改进装置、系统和方法,所述系统区域网络诸如InfiniBand网络,其中逻辑分区划分被系统区域网络的主信道适配器(HCA)支持。使用本发明,通过分配使用类和存储器空间映射来控制对HCA设施的访问。使用本发明,只有操作系统或应用被允许访问存储器的对应页面并且具有足够访问HCA设施的使用类时,才允许对HCA设施的访问。

通过地址翻译机制来控制对存储器的对应页面的访问,在所述地址翻译机制中,虚拟地址被翻译为系统存储器地址空间的实际地址。根据诸如应用、操作系统、可信代码这类的请求者的标识,所述地址翻译机制可以确定是否允许请求者访问虚拟地址所映射的系统存储页面。所述标识可以是例如逻辑分区标识符等。以这种方式,来自一个逻辑分区的请求者不可以访问被分配到不同逻辑分区的系统存储页面。

假定请求者能够访问与虚拟地址相关联的系统存储页面,则对应于虚拟地址的实际地址从系统存储器的这个页面被获得,并且用于访问被分配到队列对、完成队列、事件队列或存储器区域的系统存储器地址空间的使用类页面。使用实际地址访问的特定使用类页面识别请求者的使用类。而且,所述使用类页面包括可以由具有对应的使用类的请求者访问的HCA设施的列表。然后比较请求访问的设施的标识符和在使用类页面中的HCA设施的标识符。如果请求访问的设施的标识符匹配在使用类页面中的HCA设施的标识符,则许可对于HCA设施的访问,诸如写入或读取。否则,拒绝访问。

在一个优选实施例中,定义了四个使用类:用户类、特许类、实际地址类和超特许类。用户类资源是需要用户程序可以直接访问的那些资源。在这个类中的资源可以仅仅影响单个队列对、完成队列、事件队列或存储器资源。

特许类资源是要针对用户程序保护、但是可以由在与资源相关联的逻辑分区上运行的操作系统和固件访问的资源。在这个类中的资源是不需要使得用户程序可以直接访问的、并且仅仅可以影响单个逻辑分区的那些资源。

实际地址类资源是那些包括实际地址的HCA资源。对于实际地址类资源要求与特许类相同的访问要求。这个使用类用于支持虚拟机应用和标志资源,所述标志资源具有必须从逻辑分区实际地址翻译为系统实际地址的实际地址。

超特许类资源是针对用户程序和在任何逻辑分区上运行的操作系统保护的资源。在这个类中的资源是影响整体主信道适配器的资源。仅仅诸如管理器的可信应用可以访问具有超特许类的资源。

虽然本发明的优选实施例使用如上所述的四个使用类,但是本发明不限于此,可以在不脱离本发明的精神和范围的情况下使用任何数量的使用类。例如,如果不必支持虚拟机应用,则可以取消实际地址类。而且,可以与上述的一个或多个使用类相结合地、或替代上述的一个或多个使用类地使用其他使用类。

上述定义的使用类提供了可以被分配到主信道适配器的资源的访问权的分层结构。例如,超特许资源可以仅仅被主信道适配器的管理器访问。特许(和实际地址)类资源可以仅仅由它们所分配到的分区的操作系统和超级管理器访问。用户空间资源可以被它们相关联的用户程序、分区操作系统和管理器访问。这个分层访问权结构被图解在下面的表1中,所述表1以访问权的升序组织。

使用类许可的程序访问用户●用户程序●分区操作系统●管理器
特许●分区操作系统●管理器实际地址●分区操作系统●管理器这是独立的类,用于指示翻译在相关联的资源内包括的实际地址的需要。它用于支持虚拟机(VM)应用。超特许●管理器

            表1-使用类的分层

在已经建立了分层使用类方案之后,这个分层使用类方案通过向队列对、完成队列、事件队列和存储器区域等分配在系统存储器地址空间中的存储页面来在主信道适配器中被实现。即,用于每个独立队列对、完成队列、事件队列和存储器区域的设施的地址被映射到系统存储器地址空间的不同页面。对于每个队列对、完成队列、事件队列和存储器区域,系统存储器地址空间的四个页面被分配-每个使用类一个。系统存储器地址空间的这些页面被填充可以由具有与其相关联的对应使用类的请求者访问的队列对、完成队列、事件队列或存储器区域的设施的地址。

在本发明的一个实施例中,HCA包括用于队列对(QP)设施的四个基本地址寄存器(BAR)、用于完成队列(CQ)设施的四个BAR、用于事件队列(EQ)设施的四个BAR、用于存储器区域(MR)设施的四个BAR。四个QP BAR用来定义用于所有HCA的QP用户空间、特许空间、实际地址空间和超特许页面的开始页面地址。对于CQ、EQ和MR空间也是同样。这些BAR空间的每个的长度等于QP、CQ、EQ或MR的数量乘以系统页面大小。

图13图解了按照本发明的在HCA的系统存储器地址空间中的BAR空间的示例。如图13所示,每个队列对、完成队列、事件队列和存储器区域具有用于不同的使用类的每个的系统存储器地址空间的专用页面。BAR在用于队列对、完成队列、事件队列和存储器区域的用户地址空间、特许地址空间、实际地址空间和超特许地址空间中存储相关联的页面的基本地址。结果,在一个优选实施例中,存在16个BAR。可以根据BAR和进入与BAR相关联的BAR空间的偏移来识别每个使用空间的具体页面。每个BAR空间的大小是依赖于特定BAR空间的队列对、完成队列、事件队列或存储器区域的数量乘以系统存储器地址空间页面大小。

图14图解了按照本发明的、分配到示意队列对的系统存储器地址空间页面的扩展视图。如图14所示,系统存储器的每个页面包括可以由具有相关联的使用类的请求者访问的队列对的设施的地址列表。如图所示,在与用户地址空间使用类相关联的页面1中提供第一组队列对设施地址。在与特许地址空间相关联的页面2中提供了第二组队列对设施地址。因为使用类被分层为使得具有特许地址空间的应用和操作系统具有比用户地址空间应用更高的访问权,因此第二组队列对设施包括在页面1中识别的队列对设施、外加仅仅可以由具有特许地址空间使用类或更高的应用和操作系统访问的其他队列对设施。

同一方案继续用于在与实际地址空间使用类相关联的页面3中提供的第三组队列对设施地址。这个第三组队列对设施地址仅仅包括存储需要被转换为系统存储器地址的实际地址的那些队列对设施。因此,这个第三组队列对可以包括在第一或第二组中的队列对设施以及/或者在第一或第二组中不包括的其他队列对设施。

在与超特许地址空间相关联的页面4中提供了第四组队列对设施地址。这个第四组队列对设施将包括用于在HCA上所有队列对设施的队列对设施地址,因为超特许地址空间是可用的最特许的地址空间。通常,诸如管理器的可信代码仅仅是被分配了超特许地址空间使用类的应用。

图15图解了当确定对HCA设施访问的请求者是否应当被提供对于HCA设施的访问时本发明的整体操作。如图15所示,应用1510向主系统处理器1520发送访问请求。访问请求包括期望访问的虚拟地址,诸如对于虚拟地址的写入或读取操作。

这个访问请求被主系统处理器的虚拟地址翻译页面表1530处理。虚拟地址翻译页面表1530执行在页面表中的查找以确定与虚拟地址相关联的实际地址。然后进行确定是否应用1510可以访问实际地址的系统存储器地址空间页面。例如,这个确定的作出可以通过确定应用1510的逻辑分区标识符是否对应于与实际地址的系统存储器地址空间页面相关联的逻辑分区标识符。或者,可以使用在本领域内公知的标准页面访问控制机制来确定应用1610是否可以访问实际地址的系统存储器地址空间页面。

如果应用1510可以访问实际地址的系统存储器空间页面,则实际地址被发送到HCA 1540。HCA根据所请求的访问类型来查阅与每个队列对、完成队列、事件队列或存储器区域相关联的页面,其中所述所请求的访问类型诸如写入队列对用户设施、写入队列对特许设施、写入超特许完成队列设施等。例如,HCA可以比较BAR与所接收的实际地址。因为每个不同类型的资源(QP、CQ、EQ等)具有其本身的一组四个BAR,通过确定哪个BAR匹配所接收的地址,HCA确定哪个资源正在被访问。

HCA 1540确定是否在用于QP、CQ、EQ或MR的页面表之一中出现实际地址。如果如此,访问HCA设施所需要的相关联的使用类被识别和与应用1510的使用类相比较。即,诸如队列对的每个资源类型具有其本身的四种BAR,一个BAR对应于用户、特许、实际和超特许访问类的每个。实际地址与BAR相比较以确定请求的访问类别是什么。如果可以从访问类内寻址由访问正在寻址的、诸如寄存器的特定设施,则允许访问。

如果应用1510的使用类足够访问HCA设施,即与所需要的使用类或更高相同,则许可对HCA设施的访问。否则,不许可对HCA设施的访问。

因此,利用本发明,提供了两级保护机制来保护HCA设施免于未经授权的访问。利用本发明,通过虚拟地址翻译和下述机制来提供第一级访问:所述机制用于确定访问的请求者是否可以访问与虚拟地址映射的实际地址相关联的系统存储器地址空间页面。通过分配使用类和确定用于访问HCA设施所需要的使用类来提供第二级访问。

现在参见图16,其中描述了按照本发明的优选实施例的、用于确定对HCA设施的访问是否应当被许可的处理的流程图。图16所示的处理的第一部分可以在具有虚拟地址翻译的主系统中被实现,图16所示的处理的第二部分可以在连接到主系统的主信道适配器中被实现。

通过执行用于虚拟地址到实际地址的翻译的页面表查找(步骤1610)来开始所述处理。根据虚拟地址所映射的实际地址,确定是否允许页面访问(步骤1620)。如果允许对页面的访问,则向HCA发送实际地址(步骤1630)。可以例如在主系统中执行步骤1610-1630。

HCA根据页面地址来识别请求者的类(步骤1640)。接着,确定是否所访问的类足够用于被寻址的设施(步骤1650)。如果所访问的类足够用于被寻址的设施,则完成访问(步骤1660),并且终止其后处理。

在此返回步骤1650,如果所访问的类不够用于被寻址的设施,则拒绝访问(步骤1670),并且终止其后处理。在此参见步骤1620,如果不允许对页面的访问,则处理如上所述地进行到步骤1670。

通过使用本发明,在逻辑分区的系统中防止了对于HCA设施的未经授权的访问。利用本发明,因为来自一个逻辑分区的应用和操作系统不可访问与不同的逻辑分区相关联的HCA设施,因此这些应用和操作系统被防止折中与这些HCA设施相关联的逻辑分区的应用和操作系统的操作。而且,在应用或操作系统的操作中的失败或故障与所述应用或操作系统的逻辑分区相关联的HCA设施相隔离,因此其他的逻辑分区不受影响。

重要的是,虽然已经在全功能的数据处理系统的范围内说明了本发明,但是本领域中的那些技术人员将明白,本发明的处理能够以指令的计算机可读介质形式和多种形式来分布,并且本发明可以等同地适用而不论实际用于执行分布的信号承载媒体的特定类型如何。计算机可读媒体的示例包括诸如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM的可记录类型的媒体和诸如输入数字和模拟通信链路、使用传输形式的有线或无线通信链路的传输类型的媒体,所述传输形式诸如射频和光波传输。计算机可读媒体可以采用编码格式的形式,所述编码格式被解码以实际用于特定的数据处理系统中。

本发明的说明已经被提供来用于图解和说明,不意欲是穷尽的或限于所公开形式的本发明。许多修改和改变对于本领域内的那些普通技术人员来说是显然的。所述的实施例被选择和说明以便最好地解释本发明的原理、实际的应用,并且使得本领域内的其他普通技术人员能够明白本发明的、适用于所考虑的特定用途的、具有各种修改的各种实施例。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号