(57)【要約】【課題】２重化されたネットワークシステムの一方を介して通信する複数のノードコンピュータにおけるネットワーク切り替えの整合性をより確実に確保する。【解決手段】２系統のネットワークＬＡＮ＃１，ＬＡＮ＃２に接続されたノードコンピュータ１００は、登録されたＧＷに基づき、アプリケーションレベルの通信で使用するネットワークを切り替えるネットワーク切替部２６を備える。ネットワーク切替部２６は、正常ネットワーク判定部２５によって判定されたＬＡＮ＃１，ＬＡＮ＃２についての正常または異常の情報と、自ノードコンピュータのＧＷの情報と、相手ノードコンピュータからの生存監視パケットに含まれている相手ノードコンピュータのＧＷの情報と、に基づき、自ノードコンピュータの登録ＧＷを更新し、アプリケーションレベルの通信で使用するネットワークを、その更新した登録ＧＷに接続されたＬＡＮ＃１またはＬＡＮ＃２に切り替える。【選択図】図２
2012222656.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードコンピュータが、互いに独立な２重化されたネットワークを介して、相互に接続されて構成されたコンピュータネットワーク通信システムにおけるノードコンピュータであって、
前記２重化されたネットワークのそれぞれのネットワークに接続される２重化された通信インタフェースと、
所定の時間ごとに、自ノードコンピュータがアプリケーションレベルの通信で使用しているネットワークに接続された通信インタフェースであるゲートウェイを指定するゲートウェイ情報を含んで構成された生存監視パケットを、前記２重化された通信インタフェースのそれぞれを介して、そのそれぞれの通信インタフェースに接続されたネットワークへブロードキャストする生存監視パケット送信部と、
前記２重化された通信インタフェースのそれぞれを介して、そのそれぞれの通信インタフェースに接続されたネットワークにおいてブロードキャストされている生存監視パケットを受信する生存監視パケット受信部と、
前記生存監視パケット受信部における前記生存監視パケットの受信状況に基づき、前記２重化されたネットワークのそれぞれについて、そのネットワークが正常であるかまたは異常であるかを判定する正常ネットワーク判定部と、
前記生存監視パケット受信部によって前記生存監視パケットが受信された場合には、前記正常ネットワーク判定部によって判定された結果に基づく前記２重化されたネットワークのそれぞれが正常であるかまたは異常であるかを示す情報と、自ノードコンピュータのゲートウェイ情報と、前記受信された生存監視パケットに含まれる相手ノードコンピュータのゲートウェイ情報と、に基づいて、自ノードコンピュータのゲートウェイ情報を更新し、その更新したゲートウェイ情報がそれまでのゲートウェイ情報と異なるときには、自ノードコンピュータがアプリケーションレベルで使用するネットワークを切り替えるネットワーク切替部と、
を備えること
を特徴とするコンピュータネットワーク通信システムにおけるノードコンピュータ。
【請求項２】
前記生存監視パケットは、アプリケーションレベルの通信で使用するネットワークを優先して選択するための優先度情報を、さらに、含んで構成され、
前記ネットワーク切替部は、
自ノードコンピュータのゲートウェイ情報によって指定されるネットワークと、相手ノードコンピュータのゲートウェイ情報によって指定されるネットワークと、が相違した場合には、自ノードコンピュータの優先度情報と相手ノードコンピュータの優先度情報とを比較し、自ノードコンピュータのゲートウェイ情報によって指定されるネットワークが、前記優先度情報が大きいほうのノードコンピュータのゲートウェイ情報によって指定されるネットワークと同じになるように、自ノードコンピュータのゲートウェイ情報を更新すること
を特徴とする請求項１に記載のコンピュータネットワーク通信システムにおけるノードコンピュータ。
【請求項３】
前記生存監視パケットは、自ノードコンピュータのゲートウェイ情報によって指定されるネットワークを相手ノードコンピュータに強制することを指示する強制フラグ情報を、さらに、含んで構成され、
前記ネットワーク切替部は、
自ノードコンピュータのゲートウェイ情報によって指定されるネットワークと、相手ノードコンピュータのゲートウェイ情報によって指定されるネットワークと、が相違し、かつ、前記受信された生存監視パケットに前記強制フラグ情報が含まれていた場合には、前記優先度情報の如何にかかわらず、自ノードコンピュータのゲートウェイ情報によって指定されるネットワークが、前記相手ノードコンピュータのゲートウェイ情報によって指定されるネットワークと同じになるように、自ノードコンピュータのゲートウェイ情報を更新すること
を特徴とする請求項２に記載のコンピュータネットワーク通信システムにおけるノードコンピュータ。
【請求項４】
複数のノードコンピュータが、互いに独立な２重化されたネットワークを介して、相互に接続されて構成されたコンピュータネットワーク通信システムにおけるノードコンピュータのネットワーク切替方法であって、
前記ノードコンピュータは、
前記２重化されたネットワークのそれぞれのネットワークに接続される２重化された通信インタフェースを備え、
所定の時間ごとに、自ノードコンピュータがアプリケーションレベルの通信で使用しているネットワークに接続された通信インタフェースであるゲートウェイを指定するゲートウェイ情報を含んで構成された生存監視パケットを、前記２重化された通信インタフェースのそれぞれを介して、そのそれぞれの通信インタフェースに接続されたネットワークへブロードキャストする生存監視パケット送信処理と、
前記２重化された通信インタフェースのそれぞれを介して、そのそれぞれの通信インタフェースに接続されたネットワークにおいてブロードキャストされている生存監視パケットを受信する生存監視パケット受信処理と、
前記生存監視パケット受信処理による前記生存監視パケットの受信状況に基づき、前記２重化されたネットワークのそれぞれについて、そのネットワークが正常であるかまたは異常であるかを判定する正常ネットワーク判定処理と、
前記生存監視パケット受信処理により前記生存監視パケットを受信した場合には、前記正常ネットワーク判定処理により判定した前記２重化されたネットワークのそれぞれが正常であるかまたは異常であるかを示す情報と、自ノードコンピュータのゲートウェイ情報と、前記受信された生存監視パケットに含まれる相手ノードコンピュータのゲートウェイ情報と、に基づいて、自ノードコンピュータのゲートウェイ情報を更新するとともに、その更新したゲートウェイ情報がそれまでのゲートウェイ情報と異なるときには、自ノードコンピュータがアプリケーションレベルで使用するネットワークを、前記更新したゲートウェイ情報によって指定されるネットワークに切り替えるネットワーク切替処理と、
を実行すること
を特徴とするネットワーク切替方法。
【請求項５】
前記生存監視パケットは、アプリケーションレベルの通信で使用するネットワークを優先して選択するための優先度情報を、さらに、含んで構成され、
前記ノードコンピュータは、
前記ネットワーク切替処理において、
自ノードコンピュータのゲートウェイ情報によって指定されるネットワークと、相手ノードコンピュータのゲートウェイ情報によって指定されるネットワークと、が相違した場合には、自ノードコンピュータの優先度情報と相手ノードコンピュータの優先度情報とを比較し、自ノードコンピュータのゲートウェイ情報によって指定されるネットワークが、前記優先度情報が大きいほうのノードコンピュータのゲートウェイ情報によって指定されるネットワークと同じになるように、自ノードコンピュータのゲートウェイ情報を更新すること
を特徴とする請求項４に記載のネットワーク切替方法。
【請求項６】
前記生存監視パケットは、自ノードコンピュータのゲートウェイ情報によって指定されるネットワークを相手ノードコンピュータに強制することを指示する強制フラグ情報を、さらに、含んで構成され、
ノードコンピュータは、
前記ネットワーク切替処理において、
自ノードコンピュータのゲートウェイ情報によって指定されるネットワークと、相手ノードコンピュータのゲートウェイ情報によって指定されるネットワークと、が相違し、かつ、前記受信された生存監視パケットに前記強制フラグ情報が含まれていた場合には、前記優先度情報の如何にかかわらず、自ノードコンピュータのゲートウェイ情報によって指定されるネットワークが、前記相手ノードコンピュータのゲートウェイ情報によって指定されるネットワークと同じになるように、自ノードコンピュータのゲートウェイ情報を更新すること
を特徴とする請求項５に記載のネットワーク切替方法。
【請求項７】
請求項４ないし請求項６のいずれか１項に記載のネットワーク切替方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２重化されたネットワークに複数のノードコンピュータが接続されて構成されたコンピュータネットワーク通信システムにおけるノードコンピュータ、ネットワーク切替方法およびプログラムに関する。
【背景技術】
【０００２】
２重化されたネットワークに複数のノードコンピュータが接続されて構成されたコンピュータネットワーク通信システムにおいては、各ノードコンピュータは、通信に利用しているネットワークに障害が発生したときであっても、障害のない他方のネットワークを利用して通信を継続することができる。なお、本明細書では、ネットワークに接続されたコンピュータを、ノードコンピュータ、または、略して、単に、ノードという。
【０００３】
ネットワークまたは他のノードコンピュータの障害を検知する一般的な方法として、ネットワークに接続された各ノードコンピュータ間で生存監視パケットを交換し合う方法がある。すなわち、各ノードコンピュータは、所定の時間（例えば、１秒）ごとに、他のノードコンピュータに対し、自機が正常動作していることを示す生存監視パケットを送信するとともに、他のノードコンピュータから送信される生存監視パケットを受信する。そして、所定の時間以上経過しても、他のノードコンピュータからの生存監視パケットを受信しなかった場合には、他のノードコンピュータ、または、他のコンピュータとの通信路に障害があると判断する。
【０００４】
このような障害検知の方法を、２重化されたネットワークを用いたコンピュータ通信ネットワークシステムに適用した場合には、各ノードコンピュータは、それぞれ２つのネットワークにつながる２つの通信インタフェースを備え、その２つの通信インタフェースは、互いに独立したＩＰ（Internet Protocol）アドレスを備える。その場合、各ノードコンピュータにおけるアプリケーションプログラムは、いずれの通信インタフェース、すなわち、いずれのネットワークを介して通信しているかを、常に、把握しておくことが必要となり、その結果、アプリケーションプログラムの構成が複雑となる。
【０００５】
特許文献１には、２重化されたネットワークに接続されるノードコンピュータにおいて、仮想ＩＰアドレスの概念を導入することにより、ノードコンピュータのアプリケーションプログラムが２つの通信インタフェースを区別せずにすむ、言い換えれば、いずれのネットワークを介して通信しているかを把握しなくてもすむようにしたネットワーク構成制御技術（ネットワーク切替技術）が開示されている。特許文献１によれば、仮想ＩＰアドレスの概念を用いることにより、アプリケーションレベルの通信で使用中のネットワークに障害が発生し、使用するネットワークが他方のネットワークに切り替えられたとしても、そのアプリケーションプログラムの構成を変える必要はない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−１２５９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、特許文献１に開示されたネットワーク構成制御技術によれば、ネットワークまたはノードコンピュータに障害が検知されると、そのたびにネットワークの切り替えが行われる。そのため、例えば、ネットワークの間欠故障など不安定な障害が発生した場合には、ネットワークの切り替えが頻繁に行われることになり、ネットワークの負荷が増大する。さらに、その障害検知は、各ノードコンピュータによって、それぞれ独立して行われるため、障害検知のタイミングや障害の種別によっては、２つのノードコンピュータ間で、使用するネットワークが互いに整合しないものに切り替えられ、相互の通信が不能となる事態が生じる場合もある。
【０００８】
例えば、あるノードコンピュータの一方の通信インタフェースの受信部に障害があって、送信部には障害がなかった場合には、その通信インタフェースからは、生存監視パケットが受信されなくなるので、当該ノードコンピュータは、その通信インタフェースが接続されたネットワークに障害が生じたと判断し、通信に使用するネットワークを他方に切り替える。一方、他のコンピュータは、その障害を検知することができないので、通信に使用するネットワークを切り替えることはない。その結果、当該コンピュータと他のコンピュータとの間では、通信をすることができなくなる。
【０００９】
以上のような従来技術の問題点に鑑み、本発明は、２重化されたネットワークに複数のノードコンピュータが接続されて構成されたコンピュータネットワーク通信システムにおいて、アプリケーションレベルで使用されるネットワークの切り替えに際し、複数のコンピュータ間で切替えられたネットワークの整合性をより確実に確保することが可能なノードコンピュータ、ネットワーク切替方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
前記、本発明に係るコンピュータネットワーク通信システムにおけるノードコンピュータは、複数のノードコンピュータが、互いに独立な２重化されたネットワークを介して、相互に接続されて構成されたコンピュータネットワーク通信システムにおけるノードコンピュータであって、前記２重化されたネットワークのそれぞれのネットワークに接続される２重化された通信インタフェースと、所定の時間ごとに、自ノードコンピュータがアプリケーションレベルの通信で使用しているネットワークに接続された通信インタフェースであるゲートウェイを指定するゲートウェイ情報を含んで構成された生存監視パケットを、前記２重化された通信インタフェースのそれぞれを介して、そのそれぞれの通信インタフェースに接続されたネットワークへブロードキャストする生存監視パケット送信部と、前記２重化された通信インタフェースのそれぞれを介して、そのそれぞれの通信インタフェースに接続されたネットワークにおいてブロードキャストされている生存監視パケットを受信する生存監視パケット受信部と、前記生存監視パケット受信部における前記生存監視パケットの受信状況に基づき、前記２重化されたネットワークのそれぞれについて、そのネットワークが正常であるかまたは異常であるかを判定する正常ネットワーク判定部と、前記生存監視パケット受信部によって前記生存監視パケットが受信された場合には、前記正常ネットワーク判定部によって判定された結果に基づく前記２重化されたネットワークのそれぞれが正常であるかまたは異常であるかを示す情報と、自ノードコンピュータのゲートウェイ情報と、前記受信された生存監視パケットに含まれる相手ノードコンピュータのゲートウェイ情報と、に基づいて、自ノードコンピュータのゲートウェイ情報を更新し、その更新したゲートウェイ情報がそれまでのゲートウェイ情報と異なるときには、自ノードコンピュータがアプリケーションレベルで使用するネットワークを切り替えるネットワーク切替部と、を備えることを特徴とする。
【００１１】
本発明に係るコンピュータネットワーク通信システムにおけるノードコンピュータは、自身のゲートウェイ情報を生存監視パケットに載せて相手ノードコンピュータに伝達することが可能なように構成されているので、自ノードのゲートウェイ情報を決定（更新）する際には、単に、２重化されたネットワークのそれぞれが正常であるかまたは異常であるかを示す情報だけで決定するのではなく、そのときの自ノードコンピュータのゲートウェイ情報および相手ノードコンピュータのゲートウェイ情報を考慮して、決定（更新）することができる。従って、自ノードコンピュータと相手ノードコンピュータとの間で、アプリケーションレベルで使用するネットワークの整合性を図ることができる。
【発明の効果】
【００１２】
本発明によれば、２重化されたネットワークに複数のノードコンピュータが接続されて構成されたコンピュータネットワーク通信システムにおけるネットワークの切り替えに際し、複数のコンピュータ間で切替えられたネットワークの整合性をより確実に確保することが可能になる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に係るコンピュータネットワーク通信システムの概念構成の例を示した図。
【図２】ノードコンピュータにおけるネットワーク構成制御ミドルウエアの機能構成の例を示した図。
【図３】生存監視パケットの構成の例を示した図。
【図４】アドレス管理テーブルの構成の例を示した図。
【図５】ネットワーク構成制御ミドルウエアにおけるネットワーク構成制御処理の概略処理フローの例を示した図。
【図６】正常ネットワーク判定処理の処理フローの例を示した図。
【図７】ＲＣ＝１，ＬＣ＝１の場合のネットワーク切替処理の処理フローの例を示した図。
【図８】ＲＣ＝１，ＬＣ＝２の場合のネットワーク切替処理の処理フローの例を示した図。
【図９】ＲＣ＝１，ＬＣ＝３の場合のネットワーク切替処理の処理フローの例を示した図。
【図１０】ＲＣ＝２，ＬＣ＝１の場合のネットワーク切替処理の処理フローの例を示した図。
【図１１】ＲＣ＝２，ＬＣ＝２の場合のネットワーク切替処理の処理フローの例を示した図。
【図１２】ＲＣ＝２，ＬＣ＝３の場合のネットワーク切替処理の処理フローの例を示した図。
【図１３】ＲＣ＝０，ＬＣ＝１の場合のネットワーク切替処理の処理フローの例を示した図。
【図１４】ＲＣ＝０，ＬＣ＝２の場合のネットワーク切替処理の処理フローの例を示した図。
【図１５】ＲＣ＝０，ＬＣ＝３の場合のネットワーク切替処理の処理フローの例を示した図。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態について、図面を参照して詳細に説明する。
【００１５】
図１は、本発明の実施形態に係るコンピュータネットワーク通信システムの概念構成の例を示した図である。図１に示すように、コンピュータネットワーク通信システム１０００は、複数のノードコンピュータ１００が互いに独立な２系統のネットワーク５０により相互に接続されて構成される。
【００１６】
なお、図１では、ノードコンピュータ１００は、３台しか描かれていないが、その数は、３台に限定されるものではなく、２台であっても、４台以上であってもよい。また、本明細書では、２系統のネットワーク５０のうち一方を、ＬＡＮ＃１と呼び、他方をＬＡＮ＃２と呼ぶ。
【００１７】
ノードコンピュータ１００は、パーソナルコンピュータやワークステーションなどの一般的なコンピュータ、あるいは、コンピュータを応用した制御装置、計測装置などによって構成され、図示しないＣＰＵ（Central Processing Unit）と記憶装置とを少なくとも備えている。そして、その図示しない記憶装置には、アプリケーションプログラム１０、ネットワーク構成制御ミドルウエア２０、オペレーティングシステム３０（以下、ＯＳ３０と呼ぶ）などのプログラムが格納され、それらのプログラムは、ＣＰＵによって実行される。
【００１８】
さらに、ノードコンピュータ１００は、アプリケーションプログラム１０およびネットワーク構成制御ミドルウエア２０がＯＳ３０を介してアクセスする２つの通信Ｉ／Ｆ（インタフェース）４０を備えており、その２つの通信Ｉ／Ｆ４０は、それぞれ、ＬＡＮ＃１，ＬＡＮ＃２に接続されている。
【００１９】
この２つの通信Ｉ／Ｆ４０には、それぞれ別個のＩＰアドレスが割当てられているが、本明細書では、以下、通信Ｉ／Ｆ４０に実際に割当てられたＩＰアドレスを、後記する仮想ＩＰアドレス４２と区別して、実ＩＰアドレス４１と呼ぶ。
【００２０】
ここで、２系統のネットワーク５０（ＬＡＮ＃１，ＬＡＮ＃２）は、いずれも、互いに独立で、かつ、常時稼働可能なように構成されている。ただし、本実施形態においては、アプリケーションレベルの通信は、その一方のネットワーク５０を介して行われる。すなわち、アプリケーションレベルの通信では、ＬＡＮ＃１，ＬＡＮ＃２のうち一方が稼働状態（通信が行われる状態）となり、他方が待機状態（通信が行われない状態）となる。
【００２１】
また、本実施形態では、各ノードコンピュータ１００のネットワーク構成制御ミドルウエア２０には、互いに重複しない固有の仮想ＩＰアドレス４２が、あらかじめ割当てられている。アプリケーションプログラム１０は、他のノードコンピュータ１００との間で通信する場合には、この仮想ＩＰアドレス４２を用い、かつ、稼働状態にあるネットワーク５０（ＬＡＮ＃１またはＬＡＮ＃２）を介して通信する。
【００２２】
一方、実際のネットワーク５０（ＬＡＮ＃１またはＬＡＮ＃２）において行われる通信では、仮想ＩＰアドレス４２は用いられず、稼働状態にあるＬＡＮ＃１またはＬＡＮ＃２に接続された通信Ｉ／Ｆ４０に割当てられた実ＩＰアドレス４１が用いられる。そのため、ネットワーク構成制御ミドルウエア２０は、仮想ＩＰアドレス４２を２つの実ＩＰアドレス４１のうちの一方に対応付ける機能を有している。
【００２３】
そこで、ネットワーク構成制御ミドルウエア２０によって仮想ＩＰアドレス４２に対応付けられた実ＩＰアドレス４１を有する通信Ｉ／Ｆ４０を、以下、ＧＷ（ゲートウエイ）と呼び、その実ＩＰアドレス４１をＧＷアドレスと呼ぶ。
【００２４】
図２は、ノードコンピュータ１００におけるネットワーク構成制御ミドルウエア２０の機能構成の例を示した図である。図２に示すように、ネットワーク構成制御ミドルウエア２０は、仮想ネットワークＩ／Ｆ制御部２１、生存監視パケット送信部２２、生存監視パケット受信部２３、アドレス管理テーブル更新部２４、正常ネットワーク判定部２５、ネットワーク切替部２６、アドレス管理テーブル２７などを含んで構成される。
【００２５】
仮想ネットワークＩ／Ｆ制御部２１は、あらかじめ割当てられた仮想ＩＰアドレス４２を保持するとともに、アプリケーションプログラム１０のソケット１１に対し、その仮想ＩＰアドレス４２を提供する。また、アプリケーションプログラム１０から発行された通信コマンドなどに含まれる仮想ＩＰアドレス４２をＧＷの実ＩＰアドレス４１（ＧＷアドレス）に変換する。
【００２６】
生存監視パケット送信部２２は、所定の時間ごと（所定の時間とは、定期、不定期の時間を含み、本実施形態では、例えば、１秒ごと）に、後記するデータを含んで構成された生存監視パケット５５を、２つの通信Ｉ／Ｆ４０（＃１），（＃２）のそれぞれを介して、２系統のネットワーク５０（ＬＡＮ＃１，ＬＡＮ＃２）のそれぞれへブロードキャストする。また、生存監視パケット受信部２３は、他のノードコンピュータ１００から２系統のネットワーク５０（ＬＡＮ＃１，ＬＡＮ＃２）のそれぞれへブロードキャストされた生存監視パケット５５を受信する。
【００２７】
アドレス管理テーブル更新部２４は、生存監視パケット受信部２３が受信した生存監視パケット５５に含まれるデータに基づき、アドレス管理テーブル２７を更新する。なお、生存監視パケット５５の構成、および、アドレス管理テーブル２７の構成については、別途図を参照して説明する。
【００２８】
正常ネットワーク判定部２５は、生存監視パケット受信部２３が２系統のネットワーク５０（ＬＡＮ＃１，ＬＡＮ＃２）のそれぞれについて、他のノードコンピュータ１００からの生存監視パケット５５を所定の時間ごとに受信しているか否かを判定し、その判定結果に基づき、ネットワーク５０（ＬＡＮ＃１，ＬＡＮ＃２）の障害を検知する。そして、障害が検知されなかったネットワーク５０（ＬＡＮ＃１，ＬＡＮ＃２）を正常ネットワークと判定する。
【００２９】
ネットワーク切替部２６は、正常ネットワーク判定部２５によって判定された２系統のネットワーク５０（ＬＡＮ＃１およびＬＡＮ＃２）それぞれについて、そのネットワーク５０が正常である（障害なし）か、または、異常である（障害あり）か、という障害有無の情報と、受信した生存監視パケット５５から得られ、アドレス管理テーブル２７に格納されている相手方ノードコンピュータ１００（以下、相手ノードという）におけるＧＷの情報と、自ノードコンピュータ１００（以下、自ノードという）におけるそのときのＧＷの情報とに基づき、自ノードにおけるＧＷを新たに決定する。そして、その決定したＧＷがそれまでのＧＷと異なる場合には、ネットワーク切替部２６は、ＯＳ３０におけるルーティングテーブル３１を更新することにより、自ノードのＧＷ、すなわち、自ノードがアプリケーションレベルで使用するネットワーク５０をＬＡＮ＃１からＬＡＮ＃２へ、または、ＬＡＮ＃２からＬＡＮ＃１へと切り替える。
【００３０】
図３は、生存監視パケット５５の構成の例を示した図である。図３に示すように、生存監視パケット５５は、ヘッダ部５５１とデータ部５５２とを含んで構成される。ここで、ヘッダ部５５１およびデータ部５５２は、一般に用いられるプロトコル（例えば、ＴＣＰ（Transmission Control Protocol））などで定義されたパケットのヘッダ部およびデータ部に相当するものである。あるいは、そのプロトコルで定義されたパケットのデータ部上に設けられたヘッダ部５５１、データ部５５２であってもよい。
【００３１】
図３に示すように、生存監視パケット５５のデータ部５５２は、「自ノードのノード番号」、「自ノードの仮想ＩＰアドレス」、「自ノードの実ＩＰアドレス（＃１）」、「自ノードの実ＩＰアドレス（＃２）」を含み、さらに、ネットワーク５０を介して自ノードと通信する相手ノードごとに「相手ノードのノード番号」、「自ノードにおける登録ＧＷの実ＩＰアドレス」、「相手ノードに対する強制フラグ」を含んで構成される。
【００３２】
ここで、「ノード番号」とは、ノードコンピュータ１００をユニークに識別する識別番号である（後記するように、本実施形態では、「ノード番号」を、通信に使用するネットワーク５０（ＬＡＮ＃１またはＬＡＮ＃２）を選択するときの優先度情報としても利用）。また、「自ノードにおける登録ＧＷの実ＩＰアドレス」とは、自ノードが相手ノードとアプリケーションレベルで通信する際に使用しているＧＷアドレスをいう。また、「相手ノードに対する強制フラグ」とは、相手ノードに、自ノードのＧＷが接続されたネットワーク５０（ＬＡＮ＃１またはＬＡＮ＃２）に接続された通信Ｉ／Ｆ４０をＧＷとして選択することを強制することを指示するフラグ（強制フラグ情報）である。
【００３３】
図４は、アドレス管理テーブル２７の構成の例を示した図である。図４に示すように、アドレス管理テーブル２７の各行のデータは、自ノードおよび自ノードに接続されている各相手ノードについての「ノード番号」、「仮想ＩＰアドレス」、「実ＩＰアドレス」、「タイムアウト時間」、「登録ＧＷ」、「相手ノードに対する強制フラグ」の列データによって構成される。
【００３４】
本実施形態では、１つのノードコンピュータ１００には、２つの実ＩＰアドレス４１が設けられているので、アドレス管理テーブル２７では、ノードコンピュータ１００を指定する１つの「ノード番号」に対し、２行のデータが作成されている。そして、その最初の２行のデータは、自ノードに対するデータであり、３行目以降が相手ノードに対するデータとなる。なお、自ノードに対するデータでは、「タイムアウト時間」および「相手ノードに対する強制フラグ」は設定されない。
【００３５】
また、本実施形態では、各ノードコンピュータ１００に対する２行のデータのうち、上側の行データに含まれる実ＩＰアドレスを有する通信Ｉ／Ｆ４０が、ＬＡＮ＃１に接続され、下側の行データに含まれる実ＩＰアドレスを有する通信Ｉ／Ｆ４０が、ＬＡＮ＃２に接続されているものとする。
【００３６】
アドレス管理テーブル２７の相手ノードについての行のデータは、生存監視パケット受信部２３が相手ノードからの生存監視パケット５５を受信するたびに、アドレス管理テーブル更新部２４によって更新される。
【００３７】
すなわち、アドレス管理テーブル更新部２４は、相手ノードから送信された生存監視パケット５５を受信すると、その生存監視パケット５５の中から「自ノードのノード番号」、「自ノードの仮想ＩＰアドレス」、「自ノードの実ＩＰアドレス（＃１），（＃２）」を取り出し、その取り出した各データに基づき、相手ノードについての２行の「ノード番号」、「仮想ＩＰアドレス」、「実ＩＰアドレス」の各列データを設定する。
【００３８】
次に、アドレス管理テーブル更新部２４は、相手ノードから送信された生存監視パケット５５に含まれている相手ノードについてのデータのうち、「相手ノードのノード番号」が自ノードのノード番号と一致する相手ノードについての、「相手ノードのノード番号」、「自ノードにおける登録ＧＷの実ＩＰアドレス」および「相手ノードに対する強制フラグ」のデータを取り出す。そして、その取り出したデータに応じて、アドレス管理テーブル２７における「登録ＧＷ」および「相手ノードに対する強制フラグ」の列（欄）に“ＯＮ”または“ＯＦＦ”を格納する。
【００３９】
すなわち、アドレス管理テーブル更新部２４は、アドレス管理テーブル２７から「ノード番号」および「実ＩＰアドレス」の列データが、前記にて取り出した「相手ノードのノード番号」および「自ノードにおける登録ＧＷの実ＩＰアドレス」と一致する行データについて、その「登録ＧＷ」の列（欄）に“ＯＮ”を格納し、「相手ノードに対する強制フラグ」の列（欄）に、先に取り出した「相手ノードに対する強制フラグ」の “ＯＮ”または“ＯＦＦ”を格納する。さらに、「相手ノード番号」が、その行と同じで、「実ＩＰアドレス」が異なる行の「登録ＧＷ」の列（欄）には“ＯＦＦ”を格納する。
【００４０】
また、アドレス管理テーブル更新部２４は、アドレス管理テーブル２７の相手ノードについての「タイムアウト時間」の列（欄）には、当該行の「実ＩＰアドレス」を送信元とする生存監視パケット５５を受信するとき、タイムアウトエラーとなった時間の合計（例えば、秒数で表示）を格納する。
【００４１】
また、アドレス管理テーブル２７の自ノードに対する「登録ＧＷ」の列（欄）については、ネットワーク切替部２６によって自ノードのＧＷが決定されたとき、その決定されたＧＷによって指定される通信Ｉ／Ｆ４０の実ＩＰアドレス４１を含む行の「登録ＧＷ」の欄に“ＯＮ”が格納され、その実ＩＰアドレス４１と対になっている他方の実ＩＰアドレス４１を含む行の「登録ＧＷ」の欄に“ＯＦＦ”が格納される。
【００４２】
図５は、ネットワーク構成制御ミドルウエア２０におけるネットワーク構成制御処理の概略処理フローの例を示した図である。図５に示すように、ノードコンピュータ１００のＣＰＵ（以下、単に、ＣＰＵと呼ぶ）は、生存監視パケット受信部２３の処理として、まず、他のノードコンピュータ１００から送信される生存監視パケット５５の受信し（ステップＳ０１）、次に、その受信した生存監視パケット５５に含まれるデータに基づいて、アドレス管理テーブル２７を更新する（ステップＳ０２）。なお、このステップＳ０２で更新されるアドレス管理テーブル２７の内容については、前記したとおりである。
【００４３】
次に、ＣＰＵは、正常ネットワーク判定部２５の処理として、相手ノードから送信され、生存監視パケット受信部２３によって受信された生存監視パケット５５から相手ノードにおける登録ＧＷのＩＰアドレスを取得するとともに、相手ノードから送信された生存監視パケット５５を正常に受信しているか否かの情報に基づき、そのとき正常動作をしているネットワークを判定する（ステップＳ０３）。なお、この正常ネットワーク判定処理の詳細については、別途、図６を用いて説明する。
【００４４】
次に、ＣＰＵは、ネットワーク切替部２６の処理として、ステップＳ０３の処理で判定された各ネットワーク５０（ＬＡＮ＃１およびＬＡＮ＃２）の正常または異常の状態と、自ノードにおけるＧＷの情報と、アドレス管理テーブル２７に格納されている相手ノードにおけるＧＷの情報とに基づき、自ノードにおける新たなＧＷを決定し、その決定した新たなＧＷがそれまで使用していたＧＷと異なる場合には、自ノードがアプリケーションレベルで使用するネットワークを切り替えるネットワーク切替処理を実行する（ステップＳ０４）。
【００４５】
なお、ＣＰＵは、ネットワークを切り替えるネットワーク切替処理を実行するに際して、新たに決定したＧＷがそれまで使用していたＧＷと異なるか否かを改めて判定することなく、無条件にネットワーク切替処理を実行するようにしても構わない。
【００４６】
図６は、正常ネットワーク判定処理の処理フローの例を示した図である。ＣＰＵは、まず、アドレス管理テーブル２７を参照して、自ノードの登録ＧＷがＬＡＮ＃１であるか否かを判定し（ステップＳ１１）、自ノードの登録ＧＷがＬＡＮ＃１であった場合には（ステップＳ１１でＹｅｓ）、パラメータ“ＲＣ”に定数“１”をセットする、すなわち、ＲＣ＝１とする（ステップＳ１２）。ここで、自ノードの登録ＧＷがＬＡＮ＃１（または、ＬＡＮ＃２）であるとは、自ノードにおいてＧＷとして登録されている通信Ｉ／Ｆ４０がＬＡＮ＃１（または、ＬＡＮ＃２）に接続されていることを意味するものとする（以下、本明細書の記載において同様）。
【００４７】
一方、自ノードの登録ＧＷがＬＡＮ＃１でなかった場合には（ステップＳ１１でＮｏ）、ＣＰＵは、さらに、自ノードの登録ＧＷがＬＡＮ＃２であるか否かを判定し（ステップＳ１３）、その登録ＧＷがＬＡＮ＃２であったときには（ステップＳ１３でＹｅｓ）、パラメータ“ＲＣ”に定数“２”をセットする、すなわち、ＲＣ＝２とする（ステップＳ１４）。一方、登録ＧＷがＬＡＮ＃２でなかったときには（ステップＳ１３でＮｏ）、ＣＰＵは、ＧＷが未登録であると判断して、パラメータ“ＲＣ”に定数“０”をセットする、すなわち、ＲＣ＝０とする（ステップＳ１５）。
【００４８】
ステップＳ１２，Ｓ１４，Ｓ１５に引き続いて、ＣＰＵは、別のパラメータ“ＬＣ”に定数“０”をセットする、すなわち、ＬＣ＝０とする（ステップＳ２１）。
【００４９】
次に、ＣＰＵは、生存監視パケット受信部２３がＬＡＮ＃１を介して少なくとも１つの相手ノードから生存監視パケット５５を正常に受信しているか否かを検知することによって、ＬＡＮ＃１が正常であるか否かを判定する（ステップＳ２２）。そして、ＬＡＮ＃１が正常であった場合には（ステップＳ２２でＹｅｓ）、ＣＰＵは、パラメータ“ＬＣ”の値を＋１カウントアップする、すなわち、ＬＣ＝ＬＣ＋１とする（ステップＳ２３）。
【００５０】
一方、ＬＡＮ＃１が正常でなかった場合（ステップＳ２２でＮｏ）、または、ステップＳ２３の次に引き続いて、ＣＰＵは、さらに、生存監視パケット受信部２３がＬＡＮ＃２を介して少なくとも１つの相手ノードから生存監視パケット５５を正常に受信しているか否かを検知することによって、ＬＡＮ＃２が正常であるか否かを判定する（ステップＳ２４）。そして、ＬＡＮ＃２が正常であった場合には（ステップＳ２４でＹｅｓ）、ＣＰＵは、パラメータ“ＬＣ”の値を＋２カウントアップする、すなわち、ＬＣ＝ＬＣ＋２とする（ステップＳ２５）。
【００５１】
一方、ＬＡＮ＃２が正常でなかった場合（ステップＳ２４でＮｏ）、または、ステップＳ２５に引き続いて、ＣＰＵは、当該正常ネットワーク判定処理を終了する。
【００５２】
以上の処理の結果によれば、ＲＣ＝１は、自ノードの登録ＧＷがＬＡＮ＃１であることを意味し、ＲＣ＝２は、自ノードの登録ＧＷがＬＡＮ＃２であることを意味する。また、ＬＣ＝１は、ＬＡＮ＃１が正常で、ＬＡＮ＃２が異常であることを意味し、ＬＣ＝２は、ＬＡＮ＃１が異常で、ＬＡＮ＃２が正常であることを意味し、ＬＣ＝３は、ＬＡＮ＃１、ＬＡＮ＃２ともに正常であることを意味する。なお、本実施形態では、ＬＡＮ＃１、ＬＡＮ＃２ともに異常となるケースは、想定しない。ノードコンピュータ１００は、ＬＡＮ＃１、ＬＡＮ＃２のうち、少なくとも一方を介して、他のノードコンピュータ１００と通信可能であるとする。
【００５３】
以下、ＲＣ＝１，２、および、ＬＣ＝１，２，３のそれぞれの場合に応じて、ネットワーク切替処理の処理フローの例を示す。
【００５４】
図７は、ＲＣ＝１，ＬＣ＝１の場合のネットワーク切替処理の処理フローの例を示した図である。すなわち、自ノードのＧＷがＬＡＮ＃１で、ＬＡＮ＃１が正常、ＬＡＮ＃２が異常である場合の処理である。
【００５５】
ＣＰＵは、まず、相手ノードから送信されてきた生存監視パケット５５に含まれている相手ノードについてのデータから「自ノードにおける登録ＧＷの実ＩＰアドレス」、すなわち、当該相手ノードにおける登録ＧＷのＩＰアドレスを取得し（ステップＳ１１１）、その登録ＧＷがＬＡＮ＃２であるか否かを判定する（ステップＳ１１２）。そして、その判定において、その登録ＧＷがＬＡＮ＃２でなかった場合には、つまり、相手ノードにおける登録ＧＷがＬＡＮ＃１または未登録であった場合には（ステップＳ１１２でＮｏ）、ＣＰＵは、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＦＦ”をセットし（ステップＳ１１３）、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ１１６）。
【００５６】
また、ステップＳ１１２の判定で、その登録ＧＷがＬＡＮ＃２であった場合には（ステップＳ１１２でＹｅｓ）、ＣＰＵは、さらに、自ノードと相手ノードのノード番号の大小を比較し（ステップＳ１１４）、自ノード番号が相手ノード番号よりも小であったときには（ステップＳ１１４でＹｅｓ）、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＮ”をセットし（ステップＳ１１５）、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ１１６）。
【００５７】
また、ステップＳ１１４の比較で自ノード番号が相手ノード番号と同じかまたは大であった場合には（ステップＳ１１４でＮｏ）、ＣＰＵは、ステップＳ１１５をスキップして、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ１１６）。
【００５８】
なお、本実施形態では、複数のノード間でＧＷに接続するネットワーク５０が相違した場合、ノード番号が大きいノードのほうが、そのＧＷを優先して決定できるものとしている。すなわち、ノード番号は、ネットワークを優先して選択するための優先度を示す情報であるとする。また、本実施形態では、自ノードのＧＷとしてＬＡＮ＃１を登録する処理（ステップＳ１１６の処理）は、ＣＰＵがアドレス管理テーブル２７における当該相手ノードに対するＬＡＮ＃１側の「登録ＧＷ」の欄に“ＯＮ”をセットするとともに、ＬＡＮ＃２側の「登録ＧＷ」の欄に“ＯＦＦ”をセットし、さらに、仮想ＩＰアドレス４２をＬＡＮ＃１に接続された通信Ｉ／Ｆ４０の実ＩＰアドレス４１に対応するようにルーティングテーブル３１を書き換える処理を含むものとする。また、自ノードのＧＷとしてＬＡＮ＃２を登録する処理についても、同様である。
【００５９】
以上のように、図７を用いて説明したケースでは、ＬＡＮ＃１が正常、ＬＡＮ＃２が異常であるから、いずれの場合にも、自ノードのＧＷとしてＬＡＮ＃１が登録される。そして、自ノードのほうが相手ノードよりもＧＷ設定の優先度が低い（ノード番号が小さい：等しい場合も含む）場合には、「相手ノードに対する強制フラグ」に“ＯＮ”がセットされる。この「相手ノードに対する強制フラグ」は、「自ノードにおける登録ＧＷの実ＩＰアドレス」とともに生存監視パケット５５に載せられて、相手ノードに伝達される。従って、相手ノードの優先度が高くても、相手ノードの登録ＧＷとして、自ノードのＧＷに接続されたネットワーク５０と同じネットワーク５０に接続されたＧＷが強制されることになるので、双方のノード間でアプリケーションレベルの通信に使用されるネットワーク５０の整合性が保たれる。
【００６０】
図８は、ＲＣ＝１，ＬＣ＝２の場合のネットワーク切替処理の処理フローの例を示した図である。すなわち、自ノードのＧＷがＬＡＮ＃１で、ＬＡＮ＃１が異常、ＬＡＮ＃２が正常である場合の処理である。
【００６１】
ＣＰＵは、まず、相手ノードから送信されてきた生存監視パケット５５に含まれている相手ノードについてのデータから「自ノードにおける登録ＧＷの実ＩＰアドレス」、すなわち、当該相手ノードにおける登録ＧＷのＩＰアドレスを取得し（ステップＳ１２１）、その登録ＧＷがＬＡＮ＃１であるか否かを判定する（ステップＳ１２２）。そして、その判定において、その登録ＧＷがＬＡＮ＃１でなかった場合には、つまり、相手ノードにおける登録ＧＷがＬＡＮ＃２または未登録であった場合には（ステップＳ１２２でＮｏ）、ＣＰＵは、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＦＦ”をセットし（ステップＳ１２３）、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ１２６）。
【００６２】
また、ステップＳ１２２の判定で、その登録ＧＷがＬＡＮ＃１であった場合には（ステップＳ１２２でＹｅｓ）、ＣＰＵは、さらに、自ノードと相手ノードのノード番号の大小を比較し（ステップＳ１２４）、自ノード番号が相手ノード番号よりも小であったときには（ステップＳ１２４でＹｅｓ）、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＮ”をセットし（ステップＳ１２５）、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ１２６）。
【００６３】
また、ステップＳ１２４の比較で自ノード番号が相手ノード番号と同じかまたは大であった場合には（ステップＳ１２４でＮｏ）、ＣＰＵは、ステップＳ１２５をスキップして、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ１２６）。
【００６４】
以上のように、図８を用いて説明したケースでは、ＬＡＮ＃１が異常、ＬＡＮ＃２が正常であるから、いずれの場合にも、自ノードのＧＷとしてＬＡＮ＃２が登録される。そして、自ノードのほうが相手ノードよりもＧＷ設定の優先度が低い（ノード番号が小さい：等しい場合も含む）場合には、「相手ノードに対する強制フラグ」に“ＯＮ”がセットされる。この「相手ノードに対する強制フラグ」は、「自ノードにおける登録ＧＷの実ＩＰアドレス」とともに生存監視パケット５５に載せられて、相手ノードに伝達される。従って、相手ノードの優先度が高くても、相手ノードの登録ＧＷとして、自ノードのＧＷに接続されたネットワーク５０と同じネットワーク５０に接続されたＧＷが強制されることになるので、双方のノード間でアプリケーションレベルの通信に使用されるネットワーク５０の整合性が保たれる。
【００６５】
図９は、ＲＣ＝１，ＬＣ＝３の場合のネットワーク切替処理の処理フローの例を示した図である。すなわち、自ノードのＧＷがＬＡＮ＃１で、ＬＡＮ＃１、ＬＡＮ＃２ともに正常である場合の処理である。
【００６６】
ＣＰＵは、まず、相手ノードから送信されてきた生存監視パケット５５に含まれている相手ノードについてのデータから、「自ノードにおける登録ＧＷの実ＩＰアドレス」、すなわち、当該相手ノードにおける登録ＧＷのＩＰアドレスを取得し（ステップＳ１３１）、その登録ＧＷがＬＡＮ＃１であるか否かを判定する（ステップＳ１３２）。
【００６７】
ステップＳ１３２の判定において、その相手ノードにおける登録ＧＷがＬＡＮ＃１であった場合には（ステップＳ１３２でＹｅｓ）、ＣＰＵは、さらに、自ノードと相手ノードのノード番号を比較する（ステップＳ１３４）。そして、その比較で自ノード番号が相手ノード番号と同じかまたは大であったときには（ステップＳ１３４でＮｏ）、ＣＰＵは、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＦＦ”をセットし（ステップＳ１３５）、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ１３８）。また、ステップＳ１３４の比較で、自ノード番号が相手ノード番号より小であったときには（ステップＳ１３４でＹｅｓ）、ステップＳ１３５をスキップして、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ１３８）。
【００６８】
一方、ステップＳ１３２の判定において、その登録ＧＷがＬＡＮ＃１でなかった場合には（ステップＳ１３２でＮｏ）、ＣＰＵは、さらに、その登録ＧＷがＬＡＮ＃２であるか否かを判定し（ステップＳ１３３）、その登録ＧＷがＬＡＮ＃２であったときには（ステップＳ１３３でＹｅｓ）、自ノードと相手ノードのノード番号を比較する（ステップＳ１３６）。
【００６９】
そして、そのステップＳ１３６における比較で、自ノード番号が相手ノード番号と同じかまたは大であったときには（ステップＳ１３６でＮｏ）、ＣＰＵは、さらに、相手ノードから送信されてきた生存監視パケット５５における自ノードに対する強制フラグ（ただし、受信した生存監視パケット５５では、「相手ノードに対する強制フラグ」）が“ＯＮ”であるか否かを判定する（ステップＳ１３７）。
【００７０】
そして、そのステップＳ１３７の判定で、自ノードに対する強制フラグが“ＯＮ”であった場合には（ステップＳ１３７でＹｅｓ）、相手ノードのＧＷが自ノードに強制されるので、ＣＰＵは、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ１３９）。また、ステップＳ１３７の判定で、自ノードに対する強制フラグが“ＯＮ”でなかった場合には（ステップＳ１３７でＮｏ）、とくに、自ノードのＧＷが相手ノードのＧＷに強制されることはないので、ＣＰＵは、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ１３８）。
【００７１】
一方、ステップＳ１３６における比較で、自ノード番号が相手ノード番号より小であった場合には（ステップＳ１３６でＹｅｓ）、ステップＳ１３７をスキップして、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ１３９）。また、ステップＳ１３３の判定において、相手ノードの登録ＧＷがＬＡＮ＃２でなかったときには（ステップＳ１３３でＮｏ）、相手ノードには、ＧＷが登録されていないことになるので、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ１３８）。
【００７２】
以上のように、図９を用いて説明したケースでは、自ノードの登録ＧＷがＬＡＮ＃１で、ＬＡＮ＃１、ＬＡＮ＃２ともに正常であるから、相手ノードの登録ＧＷがＬＡＮ＃１または登録されていないときには、自ノードのＧＷとしてＬＡＮ＃１が登録される。そして、相手ノードの登録ＧＷがＬＡＮ＃２で、相手ノードのほうがＧＷ設定の優先度が高い場合、または、相手ノードのほうがＧＷ設定の優先度が低くても、相手ノードからの生存監視パケットに含まれる「相手ノードに対する強制フラグ」が“ＯＮ”であった場合には、自ノードのＧＷとしてＬＡＮ＃２が登録される。従って、双方のノード間で通信に使用するネットワーク５０の整合性が保たれる。
【００７３】
図１０は、ＲＣ＝２，ＬＣ＝１の場合のネットワーク切替処理の処理フローの例を示した図である。すなわち、自ノードのＧＷがＬＡＮ＃２で、ＬＡＮ＃１が正常、ＬＡＮ＃２が異常である場合の処理である。
【００７４】
ＣＰＵは、まず、相手ノードから送信されてきた生存監視パケット５５に含まれている相手ノードについてのデータから「自ノードにおける登録ＧＷの実ＩＰアドレス」、すなわち、当該相手ノードにおける登録ＧＷのＩＰアドレスを取得し（ステップＳ２１１）、その登録ＧＷがＬＡＮ＃２であるか否かを判定する（ステップＳ２１２）。そして、その判定において、その登録ＧＷがＬＡＮ＃２でなかった場合には、つまり、相手ノードにおける登録ＧＷがＬＡＮ＃１または未登録であった場合には（ステップＳ２１２でＮｏ）、ＣＰＵは、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＦＦ”をセットし（ステップＳ２１３）、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ２１６）。
【００７５】
また、ステップＳ２１２の判定で、その登録ＧＷがＬＡＮ＃２であった場合には（ステップＳ２１２でＹｅｓ）、ＣＰＵは、さらに、自ノードと相手ノードのノード番号の大小を比較し（ステップＳ２１４）、自ノード番号が相手ノード番号よりも小であったときには（ステップＳ２１４でＹｅｓ）、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＮ”をセットし（ステップＳ２１５）、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ２１６）。
【００７６】
また、ステップＳ２１４の比較で自ノード番号が相手ノード番号と同じかまたは大であった場合には（ステップＳ２１４でＮｏ）、ＣＰＵは、ステップＳ２１５をスキップして、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ２１６）。
【００７７】
以上のように、図１０を用いて説明したケースでは、ＬＡＮ＃１が正常、ＬＡＮ＃２が異常であるから、いずれの場合にも、自ノードのＧＷとしてＬＡＮ＃１が登録される。そして、自ノードのほうが相手ノードよりもＧＷ設定の優先度が低い（ノード番号が小さい：等しい場合も含む）場合には、「相手ノードに対する強制フラグ」に“ＯＮ”がセットされる。この「相手ノードに対する強制フラグ」は、「自ノードにおける登録ＧＷの実ＩＰアドレス」とともに生存監視パケット５５に載せられて、相手ノードに伝達される。従って、相手ノードの優先度が高くても、相手ノードの登録ＧＷとして、自ノードのＧＷに接続されたネットワーク５０と同じネットワーク５０に接続されたＧＷが強制されることになるので、双方のノード間でアプリケーションレベルの通信に使用されるネットワーク５０の整合性が保たれる。
【００７８】
図１１は、ＲＣ＝２，ＬＣ＝２の場合のネットワーク切替処理の処理フローの例を示した図である。すなわち、自ノードのＧＷがＬＡＮ＃２で、ＬＡＮ＃１が異常、ＬＡＮ＃２が正常である場合の処理である。
【００７９】
ＣＰＵは、まず、相手ノードから送信されてきた生存監視パケット５５に含まれている相手ノードについてのデータから「自ノードにおける登録ＧＷの実ＩＰアドレス」、すなわち、当該相手ノードにおける登録ＧＷのＩＰアドレスを取得し（ステップＳ２２１）、その登録ＧＷがＬＡＮ＃１であるか否かを判定する（ステップＳ２２２）。
【００８０】
次に、ＣＰＵは、ステップＳ２２２の判定において、相手ノードにおける登録ＧＷがＬＡＮ＃１でなかった場合には、（ステップＳ２２２でＮｏ）、さらに、その登録ＧＷがＬＡＮ＃２であるか否かを判定する（ステップＳ２２３）。そして、その判定で、相手ノードにおける登録ＧＷがＬＡＮ＃２でなかった場合（ステップＳ２２３でＮｏ）、つまり、相手ノードにおけるＧＷが未登録であった場合には、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＦＦ”をセットし（ステップＳ２２７）、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ２２８）。
【００８１】
一方、ステップＳ２２３の判定において、相手ノードにおける登録ＧＷがＬＡＮ＃２であった場合には（ステップＳ２２３でＹｅｓ）、ＣＰＵは、自ノードと相手ノードのノード番号の大小を比較し（ステップＳ２２６）、自ノード番号が相手ノード番号よりも小であったときには（ステップＳ２２６でＹｅｓ）、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ２２８）。一方、自ノード番号が相手ノード番号と同じかまたは大であったときには（ステップＳ２２６でＮｏ）、ＣＰＵは、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＦＦ”をセットし（ステップＳ２２７）、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ２２８）。
【００８２】
また、ステップＳ２２２の判定において、相手ノードにおける登録ＧＷがＬＡＮ＃１であった場合には、（ステップＳ２２２でＹｅｓ）、ＣＰＵは、さらに、自ノードと相手ノードのノード番号の大小を比較する（ステップＳ２２４）。そして、その判定において、自ノード番号が相手ノード番号と同じかまたは大であったときには（ステップＳ２２４でＮｏ）、ＣＰＵは、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ２２８）。
【００８３】
一方、ステップＳ２２４での比較で、自ノード番号が相手ノード番号よりも小であったときには（ステップＳ２２４でＹｅｓ）、ＣＰＵは、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＮ”をセットし（ステップＳ２２５）、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ２２８）。
【００８４】
以上のように、図１０を用いて説明したケースでは、ＬＡＮ＃１が異常、ＬＡＮ＃２が正常であるから、いずれの場合にも、自ノードのＧＷとしてＬＡＮ＃２が登録される。そして、自ノードのほうが相手ノードよりもＧＷ設定の優先度が低い（ノード番号が小さい：等しい場合も含む）場合には、「相手ノードに対する強制フラグ」に“ＯＮ”がセットされる。この「相手ノードに対する強制フラグ」は、「自ノードにおける登録ＧＷの実ＩＰアドレス」とともに生存監視パケット５５に載せられて、相手ノードに伝達される。従って、相手ノードの優先度が高くても、相手ノードの登録ＧＷとして、自ノードのＧＷに接続されたネットワーク５０と同じネットワーク５０に接続されたＧＷが強制されることになるので、双方のノード間でアプリケーションレベルの通信に使用されるネットワーク５０の整合性が保たれる。
【００８５】
図１２は、ＲＣ＝２，ＬＣ＝３の場合のネットワーク切替処理の処理フローの例を示した図である。すなわち、自ノードのＧＷがＬＡＮ＃２で、ＬＡＮ＃１、ＬＡＮ＃２ともに正常である場合の処理である。
【００８６】
ＣＰＵは、まず、相手ノードから送信されてきた生存監視パケット５５に含まれている相手ノードについてのデータから、「自ノードにおける登録ＧＷの実ＩＰアドレス」、すなわち、当該相手ノードにおける登録ＧＷのＩＰアドレスを取得し（ステップＳ２３１）、その登録ＧＷがＬＡＮ＃２であるか否かを判定する（ステップＳ２３２）。
【００８７】
ステップＳ２３２の判定において、その相手ノードにおける登録ＧＷがＬＡＮ＃２であった場合には（ステップＳ２３２でＹｅｓ）、ＣＰＵは、さらに、自ノードと相手ノードのノード番号を比較する（ステップＳ２３４）。そして、その比較で自ノード番号が相手ノード番号と同じかまたは大であったときには（ステップＳ２３４でＮｏ）、ＣＰＵは、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＦＦ”をセットし（ステップＳ２３５）、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ２３８）。また、ステップＳ２３４の比較で、自ノード番号が相手ノード番号より小であったときには（ステップＳ２３４でＹｅｓ）、ステップＳ２３５をスキップして、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ２３８）。
【００８８】
一方、ステップＳ２３２の判定において、その登録ＧＷがＬＡＮ＃２でなかった場合には（ステップＳ２３２でＮｏ）、ＣＰＵは、さらに、その登録ＧＷがＬＡＮ＃１であるか否かを判定し（ステップＳ２３３）、その登録ＧＷがＬＡＮ＃１であったときには（ただし、ステップＳ２３３でＹｅｓ）、自ノードと相手ノードのノード番号を比較する（ステップＳ２３６）。
【００８９】
そして、そのステップＳ２３６における比較で、自ノード番号が相手ノード番号と同じかまたは大であったときには（ステップＳ２３６でＹｅｓ）、ＣＰＵは、さらに、相手ノードから送信されてきた生存監視パケット５５における自ノードに対する強制フラグ（ただし、受信した生存監視パケット５５では、「相手ノードに対する強制フラグ」）が“ＯＮ”であるか否かを判定する（ステップＳ２３７）。
【００９０】
そして、そのステップＳ２３７の判定で、自ノードに対する強制フラグが“ＯＮ”であった場合には（ステップＳ２３７でＹｅｓ）、相手ノードのＧＷが自ノードに強制されるので、ＣＰＵは、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ２３９）。また、ステップＳ２３７の判定で、自ノードに対する強制フラグが“ＯＮ”でなかった場合には（ステップＳ２３７でＮｏ）、とくに、自ノードのＧＷが相手ノードのＧＷに強制されることはないので、ＣＰＵは、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ２３８）。
【００９１】
一方、ステップＳ２３６における比較で、自ノード番号が相手ノード番号より小であった場合には（ステップＳ２３６でＹｅｓ）、ステップＳ２３７をスキップして、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ２３９）。また、ステップＳ２３３の判定において、相手ノードの登録ＧＷがＬＡＮ＃２でなかったときには（ステップＳ２３３でＮｏ）、相手ノードには、ＧＷが登録されていないことになるので、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ１３８）。
【００９２】
以上のように、図１２を用いて説明したケースでは、自ノードの登録ＧＷがＬＡＮ＃２で、ＬＡＮ＃１、ＬＡＮ＃２ともに正常であるから、相手ノードの登録ＧＷがＬＡＮ＃２または登録されていないときには、自ノードのＧＷとしてＬＡＮ＃２が登録される。そして、相手ノードの登録ＧＷがＬＡＮ＃１で、相手ノードのほうがＧＷ設定の優先度が高い場合、または、相手ノードのほうがＧＷ設定の優先度が同じか低くても、相手ノードからの生存監視パケットの「相手ノードに対する強制フラグ」が“ＯＮ”であった場合には、自ノードのＧＷとしてＬＡＮ＃１が登録される。従って、双方のノード間で通信に使用するネットワーク５０の整合性が保たれる。
【００９３】
図１３は、ＲＣ＝０，ＬＣ＝１の場合のネットワーク切替処理の処理フローの例を示した図である。このケースは、自ノードのＧＷが未登録、すなわち、自ノードのＧＷを初期化する場合の処理であり、かつ、ＬＡＮ＃１が正常、ＬＡＮ＃２が異常である場合の処理である。
【００９４】
ＣＰＵは、まず、相手ノードから送信されてきた生存監視パケット５５に含まれている相手ノードについてのデータから「自ノードにおける登録ＧＷの実ＩＰアドレス」、すなわち、当該相手ノードにおける登録ＧＷのＩＰアドレスを取得し（ステップＳ０１１）、その登録ＧＷがＬＡＮ＃２であるか否かを判定する（ステップＳ０１２）。そして、その判定において、その登録ＧＷがＬＡＮ＃２でなかった場合には、つまり、その登録ＧＷがＬＡＮ＃１または未登録であった場合には（ステップＳ０１２でＮｏ）、ＣＰＵは、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ０１６）。
【００９５】
一方、ステップＳ０１２の判定で、その登録ＧＷがＬＡＮ＃２であった場合には（ステップＳ０１２でＹｅｓ）、ＣＰＵは、さらに、自ノードと相手ノードのノード番号の大小を比較し（ステップＳ０１３）、自ノード番号が相手ノード番号よりも小であったときには（ステップＳ０１３でＹｅｓ）、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＮ”をセットし（ステップＳ０１５）、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ０１７）。
【００９６】
また、ステップＳ０１４の比較で自ノード番号が相手ノード番号と同じかまたは大であった場合には（ステップＳ０１３でＮｏ）、ＣＰＵは、相手ノードから送信されてきた生存監視パケット５５における自ノードに対する強制フラグ（ただし、受信した生存監視パケット５５では、「相手ノードに対する強制フラグ」）が“ＯＮ”であるか否かを判定する（ステップＳ０１４）。そして、その判定で、自ノードに対する強制フラグが“ＯＮ”でなかった場合には（ステップＳ０１４でＮｏ）、ＣＰＵは、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＮ”をセットし（ステップＳ０１５）、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ０１７）。
【００９７】
また、ステップＳ０１４の判定で、自ノードに対する強制フラグが“ＯＮ”であった場合には（ステップＳ０１４でＹｅｓ）、自ノードのＧＷは、相手ノードの登録ＧＷに合わせてＬＡＮ＃２とすべきであるが、このケースでは、ＬＡＮ＃２は、異常であるとしているので（ＬＣ＝１）、自ノードのＧＷを登録しないまま、当該ネットワーク切替処理を終了する。
【００９８】
以上のように、図１３を用いて説明したケースでは、自ノードのＧＷが未登録、ＬＡＮ＃１が正常、ＬＡＮ＃２が異常であるから、いずれの場合にも、自ノードのＧＷとしてＬＡＮ＃１が登録される。ただし、相手ノードの登録ＧＷがＬＡＮ＃２であり、相手ノードからの自ノードに対する強制フラグが“ＯＮ”であった場合には、自ノードのＧＷの初期化が失敗したことになる。
【００９９】
図１４は、ＲＣ＝０，ＬＣ＝２の場合のネットワーク切替処理の処理フローの例を示した図である。このケースは、自ノードのＧＷが未登録、すなわち、自ノードのＧＷを初期化する場合の処理であり、かつ、ＬＡＮ＃１が異常、ＬＡＮ＃２が正常である場合の処理である。
【０１００】
ＣＰＵは、まず、相手ノードから送信されてきた生存監視パケット５５に含まれている相手ノードについてのデータから「自ノードにおける登録ＧＷの実ＩＰアドレス」、すなわち、当該相手ノードにおける登録ＧＷのＩＰアドレスを取得し（ステップＳ０２１）、その登録ＧＷがＬＡＮ＃１であるか否かを判定する（ステップＳ０２２）。そして、その判定において、その登録ＧＷがＬＡＮ＃１でなかった場合には、つまり、その登録ＧＷがＬＡＮ＃２または未登録であった場合には（ステップＳ０２２でＮｏ）、ＣＰＵは、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ０２６）。
【０１０１】
一方、ステップＳ０２２の判定で、その登録ＧＷがＬＡＮ＃１であった場合には（ステップＳ０２２でＹｅｓ）、ＣＰＵは、さらに、自ノードと相手ノードのノード番号の大小を比較し（ステップＳ０２３）、自ノード番号が相手ノード番号よりも小であったときには（ステップＳ０２３でＹｅｓ）、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＮ”をセットし（ステップＳ０２５）、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ０２７）。
【０１０２】
また、ステップＳ０１４の比較で自ノード番号が相手ノード番号と同じかまたは大であった場合には（ステップＳ０２３でＮｏ）、ＣＰＵは、相手ノードから送信されてきた生存監視パケット５５における自ノードに対する強制フラグ（ただし、受信した生存監視パケット５５では、「相手ノードに対する強制フラグ」）が“ＯＮ”であるか否かを判定する（ステップＳ０２４）。そして、その判定で、自ノードに対する強制フラグが“ＯＮ”でなかった場合には（ステップＳ０２４でＮｏ）、ＣＰＵは、アドレス管理テーブル２７における当該相手ノードに対する強制フラグの欄に“ＯＮ”をセットし（ステップＳ０２５）、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ０２７）。
【０１０３】
また、ステップＳ０２４の判定で、自ノードに対する強制フラグが“ＯＮ”であった場合には（ステップＳ０２４でＮｏ）、自ノードのＧＷは、相手ノードの登録ＧＷに合わせてＬＡＮ＃１とすべきであるが、このケースでは、ＬＡＮ＃１は、異常であるとしているので（ＬＣ＝２）、自ノードのＧＷを登録しないまま、当該ネットワーク切替処理を終了する。
【０１０４】
以上のように、図１４を用いて説明したケースでは、自ノードのＧＷが未登録、ＬＡＮ＃１が異常、ＬＡＮ＃２が正常であるから、いずれの場合にも、自ノードのＧＷとしてＬＡＮ＃２が登録される。ただし、相手ノードの登録ＧＷがＬＡＮ＃１であり、相手ノードからの自ノードに対する強制フラグが“ＯＮ”であった場合には、自ノードのＧＷの初期化が失敗したことになる。
【０１０５】
図１５は、ＲＣ＝０，ＬＣ＝３の場合のネットワーク切替処理の処理フローの例を示した図である。このケースは、自ノードのＧＷが未登録、すなわち、自ノードのＧＷを初期化する場合の処理であり、かつ、ＬＡＮ＃１、ＬＡＮ＃２ともに正常である場合の処理である。
【０１０６】
ＣＰＵは、まず、相手ノードから送信されてきた生存監視パケット５５に含まれている相手ノードについてのデータから「自ノードにおける登録ＧＷの実ＩＰアドレス」、すなわち、当該相手ノードにおける登録ＧＷのＩＰアドレスを取得し（ステップＳ０３１）、その登録ＧＷがＬＡＮ＃２であるか否かを判定する（ステップＳ０３２）。そして、その判定において、その登録ＧＷがＬＡＮ＃２でなかった場合には、つまり、その登録ＧＷがＬＡＮ＃１または未登録であった場合には（ステップＳ０３２でＮｏ）、ＣＰＵは、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ０３５）。
【０１０７】
一方、ステップＳ０３２の判定で、その登録ＧＷがＬＡＮ＃２であった場合には（ステップＳ０３２でＹｅｓ）、ＣＰＵは、さらに、自ノードと相手ノードのノード番号の大小を比較し（ステップＳ０３３）、自ノード番号が相手ノード番号よりも小であったときには（ステップＳ０３３でＹｅｓ）、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ０３６）。
【０１０８】
また、ステップＳ０３３の比較で自ノード番号が相手ノード番号と同じかまたは大であった場合には（ステップＳ０３３でＮｏ）、ＣＰＵは、相手ノードから送信されてきた生存監視パケット５５における自ノードに対する強制フラグ（ただし、受信した生存監視パケット５５では、「相手ノードに対する強制フラグ」）が“ＯＮ”であるか否かを判定する（ステップＳ０３４）。そして、その判定で、自ノードに対する強制フラグが“ＯＮ”でなかった場合には（ステップＳ０３４でＮｏ）、自ノードのＧＷとしてＬＡＮ＃１を登録する（ステップＳ０３５）。
【０１０９】
また、ステップＳ０３４の判定で、自ノードに対する強制フラグが“ＯＮ”であった場合には（ステップＳ０３４でＹｅｓ）、自ノードのＧＷとしてＬＡＮ＃２を登録する（ステップＳ０３６）。
【０１１０】
以上のように、図１５を用いて説明したケースでは、自ノードのＧＷが未登録、ＬＡＮ＃１、ＬＡＮ＃２ともに正常であるから、自ノードのＧＷとしては、いずれの場合にも、相手ノードの登録ＧＷと同じＬＡＮ＃１またはＬＡＮ＃２が登録される。
【０１１１】
以上、本発明の実施形態によれば、２重化されたネットワーク５０により互いに通信可能に接続されたノードコンピュータ１００は、相手ノードから送信されてきた生存監視パケット５５を受信したとき、ＬＡＮ＃１，ＬＡＮ＃２のそれぞれが正常または異常であるかを判定し、その判定した結果と、自ノードのＧＷの情報と、生存監視パケット５５に含まれている相手ノードが使用中のＧＷの情報とに基づき、自ノードの新たなＧＷを決定する。従って、自ノードと相手ノードとの間で使用するＧＷの整合性をとること、すなわち、互いのＧＷが接続されるネットワーク５０（ＬＡＮ＃１またはＬＡＮ＃２）を同じにすることがより確実に行われ、その結果として、２重化されたネットワーク５０における障害検知時のネットワーク切替の信頼性を向上させることができる。
【符号の説明】
【０１１２】
１０    アプリケーションプログラム
１１    ソケット
２０    ネットワーク構成制御ミドルウエア
２１    仮想ネットワークＩ／Ｆ制御部
２２    生存監視パケット送信部
２３    生存監視パケット受信部
２４    アドレス管理テーブル更新部
２５    正常ネットワーク判定部
２６    ネットワーク切替部
２７    アドレス管理テーブル
３０    オペレーティングシステム
３１    ルーティングテーブル
４０    通信Ｉ／Ｆ
４１    実ＩＰアドレス
４２    仮想ＩＰアドレス
５０    ネットワーク
５５    生存監視パケット
１００  ノードコンピュータ
５５１  ヘッダ部
５５２  データ部
１０００  コンピュータネットワーク通信システム
【図１】
2012222656.tif 000003
【図２】
2012222656.tif 000004
【図３】
2012222656.tif 000005
【図４】
2012222656.tif 000006
【図５】
2012222656.tif 000007
【図６】
2012222656.tif 000008
【図７】
2012222656.tif 000009
【図８】
2012222656.tif 000010
【図９】
2012222656.tif 000011
【図１０】
2012222656.tif 000012
【図１１】
2012222656.tif 000013
【図１２】
2012222656.tif 000014
【図１３】
2012222656.tif 000015
【図１４】
2012222656.tif 000016
【図１５】
2012222656.tif 000017