(57)【特許請求の範囲】
【請求項１】
ネットワークに接続され、同一のアドレス空間を有する共有メモリを備えた第１および第２のコンピュータから構成され、特定の通信のパケットに対して前記第１および第２のコンピュータのパケット通信順序及びその内容を揃えるプロトコル二重化装置において、
処理されるべきパケットを処理順序に格納する待ち行列手段と、前記ネットワークからのパケットの受信に伴って実行されるプロトコル処理手段と、該プロトコル処理手段により実行されたパケットを一時的に格納する一時的待ち行列手段と、二重化する対象の通信に用いられるパケットを格納する仮想待ち行列手段と、を前記第１および第２のコンピュータにそれぞれ備えたことを特徴とするプロトコル二重化装置。
【請求項２】
前記プロトコル処理手段は、前記待ち行列手段からのパケットを順次取り込み、該取り込まれたパケットが二重化する対象のパケットか否かを判断するパケット取り込み手段と、前記パケットのプロトコル処理を行う通信処理手段と、該通信処理手段により処理されたパケットを前記一時的待ち行列手段に出力するパケット出力処理手段と、を備え、
前記第１のコンピュータにおいて前記待ち行列手段に格納されたパケットを前記パケット取り込み手段により順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットでない場合、前記パケットを前記通信処理手段によりプロトコル処理をして前記パケット出力処理手段により前記一時的待ち行列手段に出力することを特徴とする請求項１に記載のプロトコル二重化装置。
【請求項３】
前記待ち行列手段に格納されたパケットを前記パケット取り込み手段により順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、前記パケットを前記通信処理手段によりプロトコル処理すると共に、前記仮想待ち行列手段に前記パケットを格納することを特徴とする請求項１又は２に記載のプロトコル二重化装置。
【請求項４】
前記第２のコンピュータにおいて前記待ち行列手段に格納されたパケットを前記パケット取り込み手段により順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、該対象のパケットを捨て、前記仮想待ち行列手段の先頭のパケットを前記通信処理手段に渡すことを特徴とする請求項１に記載のプロトコル二重化装置。
【請求項５】
前記第２のコンピュータにおいて前記待ち行列手段に格納されたパケットを前記パケット取り込み手段により順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、該対象のパケットと前記仮想待ち行列手段の先頭のパケットを比較し、比較の結果一致した場合のみ前記対象のパケットを捨て、前記先頭のパケットを前記通信処理手段に渡すことを特徴とする請求項１に記載のプロトコル二重化装置。
【請求項６】
ネットワークに接続され、同一のアドレス空間を有する共有メモリを備えた第１および第２のコンピュータから構成され、特定の通信のパケットに対して前記第１および第２のコンピュータのパケット通信順序及びその内容を揃えるプロトコル二重化方法において、
処理されるべきパケットを処理順序に格納する待ち行列ステップと、前記ネットワークからのパケットの受信に伴って実行されるプロトコル処理ステップと、該プロトコル処理ステップにより実行されたパケットを一時的に格納する一時的待ち行列ステップと、二重化する対象の通信に用いられるパケットを格納する仮想待ち行列ステップと、を前記第１および第２のコンピュータにそれぞれ備えたことを特徴とするプロトコル二重化方法。
【請求項７】
前記プロトコル処理ステップは、前記待ち行列ステップからのパケットを順次取り込み、該取り込まれたパケットが二重化する対象のパケットか否かを判断するパケット取り込みステップと、前記パケットのプロトコル処理を行う通信処理ステップと、該通信処理ステップにより処理されたパケットを前記一時的待ち行列ステップに出力するパケット出力処理ステップと、を備え、
前記第１のコンピュータにおいて前記待ち行列ステップに格納されたパケットを前記パケット取り込みステップにより順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットでない場合、前記パケットを前記通信処理ステップによりプロトコル処理をして前記パケット出力処理ステップにより前記一時的待ち行列ステップに出力することを特徴とする請求項６に記載のプロトコル二重化方法。
【請求項８】
前記待ち行列ステップに格納されたパケットを前記パケット取り込みステップにより順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、前記パケットを前記通信処理ステップによりプロトコル処理すると共に、前記仮想待ち行列ステップに前記パケットを格納することを特徴とする請求項６又は７に記載のプロトコル二重化方法。
【請求項９】
前記第２のコンピュータにおいて前記待ち行列ステップに格納されたパケットを前記パケット取り込みステップにより順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、該対象のパケットを捨て、前記仮想待ち行列ステップの先頭のパケットを前記通信処理ステップに渡すことを特徴とする請求項６に記載のプロトコル二重化方法。
【請求項１０】
前記第２のコンピュータにおいて前記待ち行列ステップに格納されたパケットを前記パケット取り込みステップにより順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、該対象のパケットと前記仮想待ち行列ステップの先頭のパケットを比較し、比較の結果一致した場合のみ前記対象のパケットを捨て、前記先頭のパケットを前記通信処理ステップに渡すことを特徴とする請求項６に記載のプロトコル二重化方法。
【発明の詳細な説明】
技術分野
本発明は、概して二重化したコンピュータシステムに関し、さらに詳細には、二重化したコンピュータシステムにおけるプロトコルを二重化する技術に関する。
背景技術
従来よりネットワークに接続した２台のコンピュータを二重化して使用するシステム構成方法がある。しかし、このような構成で、同じ通信先から送られてくるパケットを前記２台のコンピュータで受信しても、２台のコンピュータが受信するパケットの順番は必ずしも同じになるとは限らない。受信さえできればよく、受信の順序を問わないような用途ならば問題ないが、パケットを受信する順序が問題となるような用途には、単にハードウェアを二重化するだけでは不十分である。
本発明は、この点に鑑みてなされたものであり、二重化したコンピュータシステムにおいて特定の通信対象に対しては２台のコンピュータのパケットの通信順序及びその内容が同じになるようにプロトコルを二重化する方法、およびこのようにプロトコルを二重化した二重化コンピュータシステムを提供することを目的とする。
発明の開示
請求項１記載の発明は、ネットワークに接続され、同一のアドレス空間を有する共有メモリを備えた第１および第２のコンピュータから構成され、特定の通信のパケットに対して前記第１および第２のコンピュータのパケット通信順序及びその内容を揃えるプロトコル二重化装置において、
処理されるべきパケットを処理順序に格納する待ち行列手段と、前記ネットワークからのパケットの受信に伴って実行されるプロトコル処理手段と、該プロトコル処理手段により実行されたパケットを一時的に格納する一時的待ち行列手段と、二重化する対象の通信に用いられるパケットを格納する仮想待ち行列手段と、を前記第１および第２のコンピュータにそれぞれ備えたことを特徴とする。
請求項２記載の発明は、前記プロトコル処理手段は、前記待ち行列手段からのパケットを順次取り込み、該取り込まれたパケットが二重化する対象のパケットか否かを判断するパケット取り込み手段と、前記パケットのプロトコル処理を行う通信処理手段と、該通信処理手段により処理されたパケットを前記一時的待ち行列手段に出力するパケット出力処理手段と、を備え、前記第１のコンピュータにおいて前記待ち行列手段に格納されたパケットを前記パケット取り込み手段により順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットでない場合、前記パケットを前記通信処理手段によりプロトコル処理をして前記パケット出力処理手段により前記一時的待ち行列手段に出力することを特徴とする。
請求項３記載の発明は、前記待ち行列手段に格納されたパケットを前記パケット取り込み手段により順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、前記パケットを前記通信処理手段によりプロトコル処理すると共に、前記仮想待ち行列手段に前記パケットを格納することを特徴とする。
請求項４記載の発明は、前記第２のコンピュータにおいて前記待ち行列手段に格納されたパケットを前記パケット取り込み手段により順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、該対象のパケットを捨て、前記仮想待ち行列手段の先頭のパケットを前記通信処理手段に渡すことを特徴とする。
請求項５記載の発明は、前記第２のコンピュータにおいて前記待ち行列手段に格納されたパケットを前記パケット取り込み手段により順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、該対象のパケットと前記仮想待ち行列手段の先頭のパケットを比較し、比較の結果一致した場合のみ前記対象のパケットを捨て、前記先頭のパケットを前記通信処理手段に渡すことを特徴とする。
請求項６記載の発明は、ネットワークに接続され、同一のアドレス空間を有する共有メモリを備えた第１および第２のコンピュータから構成され、特定の通信のパケットに対して前記第１および第２のコンピュータのパケット通信順序及びその内容を揃えるプロトコル二重化方法において、処理されるべきパケットを処理順序に格納する待ち行列ステップと、前記ネットワークからのパケットの受信に伴って実行されるプロトコル処理ステップと、該プロトコル処理ステップにより実行されたパケットを一時的に格納する一時的待ち行列ステップと、二重化する対象の通信に用いられるパケットを格納する仮想待ち行列ステップと、を前記第１および第２のコンピュータにそれぞれ備えたことを特徴とする。
請求項７記載の発明は、前記プロトコル処理ステップは、前記待ち行列ステップからのパケットを順次取り込み、該取り込まれたパケットが二重化する対象のパケットか否かを判断するパケット取り込みステップと、前記パケットのプロトコル処理を行う通信処理ステップと、該通信処理ステップにより処理されたパケットを前記一時的待ち行列ステップに出力するパケット出力処理ステップと、を備え、前記第１のコンピュータにおいて前記待ち行列ステップに格納されたパケットを前記パケット取り込みステップにより順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットでない場合、前記パケットを前記通信処理ステップによりプロトコル処理をして前記パケット出力処理ステップにより前記一時的待ち行列ステップに出力することを特徴とする。
請求項８記載の発明は、前記待ち行列ステップに格納されたパケットを前記パケット取り込みステップにより順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、前記パケットを前記通信処理ステップによりプロトコル処理すると共に、前記仮想待ち行列ステップに前記パケットを格納することを特徴とする。
請求項９記載の発明は、前記第２のコンピュータにおいて前記待ち行列ステップに格納されたパケットを前記パケット取り込みステップにより順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、該対象のパケットを捨て、前記仮想待ち行列ステップの先頭のパケットを前記通信処理ステップに渡すことを特徴とする。
請求項１０記載の発明は、前記第２のコンピュータにおいて前記待ち行列ステップに格納されたパケットを前記パケット取り込みステップにより順次取り込み、二重化する対象のパケットか否かを判断し、対象のパケットである場合、該対象のパケットと前記仮想待ち行列ステップの先頭のパケットを比較し、比較の結果一致した場合のみ前記対象のパケットを捨て、前記先頭のパケットを前記通信処理ステップに渡すことを特徴とする。
発明を実施するための最良の形態
図１は、本発明によるプロトコルの二重化方法を適用できる二重化コンピュータシステムの説明に必要な部分のみを示した概略ブロック図である。図１において、二重化コンピュータシステム１は、ネットワークに接続された２台のコンピュータ１０および２０からなる。
コンピュータ１０および２０は、用途に応じて、互いに構造が同じでも異なっていても良い。但し、両方のコンピュータ１０および２０に必要な要素は共通なので、以降、「コンピュータ１０、２０」のように両コンピュータを表し、一方のみを説明する。コンピュータ１０、２０は、図示しないＣＰＵ（中央処理装置）およびメモリを含む制御部１１、２１；ネットワークとのインタフェースをとるＮＩＣ（ネットワーク・インタフェース・カード）１２、２２；コンピュータ１０、２０間の通信に用いる共有メモリ１３、２３を備えたものであれば、如何なるものでも良い。
両コンピュータ１０、２０がネットワークから同一のコンピュータとして見えるように、それぞれのＮＩＣ１２及び２２には、同一のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスＡｍａｃを付ける。共有メモリ１３、２３は、コンピュータ１０、２０間で、二重化の対象となる通信のプロトコル処理をするパケットの待ち行列を共有するために設けたデュアルポートＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、それぞれのコンピュータで同一のアドレス空間（「共有メモリ空間」と称する）に設けたメモリである。共有メモリ１３、２３は、一方のコンピュータ１０又は２０が共有メモリ空間にデータを書き込むと共有メモリ１３及び２３の両方に同じデータがほぼ同時に書き込まれるように構成される。
次に、二重化コンピュータシステム１の動作を説明する。本発明のプロトコルの二重化とは、一方のコンピュータのパケットの通信順序及びその内容を他方のコンピュータのパケット通信順に強制的にそろえることである。以下において、都合上、コンピュータ１０におけるパケットのプロトコル処理順序にコンピュータ２０のパケット処理順序を合わせるようにする場合について説明する。このような意味から、便宜上、コンピュータ１０を主コンピュータ、コンピュータ２０を２次コンピュータと称する。
図２は、本発明によるプロトコルの二重化の原理を説明するための図である。図２において、１００および２００は、コンピュータ１０および２０において、例えばネットワークからのパケットの受信に伴って実行されるプロトコル処理を示す。このプロトコルは、コンピュータシステム１の用途に応じた適切なものであれば、例えば、ＴＣＰ（Ｔｒａｎｓｆｅｒ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）など何でも良いが、詳細に後述するように、標準的なプロトコルの一部を改良したものである。３０および４０は、プロトコル処理１００および２００により処理されるべきパケットを処理順に格納する待ち行列である。３２および４２は、既にプロトコル処理１００および２００が為されたパケットを一時的に格納する待ち行列である。前記のように、共有メモリ１３および２３は常に内容が同じになるように記憶されるので図２には１つのみ図示した。それぞれの共有メモリ１３および２３には、本発明によりプロトコル処理の二重化をする対象の通信に用いられるパケットのみを格納するもう１つの待ち行列（仮想待ち行列）５０が作られる。
実際の動作では、まず主サーバ１０側のプロトコル処理では、待ち行列３０からのＱ（Ｑは待ち行列の意味で使用した）取り込み処理１１０において、取り込んだパケットが本発明のプロトコルの二重化を行うべき通信（対象とする通信）で用いられるパケット（「対象のパケット」と称する）かどうかを判断する。このため、例えば、二重化コンピュータシステム１がネットワークから受信し、プロトコルとしてＴＣＰを用いる場合を想定すると、例えば、パケットに含まれる発信元ＭＡＣアドレス、発信元ＩＰアドレス及び発信元ポートアドレスによって対象のパケットかどうかを判断することができる。
なお、対象のパケットかどうかの判断に用いる情報（フィルタ情報）は、前述の発信元ＭＡＣアドレス、発信元ＩＰアドレス及び発信元ポートアドレスに限る必要はなく、パケットに含まれる情報でパケットの識別に利用できる情報であれば、如何なる情報を用いて判断しても良い。また、本発明のプロトコルの二重化を行うべき通信は、システム１の用途に応じて限られることが予想されるので、対象の通信またはパケットの識別の判断基準となる情報は、二重化コンピュータシステム１の製造業者、販売業者またはシステム管理者などが、所定の不揮発性の記憶箇所に必要なだけ書き込んでおくことが好ましいと思われる。
コンピュータ１０におけるＱ取り込み処理１１０では、取り込んだパケットが対象のパケットかどうかをフィルタ情報を用いて判断する。取り込んだパケットが対象のパケットでない場合、通常どおり１３０のプロトコル処理にそのまま渡す。取り込んだパケットが対象のパケットならば、プロトコル処理１３０に渡すとともに、共有メモリ１３の仮想待ち行列５０に加える。このようにすることにより、プロトコル処理１３０された対象のパケットが仮想待ち行列５０に入ることになる。
一方、コンピュータ２０におけるＱ取り込み処理２１０においても、取り込んだパケットが対象のパケットかどうかを処理１１０と同じ要領で判断する。対象のパケットでない場合、取り込んだパケットはそのまま通信処理２５０に渡す。取り込んだパケットが対象のパケットの場合、次の２とおりの処理が可能である。即ち、（１）取り込んだ対象のパケットは捨て、仮想待ち行列５０の先頭のパケットを通信処理２５０に渡すか、または（２）取り込んだ対象のパケットと仮想待ち行列５０の先頭のパケットを比較し（２３０）、一致した場合のみ、取り込んだ対象のパケットは捨て、仮想待ち行列５０の先頭のパケットを通信処理２５０に渡すようにしてもよい。
以上の処理により、対象のパケットに関しては、待ち行列３２および４２を同じ順序でパケットが通過することになる。
本発明によれば、二重化したコンピュータシステムにおいて特定の通信対象に対しては２台のコンピュータのパケットの通信順序及びその内容が同じになるようにプロトコルを二重化する方法、およびこのようにプロトコルを二重化した二重化コンピュータシステムを提供することができる。
【図面の簡単な説明】
図１は、本発明によるプロトコルの二重化方法を適用できる二重化コンピュータシステムの説明に必要な部分のみを示した概略ブロック図である。
図２は、本発明によるプロトコルの二重化の原理を説明するための図である。
【図１】
0003844302.tif 000002
【図２】
0003844302.tif 000003