(57)【特許請求の範囲】
【請求項１】
ミドルウェアマシン環境において第１のノードと１つ以上のリモートターゲットノードとの間で高可用性（ＨＡ）ネットワーク通信を実装するための方法であって、前記ミドルウェアマシン環境は前記第１のノードを前記１つ以上のリモートターゲットノードにインターフェイスするものであり、前記方法は、
複数のターゲットインターネットプロトコル（ＩＰ）アドレスの可用性を、複数の対応するネットワークインターフェイスを介して同時にプローブするステップを含み、前記複数のターゲットＩＰアドレスと前記複数の対応するネットワークインターフェイスとの各々は特定のリモートターゲットノードに関連付けられており、
対応する前記ターゲットＩＰアドレスに関連付けられた少なくとも１つの前記ネットワークインターフェイスから第１の応答を受信するステップと、
システムが前記第１の応答を受信した、前記ターゲットＩＰアドレスおよびネットワークインターフェイスを用いて、前記第１のノードと前記特定のリモートターゲットノードとの間の処理を行なうための通信接続を確立するステップとを含む、方法。
【請求項２】
ミドルウェアマシン環境において第１のノードと１つ以上のリモートターゲットノードとの間で高可用性（ＨＡ）ネットワーク通信を実装するためのシステムであって、前記ミドルウェアマシン環境は前記第１のノードを前記１つ以上のリモートターゲットノードにインターフェイスするものであり、前記システムは、
１つ以上のマイクロプロセッサを含む１つ以上の物理サーバを含み、１つ以上の物理サーバは、
複数のターゲットインターネットプロトコル（ＩＰ）アドレスの可用性を、複数の対応するネットワークインターフェイスを介して同時にプローブし、前記複数のターゲットＩＰアドレスと前記複数の対応するネットワークインターフェイスとの各々は特定のリモートターゲットノードに関連付けられており、
対応する前記ターゲットＩＰアドレスに関連付けられた少なくとも１つの前記ネットワークインターフェイスから第１の応答を受信し、
前記システムが前記第１の応答を受信した、前記ターゲットＩＰアドレスおよびネットワークインターフェイスを用いて、前記第１のノードと前記特定のリモートターゲットノードとの間の処理を行なうための通信接続を確立するように動作する、システム。
【請求項３】
ミドルウェアマシン環境において第１のノードと１つ以上のリモートターゲットノードとの間で高可用性（ＨＡ）ネットワーク通信を実装するためのシステムであって、前記ミドルウェアマシン環境は前記第１のノードを前記１つ以上のリモートターゲットノードにインターフェイスするものであり、前記システムは、
複数のターゲットインターネットプロトコル（ＩＰ）アドレスの可用性を、複数の対応するネットワークインターフェイスを介して同時にプローブするための手段を含み、前記複数のターゲットＩＰアドレスと前記複数の対応するネットワークインターフェイスとの各々は特定のリモートターゲットノードに関連付けられており、
対応する前記ターゲットＩＰアドレスに関連付けられた少なくとも１つの前記ネットワークインターフェイスから第１の応答を受信するための手段と、
システムが前記第１の応答を受信した、前記ターゲットＩＰアドレスおよびネットワークインターフェイスを用いて、前記第１のノードと前記特定のリモートターゲットノードとの間の処理を行なうための通信接続を確立するための手段とを含む、システム。
【請求項４】
それぞれのターゲットＩＰアドレスが、異なるネットワークインターフェイスおよび通信経路に関連付けられている、請求項２または３に記載のシステム。
【請求項５】
通信フェイルオーバーが、アプリケーションレベルのロジックを使用して、通信層の一部として実装される、請求項２〜４のいずれか１項に記載のシステム。
【請求項６】
伝送制御プロトコル（ＴＣＰ）が使用される場合、信頼性および順序付けのうち少なくとも一方が確実にされる、請求項２〜５のいずれか１項に記載のシステム。
【請求項７】
前記１つ以上の物理サーバは、ＴＣＰタイムアウトに基づいてフェイルオーバーの必要性を検出し、動作が完了した場合、通信接続を閉鎖するように動作する、請求項２〜６のいずれか１項に記載のシステム。
【請求項８】
前記１つ以上の物理サーバは、前記プローブするステップを行なうために、データグラムベースの要求／応答動作を使用するように動作する、請求項２〜７のいずれか１項に記載のシステム。
【請求項９】
主要ネットワークインターフェイスおよびターゲットＩＰアドレスに対するプローブするステップが失敗した場合、前記１つ以上の物理サーバは、代替的のターゲットＩＰアドレスを、対応するネットワークインターフェイスを介して試行するように動作する、請求項２〜８のいずれか１項に記載のシステム。
【請求項１０】
前記１つ以上の物理サーバは、同期ＴＣＰベースのリモート・プロシージャ・コール（ＲＰＣ）動作を保護するために、ｐｉｎｇタイプの動作を使用するように動作する、請求項２〜９のいずれか１項に記載のシステム。
【請求項１１】
命令を含む機械読取可能なプログラムであって、前記命令は実行されると、システムに、ミドルウェアマシン環境において第１のノードと１つ以上のリモートターゲットノードとの間で高可用性（ＨＡ）ネットワーク通信を実装するための工程を実行させ、前記ミドルウェアマシン環境は前記第１のノードを前記１つ以上のリモートターゲットノードにインターフェイスするものであり、前記工程は、
複数のターゲットインターネットプロトコル（ＩＰ）アドレスの可用性を、複数の対応するネットワークインターフェイスを介して同時にプローブするステップを含み、前記複数のターゲットＩＰアドレスと前記複数の対応するネットワークインターフェイスとの各々は特定のリモートターゲットノードに関連付けられており、
対応する前記ターゲットＩＰアドレスに関連付けられた少なくとも１つの前記ネットワークインターフェイスから第１の応答を受信するステップと、
システムが前記第１の応答を受信した、前記ターゲットＩＰアドレスおよびネットワークインターフェイスを用いて、前記第１のノードと前記特定のリモートターゲットノードとの間の処理を行なうための通信接続を確立するステップとを含む、機械読取可能なプログラム。
【請求項１２】
ミドルウェアマシン環境を有するシステムであって、
ローカルノードと、
サブネットと、
１つ以上のターゲットインターネットプロトコル（ＩＰ）アドレスを介して第１のノードをサブネットに接続するための、１つ以上のネットワークインターフェイスと、
１つ以上のサーバとを含み、前記１つ以上のサーバは、
複数のターゲットＩＰアドレスの可用性を、複数の対応するネットワークインターフェイスを介して同時にプローブし、前記複数のターゲットＩＰアドレスと前記複数の対応するネットワークインターフェイスとの各々は特定のリモートターゲットノードに関連付けられており、
対応する前記ターゲットＩＰアドレスに関連付けられた少なくとも１つの前記ネットワークインターフェイスから第１の応答を受信し、
システムが前記第１の応答を受信した、前記ターゲットＩＰアドレスおよびネットワークインターフェイスを用いて、前記第１のノードと前記特定のリモートターゲットノードとの間の処理を行なうための通信接続を確立する、ように動作する、ミドルウェアマシン環境を有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文献の開示の一部は、著作権保護の対象となる資料を含む。この特許文献または特許開示は特許商標庁の特許ファイルまたは記録に記載されているため、著作権保有者は、何人によるその複写複製に対して異議はないが、その他の場合には如何なるときもすべての著作権を保有する。
【０００２】
発明の分野
この発明は、一般にコンピュータシステムに関し、特にミドルウェアマシン環境に関する。
【背景技術】
【０００３】
背景
相互接続ネットワークは、次世代のスーパーコンピュータ、クラスタおよびデータセンターにおいて有益な役割を果たす。たとえば、インフィニバンド（InfiniBand：ＩＢ）技術は、クラウド・コンピューティング・ファブリックの基盤として増加したデプロイメント（deployment）を見てきた。より大きいクラウド・コンピューティング・アーキテクチャが導入されるにつれて、伝統的なネットワークおよびストレージに関連する性能および管理上の障害が、かなりの問題となっている。
【０００４】
これが、この発明の実施形態が取組もうとしている一般的領域である。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
ここに説明されるのは、複数の独立した通信経路にわたって高可用性のインターネットプロトコル（Internet Protocol：ＩＰ）ベースの通信を実装できるシステムおよび方法である。このシステムは、異なるインターフェイスおよび通信経路に関連付けられた異なるＩＰアドレスを有することができ、また、ＩＰ層より上の通信層の一部として、たとえばアプリケーションレベルで通信フェイルオーバーを実装することができる。さらに、このシステムは、平均フェイルオーバー時間と実装複雑性との妥当なバランスを提供でき、また、高い通信性能を提供しつつ簡潔性および頑強性を達成できる。
【０００６】
この発明の別の局面によれば、ミドルウェアマシン環境が提供され、それは、ローカルノードと、サブネットと、１つ以上のリモートサービスアドレスを介してローカルノードをサブネットに接続するための、１つ以上のネットワークインターフェイスと、１つ以上のサーバとを含み、１つ以上のサーバは、１つ以上のリモートサービスアドレスの可用性を、１つ以上の対応するネットワークインターフェイスを介してプローブ（probe）し、前記リモートサービスアドレスの１つに関連付けられた前記ネットワークインターフェイスの１つから応答を受信し、前記リモートサービスアドレスを使用して動作を行なうために、通信接続を確立するように動作する。
【図面の簡単な説明】
【０００７】
【図１】この発明の一実施形態に従って、ミドルウェアマシン環境で、ＩＰアドレスをさまざまなネットワークインターフェイスに動的に結合することを介して高可用性のＩＰベースの通信をサポートする図である。
【図２】この発明の一実施形態に従って、ミドルウェアマシン環境で、ＩＰルーティング手法を使用して高可用性のＩＰベースの通信をサポートする図である。
【図３】この発明の一実施形態に従って、ミドルウェアマシン環境で、ＩＰ層より上の通信層を介して高可用性のＩＰベースの通信をサポートする図である。
【図４】この発明の一実施形態に従って、ミドルウェアマシン環境で、ピング（ping）タイプのプローブスキームを使用して通信フェイルオーバーを実装する図である。
【図５】この発明の一実施形態に従って、ミドルウェアマシン環境で、相互接続性がないネットワークにおいてリモートインターフェイスに対してプローブ動作を行なうために、複数のローカルインターフェイスを使用する図である。
【図６】この発明の一実施形態に従って、ミドルウェアマシン環境で、相互接続性があるネットワークにおいてリモートインターフェイスに対してプローブ動作を行なうために、複数のローカルインターフェイスを使用する図である。
【図７】この発明の一実施形態に従って、ミドルウェアマシン環境で、ｐｉｎｇタイプのプローブスキームを使用して通信フェイルオーバーを実装するための例示的なフローチャートを示す図である。
【図８】この発明の一実施形態の例示的な機能ブロック図である。
【発明を実施するための形態】
【０００８】
詳細な説明
この発明を、同じ参照符号が同様の要素を示す添付図面の図において、限定的ではなく例示的に説明する。なお、この開示における「ある」または「１つの」または「いくつかの」実施形態への言及は、必ずしも同じ実施形態とは限らず、そのような言及は少なくとも１つを意味する。
【０００９】
以下のようなこの発明の説明は、コンピュータネットワークの一例として、インターネットプロトコル（ＩＰ）ネットワークを使用する。他のタイプのコンピュータネットワークが限定なしで使用可能であることは、当業者には明らかであろう。
【００１０】
ここに説明されるのは、ミドルウェアマシン環境で高可用性通信をサポートできるシステムおよび方法である。たとえば、このシステムは、ミドルウェアマシン環境で同期伝送制御プロトコル（Transmission Control Protocol：ＴＣＰ）ベースのリモート・プロシージャ・コール（Remote Procedure Call：ＲＰＣ）動作を保護するために、宛先インターネットプロトコル（ＩＰ）アドレスをプローブするための短いタイムアウトの「ｐｉｎｇ」タイプの動作を使用できる。
【００１１】
高可用性（Highly Available：ＨＡ）のＩＰベースの通信
この発明の一実施形態によれば、ミドルウェアマシン環境で複数の独立した通信経路にわたって、ＩＰベースの通信といった高可用性通信を実装するために、異なる手法が使用可能である。
【００１２】
図１は、この発明の一実施形態に従って、ミドルウェアマシン環境で、ＩＰアドレスをさまざまなネットワークインターフェイスに動的に結合することを介して高可用性のＩＰベースの通信をサポートする図を示す。図１に示すように、ミドルウェアマシン環境１００において、ローカルノード１１０は、１つ以上のネットワークインターフェイス、たとえば、レイヤー２のネットワークインターフェイス１１１〜１１３を介して、サブネット１０１に接続可能である。
【００１３】
さらに、システムは、関連するＩＰアドレス１２０を、ローカルノード１１０への冗長経路を表わす異なるネットワークインターフェイス１１１〜１１３に動的に結合できる。加えて、システムは、たとえば、ローカルネットワークリンク障害イベントが記録されたことの検出を介して、ミドルウェアマシン環境におけるフェイルオーバーの必要性を検出することをサポートでき、あるいはローカルネットワーク上の予め定義された１つ以上の宛先アドレスをプローブすることに対する別個のタイムアウト機構とともに非同期通信インターフェイスを使用することをサポートできる。
【００１４】
図１に示すように、（たとえば、ローカルネットワークリンク障害を記録したことを介して）フェイルオーバーの必要性を一旦検出すると、システムは、ＩＰアドレス１２０をネットワークインターフェイス１１２から切り離し、ＩＰアドレス１２０を別のネットワークインターフェイス１１１と動的に結合することができる。
【００１５】
このアプローチは、現在のオペレーティングシステムでも使用されている（たとえば、Ｌｉｎｕｘ（登録商標）でのボンディング（bonding）およびＳｏｌａｒｉｓ（登録商標）でのＩＰＭＰ）が、ローカルＩＰアドレス１２０を高可用にし、レイヤー２のサブネット１０１へのローカルアクセスを高可用にするために、１つのＯＳインスタンスが複数のインターフェイス１１１〜１１３を利用するための比較的まっすぐな前進路を、同じレイヤー２のＩＰサブネット１０１に提供できる。このアプローチの１つの利点は、ＩＰアドレス割当ての障害検出およびフェイルオーバーが、より上位レベルのプロトコルのタイムアウトおよび再試行境界（たとえば、ＴＣＰ接続タイムアウト値）内で起こることである。これが達成される限り、アプリケーションレベルの通信に対する影響は、スループットの潜在的な一時的低下またはメッセージ配信の遅延を除き、あり得ない。
【００１６】
一方、このアプローチは、各インターフェイスが同じタイプを有することに依存しており、また、各ローカルインターフェイスが、単一のかつ十分に接続されたブロードキャストドメインを実現する同じレイヤー２のサブネットに接続されていることに依存している（すなわち、フェイルオーバーアクションは各ホストにローカルであり、各ホストは、それがどのローカルインターフェイスを任意の時点でアクティブであるとして使用するかを定義できなければならない）。
【００１７】
このため、上述の要件の各々を遂行できないシステムでは、別のアプローチが必要となり得る。
【００１８】
図２は、この発明の一実施形態に従って、ミドルウェアマシン環境で、ＩＰルーティング手法を使用して高可用性のＩＰベースの通信をサポートする図を示す。図２に示すように、ミドルウェアマシン環境２００において、ローカルノード２１０は、異なるネットワークインターフェイス、たとえば、レイヤー２のネットワークインターフェイス２１１〜２１３を介して、さまざまなサブネット２０１〜２０２に接続可能である。
【００１９】
さらに、システムは、単一の高可用性ネットワークアドレス、たとえばサービスＩＰアドレス２２０が、異なるローカルＩＰアドレスを有する異なるインターフェイスおよび経路を介して可用になるようにするために、ＩＰルーティング２０３手法を使用できる。
【００２０】
図２に示すように、フェイルオーバーの必要性を一旦検出すると、システムはＩＰルーティング２０３を使用して、トラフィックをネットワークインターフェイス２１１に向けることができる。図１に示すような、ＩＰアドレス１２０が別のネットワークインターフェイスに動的に関連付けられるアプローチとは異なり、システムは、ＩＰアドレス２２０をネットワークインターフェイス２１２から切り離し、ＩＰアドレス２２０を別のネットワークインターフェイス２１１に動的に関連付ける代わりに、ＩＰアドレス２２０をひき続き使用できる。
【００２１】
このため、ＩＰルーティング２０３を使用すると、ローカルフェイルオーバー時間が減少し得る。さらに、このアプローチは、図１に示すようなアプローチよりも包括的である。なぜなら、それは、媒体タイプおよび外部ネットワークトポロジーから独立可能なためである。
【００２２】
図１に示すアプローチと同様に、このアプローチの利点は、ＩＰアドレス割当ての障害検出およびフェイルオーバーが、より上位レベルのプロトコルのタイムアウトおよび再試行境界（たとえば、ＴＣＰ接続タイムアウト値）内で起こり得ることである。これが達成される限り、アプリケーションレベルの通信に対する影響は、スループットの潜在的な一時的低下またはメッセージ配信の遅延を除き、ない。
【００２３】
一方、ＩＰルーティング２０３を使用することは、各ホストのＩＰルーティング規則およびルーティング能力宣伝が、関与するネットワーク毎に存在するルーティング規則と同期される必要性を暗示する。このため、ホスト毎のＩＰルーティング能力が、データセンターにおける論理ネットワーク設計全体の不可欠な部分ではない場合、そのようなスキームの保守は複雑になったり、エラーを起こしやすくなったりする場合がある。
【００２４】
また、ＩＰルーティング２０３に基づいたフェイルオーバーは、クラスタ構成が１組のプライベートネットワークを定義しない限り、クラスタタイプの製品設計の必要な部分ではないかもしれない。加えて、データセンター管理ネットワークを使用する場合、ＩＰルーティング２０３に基づいたフェイルオーバーは、有効なオプションと見なされないかもしれない。
【００２５】
このため、システム固有の高可用性通信を実装するために、別のアプローチが必要となり得る。
【００２６】
図３は、この発明の一実施形態に従って、ミドルウェアマシン環境で、ＩＰ層より上の通信層を介して高可用性のＩＰベースの通信をサポートする図を示す。図３に示すように、ミドルウェアマシン環境３００において、ローカルノード３１０は、異なるネットワークインターフェイス、たとえば、レイヤー２のネットワークインターフェイス３１１〜３１３を介して、ネットワークファブリック３０１に接続可能である。ネットワークファブリック３０１は、さまざまなサブネットを含み得る。さらに、異なるＩＰアドレス３２１〜３２３が、異なるネットワークインターフェイス３１１〜３１３および通信経路に関連付けられ得る。
【００２７】
加えて、システムは、ＩＰ層（レイヤー３）より上の通信層の一部として、たとえばアプリケーションレベルで、ローカルノード３０１上に存在するアプリケーション３２０を介して通信フェイルオーバーを実装できる。
【００２８】
このアプローチはかなりのフレキシビリティを有しており、非常に汎用性がある。また、このアプローチは、外部ネットワーク設計またはトポロジーに依存していない。一方、このアプローチは、アプリケーションレベルで実装される場合、実装複雑性を追加する。加えて、順序付けおよび信頼性を達成するためにＴＣＰのようなトランスポートプロトコルを使用する場合には、フェイルオーバー動作は、ＴＣＰを介して達成される信頼性または順序付けをそれらが妨害しないことを確実にする必要があり得る。このため、複数の独立したＴＣＰ接続にわたって動作する、信頼性のある順序付けプロトコルを実装するか、または、別の接続を介して再試行可能な各動作を、互いに対して冪等となるよう限定する必要があり得る。
【００２９】
さらに、第３のアプローチが使用される場合、システムは、フェイルオーバーの必要性を検出するために、次の章で説明され得るｐｉｎｇタイプのプローブスキームを採用できる。
【００３０】
Ｐｉｎｇタイプのプローブスキーム
図４は、この発明の一実施形態に従って、ミドルウェアマシン環境で、ｐｉｎｇタイプのプローブスキームを使用して通信フェイルオーバーを実装する図を示す。図４に示すように、ミドルウェアマシン環境４００は、ローカルノード４０１と、１つ以上のリモートノードＡ４０２〜Ｂ４０３とを含み得る。
【００３１】
たとえば、図３に示すようなアプローチを使用して、各ノードは、１組のネットワークインターフェイスと、対応する１組のネットワークアドレスとに関連付けられ得る。図４に示すように、ローカルノード４０１は、ネットワークインターフェイス４１１とＩＰアドレス４２１とに関連付けられ、一方、リモートノード４０２は、１組のネットワークインターフェイス４１２および４１４と、ＩＰアドレス４２２および４２４とに関連付けられ、リモートノード４０３は、１組のネットワークインターフェイス４１３および４１５と、ＩＰアドレス４２３および４２５とに関連付けられている。
【００３２】
他の例では、限定なしで、ローカルネットワークインターフェイスとリモートＩＰアドレスとの多くの異なる組合せがあり得る。また、いくつかのリモートＩＰアドレスが同じローカルネットワークインターフェイスに関連付けられてもよく、逆もまた同様であってもよい。
【００３３】
図４に示すように、ローカルノード４０１は、リモート動作（またはリモート動作のシーケンス）がアプリケーションロジック４１０に基づいて行なわれることになるたびに、新しい接続、たとえばＴＣＰ接続４３１または４３２を確立できる。さらに、システムは、順序付けまたは再試行に関するリスクを最小限にするために、標準ＴＣＰタイムアウト設定に従ってすべての動作を同期して行なうことができる。次に、リモート動作が完了した後で、システムは接続４３１または４３２を閉鎖できる。
【００３４】
この発明の一実施形態によれば、新しい接続が確立される前に、システムは、リモートサービスＩＰアドレスの可用性を、対応するリモートネットワークインターフェイス４１２〜４１５を介して発見するために、プローブ動作４３３〜４３６のうちの１つを使用することができる。たとえば、プローブ動作４３３〜４３６の各々は、インターネット制御メッセージ（Internet Control Message：ＩＣＭ）ベースのｐｉｎｇ動作、または他のデータグラムベースの要求／応答動作であってもよく、それらは、ＴＣＰレベル接続タイムアウトに比べて短いタイムアウト値を有していてもよい。
【００３５】
図４に示すように、リモートノードＢ４０３に関連付けられた主要インターフェイス４１５およびターゲットＩＰアドレス４２５で、プローブ動作、たとえばｐｉｎｇ４３５が失敗した場合、システムは、代替的なＩＰアドレス４２３に対して、対応するリモートネットワークインターフェイス４１３を介して、別のプローブ動作、たとえばｐｉｎｇ４３３を試行できる。次に、ネットワークインターフェイス４１１が一旦、ネットワークインターフェイス４１３から応答４３７を受信すると、システムは、ローカルノード４０１とリモートノードＢ４０３との通信を設定できる。
【００３６】
加えて、通信問題が存在する状態で設定時間を減少させるために、システムは、ある特定のリモートターゲットノードにすべて関連付けられた複数のターゲットＩＰアドレスおよびリモートネットワークインターフェイスのために、ｐｉｎｇ動作を同時に行なうことができる。図４に示すように、ローカルノード４０１は、ターゲットノードＡ４０２にすべて関連付けられた複数のターゲットＩＰアドレス４２２および４２４ならびにリモートネットワークインターフェイス４１２および４１４のために、ｐｉｎｇ動作４３４および４３６を同時に行なうことができる。そのような場合、ローカルノード４０１は、ＩＰアドレス４２２とネットワークインターフェイス４１２との組合せを使用でき、そこからシステムは第１のｐｉｎｇ応答４３８を受信する。
【００３７】
図５は、この発明の一実施形態に従って、ミドルウェアマシン環境で、相互接続性がないネットワークにおいてリモートインターフェイスに対してプローブ動作を行なうために、複数のローカルインターフェイスを使用する図を示す。図５に示すように、ミドルウェアマシン環境５００は、ローカルノード５０１と、いくつかのリモートノード、たとえばリモートノードＡ５０２およびリモートノードＢ５０３とを含み得る。
【００３８】
ｐｉｎｇタイプのプローブスキームを使用して、各ノードは、１組のネットワークインターフェイスと、対応する１組のネットワークアドレスとに関連付けられ得る。そのような各ネットワークインターフェイスは、物理的に独立した異なるネットワークへの接続性を表わしていてもよい。
【００３９】
図５に示すように、ローカルノード５０１は、１組のローカルネットワークインターフェイス５１１および５１６に関連付けられている。ローカルネットワークインターフェイス５１１はＩＰアドレス５２１に関連付けられ、一方、ローカルネットワークインターフェイス５１６はＩＰアドレス５２６に関連付けられている。さらに、リモートノードＡ５０２は、１組のネットワークインターフェイス５１２および５１４と、ＩＰアドレス５２２および５２４とに関連付けられ、リモートノードＢ５０３は、１組のネットワークインターフェイス５１３および５１５と、ＩＰアドレス５２３および５２５とに関連付けられている。
【００４０】
加えて、ネットワークインターフェイス５１３、５１４および５１６は、物理ネットワークＸ（ＰＮＸ）に関連付けられ、ネットワークインターフェイス５１１、５１２および５１５は、別の物理ネットワークＹ（ＰＮＹ）に関連付けられ得る。ここで、各物理ネットワーク（ＰＮＸまたはＰＮＹ）は、物理的なイーサネット（登録商標）ネットワーク、またはＩＰオーバーＩＢ（IP-over-IB）論理ネットワークのいずれかを表わしていてもよい。たとえば、このシステムは、ネットワーク管理専用の管理イーサネットインターフェイスおよびIP-over-IB論理ネットワークの使用を可能にする。さらに、対応するＩＰアドレス５２１〜５２６は、異なるＩＰサブネットに関連付けられてもよい。たとえば、ＰＮＸ上のサブネットＸ（ＳｕｂＸ）は、ＩＰアドレス５２３〜５２４および５２６を含んでいてもよく、ＰＮＹ上のサブネットＹ（ＳｕｂＹ）は、ＩＰアドレス５２１〜５２２および５２５を含んでいてもよい。
【００４１】
この発明の一実施形態によれば、システムは、ＰＮＸおよびＰＮＹといった物理的に独立した異なるネットワークをプローブするために、ローカルネットワークインターフェイス５１１および５１６の各々を使用できる。上述の例では、ローカルノード５０１は、ＳｕｂＸに属するＩＰアドレス５２３〜５２４および５２６のために、インターフェイス５１６のみを介してプローブ動作を行ない、ＳｕｂＹに属するＩＰアドレス５２１〜５２２および５２５のために、インターフェイス５１１のみを介してプローブ動作を行なってもよい。このため、ＰＮＸに関連付けられたネットワークインターフェイス上で送信された任意のパケットが、ＰＮＹに関連付けられたネットワークインターフェイス上に到着しない場合がある（すなわち、ＰＮＸとＰＮＹとは、相互接続性がない独立したネットワークである）。
【００４２】
図５に示すように、ローカルノード５０１は、（たとえばｐｉｎｇ動作５３４を使用して）リモートノードＡ５０２上のネットワークインターフェイス５１４をプローブするために、および（たとえばｐｉｎｇ動作５３１を使用して）リモートノードＢ５０３上のネットワークインターフェイス５１３をプローブするために、ローカルネットワークインターフェイス５１６を使用できる。加えて、システムは、（たとえばｐｉｎｇ動作５３２を使用して）リモートノードＡ５０２上のネットワークインターフェイス５１２、および（たとえばｐｉｎｇ動作５３３を使用して）リモートノードＢ５０３上のネットワークインターフェイス５１５をプローブするために、ローカルネットワークインターフェイス５１１を使用できる。
【００４３】
他の例では、限定なしで、ローカルネットワークインターフェイスとリモートＩＰアドレスとの多くの異なる組合せがあり得る。また、いくつかのリモートＩＰアドレスが同じローカルネットワークインターフェイスに関連付けられてもよく、逆もまた同様であってもよい。
【００４４】
図５に示すように、ローカルノード５０１は、リモート動作（またはリモート動作のシーケンス）がアプリケーションロジックに基づいて行なわれることになるたびに、新しい接続、たとえばＴＣＰ接続５０６または５０７を確立できる。さらに、システムは、順序付けまたは再試行に関するリスクを最小限にするために、標準ＴＣＰタイムアウト設定に従ってすべての動作を同期して行なうことができる。次に、リモート動作が完了すると、システムは接続５０６または５０７を閉鎖できる。
【００４５】
この発明の一実施形態によれば、新しい接続が確立される前に、システムは、リモートサービスＩＰアドレスの可用性を、異なる物理ネットワークにおける対応するリモートネットワークインターフェイス５１２〜５１５を介して発見するために、プローブ動作５３１〜５３４のうちの１つを使用することができる。たとえば、プローブ動作５３１〜５３４の各々は、インターネット制御メッセージ（ＩＣＭ）ベースのｐｉｎｇ動作、または他のデータグラムベースの要求／応答動作であってもよく、それらは、ＴＣＰレベル接続タイムアウトに比べて短いタイムアウト値を有していてもよい。
【００４６】
図５に示すような例では、リモートノードＢ５０３に関連付けられた主要インターフェイス５１５およびターゲットＩＰアドレス５２５で、プローブ動作、たとえばｐｉｎｇ５３３が失敗した場合、システムは、代替的なＩＰアドレス５２３に対して、対応するリモートネットワークインターフェイス５１３を介して、別のプローブ動作、たとえばローカルネットワークインターフェイス５１６からのｐｉｎｇ５３１を試行できる。次に、ネットワークインターフェイス５１６が一旦、ネットワークインターフェイス５１３から応答５３５を受信すると、システムは、ローカルノード５０１とリモートノードＢ５０３との通信を設定できる。
【００４７】
加えて、通信問題が存在する状態で設定時間を減少させるために、システムは、ある特定のリモートターゲットノードにすべて関連付けられた複数のターゲットＩＰアドレスおよびリモートネットワークインターフェイスのために、ｐｉｎｇ動作を同時に行なうことができる。
【００４８】
図５に示すように、ローカルネットワークインターフェイス５１１および５１６を使用して、ローカルノード５０１は、ターゲットノードＡ５０２にすべて関連付けられた複数のターゲットＩＰアドレス５２２および５２４ならびにリモートネットワークインターフェイス５１２および５１４のために、ｐｉｎｇ動作５３２および５３４を同時に行なうことができる。そのような場合、ローカルノード５０１は、ＩＰアドレス５２２とネットワークインターフェイス５１２との組合せを使用でき、そこからシステムは第１のｐｉｎｇ応答５３６を受信する。
【００４９】
図６は、この発明の一実施形態に従って、ミドルウェアマシン環境で、相互接続性があるネットワークにおいてリモートインターフェイスに対してプローブ動作を行なうために、複数のローカルインターフェイスを使用する図を示す。図６に示すように、ミドルウェアマシン環境６００は、ローカルノード６０１と、いくつかのリモートノード、たとえばリモートネットワークＡ６０４におけるリモートノードＡ６０２およびリモートネットワークＡ６０５におけるリモートノードＢ６０３とを含み得る。
【００５０】
加えて、ｐｉｎｇタイプのプローブスキームを使用して、各ノードは、１組のネットワークインターフェイスと、対応する１組のネットワークアドレスとに関連付けられ得る。図６に示すように、ローカルノード６０１は、１組のローカルネットワークインターフェイス６１１および６１６に関連付けられている。ローカルネットワークインターフェイス６１１はＩＰアドレス６２１に関連付けられ、一方、ローカルネットワークインターフェイス６１６はＩＰアドレス６２６に関連付けられている。さらに、リモートノードＡ６０２は、１組のネットワークインターフェイス６１２および６１４と、ＩＰアドレス６２２および６２４とに関連付けられ、リモートノードＢ６０３は、１組のネットワークインターフェイス６１３および６１５と、ＩＰアドレス６２３および６２５とに関連付けられている。
【００５１】
ここで、システムは、図２に示すような概念に対応することができる。さらに、アプリケーションレベルのロジックは、各ローカルノードがフェイルオーバーアクションとして単一のＩＰアドレスをローカルインターフェイス間で移動させることに依存する代わりに、ローカルノード６０１が、ローカルネットワークインターフェイスおよびリモートＩＰアドレスの可能な組合せに対してプローブを行なうことを可能にする。
【００５２】
この発明の一実施形態によれば、システムは、物理的に独立した異なるネットワークＡ６０４〜Ｂ６０５をプローブするために、ローカルネットワークインターフェイス６１１および６１６の各々を使用できる。図６に示すように、物理的に独立した異なるネットワークＡ６０４〜Ｂ６０５におけるノードＡ６０２またはノードＢ６０３上の双方のインターフェイスにｐｉｎｇを送信するために、ローカルノード６０１は、ローカルインターフェイス６１１および６１６の各々から１つのｐｉｎｇ動作を行なうことができる（すなわち、ｐｉｎｇ動作６３１〜６３８）。このため、システムは、リモートノードＡ６０２上のネットワークインターフェイス６１４、およびリモートノードＢ６０３上のネットワークインターフェイス６１３をプローブするために、ローカルネットワークインターフェイス６１６を使用できる。加えて、システムは、リモートノードＡ６０２上のネットワークインターフェイス６１２、およびリモートノードＢ６０３上のネットワークインターフェイス６１５をプローブするために、ローカルネットワークインターフェイス６１１を使用できる（すなわち、すべてのノード上のすべてのネットワークインターフェイスは、互いに通信可能である）。
【００５３】
他の例では、限定なしで、ローカルネットワークインターフェイスとリモートＩＰアドレスとの多くの異なる組合せがあり得る。また、いくつかのリモートＩＰアドレスが同じローカルネットワークインターフェイスに関連付けられてもよく、逆もまた同様であってもよい。
【００５４】
図６に示すように、ローカルノード６０１は、リモート動作（またはリモート動作のシーケンス）がアプリケーションロジックに基づいて行なわれることになるたびに、新しい接続、たとえばＴＣＰ接続６０６または６０７を確立できる。さらに、システムは、順序付けまたは再試行に関するリスクを最小限にするために、標準ＴＣＰタイムアウト設定に従ってすべての動作を同期して行なうことができる。次に、リモート動作が完了すると、システムは接続６０６または６０７を閉鎖できる。
【００５５】
この発明の一実施形態によれば、新しい接続が確立される前に、システムは、リモートサービスＩＰアドレスの可用性を、異なる物理ネットワークＡ６０４〜Ｂ６０５における対応するリモートネットワークインターフェイス６１２〜６１５を介して発見するために、プローブ動作６３１〜６３８のうちの１つを使用することができる。たとえば、プローブ動作６３１〜６３８の各々は、インターネット制御メッセージ（ＩＣＭ）ベースのｐｉｎｇ動作、または他のデータグラムベースの要求／応答動作であってもよく、それらは、ＴＣＰレベル接続タイムアウトに比べて短いタイムアウト値を有していてもよい。
【００５６】
図６に示すような例では、リモートノードＢ６０３に関連付けられた主要インターフェイス６１５およびターゲットＩＰアドレス６２５で、プローブ動作、たとえばｐｉｎｇ６３５が失敗した場合、 システムは、代替的なＩＰアドレス６２３に対して、対応するリモートネットワークインターフェイス６１３を介して、別のプローブ動作、たとえばローカルネットワークインターフェイス６１６からのｐｉｎｇ６３１を試行できる。次に、ネットワークインターフェイス６１６が一旦、ネットワークインターフェイス６１３から応答６３９を受信すると、システムは、ローカルノード６０１とリモートノードＢ６０３との通信を設定できる。
【００５７】
加えて、通信問題が存在する状態で設定時間を減少させるために、システムは、ある特定のリモートターゲットノードに関連付けられたすべて複数のターゲットＩＰアドレスおよびリモートネットワークインターフェイスのために、ｐｉｎｇ動作を同時に行なうことができる。
【００５８】
図６に示すように、ローカルネットワークインターフェイス６１１および６１６を介して、ローカルノード６０１は、ターゲットノードＡ６０２にすべて関連付けられた複数のターゲットＩＰアドレス６２２および６２４ならびにリモートネットワークインターフェイス６１２および６１４のために、ｐｉｎｇ動作６３２、６３４、６３６および６３８を同時に行なうことができる。そのような場合、ローカルノード６０１は、ＩＰアドレス６２２とネットワークインターフェイス６１２との組合せを使用でき、そこからシステムは第１のｐｉｎｇ応答６４０を受信する。
【００５９】
さらに、システムにおいて冪等動作のみが行なわれる場合には、複数の常時接続がシステムによって維持可能である。たとえば、システムは、各組のリモート動作毎に新しい接続を確立する代わりに、同じ組の接続を、それらが動作可能であると考えられる限り維持することができる。そのような場合、各組の動作にとって唯一のオーバーヘッドは、動作を行なうために接続を選択するために使用される「ｐｉｎｇ」ベースのスキームである。
【００６０】
この発明の一実施形態によれば、このｐｉｎｇベースのスキームは、平均フェイルオーバー時間と実装複雑性との妥当なバランスを提供でき、また、（特に、何らかのオーバーヘッドが受入れ可能であり得る場合）できるだけ高い通信性能を達成することに対して簡潔性および頑強性を達成できる。
【００６１】
ｐｉｎｇベースのスキームの１つの利点は、ＴＣＰタイムアウトスキームに基づいた障害検出に比べ、平均障害検出時間が著しく減少可能であることである。その結果、フェイルオーバー時間は全体として減少可能である。たとえば、アプリケーション実行時間全体のごく一部の間のみリモート動作がアクティブである場合、ｐｉｎｇベースのプローブ動作は、リモート動作を行なう前に、ほとんどの困難な通信経路問題を捕らえることができる。
【００６２】
さらに、リモート動作中に通信障害が起こるかもしれず、その場合、フェイルオーバー時間は、ＴＣＰタイムアウト遅延の影響を受けるかもしれない。また、通信がより頻繁になるにつれて、通信中に通信問題に遭遇する可能性はより高くなり、平均フェイルオーバー時間は増加するかもしれない。なぜなら、より多くの障害が、ｐｉｎｇベースのプローブを介する代わりにＴＣＰタイムアウトを介して検出され得るためである。
【００６３】
この発明の一実施形態によれば、通信障害検出のためのｐｉｎｇベースのスキームは、十分に動作可能な冗長通信の場合、およびすべての冗長経路が動作可能であるとは限らない場合の双方にとって有益になり得る。
【００６４】
また、ｐｉｎｇベースのスキームは、管理動作を実装するために使用可能である。管理動作はそれほど頻繁には行なれず、また、短い応答時間が非常に望ましいものの、必要とはされていない。
【００６５】
加えて、このｐｉｎｇベースの通信フェイルオーバースキームは、非常に通信集約的なアプリケーションのために、または、ほぼ数秒の返答時間を保証しなければならないシステムのために、さらに、冗長経路のうちの１つを停止させる障害の場合に、使用可能である。
【００６６】
ｐｉｎｇベースのスキームの別の利点は、リモート・プロシージャ・コール（ＲＰＣ）ベースの通信をサポートするために使用される場合、ＲＰＣ動作の開始者（またはクライアント）側のみが、ｐｉｎｇベースのプローブスキームおよびフェイルオーバー取扱いを認識し得る、ということである。
【００６７】
応答者（サーバ）が対応する要求を受信した直後にＲＰＣ返答が返される限り、最初の保護ｐｉｎｇ動作は、ＲＰＣ動作の要求および応答部分の双方について関連し得る（すなわち、時間が隣接している）。次に、ＲＰＣ動作の応答者（サーバ）側は、要求が到着したのと同じ経路を介して返答を返す。また、応答者（サーバ）側は、開始者（またはクライアント）側による経路の明示的な選択の結果、フェイルオーバー動作を透過的に行なうことができる。
【００６８】
この発明の一実施形態によれば、マネージャタイプのアプリケーションは、ＲＰＣサーバとして動作する多くの異なるエージェントとともに、ＲＰＣクライアントとして機能できる。マネージャタイプのアプリケーションは、冗長経路ベースの通信フェイルオーバーロジックを実装でき、それは、そのようなフェイルオーバーロジックを認識していない多くの異なるエージェントにとって透過的に動作できる。一例では、エージェントについての唯一の要件は、エージェントが、異なるＩＰアドレスを有する複数のインターフェイスを通して、動的なＲＰＣ接続を受信できる、ということである。これは、ホスティングＯＳインスタンスが関連する論理ネットワークインターフェイスで構成されている限り、任意の応答者側のロジックのためのデフォルト動作であり得る。
【００６９】
図７は、この発明の一実施形態に従って、ミドルウェアマシン環境で、ｐｉｎｇタイプのプローブスキームを使用して通信フェイルオーバーを実装するための例示的なフローチャートを示す。図７に示すように、ステップ７０１で、ローカルサーバノードが、１つ以上のリモートサービスアドレスの可用性を、１つ以上の対応するネットワークインターフェイスを介してプローブできる。次に、ステップ７０２で、ローカルサーバノードは、前記リモートサービスアドレスの１つに関連付けられた前記ネットワークインターフェイスの１つから応答を受信できる。さらに、ステップ７０３で、システムは、前記リモートサービスアドレスを使用して動作を行なうために、通信接続を確立できる。
【００７０】
図８は、システム８００の例示的な機能ブロック図を示す。システム８００は、プローブモジュール８１０と、１つ以上のネットワークインターフェイス８２０と、受信モジュール８３０と、確立モジュール８４０とを含む。システム８００は、ネットワークインターフェイス８２０を介して、１つ以上のリモートサービスアドレス８５０に接続可能である。一実施形態によれば、プローブモジュール８１０と、受信モジュール８３０と、確立モジュール８４０とは、ソフトウェアモジュールであってもよく、それは１つ以上のプロセッサによって実現される。
【００７１】
プローブモジュール８１０は、１つ以上のリモートサービスアドレス８５０の可用性を、１つ以上の対応するネットワークインターフェイス８２０を介してプローブできる。受信モジュール８３０は、リモートサービスアドレス８５０に関連付けられたネットワークインターフェイス８２０から応答を受信できる。この発明の一実施形態に従って確立された確立モジュール８４０は、以下に説明するように、１つ以上のコンピュータを使用して実現可能である。
【００７２】
この発明は、この開示の教示に従ってプログラミングされた１つ以上のプロセッサ、メモリ、および／またはコンピュータ読取可能な記憶媒体を含む、従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを１つ以上用いて、都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、適切なソフトウェアコーディングが、この開示の教示に基づいて、熟練したプログラマらによって容易に準備可能である。
【００７３】
いくつかの実施形態では、この発明は、この発明のプロセスのうちのいずれかを行なうようにコンピュータをプログラミングするために使用可能な命令が格納された記憶媒体またはコンピュータ読取可能な媒体である、コンピュータプログラム製品を含む。この記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含むあらゆるタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気カードまたは光カード、ナノシステム（分子メモリＩＣを含む）、もしくは、命令および／またはデータを格納するのに好適なあらゆるタイプの媒体またはデバイスを含み得るものの、それらに限定されない。
【００７４】
この発明の前述の説明は、例示および説明のために提供されてきた。それは、包括的であるよう、または、この発明を開示された形態そのものに限定するよう意図されてはいない。当業者には、多くの変更および変形が明らかであろう。変更および変形は、開示された特徴の任意の組合せを含む。実施形態は、この発明の原理およびその実際の応用を最良に説明するために選択され説明されており、それにより、当業者が、考えられる特定の用途に適したさまざまな実施形態に関する、およびさまざまな変更を有するこの発明を理解できるようにする。この発明の範囲は、特許請求の範囲およびその均等物によって定義されることが意図されている。
【図１】
0006341914.tif 000002
【図２】
0006341914.tif 000003
【図３】
0006341914.tif 000004
【図４】
0006341914.tif 000005
【図５】
0006341914.tif 000006
【図６】
0006341914.tif 000007
【図７】
0006341914.tif 000008
【図８】
0006341914.tif 000009