首页> 中国专利> 用于检验对请求的不可靠子系统响应的完整性的通信信道内插器、方法和程序产品

用于检验对请求的不可靠子系统响应的完整性的通信信道内插器、方法和程序产品

摘要

在耦合于多个重复子系统的通信信道中,提供了一种用于检验子系统响应的完整性的方法、内插器和程序产品。在所述通信信道内,在从响应于公共请求的第一子系统接收到第一响应的情况下计算第一校验和,并且为所接收到的响应于所述公共请求的、第二子系统的第二响应计算第二校验和。将所述第一校验和与所述第二校验和进行比较,并且如果匹配,则仅将所述第一响应和所述第二响应之一作为对所述公共请求的响应而从所述通信信道进行转发,并且由所述通信信道丢弃所述第一响应和所述第二响应中的另外一个。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-12-08

    未缴年费专利权终止 IPC(主分类):G06F11/16 授权公告日:20120808 终止日期:20161016 申请日:20061016

    专利权的终止

  • 2012-08-08

    授权

    授权

  • 2008-12-24

    实质审查的生效

    实质审查的生效

  • 2008-10-29

    公开

    公开

说明书

技术领域

本发明提供了一种用于检验子系统响应的完整性的方法、系统和计算机程序。

背景技术

在高可用性计算环境中,有时需要差错检测以便比较来自实现相同计算任务的两个独立重复子系统的响应。通常以相对简单的方式,通过锁步(lockstep)运行两个独立的子系统,或者更一般地,通过保证由两个子系统输出的应答具有相同的顺序来实现该目的。然而,在实现计算密集操作的多任务处理子系统的情况下,使用锁步方法来保证每个任务的完成顺序可能是有困难的。

因而,在此给出了一种方法来解决对两个独立子系统的输出(在与其顺序无关的情况下)进行比较的问题。

发明内容

提供了一种检验子系统响应的完整性的方法。该方法包括:在通信信道处从至少两个重复子系统的第一子系统接收第一响应,所述第一响应响应于被发送到所述至少两个重复子系统中每个子系统的公共请求,并且其中所述至少两个重复子系统向所述通信信道输出响应;在所述通信信道内确定所述第一子系统的第一响应的第一校验和;在所述通信信道处从响应于所述公共请求的所述至少两个重复子系统的第二子系统接收第二响应;确定所述至少两个重复子系统的第二子系统的第二响应的第二校验和;以及比较所述第一校验和与所述第二校验和,并且如果匹配,则仅将所述第一响应和所述第二响应之一作为对所述公共请求的响应而从所述通信信道进行转发。

文中所公开的解决方案一般涉及对来自响应于请求的不可靠子系统的无差错结果的传递,并且更具体而言,涉及一种依照优选实施例的通信信道内插器(interposer)、方法和程序产品,用于检验从耦合于通信信道的重复非无差错(non-error-free)子系统接收的对公共请求的响应的完整性。

在另一方面,提供了一种用于检验子系统响应的完整性的系统。该系统包括置于耦合于至少两个重复子系统的通信信道处的内插器。所述内插器包括输入调度器、校验和生成器、存储器、校验和检验器以及多路复用控制器。所述输入调度器将公共请求并行地提供给所述至少两个重复子系统。所述校验和生成器根据所接收的响应于所述公共请求的、所述至少两个重复子系统的第一子系统的第一响应来生成第一校验和,并且根据从所述至少两个重复子系统的第二子系统接收的响应于所述公共请求的第二响应来生成第二校验和。所述存储器临时存储所述第一校验和,直到接收到所述第二响应。所述校验和检验器比较所述第一校验和与所述第二校验和,并且如果匹配,则向所述多路复用控制器输出匹配控制信号。响应于来自所述校验和检验器的匹配控制信号输出,所述多路复用控制器仅将所述第一响应和所述第二响应之一作为对所述公共请求的响应而从所述通信信道行输出。

在又一方面,提供了计算机可读的至少一个程序存储设备,其有形地含有所述计算机可执行的指令的至少一个程序,以便实现检验子系统响应的完整性的方法。该方法包括:在通信信道处从至少两个重复子系统的第一子系统接收第一响应,所述第一响应响应于被发送到所述至少两个重复子系统中每个子系统的公共请求,并且其中所述至少两个重复子系统向所述通信信道输出响应;在所述通信信道内确定所述第一子系统的第一响应的第一校验和;在所述通信信道处从响应于所述公共请求的所述至少两个重复子系统的第二子系统接收第二响应;确定所述至少两个重复子系统的第二子系统的第二响应的第二校验和;以及比较所述第一校验和与所述第二校验和,并且如果匹配,则仅将所述第一响应和所述第二响应之一作为对所述公共请求的响应而从所述通信信道进行转发。

附图说明

现在将仅通过例子的方式并参照附图来描述本发明的实施例,其中:

图1是在其中主机经由通信信道耦合于非无差错系统的计算环境的简单示图;

图2依照本发明的一个实施例描绘了耦合至少两个重复子系统和主机,并且实现调度/交叉校验内插器的通信信道;

图3是依照本发明的一个实施例的内插器处理的流程图,其用于检验来自异步运行的至少两个并联的重复子系统的响应的完整性;

图4是依照本发明的可选实施例的内插器处理的流程图,其用于检验来自异步运行的三个并联的重复子系统的响应的完整性;以及

图5是依照本发明的可选实施例的具有调度/交叉校验内插器的通信信道的示意图。

具体实施方式

一般而言,文中所提供的是用于交叉校验来自实现相同任务(但不一定具有相同的完成顺序)的两个或更多的独立重复子系统的响应的通信信道实现的设施。在每个任务的平均处理时间明显大于独立子系统之间引入的延迟的情况下,例如,对于从几个时钟周期变化到若干时钟周期的延迟,该方法特别有利。如文中所使用的,术语“子系统”指的是以硬件、软件和/或固件实现的任何系统、逻辑、功能、处理块等,并且其提供对请求的响应。此外,“校验和”的意思是从来自多个独立子系统的子系统的结果输出而导出的任何校验和、签名、CRC值等。在所讨论的例子中,假设重复子系统是不可靠(即,非无差错)的子系统,也就是说,是可能对发生在输出响应中的软或瞬态差错敏感的子系统。很多市售子系统是对出现例如由于一个或多个α粒子对子系统的撞击(bombardment)而导致的这样的差错敏感的非无差错子系统(即,非差错校验系统)。

图1描绘了计算环境100的一个实施例,其中主计算机110通过通信信道或总线130耦合于单个非无差错系统120。在该环境中,如果在来自系统120的响应输出中发生瞬态差错,那么主机110就不能够辨别差错的存在。因而,这样的计算环境配置将不适于高可用性计算环境。

图2依照本发明的一个实施例描绘了计算环境200。在该实施例中,多个独立的重复(并且各自是非无差错)子系统220通过单个通信信道230向(例如,运行于主机210上的)外部应用提供数据。内插器240(例如通信适配器)被配备在通信信道内或与通信信道相关联,以便透明地检验对例如从主机210接收的请求的响应的完整性。可以将该请求作为公共请求而由内插器240内的输入路径控制逻辑245(连同请求操作标识符)并行地透明转发至每个独立的重复子系统220。数据源子系统220对相同的输入(即,请求)独立地作出反应。希望这两个或更多的重复子系统在没有差错的情况下根据相同的请求生成相同的响应或结果。请求操作标识符可以与用户的请求一起到达或者可以由内插器240透明地生成并与并行转发至重复子系统的公共请求相关联。此外,从用户接收的请求报头中的单个比特可以用来表示对请求的响应是否要经历如文中所公开的交叉校验。

每个输入请求都被假设从每个子系统生成了响应,并且将要通过完整性检验通信信道将每个响应的一个准确无差错副本传递至请求应用(即,请求方)。信道/内插器通过匹配请求操作标识符并且在校验和生成器250中计算第一响应的特征校验和,以及通过校验和检验器260来检验所有后续响应具有相同的校验和,从而识别对相同输入的响应是否是相同的。第一校验和可以临时存储在与内插器240关联的存储阵列255中。如果对相同输入请求的后续响应之间存在差别,那么内插器向外部应用指示差错条件(数据失配)。通过由校验和检验器260生成的控制信号,可以经由多路复用控制器280来发送该差错消息270,用于返回作为响应于主机210所生成的请求的输出。如果对相同请求的所有响应都相同,那么内插器通过将例如从第二响应子系统220接收的第二响应作为对从主机210接收的公共请求的响应进行输出来标识检验的成功完成。这可以通过在未决校验和检验的内插器内将第二响应缓冲于FIFO 290中来实现。在下面所描述的一个应用中,在生成对应于第一响应的第一校验和之后,丢弃来自第一响应子系统220的第一响应。因而,仅有一个来自两个或更多重复子系统的响应需要在未决对转发至请求方的响应的检验的内插器中被缓冲。所有其它的响应都可以被丢弃。

作为特殊的情况,内插器可以管理其中响应可以含有变化的请求,向请求应用返回唯一的响应。假设所有的响应都在相同的机制(即,子系统)上生成,那么响应应当在统计上等同,并且仅返回一个(随机选择),这在逻辑上等同于来自单个响应器的结果。

图3是依照本发明的一个实施例的由通信信道内插器实现的处理的流程图。调度器将相同的或公共请求(以及请求操作标识符)调度300到多个重复子系统310,在该例中,多个重复子系统310包括异步运行的两个独立的非无差错子系统。通信信道内的内插器320等待子系统输出325,并且当从子系统接收到响应(或输出)的时候,内插器确定子系统响应是否具有已从重复子系统之一接收到的匹配的操作标识符330。

假设这是对公共请求的第一响应,那么内插器计算第一响应的第一校验和335,并且将第一校验和以及该请求的操作标识符保存在临时存储器中340。然后丢弃作为子系统输出而接收的第一响应345,并且内插器返回到等待状态325。在从第二子系统310接收到第二响应的情况下,内插器确定第二响应是否具有已从重复子系统接收到的匹配的操作标识符330。如果这是第二响应,那么应答为“是”,并且通过初始计算第二响应的第二校验和350,以及然后经由保存在临时存储器中的操作标识符标识出第一校验和并且比较第一校验和与第二校验和355,内插器检验出校验和是相同的。假设存在失配360,那么将差错消息发送给发起当前操作标识符的请求的用户(或请求方)365。否则,仅将第二响应作为响应发送370给发起请求的用户375。

在可选的实现中,至少三个重复子系统可以与如文中所提出的完整性检验通信信道进行通信。在这样的实现中,一旦两个子系统提供了相同的响应,便把对公共请求的子系统响应发送给用户/请求方。在正常的操作中,来自最初两个子系统的响应将匹配,并且仅当第三子系统响应不同于最初两个子系统时,采用来自第三子系统的响应来发送警告。在来自最初两个子系统的输出失配的情况下,便在向用户发送对公共请求的响应之前,内插器等待第三响应(即,如果至少两个响应匹配),并且在失效的时候确定是哪个子系统。如果所有的子系统都输出不同的响应,那便遇到了严重的差错情况,其中三个子系统中的两个必然失效。取决于差错恢复方法,失效的子系统可以被脱机或被替换。

图4依照本发明的一个实施例描绘了该可选内插器的处理。在该实施例中,三个独立的子系统410是重复的,并且从调度器400并行地接收公共请求(以及操作标识符)。这些子系统耦合于公共的通信信道,在公共的通信信道中实现内插器420,用于检验从子系统接收到的响应的完整性。内插器420等待子系统输出或响应425。

当从一个子系统410收到第一响应时,内插器计算第一校验和430,并且确定该响应是否是具有相同操作标识符的第一、第二或第三响应/校验和435。假设这是第一校验和,那么内插器丢弃第一响应440并将第一校验和连同请求操作标识符(OpID)和子系统标识符(ID)保存在与内插器420关联的临时存储器中445。此后,在收到第二响应时,计算第二校验和430,并且内插器确定这是具有相同的请求操作标识符的第二响应/第二校验和435。在这种情况下,将具有相同操作标识符的第一和第二校验和进行比较450,并且如果比较匹配455,那么将第二响应子系统的子系统ID、请求操作标识符以及第二校验和保存在临时存储器中460,并且将第二响应作为对公共请求的响应输出465到请求用户470。一旦输出第二响应,内插器便返回到等待状态以便等待来自第三子系统410的第三响应。在收到第三响应时,计算第三校验和430,并且内插器确认这是具有相同的请求操作标识符的第三响应/第三校验和435。如果是的话,那么比较所有的校验和以确认所有的校验和都匹配475。假设校验和匹配,那么丢弃来自第三响应子系统的第三响应480,并且内插器返回等待下一子系统输出。

如果不是所有的校验和都匹配,那么内插器确定是否所有的校验和都失配485,并且如果是的话,则将以下差错消息发送给当前操作所标识的请求的用户490:独立重复子系统中的至少两个子系统失效。如果不是所有的校验和都失配,那么随失效子系统标识符一起发送警告492,并且内插器确定是否已经发送了对公共请求的响应494。如果是的话,那么丢弃第三响应子系统的第三响应496,否则,将第三响应作为响应输出给发起请求的用户465。

图5描绘了计算环境500的可选实施例,其中通信信道510包括内插器520,该内插器520透明地检验选自第一组重复的不可靠子系统530以及第二组重复的不可靠子系统540的响应的完整性。内插器520的操作类似于以上结合图2所描述的内插器240。如图所示,内插器520通过输入缓冲器525和输出缓冲器527与每个不可靠子系统530、540相耦合,并且通过输入缓冲器550和输出缓冲器552与一个或多个外部请求方(即,主机、用户或应用)相耦合。如图所示,通信信道570直接将可靠数据从可靠子系统A 560转发给始发请求方,而不经历任何完整性校验。通过定义,可靠数据的意思是数据已经经历了差错校验。

总而言之,诸如文中所描述的差错检测机制或内插器有利地检查响应并选择一个响应用于传递至请求应用。在通信信道内检验来自重复的非无差错子系统的独立生成的响应。第一接收到的响应用于计算代表校验和(representative checksum),其存储在信道的内部存储器或“响应内容(response contents)”队列中。该队列含有由请求唯一标识符(文中称为请求操作标识符)索引的、先前传递的响应的校验和。在计算了校验和之后,丢弃第一响应。当其它子系统将其独立生成的、异步到达的响应随后提交至信道时,信道检验每个校验和与第一响应的校验和匹配。具体而言,当第二响应被提交至信道的时候,其校验和匹配于响应内容队列中的第一校验和。如果检测到失配,那么通知请求方应用数据失配。由于目前为止还没有传递响应或数据,因此不需要进一步的动作。如果第二响应校验和匹配于第一校验和,那么假设数据是相同的,并且将第二响应作为对请求的响应传递至请求方应用。如果超过两个的数据子系统并行地耦合,那么直到已经检验了所有的响应才向请求方指示响应的可用性,即使第二响应被复制给应用。这可以通过延迟向请求方传递完整性确认直到检验了最后的响应来实现。

一旦已经检测到并且检验了最后的响应,便可以从校验和队列(即,内插器存储器)中移除与其对应的请求标识符和响应校验和,因为对于该请求来说不再期望任何响应。

在一个实施例中,该系统可以支持超时,如果任何子系统超时,则向请求方指示超时。

为了适应其中响应不是完全确定性的请求,信道可以将这样的请求类型识别为特殊情况,例如,通过使用请求报头比特。在这样的情况下,信道可以将第一响应传递至请求方应用,并且丢弃后续到达的响应。在这种情况下,由于不会向请求方通知所有的响应,因此响应的相对顺序变得相关。可选的实现是:对于信道,在检测到这样的请求时,仅向一个子系统提交该请求,并且使关联的应答或响应绕开内插器的差错校验设施。所提出的解决方案并不提供对这样的非确定性情况的差错检测。注意到,这样的非确定性响应的差错检测是应用级问题,并且可能在通信信道中是不可能检测的。

提供给外部应用的响应可以被认为是无差错的,而没有倍增传输要求(multiplying transfer requirements),这会是这样的情况,即如果外部设备将必须检验整个响应匹配。由于通过信道传递每个响应的至多一个副本,因此应用可以几乎与连接到单源易出错系统一样连接到文中所描述的无差错信道系统。仅有的差别是新的差错条件,“数据失配”,可能必须被添加到应用(以及视情况用于识别非确定性应用请求/响应的装置)。由于该差错还可以类似地被当作超时,因此比起例如将失配检测委托给外部应用来说,准备将应用连接到无差错信道与非无差错情况的区别要少得多。

注意到,所提出的系统并不要求重复子系统的同步(“交叉校验”)。重复子系统彼此完全独立地工作,不要求对非重复的情况进行改变。相比于非重复的情况(例如交叉校验将进行委托),除了将信道连接至每个重复子系统之外,通信信道不必提供附加服务。

由于通信信道与其内部队列中的响应相匹配,因此外部应用不必对从信道中检索的数据进行进一步的校验。这意味着现有应用可以继续在无修改的情况下用于新的、无差错信道环境,即使它们先前适于易出错信道。仅有的可观察到的差别将是缺少来自信道的错误数据,其由指示数据失配的异常进行替换。所有的较高级别的功能性,例如协议级差错校验,在本系统以及非重复的非无差错的实现中都是相同的。

依照一个实施例,本发明通过请求专用唯一标识符来标识对应于相同请求的响应。可以被复制到响应的这样的请求唯一标识符是现代通信系统的特征。因此,该要求并不引入附加开销。注意到,并不要求请求标识符是全局唯一的;仅有的要求是在由信道校验和存储器的深度所定义的时帧中不重新使用该标识符。(在足够大小的标识符的情况下,现代通信系统将满足该要求。)如果信道校验和队列可以保留n个最近遇到的请求,则不应当重新使用请求标识符,直到已经处理了m>>n个请求。如果将成功匹配的请求从校验和队列中移除,则该要求将放松,但是由于假设n相比于可能的唯一请求标识符的数目来说非常小,因此这样的变化不应当相当大地改变m>>n的要求。

由于在子系统之间共享通信信道,因此传到应用的数据(即,响应)以串行方式进入通信信道。(这对于共享信道来说并不是新的要求,因为对于共享信道来说必须在信道入口处处理响应方仲裁。)当将各个响应合并到相同的通信信道时,所提出的解决方案允许校验和生成和检验模块以严格串行化的方式操作,其中响应具有明确的到达顺序用于所希望的校验。(注意到,由于串行化,到达顺序是唯一的,但不一定是确定性的。)这样的串行化处理比试图在完全独立的并行响应信道中的请求之间检测失配更易于实现。一旦响应数据已经进入信道,优选地,便不存在同步问题的可能性。

为了适应其中响应不是确定性的请求,信道准许应用或子系统指示非可复制响应。例子将是涉及随机性的算法,或者其中希望非协作子系统对相同的响应生成不同响应的其它情况。这样的非可复制应答被处理而没有校正(至请求方应用,它们表现为它们处于非无差错系统中),但其完整性不被保证。

由于响应内容通过校验和而彼此匹配,因此仅要求有限量的附加信道存储,其由最大未完成请求数来定义。中间存储要求与总的请求大小(以及因此的信道带宽)无关,而仅取决于校验和的大小、未完成的请求数以及开销。通过校验和匹配响应是对这样的解决方案的改进,即在该解决方案中,两个响应都被读取并在信道设备的并行路径中进行匹配,其中信道要求取决于总的请求大小。相比于这种情况,实现所公开的解决方案的系统具有这样的优点,即最坏情况下中间存储要求是固定的。

根据在计算机或计算机网络上执行的程序过程部分讨论了以上所提供的详细描述。这些过程描述和表示由本领域的技术人员用来将其工作的实质最有效地传达给本领域的其它技术人员。它们可以以硬件或软件,或者二者的结合来实现。

在此并且通常将过程理解成是导致所期望的结果的步骤序列。这些步骤是要求对物理量的物理操作的步骤。通常,尽管不是必须的,这些量采用能够被存储、传送、组合、比较以及其它方式操纵的形式的电或磁信号。这往往证明是方便的(主要是由于公共使用的原因),即,将这些信号指代为比特、值、元素、符号、字符、术语、数字、对象、属性等。然而,应当注意到,所有这些以及类似的术语都将与适当的物理量相关联并且仅仅是应用于这些量的方便的标记。

该方法可以在诸如主计算机、个人计算机等的任何一般的计算机上执行,并且依照从诸如C++、JavaTM、Fortran等的任何编程语言所生成的一个或多个程序模块或对象,或者一个或多个程序模块或对象的一部分。并且进一步地,每个步骤,或者实现每个步骤的文件或对象等,均可以通过被设计用于该目的的专用硬件或电路模块来执行。(Java和所有基于Java的商标都是Sun Microsystems公司在美国、其它国家或二者的商标。)

在文中所描绘的示图的情况下,其是通过例子的方式来提供的。在不背离本发明的精神的情况下,这些示图或文中所描述的步骤(或操作)可以存在变化。例如,在特定的情况下,可以以不同的顺序实现这些步骤,或者可以添加、删除或修改这些步骤。所有这些变化都被认为包括如所附权利要求中所陈述的本发明的部分。

优选地以高级过程或面向对象的编程语言来实现本发明以便与计算机进行通信。然而,如果需要的话,可以以汇编或机器语言来实现本发明。在任何情况下,语言都可以是编译或解释语言。

本发明可以作为一种包括记录介质的机制或计算机程序产品来实现。这样的机制或计算机程序产品可以包括,但不限于CD-ROMs、磁盘、磁带、硬盘驱动器、计算机RAM或ROM和/或电、磁、光、生物或其它类似的程序实施例。实际上,该机制或计算机程序产品可以包括任何固态或流体传输介质、磁的或光的,等等,用于存储或传输机器可读的信号,以便根据本发明的方法控制通用或专用可编程计算机的操作和/或依照本发明的系统来构造其组件。

本发明还可以在系统中实现。该系统可以包括计算机,该计算机包括处理器和存储设备,并且视情况包括存储设备、诸如视频显示器的输出设备和/或诸如键盘或计算机鼠标的输入设备。此外,该系统可以包括互连的计算机网络。计算机等同地可以是独立形式(例如常规的台式个人计算机)或被集成到另一装置中(例如电子测试装备)。该系统可以被专门构造用于所要求的目的,以便实现例如本发明的方法步骤,或者其可以包括依照计算机中存储的文中的教导由计算机程序选择性激活或重新配置的一个或多个通用计算机。文中所提供的过程并不在本质上与特定计算机系统或其它装置相关。各种这样的系统所要求的结构将出现于所给出的描述中。

再者,本发明的一个或多个方面的能力可以以软件、固件、硬件或其组合来实现。

可以在具有例如计算机可用介质的制品(例如,一个或多个计算机程序产品)中包括本发明的一个或多个方面。举例来说,该介质中具有计算机可读程序代码装置或逻辑(例如,指令、代码、命令等),以便提供和促进本发明的能力。该制品可以被包括为计算机系统的一部分或单独出售。

另外,可以提供机器可读的至少一个程序存储设备,其含有该机器可执行的指令的至少一个程序,以便实现本发明的能力。

文中所描绘的流程图仅仅是示例。在不背离本发明的精神的情况下,这些示图或其中所描述的步骤(或操作)可以存在多种变化。例如,可以以不同的顺序实现这些步骤,或者可以添加、删除或修改这些步骤。所有这些变化都被认为是所请求保护的发明的一部分。

尽管文中已经详细描绘和描述了优选实施例,然而对相关领域的技术人员将会显而易见的是,在不背离本发明的精神的情况下,可以进行各种修改、添加、替换,等等,并且因此将其认为属于如以下权利要求所限定的本发明的范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号