(57)【要約】【課題】  プライマリサーバコンピュータから、スタンバイサーバへのシームレスな移行を可能とする冗長接続サービス提供方法を提供する。【解決手段】  本発明にかかる方法は、プライマリプロトコルスタックを使用して、クライアントからプライマリサーバへネットワーク接続を確立する（５）ことと、前記プライマリプロトコルスタックによって保持された接続状態情報を伝達する（１０）ことと、前記プライマリサーバの健全性を監視する（１５）ことと、前記プライマリサーバが不健全である場合に、前記伝達した接続状態情報によるクロスオーバメッセージを、前記確立したネットワーク接続を使用して前記クライアントにディスパッチする（２０）こととを含む。【選択図】図１
2006014310.tif 000002
【特許請求の範囲】
【請求項１】
プライマリプロトコルスタックを使用して、クライアントからプライマリサーバへネットワーク接続を確立する（５）ことと、
前記プライマリプロトコルスタックによって保持された接続状態情報を伝達する（１０）ことと、
前記プライマリサーバの健全性を監視する（１５）ことと、
前記プライマリサーバが不健全である場合に、前記伝達した接続状態情報によるクロスオーバメッセージを、前記確立したネットワーク接続を使用して前記クライアントにディスパッチする（２０）ことと
を含む冗長接続サービスを提供する方法。
【請求項２】
前記接続状態情報を伝達することは、
転送制御プロトコルの状態情報を伝達する（２５）こと
を含む
請求項１に記載の冗長接続サービスを提供する方法。
【請求項３】
前記転送制御プロトコルの状態情報を伝達することは、
送信元アドレス（３０）、送信元ポート番号（３５）、宛先アドレス（４０）、宛先ポート番号（４５）および転送制御プロトコルのシーケンス番号（５０）の少なくとも１つを伝達すること
を含む
請求項２に記載の冗長接続サービスを提供する方法。
【請求項４】
前記クロスオーバメッセージをディスパッチすることは、
送信元アドレス（６０）、送信元ポート番号（６５）、宛先アドレス（７０）、宛先ポート番号（７５）および転送制御プロトコルのシーケンス番号（８０）の少なくとも１つを含む、プライマリプロトコルスタックによって保持された接続状態情報に従ってアドレス指定されたクライアントに、転送制御プロトコルのリセットパケットをディスパッチすること
を含む
請求項１に記載の冗長接続サービスを提供する方法。
【請求項５】
前記クロスオーバメッセージをディスパッチすることは、
プライマリプロトコルスタックによって保持された接続状態情報の一部として受信したシーケンス番号を基準として次のシーケンス番号（８５）を含むクロスオーバメッセージをディスパッチすること
を含む
請求項１に記載の冗長接続サービスを提供する方法。
【請求項６】
命令シーケンスを実行することができるプロセッサ（２００）と、
１つまたは２つ以上の命令シーケンスを記憶することができるメモリ（２１５）と、
データネットワークと通信することができるネットワークインターフェース（２０５）と、
メモリ（２１５）に記憶された１つまたは２つ以上の命令シーケンスであって、
前記プロセッサ（２００）によって実行されると、最低限、前記プロセッサ（２００）に、クライアント要求に応答させるサーバモジュール（２２５）と、
前記プロセッサ（２００）によって実行されると、最低限、前記プロセッサ（２００）に、前記ネットワークインターフェースを使用してクライアントとのネットワーク接続を確立させ、さらに、最低限、前記プロセッサ（２００）に、確立された接続を介して受信されたクライアント要求を前記サーバモジュールに転送させるプロトコルスタックモジュール（２２０）と、
前記プロセッサ（２００）によって実行されると、最低限、前記プロセッサ（２００）に、クライアント接続のステータスを伝達させる接続モニタモジュール（２３０）と
を含む１つまたは２つ以上の命令シーケンスと、
を備えるプライマリサーバ。
【請求項７】
前記接続モニタモジュールは、最低限、前記プロセッサ（２００）に、転送制御プロトコル状態情報（２２１）を伝達させることによって、前記プロセッサにクライアント接続のステータスを伝達させる
請求項６に記載のプライマリサーバ。
【請求項８】
前記接続モニタモジュールは、送信元アドレス（３０）、送信元ポート番号（３５）、宛先アドレス（４０）、宛先ポート番号（４５）および転送制御プロトコルのシーケンス番号（５０）の少なくとも１つを含む転送制御プロトコルの状態情報を、前記プロセッサ（２００）に伝達させる
請求項７に記載のプライマリサーバ。
【請求項９】
命令シーケンスを実行することができるプロセッサ（３００）と、
１つまたは２つ以上の命令シーケンスを記憶することができるメモリ（３１５）と、
データネットワークと通信することができるネットワークインターフェース（３０５）と、
メモリ（３１５）に記憶された１つまたは２つ以上の命令シーケンスであって、
前記プロセッサ（３００）によって実行されると、最低限、前記プロセッサ（３００）に、クライアント要求に応答させるサーバモジュール（３２５）と、
前記プロセッサ（３００）によって実行されると、最低限、前記プロセッサ（３００）に、前記ネットワークインターフェースを使用してクライアントとのネットワーク接続を確立させ、さらに、最低限、前記プロセッサ（３００）に、確立された接続を介して受信されたクライアント要求を前記サーバモジュールに転送させるプロトコルスタックモジュール（３２０）と、
前記プロセッサによって実行されると、最低限、前記プロセッサ（３００）に、
プライマリプロトコルスタックによって保持された接続状態情報を受信させ、
前記受信された接続状態情報によって特定される接続を使用してクライアントにクロスオーバメッセージを伝達させる、
接続リセットモジュール（３３０）と
を含む１つまたは２つ以上の命令シーケンスと
を備えるスタンバイサーバ。
【請求項１０】
前記接続リセットモジュールは、最低限、前記プロセッサ（３００）に、プライマリプロトコルスタックによって保持された、送信元アドレス（６０）、送信元ポート番号（６５）、宛先アドレス（７０）、宛先ポート番号（７５）および転送制御プロトコルのシーケンス番号（８０）の少なくとも１つを含む受信された接続状態情報に従ってアドレス指定されたクライアントへ転送制御プロトコルのリセットパケットを伝達させることによって、前記プロセッサ（３００）にクロスオーバメッセージを伝達させる
請求項９に記載のスタンバイサーバ。
【請求項１１】
前記接続リセットモジュールは、最低限、前記プロセッサ（３００）に、プライマリプロトコルスタックによって保持された接続状態情報の一部として受信されたシーケンス番号を基準として次のシーケンス番号（８５）を含むクロスオーバメッセージを伝達させることによって、前記プロセッサ（３００）にクロスオーバメッセージを伝達させる
請求項９に記載のスタンバイサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長接続サービスの提供方法および装置に関する。
【背景技術】
【０００２】
現代、コンピュータシステムは、通常、データを共有する目的で、通信するように互いに関連付けられている。
あるコンピュータが別のコンピュータとデータを共有することを可能にするために、各コンピュータは、通常、コンピュータネットワークによって他のコンピュータと接続されている。
例えば、インターネットは、大量の計算プラットフォームが接続された広域コンピュータネットワークである。
あるコンピュータの別のコンピュータへの物理接続は、あるコンピュータが別のコンピュータによって提供されたデータにアクセスできる極めて複雑な構造の一部にすぎない。
あるコンピュータに記憶されたデータの別のコンピュータによるアクセスも、データの共有を統制するさまざまなパラダイムを必要とする。
あるコンピュータに記憶されたデータを、ネットワークに取り付けられた他のコンピュータと共有するのに使用される共通のパラダイムは、「クライアント−サーバ」モデルとして知られている。
クライアント−サーバモデルは、ネットワークに取り付けられたあるコンピュータを、クライアントから受信した要求に応答して情報を提供できるサーバと定義する。
【０００３】
クライアントとサーバとの間の通信を可能にするために、各コンピュータは、共通の通信プロトコルに準拠しなければならない。
通信プロトコルは、各コンピュータで実行されるアクティブなプロセス間のインターラクションを定義する。
例えば、あるコンピュータシステムで実行されるサーバプロセスは、通常、別のコンピュータシステムで実行されるクライアントプロセスとの通信を可能にするために、共通の通信プロトコルに準拠する。
現在広く普及して使用されている通信プロトコルの一例は、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）である。
【０００４】
通常、通信プロトコルは、「プロトコルスタック」と呼ばれる専用機能モジュールで実施される。
プロトコルスタックは、通常、第１のコンピュータのプロセッサが実行可能なさまざまな命令シーケンスを含む。
プロセッサは、プロトコルスタックを実行すると、第２のコンピュータとの通信セッションに関与する。
通常、第２のコンピュータのプロセッサもプロトコルスタックを実行し、これによって、当該第２のコンピュータのプロセッサは第１のコンピュータとの通信セッションに関与することが可能になる。
各コンピュータのプロトコルスタックは、共通のプロトコル定義に従って形成しなければならないことを理解することができる。
【０００５】
現在、多くの異なるプロトコル定義が存在し、これらのプロトコル定義のそれぞれについて、通常、「プロトコルスタック」の１つまたは２つ以上の実施態様が存在する。
プロトコルスタックという用語は、一般的なプロトコル定義が記述する階層化構造に由来する。
例えば、ほとんどのプロトコル定義は、さまざまな精巧レベルで通信サービスを定義する。
最もプリミティブなレイヤでは、プロトコル定義は、通常、データを実際に搬送する物理媒体を定義する。
プロトコル定義に含まれるよりプリミティブな通信サービスは、通常、接続レイヤサービス等のより高いレベルのサービスをサポートするのに使用される。
例えば、データの配信の保証といった、さらに高いレベルのサービスは、多くの場合、プロトコル定義に記述される。
これらのサービスのレイヤのそれぞれは、通常、プロトコルスタックに含まれる命令シーケンスモジュールの「スタック」のレイヤに対応する。
【０００６】
これらのさまざまなプロトコル定義の多くのものによると、クライアント−サーバパラダイムは、２つのプロセッサ間の接続の使用を通じてサポートされる。
例えば、あるコンピュータで実行される第１のプロセスは、一般に、第２のプロセスとの接続を確立するためにプロトコルスタックを利用する。
通常、第２のプロセスは異なるコンピュータで実行される。
しかしながら、一般的なプロトコルスタックは、プロセスの実行現場を区別しない。
したがって、プロトコルスタックは、同じコンピュータで実行される２つのプロセス間の接続を確立するのに使用することができる。
【０００７】
プロトコルスタックは、動作している最中、その内部状態に関する情報を保持し、さらに、自身がサポートする通信接続に関する情報も保持する。
このタイプの情報は、通常、プロトコルスタック状態変数テーブルに含まれる。
プロトコルスタック状態変数テーブルは、通常、プロトコルスタックを実行中のプロセッサによってアクセス可能なコンピュータ可読媒体に記憶される。
通信接続が確立されている場合、プロトコルスタックは、プロセッサによって実行されると、プロセッサに、数組の状態変数を使用して接続の状態を追跡させる。
各組の状態変数は、プロトコルスタックの特定のレイヤに対応する。
【０００８】
コンピュータシステムは、他の人工の装置と同様に、エラーおよび障害を受けやすい。
高可用性の要求をサポートするために、クライアント−サーバシステムでサーバとして動作するコンピュータシステムは、クラスタとして知られている単位で複製される。
このようなクラスタ内では、あるコンピュータが、通常、プライマリサーバとして指定される。
クラスタ内の残りの１つまたは２つ以上のコンピュータは、スタンバイサーバとして指定される。
通常動作時には、クライアントコンピュータで実行されるクライアントプロセスは、プライマリサーバで実行されるサーバプロセスと接続を確立しようとする。
この通信接続が確立されると、プライマリサーバで実行されるプロトコルスタックは、接続の状態を追跡する。
クライアントコンピュータで実行される対応したプロトコルスタックも、接続の状態を追跡する。
【０００９】
高可用性クラスタのプライマリサーバが故障した場合、または、それ以外でサーバとしてのその役割を維持できない場合には、サーバ機能は、クラスタに含まれる１つまたは２つ以上のスタンバイサーバに移される。
クライアントコンピュータで実行されるクライアントプロセスの見地からすると、プライマリサーバが故障したことを示す唯一の表示は、プライマリサーバで実行されるプロトコルスタックが維持する接続が応答しなくなることである。
理想的には、クライアントコンピュータは、接続が切断されたと判断すると、その接続の再確立を試みるべきである。
接続が再確立されると、クライアントは、通常、クラスタのスタンバイサーバがクライアント−サーバ関係におけるサーバの役割を引き継いだことに気付かない。
したがって、プライマリサーバからスタンバイサーバへの移行は、クライアントコンピュータには実質的にトランスペアレントである。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
理解できるように、プライマリサーバコンピュータのプロトコルスタックおよびクライアントコンピュータのプロトコルスタックは、複雑なコンピュータプログラムであり、それぞれは、自身の相手方との通信セッションに関与するように設計される。
サーバコンピュータおよびクライアントコンピュータの双方において、接続の状態を追跡することに伴う複雑さのために、プライマリサーバが実際に故障した時点と、クライアントコンピュータが、接続の状態を勤勉に追跡することを通じて、クライアントプロセスとサーバプロセスとの間の接続が切断されたと判断する時点との間には、かなりの待ち時間が存在することがある。
スタンバイサーバへの本質的にシームレスな移行を行うことができるのは、クライアントコンピュータが、接続が切断されたと判断できる時だけである。
したがって、クライアントコンピュータがスタンバイサーバとの接続の再確立をさらに試みる前には、受け入れられないぐらい長い期間が終了することがある。
この長い遅延の結果、ユーザはフラストレーションを受ける可能性があり、プライマリコンピュータからスタンバイコンピュータへのサーバの役割の優雅な移行が無効にされる可能性がある。
【課題を解決するための手段】
【００１１】
冗長接続サービスを提供する方法および装置は、クライアントからプライマリサーバへの接続の確立と、プライマリサーバで使用されるプロトコルスタックに関する状態情報の伝達とを含む。
プライマリサーバの健全性が監視される。
プライマリサーバが不健全になると、クロスオーバメッセージが、伝達された状態情報に従ってクライアントに送信される。
【００１２】
以下では、いくつかの代替的な実施の形態を、添付した図面および図と共に説明する。
これらの図面および図において、同じ数字は同じ要素を示す。
【発明を実施するための最良の形態】
【００１３】
図１は、冗長接続サービスを提供する一例の方法を示すフロー図である。
この例の方法によると、冗長接続サービスは、ネットワーク接続がクライアントからプライマリサーバへ確立された時に提供される（ステップ５）。
この接続が存続する間は、プライマリプロトコルスタックによって保持されたこの接続に関する状態情報が伝達される（ステップ１０）。
本方法の一変形によると、接続に関する状態情報は、高可用性サーバクラスタに含まれるスタンバイサーバに伝達されることが理解されるべきである。
また、本方法のさらに別の変形によると、接続に関する状態情報は、任意の監視デバイスに伝達されることも理解されるべきである。
【００１４】
この例の方法によると、プライマリサーバの健全性が監視される（ステップ１５）。
プライマリサーバが不健全になった場合（ステップ１５）、または、プライマリサーバが、それ以外で、高可用性サーバクラスタにおいてプライマリサーバの役割を行うことができない場合には、クロスオーバメッセージが既存の接続を使用してクライアントにディスパッチされる（ステップ２０）。
本方法の一変形によると、クロスオーバメッセージのクライアントへのディスパッチは、前に受信した接続に関する状態情報に関連した接続識別子を使用することによって行われることに留意すべきである。
【００１５】
図２は、接続状態情報を伝達する代替的な例示の方法を示すフロー図である。
この代替的な方法によると、状態情報は、転送制御プロトコル／インターネットプロトコルの下で確立された接続の状態情報を伝達することによって伝達される（ステップ２５）。
【００１６】
図３は、接続状態情報を伝達するいくつかの他の代替的な方法を示すフロー図である。
一代替例の方法によると、接続状態情報は、送信元アドレスを伝達することによって伝達される（ステップ３０）。
さらに別の代替例の方法によると、送信元ポート番号が伝達される（ステップ３５）。
さらに別の代替例の方法によると、宛先アドレスが伝達される（ステップ４０）。
さらに別の代替例の方法によると、宛先ポート番号が伝達される（ステップ４５）。
さらに別の例の代替的な方法によると、パケットシーケンス番号が伝達される（ステップ５０）。
一例示の使用事例によると、本方法は、転送制御プロトコル／インターネットプロトコルに従って形成された接続に適用される。
この例示の使用事例によると、接続状態情報の伝達は、送信元アドレス、送信元ポート番号、宛先アドレス、宛先ポート番号、およびシーケンス番号のほぼ同時の伝達を含む。
本説明は、本方法をＴＣＰ／ＩＰプロトコルと共に適用することを例示するが、本明細書に添付した特許請求の範囲は、例示の目的で本明細書に提示したどの例示の使用事例にもその範囲を限定するためのものではないことに留意すべきである。
【００１７】
図４は、クロスオーバメッセージをディスパッチするいくつかの説明例の方法を示すフロー図である。
一説明例の方法によると、クロスオーバメッセージは、転送制御プロトコルのリセットパケットとして実施される。
さらに別の説明例の方法によると、転送制御プロトコルのリセットパケットは、送信元アドレスに従ってリセットパケットをアドレス指定することによってクライアントにディスパッチされる（ステップ６０）。
さらに別の例示の代替的な方法によると、転送制御プロトコルのリセットパケットは、送信元ポート番号に従ってリセットパケットをアドレス指定することによってクライアントにディスパッチされる（ステップ６５）。
さらに別の代替的な例示の方法によると、転送制御プロトコルのリセットパケットは、宛先アドレスに従ってリセットパケットをアドレス指定することによってクライアントにディスパッチされる（ステップ７０）。
さらに別の代替的な例示の方法によると、転送制御プロトコルのリセットパケットは、宛先ポート番号に従ってリセットパケットをアドレス指定することによってクライアントにディスパッチされる（ステップ７５）。
さらに別の代替的な例示の方法によると、転送制御プロトコルのリセットパケットは、シーケンス番号を含むように形成される（ステップ８０）。
本方法のこの変形は、ＴＣＰ／ＩＰプロトコルの下で確立された接続に直接適用可能であるが、本明細書に添付した特許請求の範囲は、その範囲を限定するためのものではない。
したがって、本方法は、接続を確立するのに使用される通信プロトコルのタイプにかかわらず適用することができ、本明細書に添付した特許請求の範囲はこの観点で解釈される。
【００１８】
図５は、クロスオーバメッセージにシーケンス番号を含める代替的な一方法を示すフロー図である。
この代替的な例示の方法によると、クロスオーバメッセージに含められたシーケンス番号は、クライアントが予想した次のシーケンス番号に等しくなるように設定される。
これは、プライマリプロトコルスタックからの接続状態情報の一部として受信されたシーケンス番号を基礎として使用することによって行われる。
接続状態情報の一部として受信したシーケンス番号は、通常、クライアントが予想した次のデータパケットを反映するようにインクリメントされる。
本明細書に提示した説明は、ＴＣＰ／ＩＰプロトコルと共に本方法を使用することを示すが、他の多くのプロトコルが、データパケットがある形のシーケンス識別子を含んだメカニズムを含む。
したがって、本明細書に添付した特許請求の範囲は、例えばＴＣＰ／ＩＰといった、単なる例示の目的で本明細書に提示したどの特定のプロトコルにもその範囲または適用を限定するためのものではない。
【００１９】
図６は、サーバクラスタの描画図である。
本方法は、一例示の使用事例によると、サーバクラスタ９０に適用される。
一般的なサーバクラスタ９０には、少なくとも１つのプライマリサーバ９５および１つまたは２つ以上のスタンバイサーバ１００が存在する。
動作時において、プライマリサーバ９５は、一般的なクライアント−サーバ関係におけるサーバの役割を実行する。
この一例示の使用事例によると、プライマリサーバ９５および１つまたは２つ以上のスタンバイサーバ１００はネットワーク１１０に接続している。
ネットワーク１１０には、クライアントコンピュータ１０５も接続されている。
一般的なクライアント−サーバ関係では、クライアントコンピュータ１０５は、ネットワーク１１０を使用して、プライマリサーバ９５との接続を確立する。
図からは省略されているが、例えばルータといった、クラスタ内のサーバのすべてが単一のネットワークアドレスに対応することを可能にする他の補助機器がサーバクラスタに含まれる。
したがって、クライアントコンピュータ１０５は、サーバクラスタ９０との接続を確立する必要がある場合に、クラスタ９０における各コンピュータの個別のネットワークアドレスを知る必要はない。
クライアントコンピュータ１０５は、その内部に、プロセッサ、プロトコルスタック、およびクライアントプロセスを含んでいる。
クラスタ９０の各サーバも、その内部に、プロセッサ、プロトコルスタック、およびサーバプロセスを含んでいる。
動作時に、クライアントコンピュータ１０５のプロセッサはクライアントプロセスを実行する。
クライアントプロセスは、通常、クライアントコンピュータ１０５に含まれるプロトコルスタックを実行することによって、クライアントコンピュータ１０５のプロセッサに、サーバクラスタ９０に含まれるサーバコンピュータの１つで実行されるサーバプロセスとの接続を確立させる。
サーバコンピュータの１つにおけるプロセッサは、クライアントプロセスとサーバプロセスとの間のデータの転送を円滑にする対応したプロトコルスタックを実行することによって、その接続にサービスを提供する。
また、サーバプロセスも、サーバクラスタ９０に含まれるサーバコンピュータの１つにおけるプロセッサによって実行される。
【００２０】
図７は、プライマリサーバの一例の実施の形態を示すブロック図である。
この例の実施の形態によると、プライマリサーバ２０１は、１つまたは２つ以上のプロセッサ２００と、ネットワーク２１０へのデータ通信およびネットワーク２１０からのデータ通信を円滑にするネットワークインターフェース２０５とを備える。
また、プライマリサーバ２０１のこの例の実施の形態には、メモリ２１５も含まれる。
【００２１】
図８は、スタンバイサーバの一例の実施の形態を示すブロック図である。
この例の実施の形態によると、スタンバイサーバ３０１は、１つまたは２つ以上のプロセッサ３００と、ネットワーク２１０へのデータ通信およびネットワーク２１０からのデータ通信を円滑にするネットワークインターフェース３０５とを備える。
【００２２】
上記に説明したプライマリサーバ２０１およびスタンバイサーバ３０１のこれらの例の実施の形態は、それぞれ、さまざまな機能モジュールをさらに含む。
これらの機能モジュールのそれぞれは、プロセッサが実行できる命令シーケンスを備える。
機能モジュールを実施する命令シーケンスは、代替的な一実施の形態によると、プライマリサーバ２０１のそれぞれのメモリ（２１５）およびスタンバイサーバ３０１のメモリ（３１５）に記憶される。
「最低限、プロセッサに〜を実行させる」という用語およびその変形体は、プロセッサが特定の機能モジュール（すなわち命令シーケンス）を実行すると、プロセッサによって実行される機能をオープンエンドに列挙したものとしての機能を果たすように意図されたものであるとのアドバイスが読み手には与えられる。
したがって、特定の機能モジュールが、添付した特許請求の範囲で画定された機能に加え、更なる機能をプロセッサに実行させる一実施の形態は、本明細書に添付した特許請求の範囲に含まれることになる。
【００２３】
図７は、この例の実施の形態に従って、プライマリサーバ２０１がプロトコルスタック２２０、サーバモジュール２２５、および接続モニタ２３０をさらに含むことをさらに示している。
【００２４】
図８は、この例の実施の形態に従って、スタンバイサーバ３０１がプロトコルスタック３２０、サーバモジュール３２５、および接続リセットモジュール３３０をさらに含むことをさらに示している。
【００２５】
図９は、スタンバイサーバと共にプライマリサーバのオペレーションを示すデータフロー図である。
一例の実施の形態によると、プライマリサーバ２０１のプロセッサ２００は、サーバモジュール２２５を実行する。
サーバモジュール２２５は、プロセッサ２００によって実行されると、最低限、プロセッサ２００に、クライアント要求（例えば、ネットワークから受信されたクライアント要求から）に応答させる。
プライマリサーバ２０１に含まれるプロトコルスタック２２０は、プロセッサ２００によって実行されると、最低限、プロセッサ２２０に、プライマリサーバ２０１のこの例の実施の形態に含まれるネットワークインターフェース２０５を使用してクライアントとのネットワーク接続を確立させる。
この接続は、通常、クライアントコンピュータで実行されるクライアントプロセスと確立される。
なお、クライアントコンピュータおよびクライアントプロセスのいずれも図には示されていない。
通常、接続の確立を要求するのはクライアントプロセスである。
また、プロセッサ２００は、接続モニタモジュール２３０も実行する。
接続モニタモジュール２３０は、プロセッサ２００によって実行されると、最低限、プロセッサ２００に、クライアント接続のステータスを伝達させる。
代替的な一実施の形態によると、接続モニタモジュール２３０は、最低限、プロセッサ２００に、プロトコルスタック２２０を使用して接続リセットモジュール３３０への独立した接続を確立させる。
その後、この独立した接続は、接続リセットモジュール３３０への接続の状態に関する情報を伝達するのに使用される。
【００２６】
クライアントとの接続が維持されている間、プロセッサ２００は、接続モニタモジュール２３０の実行を継続するので、クライアントプロセスとの接続の状態を監視する。
代替的な一実施の形態によると、プロトコルスタック２２０は、プロセッサ２００によって実行させると、最低限、プロセッサ２００に、接続の状態を記述した状態変数をプロトコルスタック状態変数テーブル２２１に記憶させる。
代替的な一実施の形態によると、プロトコル状態変数テーブル２２１は、プライマリサーバ２０１のこの例の実施の形態に含まれるメモリ２１５に記憶される。
したがって、接続モニタモジュール２３０は、プロセッサ２００によって実行されると、さらに、最低限、プロセッサに、プロトコルスタック状態変数テーブル２２１から接続の状態に関する情報を抽出させる。
一例の代替的な実施の形態によると、接続モニタモジュール２３０は、最低限、プロセッサに、転送制御プロトコル状態情報を伝達させる。
【００２７】
代替的な一実施の形態によると、接続モニタモジュール２３０は、プロセッサ２００によって実行されると、プロセッサに、接続に関する送信元アドレス、送信元ポート番号、宛先アドレス、および宛先ポート番号の少なくとも１つを含む情報を抽出させる。
さらに別の代替的な実施の形態によると、接続モニタモジュール２３０は、プロセッサ２００によって実行されると、プロセッサ２００に、接続に関するシーケンス番号を抽出させる。
したがって、接続モニタモジュール２３０は、さらに、最低限、プロセッサ２００に、送信元アドレス、送信元ポート番号、宛先アドレス、宛先ポート番号、およびシーケンス番号の少なくとも１つを伝達させる。
なお、これらのすべては接続に関するものである。
接続モニタモジュール２３０の代替的な一実施の形態によると、最低限、プロセッサ２００に、スタンバイサーバ３０１で実行される接続リセットモジュール３３０へこの情報を伝達させることが行われる。
さらに別の代替的な実施の形態によると、プロセッサ２００が接続モニタモジュール２３０の実行を継続するので、この情報の伝達は、プロセッサ２００が確立した、独立した通信接続によって行われる。
このような接続を促進する際に、プロセッサ２００は、接続モニタモジュール２３０と、スタンバイサーバ３０１で動作している接続リセットモジュール３３０との間に接続を確立するためにプロトコルスタック２２０を実行する。
スタンバイサーバ３０１で実行される対応したプロトコルスタック３２０は、最低限、スタンバイサーバ３０１のプロセッサ３００に、接続リセットモジュール３３０との接続をサポートさせる。
【００２８】
スタンバイサーバ３０１のプロセッサ３００が接続リセットモジュール３３０を実行すると、最低限、プロセッサ３００に、接続状態情報を受信させ、さらに、この接続状態情報をオープン接続リスト３３１に記憶させることが行われる。
代替的な一実施の形態によると、オープン接続リスト３３１は、スタンバイサーバ３０１のこの例の実施の形態に含まれるメモリ３１５に保持される。
オープン接続リスト３３１は、接続状態情報を記憶するのに使用される。
代替的な一実施の形態によると、接続リセットモジュール３３０は、プロセッサ３００によって実行されると、最低限、プロセッサ３００に、送信元アドレス、送信元ポート番号、宛先アドレス、宛先ポート番号、およびシーケンス番号の少なくとも１つを接続状態情報として受信させる。
代替的な一実施の形態によると、このようにして受信された接続状態情報は、接続リセットモジュール３３０が認識しているあらゆる接続についての単一のレコード内のオープン接続リスト３３１に記憶される。
【００２９】
さらに別の代替的な実施の形態によると、接続リセットモジュール３３０は、さらに、最低限、プロセッサ３００に、プライマリサーバ２０１の健全性を監視させる。
これは、一例の実施の形態によると、プライマリサーバ２０１で実行される接続モニタモジュール２３０から確立された接続を監視することによって行われる。
したがって、接続リセットモジュール３３０は、最低限、プロセッサ３００に、接続モニタモジュール２３０から確立された接続を経由して受信した健全性メッセージに従ってプライマリサーバ２０１の健全性を判断させる。
この接続は、接続モニタモジュール２３０から接続リセットモジュール３３０へ接続状態情報を伝達するのに使用されたのと同じ接続とすることができる。
【００３０】
この例の実施の形態によると、接続リセットモジュール３３０は、スタンバイサーバ３０１のプロセッサ３００によって実行されると、プライマリサーバ２０１が不健全であると分かった場合に、さらに、最低限、プロセッサ３００に、クライアントにクロスオーバメッセージを伝達させる。
代替的な一実施の形態によると、クロスオーバメッセージは、転送制御プロトコルのリセットパケットを含む。
このリセットパケットは、送信元アドレス、送信元ポート番号、宛先アドレス、および宛先ポート番号の少なくとも１つに従ってクライアントにアドレス指定される。
通常、リセットパケットはシーケンス番号をさらに含む。
このシーケンス番号は、オープン接続リスト３３１に記憶された情報に従ってクライアントが予想した次のシーケンス番号を反映するように調整されたものである。
複数のオープン接続がオープン接続リスト３３１で特定された場合、接続リセットモジュール３３０は、プロセッサ３００によって実行されると、さらに、最低限、プロセッサ３００に、１つまたは２つ以上のクライアントプロセスにクロスオーバメッセージをディスパッチさせることが理解されるべきである。
このディスパッチは、プロセッサ３００が接続リセットモジュール３３０を実行した時に、プロセッサ３００が先に受信した状態情報によって特定された接続であって、オープン接続リスト３３１に記憶された接続を使用して行われる。
【００３１】
冗長接続サービスの提供を可能にする、これまでに説明した機能モジュール（および機能モジュールに対応する命令シーケンス）は、代替的な一実施の形態によると、コンピュータ可読媒体上に与えられる。
このような媒体の例には、ランダムアクセスメモリ、読み出し専用メモリ（ＲＯＭ）、コンパクトディスク（ＣＤ）ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、フロッピィディスク、ハードディスクドライブ、および磁気テープが含まれるが、これらに限定されるものではない。
このコンピュータ可読媒体は、単独でまたは組み合わせて、スタンドアロン製品を構成することができ、汎用的な計算の少なくとも１つを、本明細書に提示した技法および教示に従って、冗長接続サービスを与えるデバイスに変換するのに使用される。
したがって、本明細書に添付した特許請求の範囲は、本明細書で説明した本方法および教示のすべての実行を可能にするこのような命令シーケンスで与えられたこのようなコンピュータ可読媒体を含むものである。
【００３２】
本方法および本装置を、いくつかの代替的な実施の形態および例示の実施の形態の観点から説明したが、当業者には、本明細書を読み、図面を検討することによって、それら実施の形態の代替的なもの、変更したもの、変形したもの、および均等なものが明らかになると考えられる。
したがって、本明細書に添付した特許請求の範囲の真の趣旨および範囲は、このようなすべての代替的なもの、変更したもの、変形したもの、および均等なものを含むことが意図されている。
【図面の簡単な説明】
【００３３】
【図１】冗長接続サービスを提供する一例の方法を示すフロー図である。
【図２】接続状態情報を伝達する代替的な例示の方法を示すフロー図である。
【図３】接続状態情報を伝達するいくつかの他の代替的な方法を示すフロー図である。
【図４】クロスオーバメッセージをディスパッチするいくつかの説明例の方法を示すフロー図である。
【図５】クロスオーバメッセージにシーケンス番号を含める代替的な一方法を示すフロー図である。
【図６】サーバクラスタの描画図である。
【図７】プライマリサーバの一例の実施の形態を示すブロック図である。
【図８】スタンバイサーバの一例の実施の形態を示すブロック図である。
【図９】スタンバイサーバと共にプライマリサーバのオペレーションを示すデータフロー図である。
【符号の説明】
【００３４】
９０・・・サーバクラスタ，
１１０・・・ネットワーク，
２００・・・プロセッサ，
２０５・・・ネットワークインターフェース，
２１０・・・ネットワーク，
２１５・・・メモリ，
２２５・・・サーバ，
２３０・・・接続モニタ，
３００・・・プロセッサ，
３０５・・・ネットワークインターフェース，
３１５・・・メモリ，
３２５・・・サーバ，
【図１】
2006014310.tif 000003
【図２】
2006014310.tif 000004
【図３】
2006014310.tif 000005
【図４】
2006014310.tif 000006
【図５】
2006014310.tif 000007
【図６】
2006014310.tif 000008
【図７】
2006014310.tif 000009
【図８】
2006014310.tif 000010
【図９】
2006014310.tif 000011