CN104714905B - 用于执行失效转移操作的方法和系统 - Google Patents

用于执行失效转移操作的方法和系统 Download PDF

Info

Publication number
CN104714905B
CN104714905B CN201410681770.7A CN201410681770A CN104714905B CN 104714905 B CN104714905 B CN 104714905B CN 201410681770 A CN201410681770 A CN 201410681770A CN 104714905 B CN104714905 B CN 104714905B
Authority
CN
China
Prior art keywords
adapter
data
entry
buffer
outlet
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.)
Active
Application number
CN201410681770.7A
Other languages
English (en)
Other versions
CN104714905A (zh
Inventor
O·卡多纳
M·R·奥克斯
V·塞西
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 CN104714905A publication Critical patent/CN104714905A/zh
Application granted granted Critical
Publication of CN104714905B publication Critical patent/CN104714905B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2005Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2033Failover techniques switching over of hardware resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Hardware Redundancy (AREA)

Abstract

提供了包括第一适配器和第二适配器的数据处理系统中的机制,用于执行从第一适配器到第二适配器的失效转移操作。这些机制检测第一适配器的即将发生的失效有可能发生,并且响应于检测到该即将发生的失效,在第一适配器和第二适配器中发起失效转移准备操作。该失效转移准备操作将第二适配器的入口缓冲器和出口缓冲器配置为具有与第一适配器的入口缓冲器和出口缓冲器类似的配置。这些机制在第一适配器的失效之前,将入口数据流量的处理迁移到第二适配器,使得第一适配器处理来自数据处理系统的出口数据流量并且第二适配器处理去往数据处理系统的入口数据流量。

Description

用于执行失效转移操作的方法和系统
技术领域
本申请一般性地涉及一种改进的数据处理装置和方法,并且具体地涉及用于准备好针对低延时有状态卸载通信适配器的失效转移能力的机制。
背景技术
现代通信适配器,例如网络设配器、输入/输出(I/O)适配器等,使用诸如远程直接存储器访问(RDMA)的协议来为低延时通信提供基于硬件的有状态卸载。有状态卸载是指将通常由主机计算系统执行的一些处理卸载到通信适配器的能力。例如,传输控制协议(TCP)卸载引擎(TOE)是通信适配器的有状态卸载引擎的一种示例,并且是用在网络接口卡(NIC)中以将整个TCP/IP栈的处理卸载到NIC的网络控制器的技术。RDMA是从一台计算设备的存储器到另一台计算设备的存储器中的无需涉及任一计算设备的操作系统的直接存储器访问。
当执行有状态卸载操作的通信适配器在将适配器耦合到主机系统的交换结构中经历停机时,主机系统丢失了适配器中的被卸载状态。这使得在没有应用停机的情况下为这样的有状态适配器提供具有透明失效转移的高可用性解决方案是困难的。
已知的机制试图通过利用被称为自动路径迁移(APM)的机制来解决这个问题。APM机制运行在适配器内部,并且当检测到通信连接失效时,试图自动发现从适配器到网络的替换路径,诸如经由适配器的另一物理端口。然而,APM机制被限制于经由同一适配器或主机通道适配器(HCA),即经由同一适配器/HCA的另一物理端口,来发现到交换结构的替换路径。因此,当适配器或HCA的所有端口遭受停机时,APM机制不能提供替换路径。
发明内容
在一个说明性的实施例中,一种在包括第一适配器和第二适配器的数据处理系统中用于执行从第一适配器到第二适配器的失效转移操作的方法。该方法包括:检测第一适配器的即将发生的失效有可能发生。该方法进一步包括:响应于检测到即将发生的失效,在第一适配器和第二适配器中发起失效转移准备操作。失效转移准备操作将第二适配器的入口缓冲器和出口缓冲器配置为具有与第一适配器的入口缓冲器和出口缓冲器类似的配置。此外,该方法包括:在第一适配器的失效之前,将入口数据流量迁移到第二适配器的处理,使得第一适配器处理来自数据处理系统的出口数据流量并且第二适配器处理去往数据处理系统的入口数据流量。
在其他说明性的实施例中,提供了一种计算机程序产品,该计算机程序产品包括具有计算机可读程序的计算机可用或可读介质。当在计算设备上被执行时,该计算机可读程序使得该计算设备执行上面关于方法的说明性实施例而概述的操作中的各种操作以及这些操作的组合。
在又另一说明性实施例中,提供了一种系统/装置。该系统/装置可以包括一个或多个处理器以及耦合至该一个或多个处理器的存储器。该存储器可以包括指令,当由该一个或多个处理器执行时,这些指令使得该一个或多个处理器执行上面关于方法的说明性实施例而概述的操作中的各种操作以及这些操作的组合。
本发明的这些及其他特征和优点将被描述于本发明的示例实施例的以下详细描述中,或者鉴于本发明的示例实施例的以下详细描述而对本领域的技术人员将是明显的。
附图说明
本发明及其优选的使用模式以及进一步的目标和优点,将在结合附图地阅读说明性实施例的以下详细描述时通过参考该详细描述而被最好地理解,在附图中:
图1描绘了示例分布式数据处理系统的图形表示,在该示例分布式数据处理系统中,说明性实施例的各方面可以被实施;
图2是示例数据处理系统的框图,在该示例数据处理系统中,说明性实施例的各方面可以被实施;
图3图示了根据一个说明性实施例的包括主适配器和次级或备用适配器的失效转移系统的实施例;
图4A-4B图示了概括根据一个说明性实施例的用于执行失效转移准备和失效转移操作的示例操作的流程图。
具体实施方式
诸如远程直接存储器访问(RDMA)的现代输入/输出(IO)技术使用了具有完全有状态卸载能力的IO适配器。如上面提及的,RDMA是如下的功能:允许从一台计算机的存储器到另一台计算机、计算设备(诸如IO适配器)等的存储器中的直接存储器访问,而无需涉及任一计算机的操作系统。RDMA促进了高吞吐量、低延时联网,这在大规模并行计算机集群中尤其有用。
RDMA通过启用计算机的网络适配器而直接向应用存储器或者直接从应用存储器传送数据来支持零拷贝联网,由此消除在操作系统中的应用存储器与数据缓冲器之间拷贝数据的需求。数据的这种直接传送不需要由处理器、缓存存储器等完成的任何工作,并且不需要上下文切换。这种直接传送可以与计算机正在执行的其他系统操作并行地被执行。例如,当应用执行RDMA读取或写入请求时,经由启用RDMA的网络适配器将应用数据直接递送给网络,减少了传送延时。
许多现代架构和规范以思想上的RDMA和启用RDMA的网络适配器来设计。例如,InfiniBandTM规范由InfiniBandTM行业协会(IBTA)维护和推进,并且由纽约Armonk的国际商业机器公司开发的InfiniBandTM架构为将经由InfiniBandTM结构执行的RDMA操作提供支持。类似地,由开放结构联盟(OFA)维护和推进并且在InfiniBandTM规范上构建的开放结构企业分发(OFEDTM)规范和架构,也为RDMA操作提供支持。这些架构提供了各种不同的结构用于执行RDMA操作和包括队列对(QP)的IO通信,包括传输和接收工作队列(WQ)、完成队列(CQ)、以及事件队列(EQ)。更多关于InfiniBandTM和OFEDTM的信息可以从IBTA和OFA组织及对应网站获取。说明性实施例的以下描述将假设在OFEDTM规范中所规定的类型的一种架构,其中队列结构被用于促进IO操作,包括RDMA操作。然而,应当理解,说明性实施例不被限制于此。确切地说,说明性实施例可以在利用有状态卸载IO模型使得IO状态/上下文信息被维护于IO适配器硬件处而不是操作系统级别的任何架构中被采用并且可能在错误发生的事件中被丢失。
也就是说,当有状态卸载IO模型使用最小开销成本提供高性能IO时,它们内在地难以维持,因为描述IO连接(即,OSI层3-4)的状况和行为的状态/上下文从操作系统中提取并且驻留于适配器硬件。当适配器硬件失效时尤其如此。因为状态/上下文驻留于适配器硬件,所以如果适配器硬件失效,则这个状态/上下文信息被丢失。即使连接能够在与主机系统相关联的另一适配器上重建,但是当该连接在新的适配器硬件上被重建时,存在一段明显的时间,在此期间应用和连接不可用。
用于从一个适配器到另一适配器的失效转移的失效转移机制已经由国际商业机器公司开发用于协助执行从一个适配器到另一适配器的失效转移。一种这样的系统在标题为“Expediting Adapter Failover”的普通转让的美国专利申请公开2010/0318666中被描述。运用2010/0318666中的机制,提供了检测逻辑用于检测何时适配器经历了异常并且将要失效。2010/0318666中的机制然后确定系统总线是否仍然可操作以及如果是,则使用直接存储器访问(DMA)操作将适配器存储器拷贝转移到备用适配器。因此,用于由主适配器服务的连接的状态和连接信息不会丢失并且替代地被拷贝到备用适配器。
说明性实施例通过提供用于先于或响应于检测到主适配器即将发生的失效而准备好备用适配器的机制,增强和改进了这种失效转移机制,2010/0318666机制是一个示例。说明性实施例通过在没有被主机系统交互的情况下执行在主适配器和备用适配器两者上的操作,来准备好备用适配器,以在备用适配器上设置资源用于在这些资源实际被用于这些目的之前处置入口流量和出口流量。说明性实施例然后基于主适配器的继续的健康以及对失效转移能够发生的稳定的“切换”状态的确定,通过逐步地将入口流量和出口流量的处置迁移到备用适配器,来进一步准备好备用适配器。例如,在一个说明性实施例中,准许备用适配器处置入口流量,而主适配器如果仍然操作在健康的状态下,可以继续处置出口流量。响应于主适配器实际上失效或者主适配器的状态继续朝向主适配器的彻底失效恶化,出口流量可以然后被迁移。作为结果,从主适配器到备用适配器的失效转移是无缝的,并且不存在从主适配器到备用适配器的明显失效转移。
运用说明性实施例的机制,主适配器和次级适配器使用有关彼此的信息来配置,使得从主适配器到次级适配器的失效转移是有可能的。此后,响应于检测到主适配器的即将发生的失效,诸如通过检测主适配器的性能上的恶化,构建备用适配器上的入口和出口直接存储器访问(DMA)队列的视图所需要的信息从主适配器被拷贝转移至备用适配器。所拷贝的信息被用来在备用适配器上设置DMA队列以及其他相关联的资源。主适配器上的入口流量被暂停,并且当前存储于主适配器的入口缓冲器中但尚未被写入主机存储器的数据的大小被确定。主适配器的入口缓冲器中的数据的大小被用于计算在入口DMA队列中的跳过位置。此后,入口队列与主机存储器之间的DMA事务被启用,以便继续排空入口缓冲器中的剩余入口数据,以降到先前确定的跳过位置。
入口DMA队列的所计算的跳过位置被传达给备用适配器以由此对备用适配器上的入口队列当前位置进行编程。一旦被编程,通过启用备用适配器上的入口功能,入口流量在备用适配器上被启用。备用适配器上的入口流量现在将于入口DMA队列中被编程的跳过位置处开始而被写入主机存储器。备用适配器上的入口功能的启用与主适配器的入口缓冲器中的入口数据的排空并行地完成。然而,备用适配器上没有启用中断,以便在备用适配器上阻止主机系统处理入口数据,直到主适配器的入口缓冲器中的入口数据已经被排空。
备用适配器然后启用它的入口DMA队列和PHY,即实施OSI模型物理层的硬件元件,并且其将链路层设备(适配器)连接到物理介质,例如光纤、铜线、以太网连接器等。此时,当出口数据从主机系统经由主适配器继续传输时,入口数据通过失效转移适配器被接收并且被写入主机存储器。因此,新入口数据正通过备用适配器被接收,已经存在于主适配器的入口缓冲器中的降到切换点的旧入口数据由主适配器的入口缓冲器到主机存储器之间的DMA传送,并且出口数据由主适配器传输。这种状态继续直到存在于入口缓冲器中的降到所确定的切换点的所有旧入口数据,从主适配器的入口缓冲器被排空至主机存储器。
一旦存在于入口缓冲器中的所有旧入口数据都被排空,备用适配器上的中断被启用,并且如果没有已经生成一个中断,则向主机系统生成中断。假设物理链路在主适配器上仍然是操作的(如果物理链路在主适配器上不可操作,则这可以被绕过),通过评估主适配器的完成计数,做出关于主适配器是否流动着出口数据的确定,其中增加的完成计数指示出口数据正在流动。如果出口数据被确定为正在流动并且出口侧的健康是良好的,则由主适配器和备用适配器对入口数据流和出口数据流的拆分处置可以继续,直到这样的时刻:主适配器再次被确定为接近失效,例如,主适配器的性能继续恶化,或者主适配器的失效发生。
可替代地,如果出口数据通过主适配器流动,则出口DMA事务可以在主适配器上暂停并且出口DMA队列中的当前位置可以被传达给备用适配器。在这种情况下,备用适配器上的出口功能被启用以开始将数据读入至它的本地出口缓冲器但尚不发送给备用适配器的PHY。主适配器的出口缓冲器然后通过将数据发送出去给PHY而被排空(这可以与暂停主机存储器与主适配器的出口缓冲器之间的DMA事务以及启用备用适配器上的出口功能的操作并行地执行)。备用适配器的出口PHY然后被启用,使得出口数据现在从主机存储器通过备用适配器流动。主机系统然后被通知:从主适配器到备用适配器的失效转移已经完成并且主适配器能够下线。
如果出口数据不通过主适配器流动,则出口DMA队列中关于存在于出口缓冲器中的未发送的数据的回溯偏移被导出。回溯偏移被传达给备用适配器并且被编程为出口DMA对列中的当前位置。随着出口DMA对列中的当前位置的成功编程,备用适配器上的出口功能然后被完全启用。此后,主机系统被通知:从主适配器到备用适配器的失效转移完成。
因此,运用说明性实施例的机制,当连接性失效错误发生在主适配器与交换结构中的交换机之间时,说明性实施例可以失效转移至次级备用适配器,并且将状态和数据从主适配器传送到备用适配器,而不是必须拆毁连接而由此丢失状态信息。因此,当连接性失效发生时,主适配器的有状态卸载引擎中的状态信息不会丢失。作为结果,除了当状态和数据正在从主适配器传送到次级适配器时主机系统IO被暂停的短暂时间之外,失效转移对用户空间中的用户进程是无缝的。
说明性实施例的机制通过提供从一个适配器到连接至同一交换机或者否则经由同一交换机可访问的另一适配器的失效转移,而不是如对于APM的情况那样被限制于仅有在同一适配器内从一个路径到另一路径的失效转移,来解决自动路径迁移(APM)的限制。然而,说明性实施例可以结合ARM来使用,其中例如,可以首先在主适配器内尝试APM机制,并且如果APM没有成功解决与错误相关联的问题,则可以使用用于检测和失效转移至另一适配器的说明性实施例的机制。
此外,运用说明性实施例的改进的机制,不仅仅是响应于检测到主适配器的即将发生的失效而启用从主适配器到备用适配器的失效转移,而且以使得通过主适配器的入口流量和出口流量的处理的任何被感知到的中断最小化的方式使其成为可能。这通过逐步将入口流量和出口流量从主适配器迁移到次级适配器来实现。此外,如果主适配器实际上没有失效,或者如果主适配器的性能没有继续恶化,则主适配器与失效转移适配器之间的入口流量和出口流量的拆分处置被允许继续。从外部视角来看,不存在由于从主适配器到次级适配器的失效转移而产生的被感知到的延迟时间。
关于从主适配器到次级或备用适配器的出口数据的重路由,应当理解,数据存在于主机存储器中的被映射到总线结构的DMA队列中。DMA缓冲器数据所位于的DMA空间可以是单个邻接的空间,来自该空间的每个个别条目经由指定的或规定的地址和大小而对适配器是已知的。可替代地,这可能是如下的情况,DMA功能在控制空间与DMA缓冲器空间之间被拆分,其中所映射的缓冲器在控制空间中的每个条目中(经由总线地址)被引用。因此,直接或间接经由总线映射或缓冲器映射,使得次级适配器知晓DMA缓冲器。出口流量从主机存储器中的DMA队列到适配器的出口缓冲器的路由,经由这些映射及总线机制而被实现。
关于从主适配器到次级或备用适配器的出口数据的重定向,这样的重定向通过在适配器的配置或失效转移准备操作的发起期间,在主适配器与次级适配器之间交换网络地址信息来实现。在关于入口业务流的失效转移操作的准备期间,次级适配器的PHY被编程为使用与主适配器相同的网络地址,使得入口流量经由标准网络路由实践及技术而被重新路由至次级或备用适配器。
本发明的说明性实施例的以上方面和优点将参考附图在此后被更详尽地描述。应当理解,附图仅意图为说明本发明的示例性实施例。本发明可以涵盖未在附图中明确示出但是鉴于说明性实施例的当前描述而对本领域的技术人员将是容易明显的方面、实施例、以及对所描绘的示例性实施例的修改。
如本领域的技术人员将理解的,本发明的各方面可以体现为一种系统、方法或计算机程序产品。因此,本发明的各方面可以采取如下的形式:完全硬件的实施例、完全软件的实施例(包括固件、常驻软件、微代码等)、或结合软件与硬件方面的实施例,它们在本文中都可以被概括地称为“电路”、“模块”或“系统”。此外,本发明的各方面可以采取计算机程序产品的形式,该计算机程序产品被体现于具有体现于其上的计算机可用程序代码的任何一个或多个计算机可读介质中。
可以使用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质是电子的、磁的、光的、电磁的、或半导体性质的、上述或等价的任意适当组合的系统、装置、或设备。计算机可读存储介质的更具体的示例(非详尽列表)将包括如下:具有存储能力的电子设备、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPPROM或闪存)、基于光纤的设备、只读光盘存储器(CDROM)、光存储设备、磁存储设备、或上述任意适当的组合。在本文的上下文中,计算机可读存储介质指任何有形的可以包含或存储程序的介质,该程序被或联合指令执行系统、装置、或设备使用。
在一些说明性实施例中,计算机可读介质是非瞬态计算机可读介质。非瞬态计算机可读介质是任何不是无实体信号或传导波例如纯信号或传导波本身的介质。非瞬态计算机可读介质可以使用信号和传导波,但不是信号或传导波本身。因此,例如,存储设备的多种形式,以及其他类型的系统、设备、或装置,它们以任意方式使用信号,诸如,例如来维持它们的状态,在本发明范围内可以被认为是非瞬态计算机可读介质。
计算机可读信号介质,在另一方面,可以包括其中体现了计算机可读程序代码的传播的数据信号,例如,在基带中或作为载波的一部分。这样的传播信号可以体现为任意多种形式,包括但不限于,电磁的、光的或其任意适当的组合。计算机可读信号介质可以是任意计算机可读介质,它们不是计算机可读存储介质并且可以通信、传播、或传输程序,该程序由指令执行系统、装置、或设备的使用或者联合指令执行系统、装置、或设备的使用。类似地,计算机可读存储介质是任何非计算机可读信号介质的计算机可读介质。
体现于计算机可读介质上的计算机代码可以使用任何合适的介质来传输,包括但不限于:无线、有线、光纤电缆、射频(RF)等,或它们的任意适当组合。
用于执行本发明的各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,包括:面向对象的编程语言,诸如JavaTM、SmalltalkTM、C++等;以及常规的过程化的编程语言,诸如“C”编程语言或类似的编程语言。程序代码可以整体地执行在用户的计算机上,部分地执行在用户的计算机上,作为独立的软件包,部分地执行在用户的计算机上并且部分地执行在远程计算机上,或整体地执行在远程计算机或服务器上。在后者的场景中,远程计算机可以通过任何类型网络被连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者连接可以向外部计算机做出(例如,使用互联网设备服务商通过互联网)。
下面参考根据本发明的说明性实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本发明的各方面。应当理解,流程图图示和/或框图中的每个框,以及流程图图示和/或框图中的框的组合,可以由计算机程序指令实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以制造一台机器,使得这些指令,经由计算机或其他可编程数据处理装置执行,而创建用于实现流程图和/或框图的框或多个框中指定的功能/动作的装置。
这些计算机程序指令也可以存储于计算机可读介质中,它们可以引导计算机、其他可编程数据处理装置、或设备以特定方式运行,使得存储在计算机可读介质中的指令产生一种制品,其包括实现流程图和/或框图的框或多个框中指定的功能/动作的指令。
计算机程序指令也可以被加载到计算机、其他可编程数据处理装置、或其他设备上,以促使一系列的操作步骤在计算机、其他可编程装置、或其他设备上被执行,以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的这些指令提供用于实现流程图和/或框图的框或多个框中指定的功能/动作的过程。
附图中的流程图和框图图示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这个方面,流程图或框图中的每个框可以表示代码的模块、分段、或部分,它包括用于实现指定逻辑功能的一个或多个可执行指令。应当注意,在一些可替换的实施方式中,框中所记录的功能可以不以图中所记录的顺序发生。例如,取决于所涉及的功能,以接连方式示出的两个框实际上可以基本上并发地被执行,或者有时这些框可以以相反的顺序执行。还将注意到,框图和/或流程图图示中的每个框,以及框图和/或流程图图示中的框的组合,可以由专用的基于硬件的执行指定功能或动作的系统,或者专用硬件和计算机指令的组合来实现。
因此,说明性实施例可以用于许多不同类型的数据处理环境中。为了向说明性实施例的具体元素和功能的描述提供上下文,此后图1和2被提供作为示例环境,在这些示例环境中,说明性实施例的各方面可以被实现。应当理解,图1和2仅仅是示例并且不意图为声明或暗示关于本发明方面或实施例可以被实现于其中的环境的任何限制。不偏离本发明的精神和范围,可以做出对所描绘的环境的许多修改。
图1描绘了示例分布式数据处理系统的图形表示,在该示例分布式数据处理系统中,说明性实施例的各方面可以被实施。分布式数据处理系统100可以包括说明性实施例的各方面可以实施在其中的计算机的网络。分布式数据处理系统100包含至少一个网络102,网络102是用来在分布式数据处理系统100内连接在一起的各种设备和计算机之间提供通信链路的媒介。网络102可以包括连接,诸如导线、无线通信链路、或光纤电缆。
在所描绘的示例中,服务器104和服务器106连同存储单元108而连接到网络102。此外,客户端110、112和114也连接到网络102。这些客户端110、112和114可以是,例如,个人计算机、网络计算机等。在所描绘的示例中,服务器104将数据(诸如引导文件、操作系统图像、和应用)提供给客户端110、112和114。在所描绘的示例中,客户端110、112和114是服务器104的客户端。分布式数据处理系统100可以包括另外的服务器、客户端、以及未示出的其他设备。
在所描绘的示例中,分布式数据处理系统100是互联网,并且网络102表示使用传输控制协议/互联网协议(TCP/IP)协议集来相互通信的网络和网关的全世界范围的集合。在互联网的核心处,是主结点或主机之间的高速数据通信线路的主干,包括路由数据和信息的数以千计的商业的、政府的、教育的和其他的计算机系统。当然,分布式数据处理系统100也可以实施为包括多个不同类型的网络,诸如例如,内部网、局域网(LAN)、广域网(WAN)等。如上面所陈述的,图1意图为作为一种示例,而不作为对本发明的不同实施例的架构限制,并且因此,图1中所示出的特殊元素不应该被认为关于本发明的说明性实施例可以被实施于其中的环境而言是限制性的。
图2是示例分布式数据处理系统的框图,在该示例分布式数据处理系统中,说明性实施例的各方面可以被实施。数据处理系统200是计算机的示例,诸如图1中的服务器104或客户端110,实施用于本发明的说明性实施例的过程的计算机可用代码或指令可以位于该计算机中。
在所描绘的示例中,数据处理系统200采用了中心架构,中心架构包括北桥和存储器控制器中心(NB/MCH)202以及南桥和输入/输出(I/O)控制器中心(SB/ICH)204。处理单元206、主存储器208和图形处理器210连接到NB/MCH 202。图形处理器210可以通过加速图形接口(AGP)连接到NB/MCH 202。
在所描绘的示例中,局域网(LAN)适配器212连接到SB/ICH 204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口和其他通信端口232、以及PCI/PCIe设备234通过总线238和总线240连接到SB/ICH 204。PCI/PCIe设备可以包括,例如,以太网适配器、插入卡(add-in card)、以及笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe不使用。ROM 224可以是,例如,闪速基本输入/输出系统(BIOS)。
HDD 226和CD-ROM驱动器230通过总线240连接到SB/ICH 204。HDD 226和CD-ROM驱动器230可以使用,例如,电子集成驱动器(IDE)或串行高级技术附件(SATA)接口。超级I/O(SIO)设备236可以连接到SB/ICH 204。
操作系统运行在处理单元206上。操作系统协调并且提供对图2中的数据处理系统200内的各种组件的控制。作为客户端,操作系统可以是商业上可得到的操作系统,诸如7。面向对象的编程系统,诸如JavaTM编程系统,可以结合操作系统运行,并且从执行在数据处理系统200上的JavaTM程序或应用向操作系统提供调用。
作为服务器,数据处理系统200可以是,例如,的eServerTMSystem计算机系统,运行高级交互执行体操作系统或操作系统。数据处理系统200可以是包括处理单元206中的多个处理器的对称多处理器(SMP)系统。可替代地,可以采用单处理器系统。
用于操作系统、面向对象的编程系统、以及应用或程序的指令位于存储设备(诸如HDD 226)上,并且可以被加载到主存储器208中用于由处理单元206的执行。用于本发明的说明性实施例的过程可以由使用计算机可用程序代码的处理单元206来执行,该计算机可用程序代码可以位于存储器(例如,主存储器208、ROM 224)中,或者例如位于一个或多个外围设备226和230中。
总线系统,诸如图2中所示出的总线238或总线240,可以包括一个或多个总线。当然,可以使用在附接至任何类型的通信结构或架构的不同组件或设备之间提供数据传送的该结构或架构来实施该总线系统。通信单元,诸如图2的调制解调器222或网络适配器212,可以包括一个或多个用于传输和接收数据的设备。存储器可以是,例如,主存储器208、ROM224、或者诸如在图2中的NB/MCH 202中所发现的缓存。
本领域的技术人员应当理解,图1和2中的硬件可以取决于实施方式而变化。其他内部硬件或外围设备,诸如闪存、等价的非易失性存储器、或光磁盘驱动器等,可以被使用于附加至或者取代图1和2中所描绘的硬件。此外,不偏离本发明的精神和范围,除了先前提及的SMP系统之外,说明性实施例的过程还可以被应用至多处理器数据处理系统。
此外,数据处理系统200可以采取多种不同的数据处理系统中任何一种数据处理系统的形式,包括客户端计算设备、服务器计算设备、平板计算机、膝上型计算机、电话或其他通信设备、个人数字助理(PDA)等。在一些说明性示例中,数据处理系统200可以是便携式计算设备,该便携式计算设备被配置具有闪存以提供用于存储例如操作系统文件和/或用户生成的数据的非易失性存储器。本质上,数据处理系统200可以是无架构限制的任何已知的或者以后开发的数据处理系统。
根据说明性实施例,图1中的一个或多个计算设备,例如服务器104、106或客户端110-114,包括实施如下的硬件/软件逻辑的网络适配器,该硬件/软件逻辑用于执行失效转移操作,失效转移操作用于在检测到主存储器的即将发生的失效的情况下,从主适配器到次级或备用适配器进行失效转移。此外,网络适配器进一步包括如下的硬件/软件逻辑,该硬件/软件逻辑用于准备次级或备用适配器,以用于在主适配器失效的事件中预备好处置主适配器的入口流量和出口流量。例如,根据说明性实施例,图2中的网络适配器212可以实际上包括多个网络适配器,其中这些适配器中的至少一个适配器是主适配器并且至少一个其他适配器是次级或备用适配器。这些主适配器以及次级或备用适配器的机制和操作将参考剩余附图在此后被描述。
图3图示了根据一个说明性实施例的包括主适配器以及次级或备用适配器的失效转移系统300的实施例。失效转移系统300可以包括计算机310,计算机310具有耦合至包括交换结构的网络360的主适配器320以及次级或备用适配器330。计算机310可以经由网络360连接到其他计算设备、存储设备等,网络360可以操作为任何类型的已知数据网络,例如,TCP/IP网络。也就是说,网络360可以包括局域网(LAN)、广域网(WAN)、城域网(MAN)、以及它们的组合,或者促进计算机之间的数据通信的任何其他大小或类型的网络的组合,例如,网络360可以是图1中的网络102。
如上面提及的,计算机310可以包括主适配器320以及次级或备用适配器330两者,并且可以进一步包括输入-输出(IO)总线365以及IO总线390。IO总线365和IO总线390可以是冗余的总线、初级和次级总线、并行的总线、或不同类型的具有独特的主要功能的总线。在一个说明性实施例中,IO总线365和IO总线390两者都连接到主适配器320和备用适配器330以促进失效转移。
应当注意,短语“备用适配器”在本文中被用于描述各适配器与用于失效转移目的的主适配器320的关系,但是这些适配器可以具有独特的主要功能,直到被请求接管主适配器320的功能。因此,失效转移可以在主适配器320与备用适配器330之间的计算机内进行,在该情况中,备用适配器330的主要功能可以被取代或中止,以利于备用适配器330的失效转移功能。在其他说明性实施例中,备用适配器330可以在空闲状态中等待直到这样的时刻:执行向备用适配器330的失效转移,或者至少是根据说明性实施例的失效转移的准备。本实施例仅包括两个备用适配器,然而,其他实施例可以在计算机310内包括任意数量的备用适配器。
主适配器320和备用适配器330可以是任何网络适配器、IO适配器等,并且可以包括以太网适配器、iSCSI适配器、光纤通道适配器等。因此,在一些实施例中,主适配器320和备用适配器330可以包括也被称为NIC(网络接口卡)的网络适配器。
在计算机310与网络360之间进行连接,这些网络适配器320、330可以经由网络360来传输(出口)和接收(入口)数据。为了提供不中断的网络服务,备用适配器330可以监测主适配器320的生命力,或者主适配器320可以执行其操作状态的自我监测,并且备用适配器330可以响应于检测到主适配器320的即将发生的失效,或者响应于接管主适配器320的角色的指令或其他指示,诸如由于预计的或者意外的维护事件而将禁用主适配器320的指示,而立即接替主适配器320。
根据说明性实施例,适配器320和330包括有状态卸载引擎,诸如TOE适配器(TCP/IP卸载引擎适配器)。更具体地说,TOE适配器可以卸载整个TCP/IP栈,其对于保留高性能网络(诸如10千兆以太网)的功效至关重要。主适配器320和备用适配器330每个都具有相关联的存储器325、335用于存储数据以用于促进这种卸载功能。在一些实施例中,将失效的主适配器320的主适配器存储器325拷贝到备用适配器330的备用适配器存储器335,可以通过保留TCP/IP栈和连接信息因此维持网络的完整性,来加快TCP/IP卸载适配器失效转移。
主适配器320可以经由IO总线365与第一计算机310的主机存储器312通信数据。在IO总线365失效的事件中,失效转移选项可以包括失效转移到不同IO总线390上的备用适配器330。在进一步的实施例中,失效转移可以发生在不同服务器(诸如失效转移服务器)上。换句话说,IO总线问题可以使得服务器不可用,在该情况下,软件可以自动开始使用备用服务器。例如,高性能系统可以向网络中失效情况下的接管提供在不同位置的具有所指配的功能的多个服务器,因此创建了可用于接管失效服务器的一些或全部职责的服务器的安全网络。例如,对具有两个分离服务器的网站的支持防止了用户检测到小故障,因为他们从主网站服务器被重定向至具有该网站的另一个执行的拷贝的备用服务器。关于属于适配器的失效转移,优选的设计可以向在同一服务器中并且在同一总线上的备用适配器提供失效转移,如此通过IO总线使用DMA。
根据说明性实施例,适配器320和330包括失效转移逻辑322、332以用于处置从主适配器(例如,适配器320)到次级或备用适配器(例如,330)的失效转移。失效转移逻辑322、332中的每个失效转移逻辑可以包括用于操作为主适配器和次级适配器的逻辑,使得当次级适配器接替主适配器并且因此成为新的主适配器时,它可以作为主适配器而不是次级或备用适配器继续用于后续失效转移的操作。
关于主适配器,失效转移逻辑322、332操作为检测主适配器的正在恶化的性能,以及响应于所检测的正在恶化的性能,发起次级或备用适配器对于失效转移操作的准备。用于检测主适配器的正在恶化的性能的具体机制可以取决于特定的所期望的实施方式而采取许多不同的形式。例如,对具有正在恶化的性能的主适配器上的链路健康、数据流速率、以及错误比特的监测,经由事件队列、中断等,而被通知给主机系统。
此外,关于主适配器而操作的失效转移逻辑322、332执行此后被描述的功能,以用于确定DMA队列中的切换或失效转移点、暂停主适配器的入口/出口流量的处置、排空适配器入口/出口缓冲器,以及用于促进入口/出口流量处置从主适配器到次级或备用适配器的无缝转换的其他操作。
关于备用适配器角色,失效转移逻辑322、322操作为准备好适配器上的本地资源以从主适配器接管入口/出口流量的处置。这些本地资源的准备可以包括:通过使用识别DMA队列323、329、333和/或339的信息(例如,主机存储器312中的适当DMA队列323、329、333和/或339的地址和长度),将本地缓冲器(例如,入口缓冲器334和出口缓冲器336)设置为与主适配器的本地缓冲器一致的状态。本地缓冲器324、326、334和336可以是本地存贮器,诸如例如先入先出(FIFO)队列,其被用作物理连接(PHY)与对应的DMA队列323、329、333或339之间的数据的中间保持位置。例如,对于入口数据流,数据分组由PHY 327或337接收并且被存储于对应的入口缓冲器324、334中。在稍后的某一时刻,通过执行DMA写入,该数据然后被传送给主机存储器312中对应的入口DMA队列323、333。这个数据在主机存储器312中的DMA队列323、333中的位置可以被直接(经由DMA队列中的位置)或间接(经由位于DMA队列中的一个条目内的缓冲器(总线)地址)引用。
失效转移逻辑322、332可以进一步操作为,当出口流量仍然由主适配器处置时开始入口流量的处置。主适配器(例如,适配器320)的失效转移逻辑322、332与次级或备用适配器(例如,适配器330)的失效转移逻辑322、332相结合地工作,以促进根据说明性实施例的失效转移操作或者入口/出口流量的拆分处置。作为结果,说明性实施例的机制提供了适配器状态信息到次级或备用适配器的透明传送,使得当主适配器丢失它与它的交换结构的连接性(即失效)时,主适配器中的状态不被丢失。总线的端到端交换能力被用于在协作的适配器之间交换替换的路径信息,以及当停机发生时的连接状态信息。作为结果,说明性实施例的机制克服了自动路径迁移的(APM)单个适配器的限制。
在计算系统的启动操作期间,或者响应于向已经正在运行的计算系统(例如,计算机310)添加适配器,主机计算系统软件(例如,适配器设备驱动器399等)识别耦合至网络360的同一交换机(例如,外围组件互连高速(PCIE)交换机)或者经由同一交换机可访问的主适配器320和次级适配器330。主机计算系统软件390将次级适配器330、380的路由标识符(例如,PCI路由ID(RID))和暂存器/邮箱的地址传达给主适配器固件,诸如经由直接存储器访问(DMA)操作。主适配器固件然后,诸如经由握手操作,将包含主适配器320的地址信息和暂存器/邮箱信息的消息发送给次级适配器330。
响应于来自主适配器320的消息,次级适配器330提供用于其控制的地址和如下的数据缓冲器,一旦失效转移或者用于失效转移的准备由主适配器320或者次级适配器330中的一个次级适配器发起,这些数据缓冲器被用作DMA目标。在这个阶段,主适配器320和次级适配器330两者都具有通过主机系统310或网络360的总线(例如,总线365和/或390)到达另一个适配器的路径,以及通过配置参数而被通知了它们的主级和次级的角色。
在正常操作期间,主适配器320继续服务于主机系统310与网络360之间的数据通信,并且在从主适配器320到网络360的交换结构的连接失效的情况下,次级适配器330继续作为备用或失效转移适配器。然而,如果在主适配器320的操作期间中的某个时刻检测到主适配器320的连接性的即将发生的失效,则准备操作和/或失效转移操作可以被执行,以准备好次级或备用适配器330以用于使用在设置操作期间所确定的适配器320、330之间所建立的通信路径,来执行从主适配器320到次级适配器330的失效转移。失效转移操作提供了从主适配器320到次级适配器330的无缝转换,而不丢失在主适配器320上所维护的状态信息。
关于检测主适配器320的即将发生的失效,可以通过检测例如主适配器320的连接性失效来检测这个即将发生的失效。可以借助于主适配器320通过物理链路丢失或者主适配器320的有状态卸载引擎(SOE)328中的超时而检测到交换机连接性的丢失来检测连接性失效。这个失效可能影响主适配器的多个物理端口或PHY 327,因为需要识别通过被耦合至同一交换机或经由同一交换机可访问的另一通信适配器的替换路径。
在其他说明性实施例中,可以通过监测主适配器的各种性能特性并且确定这些性能特性上的改变是否指示即将发生的失效,来检测主适配器320的即将发生的失效。例如,当与预定准则相比较时,如果性能特性指示性能特性不在正常操作的范围内,则可以确定主适配器320将失效。该性能特性可以是指示主适配器320处置通过主适配器320在一个或多个通信链路上的通信数据处理的能力的任何特性,例如,链路健康特性、数据流速率、错误比特、丢失的分组等。
可替换地,主适配器320的即将发生的失效可以由备用适配器330检测,备用适配器330的失效逻辑可以监测主适配器320的健康。这种监控再次地可以取决于实施方式而采取许多不同的形式。在一个说明性实施例中,由备用适配器330对主适配器320的监测可以通过适配器320、330之间所交换的心跳信号的方式。
响应于检测到主适配器320的即将发生的失效,主适配器320的失效逻辑322(其可以采用硬件、固件等来实施)通过总线IO总线365将发起失效转移的消息发送给次级适配器330。可替换地,DMA操作可以被执行,以将发起失效转移的值DMA至此时被动态设立的DMA消息收发队列(未示出)。在次级适配器330监测主适配器320的健康的实施例中,失效转移的发起可以由次级适配器330而不是主适配器320的失效转移逻辑332来做出。主适配器320的失效转移逻辑322等待来自次级适配器330的响应,指示次级适配器330接收到发起失效转移的消息并且具有通向交换机的能够被用于从主适配器320到次级适配器330的失效转移的链路。
响应于检测到主适配器320的即将发生的失效,以及向次级适配器330发送发起失效转移的消息,在次级适配器330上构建主适配器320的入口DMA队列323和出口DMA队列329的一致视图所需要的信息由主适配器320的失效转移逻辑322拷贝转移到次级适配器330。这在没有主机系统310(例如,主机系统310的操作系统)介入的情况下完成,并且使得次级适配器330知道如何设置其自己的资源(例如,本地缓冲器334、336)以及与主适配器320的状态形成镜像的状态。被拷贝转移的信息除了其他数据之外还可以包括:每个DMA队列323和329的地址和深度、服务质量(QoS)属性、状态/连接表、卸载选项、虚拟化选项和表、统计等。如上面所讨论地使用在网络适配器320、332的设置期间建立的网络地址和其他通信信息,主适配器320可以诸如经由DMA操作通过IO总线365将这个信息传送给次级适配器330。
应当注意,尽管图3为了描述的简单图示了适配器320和330与仅仅一个入口缓冲器、出口缓冲器、入口DMA队列和出口DMA队列相关联,但是每个适配器320、330可以具有多个入口/出口队列和缓冲器。此外,与适配器320、330相关联的队列和缓冲器的数目可以不必然以1:1方式互为镜像。例如,在一些实施方式中,可以有三个入口队列和五个出口队列,与强镜像要求相反,强镜像要求会要求对于特定示例而具有三个入口队列和三个出口队列,尽管这种强镜像要求也可以在不偏离说明性实施例的精神和范围的情况下被使用。简言之,不偏离说明性实施例的精神和范围,可以关于适配器320、330中的每个适配器使用任何数目的DMA队列和本地缓冲器。
被拷贝转移到次级适配器330的信息由次级适配器330的失效转移逻辑332用来设置:用于访问主机存储器312中的入口DMA队列323和出口DMA队列329的次级适配器的本地资源(例如,本地入口缓冲器334和出口缓冲器336)、以及用于接管主适配器320的操作的任何其他必要的资源。这些资源被配置为与主适配器320的资源形成镜像,使得次级适配器330上的资源使用类似的地址、深度、QoS参数等并且响应于通知主机系统310失效转移操作已经完成而能够替代主适配器320。
应当理解,DMA队列323、333、329和339在对应的适配器320、330的整个生命周期内都存在于主机存储器312中。因此,当配置次级适配器330中的本地资源时,新的DMA队列没有正在被创建或者旧的DMA队列正在被销毁。相反地,正在向次级适配器330通知如下的位置:在该位置处,次级适配器330可以访问与主适配器320相关联的已有DMA队列323、329。从适配器的视角来看,对这些DMA队列323、329的访问可以经由总线地址来执行,总线地址被转变为主机存储器地址。
适配器320、330的本地资源(例如,本地缓冲器或队列)与DMA队列323、329、333和339中对应的多个DMA队列相关联。这些本地资源(即本地入口缓冲器334和本地出口缓冲器336)是响应于信息从主适配器320到次级适配器330的拷贝转移而正在被设置(分配)和配置的资源。
次级适配器330上和主机系统312中的本地资源的设置和配置在没有被主机系统310(例如,在主机系统310上运行的操作系统)介入的情况下被执行。为了设置次级适配器330上的资源,次级适配器330的失效转移逻辑332通过拷贝转移到次级适配器330的信息进行迭代并且使用这个信息来构建次级适配器330的资源状态并且生成各种所需要的本地资源,例如,入口缓冲器334和出口缓冲器336。这本质上是,如果检测到主适配器320的实际失效发生或者主适配器320的性能的继续降低,次级适配器330接替主适配器320的准备。次级适配器320的这个准备允许响应于检测到主适配器320的即将发生的失效而在次级适配器330上尽可能快地启动各种功能。通过准备,次级适配器330的本地资源在实际必须使用它们作为失效转移操作的一部分之前被设置具有正确的状态和配置。
在拷贝转移了设置和配置本地资源(例如,次级适配器330的入口缓冲器334和出口缓冲器336)所需要的信息之后,主适配器320的失效转移逻辑322暂停或暂时地禁用入口流量,并且不再从物理端口或PHY 327接受数据进入口缓冲器324(例如,用于入口流量数据的先入先出(FIFO)缓冲器),并且不再将数据从入口缓冲器324经由DMA事务推送到主机存储器312。主适配器320上的这个暂停或暂时地禁用入口流量在没有主机系统310介入的情况下被执行。因为DMA操作正在被用于传送来自/去往适配器320、330的信息,存在这样的假设:DMA和IO总线365与失效转移的原因无关,因为入口缓冲器324与PHY 327之间的连接很有可能是主适配器320的失效的来源。执行入口流量数据分组暂停被写入主机存储器312,使得主适配器320的失效转移逻辑322能够计算入口DMA队列323中切换或失效转移位置,并且使得不会遭遇到入口缓冲器324的溢出并且数据不会由于溢出而丢失。可以通过在网络360上向耦合主适配器320和次级适配器330的交换机362传输暂停帧,由此通知交换机362禁用从交换机362到PHY 327的端口的入口流量,来完成对入口流量的实际暂停或暂时禁用。
主适配器320的失效转移逻辑322确定当前存储于入口缓冲器324中当尚未被写入主机存储器312的数据的大小,由此计算入口DMA队列323中的跳过位置。如上面提及的,假设DMA事务是可操作的并且因此入口缓冲器324中的数据不需要被拷贝转移到次级适配器的入口缓冲器334中。然而,如果DMA事务不是可操作的,则这样的拷贝可以被执行以便确保该数据在次级适配器330中是可用的。记着这个假设,有必要确定入口DMA队列323中多少个条目具有对应的数据已经存在于入口缓冲器324中,并且因此将很快经由DMA操作被写入主机存储器312中。具有数据存在于入口缓冲器324中的入口DMA队列323中条目的数量的计算,当与入口DMA队列323中的当前位置相加时将确定:在入口DMA队列333中的何处,次级适配器330将开始写入入口数据,而不是主适配器写入该入口数据。应当理解,在入口DMA队列323中可以存在相比在入口缓冲器324中可用的数据更多的条目,并且因此并非入口DMA队列323中的所有DMA都将必然地由主适配器320来服务,并且对于其而言数据不存在于入口缓冲器324中的一些DMA,可以替代地由次级适配器330来服务。次级适配器330在此将接管数据到主机存储器312的写入的入口DMA队列323中的位置在本文中被称为跳过位置,并且入口DMA队列323中的当前位置与跳过位置之间的条目是入口DMA队列323中被跳过的条目或被跳过的时隙(slot)。
主适配器320的失效转移逻辑322此后启用入口缓冲器324与主机存储器312之间的DMA事务而继续,由此排空入口缓冲器324中的剩余入口数据。DMA事务的这个继续的处理本质上消耗了入口DMA队列323中的被跳过条目或时隙。这再次是在没有来自主机系统310的介入下完成的,并且意图为尽可能最小化切换或失效转移的时间。也就是说,通过重新启用入口DMA处理,存在于主适配器320上的入口缓冲器324的数据如同什么也没有发生地被写入主机存储器312。这可以通过使失效转移逻辑322重新启用主适配器320的入口DMA引擎(未示出)来完成。
入口DMA队列323中的跳过位置的计算结果被传达给次级适配器330。次级适配器330使用入口DMA队列323中的跳过位置,以利用入口DMA队列333中的与该跳过位置相对应的当前条目或位置来对次级适配器330编程。主适配器320的失效转移逻辑322以及次级适配器330的失效转移逻辑332在没有主机系统310的介入下就此执行它们的功能,并且主机适配器320的失效转移逻辑322通过DMA操作的方式将所计算的跳过位置发送给次级适配器330,并且次级适配器330接收该跳过位置并且对其入口DMA引擎(未示出)的当前条目编程,所计算的跳过位置(主适配器320上一起始位置+主适配器的入口缓冲器中条目的数量)作为用于由次级适配器330将入口数据放置在入口DMA队列333中的当前起始位置。这是重要的,使得次级适配器330知道它在何处能够开始接收用于入口DMA队列333中的DMA操作的数据,使得当主适配器320排空其入口缓冲器324时次级适配器330不会覆写由主适配器320写入的数据。
次级适配器330的失效转移逻辑332然后启用其(多个)入口DMA引擎和PHY,但不启用由次级适配器330对主机系统310生成的中断。这可以通过次级适配器330的失效转移逻辑332启用其入口本地缓冲器334和端口/PHY 337,以及端口/PHY 337向网络360的交换机362发送取消暂停的帧来完成。
次级适配器330上的入口功能的启用被完成,因为对于入口流量的处理的失效转移而言合意的是:尽可能快地被执行,同时最小化适配器离线的时间。作为结果,被丢失并且需要由更上层级协议(例如,TCP重传)重传的数据的量也被最小化。因此,当主适配器320仍然正在排空其入口缓冲器324时,说明性实施例启动次级适配器330的入口功能。在次级适配器330中没有启用中断,因为在此时对于主机系统310处理来自次级适配器330的入口数据是不合需要的,直到主适配器320的入口缓冲器324被排空。这将避免如下的场景:当入口缓冲器324正在被排空时,数据来到次级适配器330,中断由次级适配器330生成,并且主机系统310处理数据直到入口缓冲器324仍然在排空其数据的点并且然后停止,因为它到达了无效的条目从而在次级适配器330上没有更多的数据被接收并且不再次生成中断。这种场景可能发生在一些实施方式中,而在其他实施方式中这种场景可能不会发生,因为如果适配器在其DMA队列中检测到未答复的条目,则适配器可以连续地生成中断。
正是在此时,入口数据在次级适配器330中被接收并且被写入主机存储器312。主适配器320的失效转移逻辑322确定主适配器320的入口缓冲器324是否已经排空了入口数据。如果没有,失效转移逻辑322等待直到遇到这样的条件。这可以通过监测入口缓冲器324以确定入口缓冲324是否为空来完成。
此后,当主适配器320的入口缓冲器324被排空时,次级适配器330上的中断被启用,并且如果没有已经生成一个中断,则中断由次级适配器330的失效转移逻辑332生成。正如适配器320和330的其他操作,这个操作在没有主机系统310的介入下被执行。这可以通过使主适配器320的失效转移逻辑322通知次级适配器330:主适配器320的入口缓冲器324被排空来完成。可替换地,次级适配器330监测入口DMA队列333中紧接在它自己的起始位置之前的入口DMA队列323条目,寻找用以指示其被填充的其状况比特。一旦确定主适配器320的入口缓冲器323被排空,次级适配器330启用接收中断并且如果需要则生成一个中断。此时,入口数据现在完全通过次级适配器330流动至主机系统310,而出口数据可以通过或者可以不通过主适配器320流动。
主适配器320的失效转移逻辑322通过评估由主适配器320维护的完成计数来确定出口数据是否正在流动。已完成的出口DMA事务的正在增加的计数指示出口数据仍然正在通过主适配器320流动。出口数据是否仍然正在通过主适配器320流动的确定,在此后被用于确定:是停留在操作的当前的拆分处置模式(其中出口数据由主适配器320处置并且入口数据由次级适配器330处置)还是完成从主适配器320到次级适配器330的失效转移从而主适配器320下线。这个确定可以通过使主适配器320的失效转移逻辑322监测主适配器320的出口完成队列和/或计数器(未示出)以确定它们是否正在稳定地增加来执行。
如果出口数据仍然正在通过主适配器320流动并且主适配器320的健康被确定为良好,例如,主适配器320的性能没有继续降低或者事实上正在改善,则拆分的处置模式中的操作可以继续,直到主适配器320不再处于良好的健康状态中。在做出这样的确定中,失效转移逻辑322可以定期地继续监测主适配器320的性能特性,并且确定性能特性是否甚至低于当发起失效转移操作准备时的性能特性的状态。如果是,则主适配器320的健康不是良好的并且拆分的处置模式可能需要退出。如果性能没有继续降低,或者开始改善,则拆分的处置模式可以被继续。
如果由失效转移逻辑322确定出口数据正在通过主适配器320流动,则出口DMA事务可以在主适配器320上暂停,即可以暂停从主机存储器312到出口缓冲器326的读取。如之后所讨论的,这个操作协同于主机系统310而被执行并且被用来解析主适配器320的出口DMA队列329中的位置,用于向次级适配器330的切换或失效转移。这可以通过失效转移逻辑322向主机系统310发送暂停帧以通知主机系统310停止发送数据并且禁用主适配器320的出口DMA引擎(未示出)来完成。
出口DMA队列329中的当前位置(被读入出口缓冲器326的最当前条目之后的下一条目)被传达给次级适配器330。这个当前位置由次级适配器330用于将该当前位置编程到次级适配器330出口DMA队列339中,作为出口DMA队列339的当前位置。
此后,次级适配器330上的出口功能被启用,以开始读入数据至出口缓冲器336但尚不将该数据发送给端口/PHY 337。这在没有主机系统310的交互下被完成,并且被执行以试图最小化从主适配器320到次级适配器330的转换,但仍然尝试允许对被发送给网络360的分组的排序。这能够通过如下操作来完成:启用次级适配器330的出口DMA引擎,从而当主适配器320正在完成来自其出口缓冲器326的数据的传输时,次级适配器330的出口DMA引擎能够开始从出口DMA队列339读入数据至出口缓冲器336。
主适配器320出口缓冲器326通过将数据发送给端口/PHY 327来排空其数据。主适配器320的失效转移逻辑322监测其出口缓冲器326,并且当出口缓冲器326的排空完成时,通过向事件队列(EQ)321递交完成事件来通知次级适配器330。这可以与上面描述用于暂停主适配器上的出口DMA事务、将出口DMA队列中的当前位置传达给次级适配器、以及启用次级适配器330的出口功能一起并行地完成。主适配器320在没有主机系统310与次级适配器330(充当在出口缓冲器326的排空完成时递交给事件队列321和事件队列331的完成事件的接收方)的交互的情况下执行这些操作。使次级适配器330开始在网络360上发送数据分组是不合需要的,直到出口缓冲器326中之前的数据已经被发送。
响应于接收到完成事件,次级适配器330的出口端口/PHY 337的功能然后由次级适配器330的失效转移逻辑332启用。次级适配器的失效转移逻辑332,诸如通过递交事件或者生成中断的方式,还通知主机系统310:它可以重新开始传输出口数据。此时,出口数据正从主机系统310通过次级适配器330流动。主机系统310然后被通知:失效转移操作通过由主适配器320的失效转移逻辑322通过向事件队列321递交对应的事件或生成中断而完成。
如果出口数据没有正通过主适配器320流动,则关于存储在出口缓冲器326中的未发送的数据来计算出口DMA队列329中的回溯偏移。也就是说,在主适配器320确定其出口功能不再取得进展的事件中,说明性实施例应对了如下的可能性:主适配器320已经将数据读入其用于出口DMA队列329的出口缓冲器326并且前进。有可能将数据从主适配器320出口队列326拷贝至次级适配器330的出口队列336,但是因为数据仍然存在于出口DMA队列329中并且未分发,所以主适配器320的失效转移逻辑322可以简单地计算回溯的起始位置,并且使次级适配器330从出口DMA队列339中的该位置开始其出口DMA事务。因此,主适配器320的失效转移逻辑322,通过评估有多少未发送的数据存在于主适配器320出口缓冲器326中,来确定出口DMA队列329中的如下位置:次级适配器330应当从该位置开始其出口DMA事务。这可以通过失效转移逻辑320确定已经将其对应的数据拷贝至出口缓冲器326中的DMA条目的数量来完成。该数量从出口DMA队列329中的当前位置被循环地(为了处置缠绕(wrap)情况)减掉,以确定新的回溯偏移。
回溯偏移然后被传达给次级适配器330的失效转移逻辑332,失效转移逻辑332使用这个回溯偏移来设置次级适配器330的出口DMA队列339中的当前位置。以这种方式,次级适配器330被通知了出口DMA队列329中的如下位置:当次级适配器330的出口功能被启用时,次级适配器330必须从该位置开始读入数据至其出口缓冲器336。次级适配器的出口功能然后由失效转移逻辑332启用。主机系统310然后被通知:从主适配器到次级适配器330的失效转移通过向事件队列321递交事件或者传输中断而完成。
因此,说明性实施例提供了用于准备好次级适配器以执行从主适配器到该次级适配器的失效转移操作的机制。该准备提高了失效转移操作被执行的速度并且减少了数据丢失的可能性。该准备允许次级适配器在失效转移操作完成之前开始处置入口流量,并且在一些情况下,如果在发起失效转移操作之后确定主适配器性能没有进一步地降低或者失效转移没有发生,则允许入口流量和出口流量的拆分处置。
图4A-4B图示了根据一个说明性实施例的概括了示例失效转移准备操作和失效转移操作的流程图。如图4A中所示出的,该操作开始于执行设置操作以在主适配器与次级适配器之间交换用于另一适配器的通信连接信息,例如网络地址,在这些地址处经由DMA等访问IO总线上的适配器(步骤410)。该操作然后监测主适配器(步骤415)以确定主适配器性能是否指示即将发生的失效(步骤420)。如果没有,则该操作返回步骤420并且继续监测主适配器性能。如果主适配器的性能指示了即将发生的失效,则失效转移准备操作被发起(步骤430)。
失效转移准备操作包括:将主适配器的信息拷贝转移至次级适配器,以在次级适配器上构建主适配器的入口和出口DMA队列的视图(步骤440)。所拷贝转移的信息然后由次级适配器用于设置其自己的本地入口缓冲器和出口缓冲器,以和主适配器的入口缓冲器和出口缓冲器具有一致的状态(例如,与主适配器相关联的DMA队列的地址/长度)(步骤450)。主适配器上的入口流量处理然后被暂停或者暂时地禁用(步骤460)。存储于入口缓冲器中但尚未被写入主机存储器的数据的大小被确定(步骤470),并且入口DMA队列中的跳过位置基于存储于入口缓冲器中的数据的大小而被计算(步骤480)。同时主适配器的入口缓冲器继续经由DMA事务排空入口数据至主机存储器(步骤490)。应当理解,尽管图4A图示了操作490在次序上先于操作500和510(之后所述),但是操作490可以与操作500和510并行地执行。
对于入口DMA队列的跳过位置被传达给次级适配器并且被用于对其自己的本地入口DMA队列的当前位置进行编程(步骤500)。次级适配器的入口功能然后在不启用中断的情况下被启用(步骤510)。
关于主适配器入口缓冲器是否被排空的确定然后被做出(步骤520)。如果不是,则主适配器等待直到入口缓冲器被排空并且返回步骤520。如果主适配器的入口缓冲器被排空,次级适配器上的中断被启用并且如果没有已经生成中断,则中断被生成(步骤530)。
现在转向图4B,主适配器然后确定出口数据当前是否正在通过主适配器流动(步骤540)。如果出口数据正在通过主适配器流动,则出口DMA事务被暂停(步骤550),并且出口DMA队列中的当前位置被传达给次级适配器(步骤560)。次级适配器的出口功能然后被启用,以开始读入数据至次级适配器的出口缓冲器当尚不在端口/PHY上发送(步骤570)。主适配器出口缓冲器通过在端口/PHY上发出数据而被排空(步骤580),并且一旦被排空,次级适配器的端口/PHY的出口功能被启用(步骤590)。主机系统然后被通知:失效转移操作完成(步骤600)。
如果出口数据当前没有正在通过主适配器流动(步骤540),则出口DMA队列中关于主适配器的出口缓冲器中存储的未发送数据的回溯偏移被计算(步骤610)。回溯偏移被传达给次级适配器,次级适配器使用该回溯偏移作为次级适配器的出口DMA队列的当前位置(步骤620)。次级适配器的出口功能然后在次级适配器上被启用(步骤630),并且主机系统被通知:失效转移操作完成(步骤600)。
如上面注意到的,应当理解,说明性实施例可以采取如下的形式:完全硬件的实施例、完全软件的实施例、或者包含软件和硬件元素的实施例。在一个示例实施例中,说明性实施例的机制被实施在软件或程序代码中,该软件或程序代码包括但不限于固件、常驻软件、微代码等。
适合用于存储和/或执行程序代码的数据处理系统将包括至少一个处理器,该至少一个处理器通过系统总线而直接或间接耦合至存储器元件。存储器元件能够包括程序代码实际执行期间使用的本地存储器、大容量存贮器、以及缓存存储器,缓存存储器提供了至少一些程序代码的暂时存储,以便减少执行期间必须从大容量存贮器取回代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指示设备等)能够直接或通过介于中间的I/O控制器而耦合至系统。网络适配器也可以耦合至系统,以使得数据处理系统能够通过介于中间的私人或公共网络而被耦合至其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器、以及以太网卡仅是网络适配器的几种当前可用类型。
本发明的描述仅被提出用于说明和描述的目的,并且不意图为穷尽或限制于所公开的形式中的本发明。许多修改和变化对于本领域的技术人员将是明显的。实施例被选择和描述,以便最好地解释本发明的原理、实际应用,并且使得本领域的其他技术人员能够针对具有适合于预期的特定使用的各种修改的各种实施例来理解本发明。

Claims (11)

1.一种用于执行从第一适配器到第二适配器的失效转移操作的方法,所述方法包括:
检测所述第一适配器的即将发生的失效是否有可能发生;
响应于检测到所述即将发生的失效,在所述第一适配器和所述第二适配器中发起失效转移准备操作,其中所述失效转移准备操作将所述第二适配器的入口缓冲器和出口缓冲器配置为能够替代所述第一适配器的入口缓冲器和出口缓冲器的配置;以及
在所述第一适配器的失效之前,将入口数据流量的处理迁移到所述第二适配器,使得所述第一适配器处理来自包括所述第一适配器和所述第二适配器的数据处理系统的出口数据流量并且所述第二适配器处理去往所述数据处理系统的入口数据流量。
2.根据权利要求1所述的方法,进一步包括:
在检测到所述第一适配器的所述即将发生的失效有可能发生之后,检测所述第一适配器的实际失效;以及
响应于检测到所述第一适配器的所述实际失效,将出口数据流量的处理从所述第一适配器迁移到所述第二适配器。
3.根据权利要求1所述的方法,其中发起所述失效转移准备操作包括:
将所述第一适配器的直接存储器访问DMA队列以及缓冲器配置和状态信息拷贝至所述第二适配器;以及
使用所述第一适配器的所述DMA队列以及缓冲器配置和状态信息,来配置所述第二适配器的DMA队列以及所述入口缓冲器和所述出口缓冲器。
4.根据权利要求1所述的方法,其中在所述第一适配器的失效之前,将入口数据流量的处理迁移到所述第二适配器包括:
暂停所述第一适配器上的入口数据流量处理;
计算当前存储于所述第一适配器的入口缓冲器中的数据的大小;
基于当前存储于所述第一适配器的所述入口缓冲器中的数据的所述大小,来计算与所述第一适配器相关联的入口直接存储器访问DMA队列中的跳过位置;以及
将所述跳过位置传达给所述第二适配器。
5.根据权利要求4所述的方法,其中在所述第一适配器的失效之前,将入口数据流量的处理迁移到所述第二适配器进一步包括:
重新启用所述第一适配器的所述入口缓冲器中的数据的处理;以及
处理所述第一适配器的所述入口缓冲器中的数据直至所计算的跳过位置,由此排空所述第一适配器的所述入口缓冲器。
6.根据权利要求5所述的方法,其中将所述入口数据流量的处理迁移到所述第二适配器进一步包括:
基于所述跳过位置,对所述第二适配器的入口DMA队列的入口DMA队列当前位置编程;以及
启用所述第二适配器上的入口数据流量的处理,其中所述第二适配器上的所述入口数据流量的处理开始于所述入口DMA队列当前位置。
7.根据权利要求6所述的方法,其中所述第二适配器上的所述入口数据流量的处理在不启用所述第二适配器上的中断的情况下被启用,并且其中响应于所述第一适配器的所述入口缓冲器变为空,中断在所述第二适配器上被启用。
8.根据权利要求7所述的方法,进一步包括:响应于启用所述第二适配器上的中断,启用所述第二适配器的入口缓冲器和入口物理端口。
9.根据权利要求1所述的方法,进一步包括:
响应于将所述入口数据流量的处理迁移到所述第二适配器,确定出口数据是否正通过所述第一适配器流动;以及
响应于出口数据流量不是正通过所述第一适配器流动的确定,将所述出口数据流量的处理从所述第一适配器迁移到所述第二适配器。
10.根据权利要求1所述的方法,进一步包括:
从当所述第一适配器的所述即将发生的失效被检测到时的性能状态,确定所述第一适配器的性能是否继续恶化;以及
响应于确定所述第一适配器的所述性能继续恶化:
暂停所述第一适配器上的出口DMA事务;
将所述第一适配器的出口DMA队列中的位置传达给所述第二适配器;
启用所述第二适配器的出口功能,以在所述第一适配器的所述出口DMA队列中的所述位置处开始读取数据;
排空所述第一适配器的所述出口DMA队列;以及
响应于排空所述第一适配器的所述出口DMA队列,启用所述第二适配器的出口数据流量处理。
11.一种用于执行从第一适配器到第二适配器的失效转移操作的系统,包括被适配为执行权利要求1到10中的任一项所述的方法步骤的装置。
CN201410681770.7A 2013-12-12 2014-11-24 用于执行失效转移操作的方法和系统 Active CN104714905B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/103,937 2013-12-12
US14/103,937 US9286171B2 (en) 2013-12-12 2013-12-12 Priming failover of stateful offload adapters

Publications (2)

Publication Number Publication Date
CN104714905A CN104714905A (zh) 2015-06-17
CN104714905B true CN104714905B (zh) 2017-08-04

Family

ID=53368577

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410681770.7A Active CN104714905B (zh) 2013-12-12 2014-11-24 用于执行失效转移操作的方法和系统

Country Status (2)

Country Link
US (2) US9286171B2 (zh)
CN (1) CN104714905B (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9286171B2 (en) * 2013-12-12 2016-03-15 International Business Machines Corporation Priming failover of stateful offload adapters
US9588854B2 (en) * 2014-02-28 2017-03-07 Aol Inc. Systems and methods for a secondary website with mirrored content for automatic failover
US9965367B2 (en) * 2014-12-17 2018-05-08 Quanta Computer Inc. Automatic hardware recovery system
US10341311B2 (en) 2015-07-20 2019-07-02 Schweitzer Engineering Laboratories, Inc. Communication device for implementing selective encryption in a software defined network
US9866483B2 (en) * 2015-07-20 2018-01-09 Schweitzer Engineering Laboratories, Inc. Routing of traffic in network through automatically generated and physically distinct communication paths
US10659314B2 (en) 2015-07-20 2020-05-19 Schweitzer Engineering Laboratories, Inc. Communication host profiles
US9923779B2 (en) 2015-07-20 2018-03-20 Schweitzer Engineering Laboratories, Inc. Configuration of a software defined network
US9686125B2 (en) 2015-07-20 2017-06-20 Schwetizer Engineering Laboratories, Inc. Network reliability assessment
US9900206B2 (en) 2015-07-20 2018-02-20 Schweitzer Engineering Laboratories, Inc. Communication device with persistent configuration and verification
US9769060B2 (en) 2015-07-20 2017-09-19 Schweitzer Engineering Laboratories, Inc. Simulating, visualizing, and searching traffic in a software defined network
WO2017019108A1 (en) 2015-07-30 2017-02-02 Hewlett Packard Enterprise Development Lp Firmware update of an interconnect device
US10863558B2 (en) 2016-03-30 2020-12-08 Schweitzer Engineering Laboratories, Inc. Communication device for implementing trusted relationships in a software defined network
CN106293509A (zh) * 2016-07-12 2017-01-04 乐视控股(北京)有限公司 数据存储方法及系统
CN106528328A (zh) * 2016-10-10 2017-03-22 乐视控股(北京)有限公司 基于分布式存储系统的数据恢复方法、装置及系统
US10164829B1 (en) * 2017-03-20 2018-12-25 Barefoot Networks, Inc. Incremental update of the data plane of a hardware forwarding element
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
JP2019009638A (ja) * 2017-06-26 2019-01-17 ルネサスエレクトロニクス株式会社 無線通信装置、システム及び方法
US10924331B2 (en) * 2018-01-05 2021-02-16 WeRide Corp. Controller area network communication system
US10785189B2 (en) 2018-03-01 2020-09-22 Schweitzer Engineering Laboratories, Inc. Selective port mirroring and in-band transport of network communications for inspection
TWI679861B (zh) 2018-09-06 2019-12-11 財團法人工業技術研究院 控制器、調整封包通信規則的方法及網路通信系統
US10754802B2 (en) * 2019-01-09 2020-08-25 Intel Corporation Dynamically remapping in-process data transfers
US11075908B2 (en) 2019-05-17 2021-07-27 Schweitzer Engineering Laboratories, Inc. Authentication in a software defined network
US10979309B2 (en) 2019-08-07 2021-04-13 Schweitzer Engineering Laboratories, Inc. Automated convergence of physical design and configuration of software defined network
US11228521B2 (en) 2019-11-04 2022-01-18 Schweitzer Engineering Laboratories, Inc. Systems and method for detecting failover capability of a network device
US11165685B2 (en) 2019-12-20 2021-11-02 Schweitzer Engineering Laboratories, Inc. Multipoint redundant network device path planning for programmable networks
US11157199B1 (en) * 2020-04-24 2021-10-26 International Business Machines Corporation Multi-mode address mapping management
US11431605B2 (en) 2020-12-16 2022-08-30 Schweitzer Engineering Laboratories, Inc. Communication system tester and related methods
US11418432B1 (en) 2021-04-22 2022-08-16 Schweitzer Engineering Laboratories, Inc. Automated communication flow discovery and configuration in a software defined network
US11575741B2 (en) 2021-04-29 2023-02-07 Zoom Video Communications, Inc. System and method for active-active standby in phone system management
US11785077B2 (en) 2021-04-29 2023-10-10 Zoom Video Communications, Inc. Active-active standby for real-time telephony traffic
US11336564B1 (en) 2021-09-01 2022-05-17 Schweitzer Engineering Laboratories, Inc. Detection of active hosts using parallel redundancy protocol in software defined networks
US11750502B2 (en) 2021-09-01 2023-09-05 Schweitzer Engineering Laboratories, Inc. Detection of in-band software defined network controllers using parallel redundancy protocol
US11838174B2 (en) 2022-02-24 2023-12-05 Schweitzer Engineering Laboratories, Inc. Multicast fast failover handling
US11848860B2 (en) 2022-02-24 2023-12-19 Schweitzer Engineering Laboratories, Inc. Multicast fast failover turnaround overlap handling

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1030653A (zh) * 1987-07-15 1989-01-25 富士通株式会社 热备用存贮器复制系统
CN1942862A (zh) * 2004-03-19 2007-04-04 “英特尔A/O”股份公司 故障转移和负载平衡

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6327243B1 (en) * 1998-08-03 2001-12-04 Samsung Electronics Co., Ltd. System and method for performing a seamless switchover from a primary packet router to a secondary packet router
US7275175B2 (en) * 2004-07-22 2007-09-25 International Business Machines Corporation Method and apparatus for high-speed network adapter failover
US8244825B2 (en) * 2006-11-06 2012-08-14 Hewlett-Packard Development Company, L.P. Remote direct memory access (RDMA) completion
US8305879B2 (en) 2007-03-30 2012-11-06 International Business Machines Corporation Peripheral component switch having automatic link failover
US7913106B2 (en) 2007-12-18 2011-03-22 International Business Machines Corporation Failover in a host concurrently supporting multiple virtual IP addresses across multiple adapters
US8006133B2 (en) 2008-02-14 2011-08-23 International Business Machines Corporation Non-disruptive I/O adapter diagnostic testing
US20100318666A1 (en) 2009-06-10 2010-12-16 International Business Machines Corporation Expediting adapter failover
US8677180B2 (en) * 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US8839044B2 (en) 2012-01-05 2014-09-16 International Business Machines Corporation Debugging of adapters with stateful offload connections
US8880935B2 (en) * 2012-06-12 2014-11-04 International Business Machines Corporation Redundancy and load balancing in remote direct memory access communications
US9286171B2 (en) * 2013-12-12 2016-03-15 International Business Machines Corporation Priming failover of stateful offload adapters

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1030653A (zh) * 1987-07-15 1989-01-25 富士通株式会社 热备用存贮器复制系统
CN1942862A (zh) * 2004-03-19 2007-04-04 “英特尔A/O”股份公司 故障转移和负载平衡

Also Published As

Publication number Publication date
US9286171B2 (en) 2016-03-15
US20150169416A1 (en) 2015-06-18
CN104714905A (zh) 2015-06-17
US20150169418A1 (en) 2015-06-18
US9442812B2 (en) 2016-09-13

Similar Documents

Publication Publication Date Title
CN104714905B (zh) 用于执行失效转移操作的方法和系统
US11397703B2 (en) Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
US11343198B2 (en) Reliable, out-of-order transmission of packets
US10917344B2 (en) Connectionless reliable transport
US10673772B2 (en) Connectionless transport service
US10044616B2 (en) Co-existence of routable and non-routable RDMA solutions on the same network interface
AU2019261814B2 (en) Networking technologies
US10901838B2 (en) Predictive caching for check word snooping in high performance ficon
US20070008989A1 (en) Packet processing
US9152483B2 (en) Network devices with multiple fully isolated and independently resettable direct memory access channels and methods thereof
US11902184B2 (en) Methods and systems for providing a virtualized NVMe over fabric service
US10375214B2 (en) Emulating FICON over IP
US11895027B2 (en) Methods and systems for service distribution using data path state replication and intermediate device mapping
US20170315864A1 (en) Hardware-assisted protection for synchronous input/output
US11593294B2 (en) Methods and systems for loosely coupled PCIe service proxy over an IP network
US11949589B2 (en) Methods and systems for service state replication using original data packets
EP3001322B1 (en) Network devices with multiple fully isolated and independently resetable direct memory access channels and methods thereof
CN106302234B (zh) 网络包传送方法、以太网控制器、高速缓存及系统

Legal Events

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