使用故障修复或多播地址的网络节点故障修复的制作方法

文档序号:6424550阅读:260来源:国知局
专利名称:使用故障修复或多播地址的网络节点故障修复的制作方法
技术领域
本发明涉及网络,例如Infiniband网络,特别涉及这种网络内节点的故障修复(failover)。
背景技术
输入/输出(I/O)网络,例如系统总线,可被用于计算机的处理器,以与诸如网络适配器之类外围设备通信。但是,常见I/O网络的结构,例如外设组件接口(PCI)总线方面的约束,限制了计算机的总体性能。于是,提出了新型的I/O网络。
一种已知的新型I/O网络称为Infiniband网络。Infiniband网络用拥有一个或多个路由器的分组交换网络替换目前计算机中的PCI或其它总线。主通道适配器(HCA)耦接处理器和子网,而目标通道适配器(TCA)耦接外设和子网。子网包括至少一个交换机,和使HCA和TCA与交换机连接的链路。例如,简单的Infiniband网络可具有一个交换机,HCA和TCA通过链路与其连接。更复杂的布局也是可能的和可预期的。
Infiniband网络的每个端节点包括一个或多个通道适配器(CA),每个CA包含一个或多个端口。每个端口具有由本地子网管理器(SM)分配的本地标识符(LID)。在子网内,LID是唯一的。交换机使用LID在子网内路由分组。数据的每个分组包含源LID(SLID)和目的地LID(DLID),源LID识别把分组注入子网的端口,目的地LID识别Infiniband结构或网络将向该处传送分组的端口。
Infiniband网络方法通过定义LID掩码计数(LMC),提供物理端口内的多个虚拟端口。LMC规定当证实分组DLID与其分配的LID相符时,物理端口掩蔽或忽略的LID的最低有效位的数目。但是交换机不忽略这些位。于是,SM能够根据最低有效位,对通过Infiniband结构的不同路径编程。从而,该端口可认为是用于在Infiniband结构内路由目的的2LMC个端口。
对于需要无故障的持续可用性的关键应用程序来说,通常要求单个应用程序的故障修复,从而要求通信端点或者端节点的故障修复。Infiniband网络环境中的通信端点与CA端口相关。应用程序使用端点在Infiniband网络内通信,例如与其它应用程序等通信。端点的透明故障修复意味着另一端点按照不干扰网络自身内的通信的方式,接管故障端点的责任。
但是,由于对端点寻址的方式的缘故,端点或Infiniband网络内的其它节点的透明故障修复较困难。故障修复要求LID被重新分配给接管故障端口的新端口。但是,新端口通常已具有分配给它的LID。于是,分配额外LID的唯一方式是扩展该端口上的LMC范围,从而确保新的LID落入该范围之内。
但是实际上难以扩展端口上的LMC范围,有时需要相当大的开销来确保接管端口能够具有分配给它们的故障端口的LID。于是,LID故障修复被认为是需要透明故障修复的Infiniband网络的成功转出(rollout)的问题和障碍。由于上述原因,需要本发明。

发明内容
本发明涉及使用故障修复或多播地址的网络内节点的故障修复。在本发明的一种方法中,网络的第一节点加入具有多播地址的多播组。通过执行三种操作之一实现所述加入。首先,可使故障修复地址与第一节点相关联,从而第一节点有效地加入把故障修复地址作为多播地址的多播组。给故障修复地址的通信通过网络被引向第一节点。其次,可使多播地址与第一节点相关联,从而给多播地址的通信通过网络被引向第一节点。第三,网络的交换机上的多播端口可被映射到第一节点上的端口。给多播地址的通信从交换机上的多播端口被引向第一节点上的端口。
当第一节点发生故障时,对应于第一节点加入网络的方法,执行三种操作之一。如果加入使故障修复地址与第一节点关联起来,故障修复地址与第二节点相关,从而第二节点有效地加入多播组,给故障修复地址的通信由第二节点处理。如果加入使多播地址与第一节点相关联,第二节点加入多播组,从而多播地址与第二节点相关,给多播地址的通信由第二节点处理。如果加入把交换机上的多播端口映射到第一节点上的端口,则交换机上的多播端口被重映射到第二节点上的端口。从而给多播地址的通信被引向第二节点上的端口。
本发明还包括故障修复节点和制造产品。故障修复节点是实现本发明方法的节点,而制造产品具有计算机可读介质和所述介质中的实现本发明方法的装置。结合附图,根据下面的本发明的优选实施例的详细说明,本发明的其它特征和优点将是显而易见的。


图1是根据本发明的优选实施例的方法的流程图,并被建议打印在颁发专利的第一页上。
图2是本发明的实施例可结合其实现的Inifiniband网络的图解。
图3是本发明的实施例可结合其实现的例证Inifiniband系统区网络(SAN)的图解。
图4是Inifiniband网络的例证端节点的通信接口的图解。
图5和6是表示Inifiniband寻址如何进行的Inifiniband网络的图解。
图7是表示本发明的实施例如何能够通过使多播组的故障修复地址和/或多播组的多播地址与另一节点相关联,实现网络节点故障修复的方法的流程图。
图8是表示图7的实施例的性能的图解。
图9是表示本发明的实施例如何能够通过把交换机多播端口重映射到另一节点上的端口,实现网络节点故障修复的方法的流程图。
图10是表示图9的实施例的性能的图解。
具体实施例方式
概述图1表示了根据本发明的优选实施例的方法100。网络的第一节点最初有效加入多播组(102)。多播组具有多播地址或者故障修复地址。执行三种操作中的至少一种(104)。在第一种模式下,多播地址被分配给第一节点。对多播地址的通信随后可被自动导向第一节点,这里先前可能已手动或自动建立了网络,以便实现这种通信。在第二种模式下,网络的交换机上的多播端口被映射到或者与第一节点上的端口相关联。对多播地址的通信随后可从交换机上的多播端口被导向第一节点上的端口,这里交换机不支持多播。在第三种模式下,故障修复地址被分配给该节点。对故障修复地址的通信随后被自动导向第一节点,这里先前已手动或自动建立了网络,以便实现这种通信。网络最好是Infiniband网络。第一和第二节点可以是这种网络上具有通道适配器(CA)和端口的主机。
第一节点随后发生故障(108),从而最好由网络的第二节点实现第一节点的透明故障修复。这可涉及执行三种操作之一。首先,第二节点可加入多播组,从而多播地址也被分配给第二节点(110)。从而给多播地址的通信被导向第二节点以及被导向第一节点(出故障节点),以致第二节点从第一节点接管这种通信的处理。其次,交换机上的多播端口可被重新映射到第二节点上的端口(112)。从而给多播地址的通信被导向第二节点上的端口,以致第二节点接管这种通信的处理。第三,使第二节点与故障修复地址相关联,从而第二节点有效加入多播组(114)。给故障修复地址的通信从而被导向第二节点以及被导向第一节点(出故障的节点),以致第二节点从第一节点接管这种通信的处理。
诸如Infiniband子网的子网管理器(SM)之类管理组件可把初始分配给第一节点的多播组的多播地址分配给第二节点。管理组件还可把最初映射到第一节点上端口的交换机的多播端口重新映射到第二节点上的端口。制造品的计算机可读介质中的装置也可实现这种功能。该装置可以是可记录的数据存储介质,调制的载波信号或者另一类型的介质或信号。
于是在第一模式中,多播地址被用于单播通信。多播地址允许发生本地标识符(LID)的故障修复,因为只有多播LID可被一个以上的端口共享。在第二模式下,所讨论的节点与交换机的主多播端口连接。当进行故障修复时,通过重新分配主端口,修改交换机配置,从而分组传播到故障修复节点。在第三种模式下,允许故障修复LID与任意多播组相关联。此外,允许故障修复LID不包括多播组地址。
背景技术
图2表示了结合其可实现本发明的实施例的例证Infiniband网络结构200。Infiniband网络是一种网络。本发明也可和其它类型的网络一起实现。处理器202与主机互连204耦接,存储器控制器206也与主机互连204耦接。存储器控制器206管理系统存储器208。存储器控制器206还与主机通道适配器(HCA)210连接。HCA 210允许处理器和存储器子系统通过Infiniband网络通信,处理器和存储器子系统包括处理器202,主机互连204,存储器控制器206和系统存储器208。
图2中的Infiniband网络被称为子网236,子网236包含Infiniband链路212、216、224和230,和一个Infiniband交换机214。可存在一个以上的Infiniband交换机,但是图2中只表示了交换机214。链路212、216、224和230使HCA和目标通道适配器(TCA)218及226能够相互通信,还使Infiniband网络能够通过路由器232与其它Infiniband网络通信。具体地说,链路212连接HCA 210和交换机214。链路216和224分别使TCA 218和226与交换机224连接。链路230连接路由器232和交换机214。
TCA 218是特定外设,这种情况下,是以太网适配器220的目标通道适配器。TCA可容纳多个外设,例如多个网络适配器,SCSI适配器等。TCA 218使网络适配器220能够通过Infiniband网络发送和接收数据。适配器220本身允许通过通信网络,尤其是以太网进行通信,如线条222所示。其它通信网络也适合于本发明。TCA 226是另一外设,目标外设228的目标通道适配器,图2中没有详细说明目标外设228。路由器232允许图2的Infiniband网络与其它Infiniband网络连接,线条234表示了该连接。
Infiniband网络是分组交换输入/输出(I/O)网络。从而,通过互连204和存储器控制器206,处理器202经HCA 210发送和接收数据分组。类似地,目标外设228和网络适配器220分别通过TCA226和218发送和接收数据分组。也可通过路由器232发送和接收数据分组,路由器232连接交换机214和其它Infiniband网络。链路212、216、224和230可具有变化的容量,取决于它们与交换机214连接的特定HCA、TCA等所需的带宽。
Infiniband网络按照这里简要说明的不同方式提供TCA和HCA之间的通信。类似于其它类型的网络,Infiniband网络具有物理层,链路层,网络层,传输层和高级协议。如同在其它类型的分组交换网络中,在Infiniband网络中,特定的事务被分成消息,消息本身被分成分组以便通过Infiniband网络传送。当被预定的接收者接收时,分组被记录到指定事务的组成消息中。Infiniband网络提供队列和通道,在所述队列和通道接收和发送分组。
此外,Infiniband网络允许许多不同的传送服务,包括可靠和不可靠的连接,可靠和不可靠的数据报,和原始分组支持。在可靠的连接和数据报中,产生确认和保证分组排序的分组序列号。重复的分组被拒绝,检测丢失的分组。在不可靠的连接和数据报中,不产生确认,不保证分组排序。不拒绝重复的分组,不检测丢失的分组。
Infiniband网络也可被用于定义系统区网络(SAN),用于连接多个独立的处理器平台,或者主处理器节点,I/O平台,和I/O装置。图3表示了结合其可实现本发明的实施例的例证SAN 300。SAN300是支持一个或多个计算机系统的I/O和处理器间通信的通信和管理基础结构。Infiniband系统包括小型服务器到大型并行超级计算机中心站不等。此外,Infiniband网络的因特网协议(IP)-友好本性允许桥接到因特网,企业内部网,或者连接到远程计算机系统。
SAN 300具有交换的通信结构301,或者子网,通信结构301或者子网允许许多装置在受保护的远程管理环境中,高带宽低等待时间地同时通信。端节点可通过多个Infiniband端口通信,并且能够利用通过结构301的多个路径。端口和通过网络300的路径的多样性被用于容错和增大的数据传送带宽。Infiniband硬件卸下多数处理器和I/O通信操作。这允许多个同时进行的通信,而不存在与通信协议相关的传统开销。
结构301具体包括若干交换机302、304、306、310和312,允许结构301与其它Infiniband子网、广域网络(WAN)、局域网(LAN)和主机链接(如箭头303所示)的路由器308。结构301允许若干主机318、320和322相互通信,以及与不同的子系统,管理控制台,驱动器和I/O机架通信。在图3中,这些不同的子系统、管理控制台、驱动器和I/O机架被表示为信息磁盘冗余阵列(RAID)子系统324、管理控制台326、I/O机架328和330、驱动器332和存储子系统334。
图4表示了Infiniband网络的例证端节点400的通信接口。端节点可以是图3的主机318、320和322之一。端节点400具有运行于其上的过程402和404。每个过程具有与之相关的一个或多个队列对(QP),每个QP与节点400的通道适配器(CA)418通信,以便与Infiniband结构链接,如箭头420所示。例如,过程402具有QP 406和408,而过程404具有QP 410。
在HCA和TCA之间定义QP。链路的每一端具有要传送给另一端的消息队列。QP包括成对的发送工作队列和接收工作队列。一般来说,发送工作队列保存导致在客户机的存储器和另一过程的存储器之间传送数据的指令,接收工作队列保存关于把从另一过程接收的数据置于何处的指令。
QP代表与Infiniband客户机过程的虚拟通信接口,并为该客户机提供虚拟通信端口。CA可提供多达224个QP,并且每个QP上的操作彼此独立。客户机通过分配QP,产生虚拟通信端口。客户机启动把该QP和另一QP连接在一起所需的任意通信建立,并利用某些信息,例如目的地地址、服务级别、协议工作极限等配置QP环境。
图5和6表示在Infiniband网络内如何寻址。在图5中,表示了简单的Infiniband网络500,Infiniband网络500包括一个端节点502和一个交换机504。端节点502具有运行于其上的过程504,过程504具有相关的QP 506、508和510。端节点502还包括一个或多个CA,例如CA 512。CA 512包括一个或多个通信端口,例如端口514和516。QP 506、508和510具有由CA分配的队列对编号(QPN),队列对编号唯一地识别CA 512内的QP。除原始数据报之外的数据分组包含目的地工作队列的QPN。当CA 512接收一个分组时,它使用目的地QPN的环境恰当地处理该分组。
本地子网管理器(SM)向每个端口分配一个本地标识符(LID)。SM是连接到子网上的管理组件,负责配置和管理交换机、路由器和CA。可利用其它设备,例如CA或交换机嵌入SM。例如SM可被嵌入端节点502的CA 512内。作为另一例子,SM可被嵌入交换机504内。
在Infiniband子网内,LID是唯一的。诸如交换机504之类的交换机使用LID在子网内发送分组。每个分组包含源LID(SLID)和目的地LID(DLID),源LID识别把分组注入子网中的端口,目的地LID识别结构将向该处传送分组的端口。诸如交换机504之类的交换机还分别具有许多端口。交换机504上的每个端口可与端节点502上的端口关联。例如,交换机504的端口518与端节点502的端口516关联,如箭头520所示。交换机504接收的预定给节点502的端口516的数据分组从而从端口518发送给端口516。更具体地说,当交换机504接收具有DLID的分组时,该交换机只检查该DLID是否非零。否则,交换机按照SM设计的表格发送该分组。
除了分别识别Infiniband子网内的特定端口的DLID之外,还可规定多播DLID或者多播地址。通常,一组端节点可加入一个多播组,从而SM向每个节点的一个端口分配多播组的一个多播DLID。发送给多播DLID的数据分组被发送给加入多播组的每个节点。每个交换机,例如交换机504具有默认的主多播端口和默认的非主要多播端口。主/非主要多播端口用于所有的多播分组,并不和任意特定DLID相关。加入多播组的每个节点的一个端口或者与交换机的主多播端口关联,或者与交换机的非主要多播端口关联。
当收到具有多播DLID的数据分组时,检测该多播DLID,并根据SM计划的表格转发数据分组。如果多播DLID不在该表格中,或者交换机不保存表格,则交换机在主默认多播端口和非主要默认多播端口上转发分组。如果在主端口上被接收,则分组从非主要多播端口出去,而如果在交换机的任意其它端口上被接收,则分组从主多播端口出去。交换机504接收的指定多播DLID的数据分组从而从这些多播端口之一被发送给多播组节点的相关端口。可利用关于多播通信的路由信息配置交换机504,所述路由信息指定分组应送往的端口。
此外,虽然任意Infiniband节点可向任意多播组传送分组,但是如果交换机,例如交换机504不正确转发分组,则不能保证数据分组将被多播组成员正确接收。于是,应设置交换机,以致多播数据分组被组成员接收。这可通过确保多播数据分组总是鱼贯通过被预编程或者专门编程的一个或多个交换机,从而确保多播数据到达它们正确目的地来实现。另一方面,如果所有交换机都完全支持多播,则端节点加入多播组会导致SM对交换机编程,从而分组被多播组的所有成员正确接收。也可执行其它方法。
图6中,表示了更复杂的Infiniband网络600,Infiniband网络600具有两个子网602和604。子网602具有不同地与交换机610和612连接的端节点604、606和608。类似地,子网604具有不同地与交换机622和624连接的端节点614、616、618和620。子网602的交换机610和612通过路由器626和628不同地与子网604的交换机622和624连接,路由器626和628能够实现子网间通信。这种情况下,不同地连接意味着一个实体的一个或多个端口与另一实体的一个或多个端口关联。例如,节点604可具有两个端口,一个与交换机610关联,另一个与交换机612关联。
为了第一节点的故障修复,使故障修复(多播)地址与第二节点关联通过使多播组的故障修复地址与另一节点关联,本发明的实施例能够实现网络节点故障修复。图7表示了根据本发明的这种实施例的方法700。该实施例最好把位置标识符(LID)的Inifiniband规范重新如下定义

ThLID是管理员规定的阈值,从而最好只有高于ThLID的LID才可以是故障修复LID,也是有效地多播LID。此外,Inifiniband规范最好被增强,以便允许故障修复LID与多播组标识符(GID)关联起来。允许在存在或不存在GID的情况下使用这种故障修复LID。在ThLID等于0XC000(目前的Inifiniband规范中,多播范围的起始值)的情况下,则该实施例和目前的规范一致。
在本发明的另一实施例中,除了许可的LID之外,任意有效LID都可与多播组关联,从而能够有效地起故障修复LID的作用。子网管理器(SM)被增强,以便允许除许可LID之外的任意这种有效LID与多播组相关。即,Infiniband规范被修改,从而SM可允许除许可LID之外的任意有效LID与多播组关联,以便允许节点故障修复。最后,在本发明的一个备选实施例中,不对Infiniband规范进行任何改变,从而与有效地也是一个多播组LID的故障修复LID相反,下面关于图7的方法700的说明只与多播组LID相关。
现在参见图7的方法700,Infiniband网络的第一节点与故障修复LID(或者多播LID)相关,故障修复LID有效地是多播组LID,从而第一节点有效地加入多播组(702)。第一节点是其一部分的子网的SM使故障修复LID与多播组关联起来,例如响应第一节点的加入多播组的请求。第一节点可以是Infiniband网络的子网上的主机的通道适配器(CA)。第一节点随后出故障(704),这通常由子网的另一节点检测。通过子网的第二节点代表第一节点向SM发送离开请求,第一节点可以可选地脱离多播组(706)。
第二节点随后加入多播组,从而将接收发送给故障修复LID(或者发送给多播LID)的分组(708)。更具体地说,响应来自第二节点的加入请求,SM对交换机编程,从而发送给多播组的分组将被第二节点接收。第二节点也可以是Infiniband网络的子网上的主机的CA。第二节点的主机可以是和第一节点的主机相同的主机。计划给故障修复LID的通信由第二节点,而不是由第一节点处理,从而第一节点无缝地向第二节点交接(fail over)。
在某一时刻,第一节点可能消除故障(failback)(710),恢复在线。随后再次使故障修复LID(或多播LID)和第一节点关联起来(712),从而第一节点能够重新处理计划给故障修复LID的通信。在第一节点重新加入多播组之前,子网的第二节点可离开多播组。从而在第一节点向SM发送加入请求,以使SM把故障修复LID和第一节点关联起来之前,第二节点可向SM发送离开请求。故障消除(failback)还可包括第一节点从第二节点获得状态转储,这里第二节点冻结所有连接,直到完成故障消除为止。另一方面,第二节点可以不离开多播组,直到与第二节点的现有连接到期为止。
从而,原先与第一节点通信的第三节点将不知道已向第二节点进行了故障修复。即,它将继续与故障修复地址通信,而不必知道故障修复地址是与第一节点相关联还是与第二节点相关联。通常,即使利用多播故障修复地址实现故障修复,第三节点和第一节点或第二节点之间的通信实际上也是单播通信。第三节点不知道故障修复地址事实上是多播地址,从而导致认为它和故障修复地址之间的通信实际上是单播通信。即,当事实上正在利用多播地址完成通信时,使得在第三节点看来通信正在正常进行。
图8表示了相对于第二节点的第一节点故障修复。多播组被表示为多播组802A,以便表示第一节点804的故障前状态。于是,具有故障修复LID的分组806被发送给第一节点804。多播组被表示为多播组802B,以便表示第一节点804的故障后状态,从而在第一节点804发生故障之后,组802A变成组802B,如箭头808所示。组802A的第一节点804变成组802B的第一节点804′,以便指出故障。第二节点810加入多播组802B。第一节点804′被表示为在组802B中,但是可能已离开组802B。于是,除了第一节点804′之外,分组806现在被发送给第二节点810。
为第一节点故障修复,把交换机多播端口重映射到第二节点上的端口通过把交换机多播端口重映射到另一节点上的端口,本发明的实施例也可实现网络节点故障修复。图9表示了根据本发明的这种实施例的方法900。Infiniband网络的第一节点加入多播组,这种情况下交换机上的主多播端口被映射到第一节点上的端口(902)。响应第一节点的加入请求,第一节点和交换机为其一部分的子网的子网管理器(SM)实现这种映射。第一节点可以是在网络子网上的主机的通道适配器(CA)。
第一节点随后发生故障(904),这通常由子网的另一节点检测。通过子网的第二节点代表第一节点向SM发送脱离请求,第一节点可以可选地脱离多播组(906)。交换机上的主多播端口随后被重映射到第二节点上的端口(708)。更具体地说,响应第二节点的相应请求(可选的是专有请求),SM把交换机上的主多播端口重映射到第二节点上的端口。第二节点也可以是Inifiniband网络的子网上的主机的CA。第二节点的主机可以是和第一节点的主机相同的主机。给该多播地址的通信被导向第二节点上的端口,而不是第一节点上的端口,从而第一节点无缝地向第二节点交接。
在某一时刻,第一节点可能消除故障(910),从而返回在线。交换机上的主多播端口随后被重映射到第一节点上的端口(912),从而第一节点能够再次处理计划给多播地址的通信,它可以是多播目的地位置标识符(DLID)。子网的第二节点可能不得不初始离开多播组,从而在主多播端口被重映射到第一节点上的端口之前,可向SM发送脱离请求。故障消除也可包括第一节点从第二节点获得状态转储,这种情况下第二节点冻结所有连接,直到故障消除完成为止。此外,第二节点可不脱离多播组,直到与第二节点的现有连接到期为止。
图10表示了相对于第二节点的第一节点故障修复。子网的一部分被表示为部分1002A,以便表示第一节点1004的故障前状态。第一节点1004具有端口1006。交换机1008具有主多播端口1010。交换机1008的主多播端口1010被映射到第一节点1004的端口1006,如线条1012所示。指向交换机1008的多播通信从而被发送给端口1006。该部分子网被表示为部分1002B,以便表示第一节点1004的故障后状态,从而在第一节点1004的故障之后,部分1002A变成部分1002B,如箭头1014所示。第二节点1016具有端口1018。交换机1008的多播端口1030现在成为主多播端口,并被映射到第二节点1016的端口1018,如线条1020所示。通过交换机1008导引的多播通信现在被发送给端口1018。
交换机、数据报和连接服务类型Infiniband网络采用通常只检查目的地位置标识符(DLID)不为零的交换机,并根据子网管理器(SM)设计的表格发送数据分组。最好利用多播通信的路由信息配置各个交换机,所述路由信息指定多播数据分组需要通过的所有端口。这确保多播分组被发送给它们正确的目的地。
此外,Infiniband网络可采用不同类型的数据报和连接服务。在和发送分组的顺序相比,接收分组的顺序无关紧要的情况下使用数据报。可和发送数据报分组的顺序相比无序地接收数据报分组。数据报可以是原始的,这意味着它们和非Inifiniband规范,例如Ethertype、因特网协议(IP)版本6等相符。相反,在和发送分组的顺序相比,接收分组的顺序至关重要的情况下使用连接服务。按照发送分组的相同顺序接收连接服务分组。
数据报和连接的服务都可以是可靠的或者不可靠的。可靠性通常涉及是否保持分组的序列号,是否关于接收的分组发送确认消息,和/或是否执行其它验证措施,以确保发送的分组被它们预定的接收者接收。不可靠的数据报和不可靠的连接服务不进行这样的验证措施,而可靠的数据报和不可靠的连接服务执行这样的验证措施。
对于不可靠的原始数据报,第一节点使用多播位置标识符(LID)作为其源LID(SLID)。在第二节点是故障修复节点的情况下,第三节点能够接收这样的分组,因为它们被发送给其单播DLID,并且因为分组的SLID未被检查。第三节点应当应答第一节点的多播LID。为此,客户机可被发送一个多播LID关联,该多播LID关联被客户机记录。在不可靠数据报的SIDR协议的情况下,第三节点可被发送多播LID,和/或第二节点可从接收的分组拾取多播LID。在Inifiniband规范中,不存在关于不可靠数据报模式规定的有效性检查。
如果第三节点根据SM保持的路径记录确定LID,则在启动与第三节点的通信之前,LID的恰当值可被置于路径记录中。当第一节点,或者故障修复第二节点接收来自客户机的答复分组时,分组具有非多播队列对(QP),但是具有多播DLID。在可靠数据报和连接模式传送的情况下,连接管理器交换将用于通信的LID。在该阶段可交换多播或故障修复LID。该LID可在不进行任何有效性检查的情况下被第二节点记录,并被用作所有通信中的单播LID。
链路层和传输层检查也都被核实。链路层检查只核实客户机的LID,或者为多播LID或者为单播LID。在传输层检查中,接收QP首先被核实为有效,因为发送者设置该QP。最后,QP被核实为不是0xFFFFFFF(十六进制),于是,数据分组不被认为是多播分组,从而不检查多播全局路由报头(GRH)的存在。
但是,在本发明的一个实施例中,Infiniband规范被重新定义,以便通过不严格执行这些传输层检查,提供节点故障修复。本实施例中,对于任意传输方法不检查源LID(SLID),并且对于任意传输方法接受多播目的地LID(DLID)。从而,Inifiniband规范被修改,从而不象以前那么严格地执行SLID和DLID检查。
在本发明的另一实施例中,另一方面通过把QP设置为特定值(例如0xFFFFFFE),表示多播通信,提供节点故障修复。本发明的该实施例只适用于不可靠的连接服务。特定的QP值是可配置的,并且可由SM保持。
对于可靠的数据报和可靠及不可靠的连接服务来说,不允许多播,因为它未被定义。但是,如果两个端节点按照单播的方式工作,则可克服这种限制。服务器把分组发送给使用多播LID的客户机。远程客户机检查SLID是否是多播LID。如果是,则可修改客户机的主通道适配器(HCA),以便接收多播SLID,否则可修改SM,使单播LID与多播组关联起来。
即,只有当其大于0xC000(十六进制)时,未修改的接收器断定该SLID是多播的。于是,SM被修改,从而它把低于0xC000(十六进制)的值分配给多播组,从而接收器不断定SLID是多播。客户机应答服务器,服务器接收规定DLID的分组。服务器检查DLID是否是多播LID。如果是,则服务器的HCA可被修改以便接收多播DLID,或者SM可被修改,以使单址通信LID与多播组关联起来。
优于现有技术的优点本发明的实施例提供优于现有技术的优点。通过利用Infiniband网络的多播地址和端口,实现节点故障修复。即使指定的Infiniband结构不允许多播,在故障节点于另一节点加入多播组之前离开多播组的情况下,仍然可以使用本发明的实施例,从而每次多播组中只存在一个节点。故障节点的故障修复不要求涉及故障节点一直与之通信的远程节点。
从而,故障修复节点透明地承担故障节点的责任,并且通常不通知远程节点。更可取的是,任意主机能够接管故障主机的职责。本发明的实施例也适用于所有Infiniband传送类型。实现本发明的实施例通常不需要对Infiniband规范的非专有扩展,从而实施例在Infiniband规范的支持下工作。
此外,在本发明的其它实施例中,通过利用本发明规定的Infiniband网络的故障修复地址,实现节点故障修复。故障节点的故障修复不需要涉及故障节点一直与之通信的远程节点。相反,接管(takeover)节点透明地承担故障节点的责任,并且通常不通知远程节点。更可取的是,任意主机能够接管故障主机的职责。本发明的实施例也适用于所有Infiniband传送类型。
备选实施例虽然出于举例说明的目的,说明了本发明的具体实施例,不过在不脱离本发明的精神和范围的情况下,可做出各种修改。例如,虽然主要关于Inifiniband网络说明本发明,不过本发明也适用于其它类型的网络。因此,本发明的范围只受下述权利要求及其等同物限定。
权利要求
1.一种方法,包括网络的第一节点加入具有多播地址的多播组(102),这里所述加入选自实质上包括下述之一的组使故障修复地址与第一节点相关联,从而第一节点有效加入把故障修复地址作为多播地址的多播组,给故障修复地址的通信通过网络被引向第一节点;使多播地址与第一节点相关联,从而给多播地址的通信通过网络被引向第一节点;和把网络的交换机上的多播端口映射到第一节点上的端口,从而给多播地址的通信从交换机上的多播端口被引向第一节点上的端口(104);和当第一节点发生故障时(108),如果加入使故障修复地址与第一节点相关联,则使故障修复地址与第二节点相关联,从而第二节点有效加入多播组,并且给故障修复地址的通信由第二节点处理(114);如果加入使多播地址与第一节点相关联,网络的第二节点加入多播组,从而多播地址与第二节点相关联,并且给多播地址的通信由第二节点处理(110);和如果加入把交换机上的多播端口映射到第一节点上的端口,则把交换机上的多播端口重映射到第二节点上的端口,从而给多播地址的通信被引向第二节点上的端口(112)。
2.按照权利要求1所述的方法,其中网络是Infiniband网络。
3.按照权利要求1所述的方法,其中故障修复地址选自实质上包括下述之一的组值小于故障修复LID阈值的故障修复位置标识符(LID),网络包括Infiniband网络;有效LID范围内的故障修复位置标识符(LID),网络包括Infiniband网络;和作为源LID对于通过网络的任意传送方法来说不被检查、并且作为多播目的地LID(DLID)对于通过网络的任意传送方法被接受的故障修复位置标识符(LID),其中网络包括Infiniband网络。
4.按照权利要求1、2或3所述的方法,还包括如果加入使多播地址或故障修复地址与第一节点相关联,在网络的第二节点加入多播组之前,通过第二节点代表第一节点向子网管理器(SM)发送离开请求,第一节点离开多播组(706)。
5.按照权利要求1、2、3或4所述的方法,还包括如果加入使多播地址或故障修复地址与第一节点相关联,当第一节点消除故障(failback)时,使故障修复地址与第一节点相关联,从而给故障修复地址的通信重新由第一节点处理(712)。
6.按照权利要求1、2、3、4或5所述的方法,其中如果加入使多播地址或故障修复地址与第一节点相关联,则网络的第一节点加入多播组包括第一节点向子网管理器(SM)请求加入多播组。
7.按照权利要求1或2所述的方法,其中如果加入把交换机上的多播端口映射到第一节点上的端口,通过第二节点向子网管理器(SM)请求把交换机上的多播端口重映射到第二节点,SM把交换机上的多播端口重映射到第二节点上的端口,交换机上的多播端口被重映射到第二节点上的端口。
8.按照权利要求1、2或7所述的方法,还包括如果加入把交换机上的多播端口映射到第一节点上的端口,当第一节点故障消除时,把交换机上的多播端口重映射到第一节点的端口上,从而给多播地址的通信再次被引向第一节点上的端口(912)。
9.一种用于权利要求1、2、3、4、5、6、7或8所述方法的故障修复节点。
10.一种产品,包括计算机可读介质;和所述介质中用于实现按照权利要求1、2、3、4、5、6、7或8所述方法的装置。
全文摘要
公开网络节点的故障修复。第一节点加入多播组(102)。通过执行三种操作之一实现加入(104)。首先,使故障修复地址与第一节点相关联,第一节点有效加入把故障修复地址作为多播地址的组。其次,使多播地址与第一节点相关联。第三,交换机的多播端口被映射到第一节点的端口。当第一节点发生故障时(106),执行三种操作之一。如果加入涉及故障修复地址,则使故障修复地址与第二节点相关联,第二节点有效加入该组(114)。如果加入涉及多播地址,则第二节点加入该组,该地址与第二节点相关(110)。如果加入映射交换机的多播端口,则该端口被重映射到第二节点端口(112)。
文档编号G06F11/20GK1528069SQ02814042
公开日2004年9月8日 申请日期2002年7月26日 优先权日2001年7月27日
发明者维维克·卡施雅普, 维维克 卡施雅普 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1