<発明の実施の形態>
まず、図1を参照して、本発明の実施の形態にかかるネットワークシステム1の構成について説明する。図1は、本発明の実施の形態にかかるネットワークシステム1の構成図である。
ネットワークシステム1は、複数のサーバ10及び複数の端末装置20を有する。以下、図1に示すように、複数のサーバ10のそれぞれは、参照符号A、B−1、B−2、C−1、C−2でも示し、複数の端末装置20のそれぞれは、参照符号X、Yでも示す。具体的には、ネットワークシステム1は、IPネットワークである。
複数のサーバ10のそれぞれは、端末装置20間で送受信される信号を転送する中継装置である。具合的には、端末装置20間で送受信される信号は、IPパケットとなる。複数のサーバ10のそれぞれは、端末装置20間で確立される通信トランザクションにおいて、信号を中継するルート(通信経路)を決定して、決定したルートで端末装置20間で送受信される信号を転送する。通信トランザクションは、セッションに相当する。
また、複数のサーバ10のそれぞれは、ルート上のサーバ10において障害が発生した場合、そのサーバ10を迂回するようにルートを変更して、端末装置20間での信号の中継を継続可能とする。このときに、本実施の形態では、後述するように、ネットワークにおいて使用されるリソースが増加を抑制するために、障害が発生したサーバ10以外のサーバ10は、元のルートにおけるサーバ10を経由するようにルートを変更する。
ここで、サーバAは、機能Aを有し、サーバB−1、B−2は、機能Bを有し、サーバC−1、C−2は、機能Cを有する。すなわち、サーバB−1とサーバB−2とは同一の機能を有し、サーバC−1とサーバC−2とは同一の機能を有する。したがって、サーバB−1又はサーバB−2の一方において障害が発生して正常動作不能となった場合、他方のサーバによって代替動作が可能である。これは、サーバC−1及びサーバC−2についても同様である。ここで、同一の機能を有するサーバ(中継装置)とは、例えば、中継基地局同士、又は、ゲートウェイ同士等のように、同一種類の中継装置である。
複数の端末装置20のそれぞれは、他の端末装置20との間で信号を送受信する。端末装置20は、例えば、パーソナルコンピュータ及び携帯端末装置等の情報処理装置である。携帯端末装置は、例えば、携帯電話(スマートフォンを含む)、PHS(Personal Handy-phone System)、及び、タブレット端末等である。
続いて、図2を参照して、本発明の実施の形態にかかるサーバ10の内部構造について説明する。図2は、本発明の実施の形態にかかるサーバ10の内部構造を示すブロック図である。
サーバ10は、信号受信部101、信号解析/作成部102、信号送信部103、対向装置情報管理部104、トランザクション管理部105、及び、ルーティング管理部106を有する。
信号受信部101は、他のサーバ10又は端末装置20から送信された信号を受信する。信号受信部101は、受信した信号を信号解析/作成部102に出力する。
信号解析/作成部102は、信号受信部101から出力された信号を解析し、信号から通信トランザクションのキー情報、及び、ルート情報を抽出する。また、信号解析/作成部102は、トランザクション管理部105の指示に応じて、信号を作成して信号送信部103に出力する。
信号送信部103は、信号解析/作成部102から出力された信号を、他のサーバ10又は端末装置20に送信する。
対向装置情報管理部104は、各サーバ10の装置状態(障害、輻輳等)を管理する。具体的には、対向装置情報管理部104は、複数のサーバ10のそれぞれの装置状態を示すサーバ群リストを保持する。すなわち、対向装置情報管理部104は、サーバ群リストを格納する任意の記憶装置を有する。記憶装置は、例えば、メモリ及びハードディスク等が使用される。サーバ群リストは、機能A〜C毎にサーバ10の装置状態を抽出可能となるように、サーバ10の装置情報が機能A〜C毎に分類されている。サーバ群リストは、ネットワークに含まれるサーバ10が全て記載されており、サーバ10の管理者によって手動で更新可能である。ただし、装置状態は、サーバ10が有する死活監視機能により自動で更新される。
ここで、死活監視機能とは、他のサーバにおいて障害が発生したか否かを監視する機能である。サーバ10は、死活監視を行う死活監視部(図示せず)を有する。具体的には、死活監視部は、一定時間間隔毎に、他のサーバ10に対して、レスポンスの送信を要求する死活監視信号を信号送信部102を介して送信する。そして、死活監視部は、他のサーバ10から死活監視信号に対するレスポンスが送信されなかった場合、そのサーバ10において障害が発生したと判定する。この場合、死活監視部は、そのサーバ10の装置状態を障害状態に更新するように指示する更新指示情報を対向装置情報管理部104に出力する。対向装置情報管理部104は、死活監視部からの更新指示情報の出力に応じて、その更新指示情報で指示されるサーバ10の装置状態を障害状態に更新する。
トランザクション管理部105は、信号解析/作成部102が抽出した、通信トランザクションのキー情報を管理する。また、トランザクション管理部105は、対向装置情報管理部104から、次のルーティング先の候補となるサーバ群の装置状態を取得し、取得した装置状態に応じて次のルーティング先を決定する。
ルーティング管理部106は、通信トランザクションのキー情報と、その通信トランザクションにおける通信経路として使用されるサーバ10を示すルート情報の追加、更新、削除を行う。ルーティング管理部106は、キー情報及びルート情報を格納する内部DBを有する。内部DBは、任意の記憶装置によって構成される。
続いて、図3及び図4を参照して、本発明の実施の形態にかかるネットワークシステム1のサーバ障害発生時における処理概要について説明する。図3は、本発明を適用しない場合におけるネットワークシステムのサーバ障害発生時における処理概要を示すシーケンス図である。図4は、本発明の実施の形態にかかるネットワークシステム1の処理概要を示すシーケンス図である。
まず、図3を参照して、本発明を適用しない場合における障害発生サーバ迂回時の動作について説明し、次に、図4を参照して、本発明を適用しない場合における障害発生サーバ迂回時の動作について説明する。本発明の実施の形態にかかるネットワークシステム1における処理について説明する。いずれの場合においても、最初に通信トランザクションにおいて、サーバA、サーバB−1、サーバC−1を使用しているときに、サーバB−1で障害が発生して、サーバB−2へ迂回する場合について説明する。
まず、図3を参照して、本発明を適用しない場合における障害発生サーバ迂回時の処理について説明する。
最初に、サーバAはB−1と通信(信号の送受信)を行っており、サーバB−1はC−1と通信(信号の送受信)を行っているものとする。サーバA、B−1、B−2、C−1、C−2のそれぞれは、上述したように、対向する装置(サーバAであればサーバB−1、B−2の障害状況を、サーバB−1、B−2であれば、サーバA及びサーバC−1、C−2の障害状況を、サーバC−1、C−2であれば、サーバB−1、B−2の障害状況を把握する死活監視機能を有する。また、サーバA、B−1、B−2、C−1、C−2のそれぞれは、対向するサーバの障害の検出に応じて、障害が発生したサーバを迂回するように、次のルーティング先となるサーバを決定して、決定したサーバを経由して通信を実施する機能(迂回機能)を有する。
サーバAは、現在の通信経路で使用しているサーバB−1における障害の発生を検出した場合、信号の次のルーティング先をサーバB−1からサーバB−2に変更する。このとき、本発明を適用していない場合、図3に示すように、サーバB−2が、次のルーティング先としてサーバC−2を選択してしまう可能性がある。サーバB−2が、次のルーティング先としてサーバC−2を選択してしまった場合、サーバC−1がタイムアウトを検出して管理情報を削除するまで、リソースがサーバC−1とサーバC−2とで二重使用されてしまうことになる。すなわち、サーバC−2において新たに管理情報のためのリソースが確保されるとともに、サーバC−1にも管理情報が残存して、ネットワークシステム1全体としてのリソースが圧迫されてしまうことになる。
ここで、管理情報は、通信トランザクション毎に、サーバにおいてリソース(記憶装置の記憶領域)を使用して保持される情報である。管理情報は、例えば、サーバにおいて決定された次のルーティング先等を示す情報である。
次に、図4を参照して、本発明の実施の形態にかかる障害発生サーバ迂回時の動作について説明する。
サーバAは、現在の通信経路で使用しているサーバB−1における障害の発生を検出した場合、信号の次のルーティング先を、サーバB−1からサーバB−2に変更する。このとき、サーバAは、サーバB−2に対して通信トランザクションのキー情報と、サーバB−2が次にルーティング先とすべきサーバを示す情報を、独自ヘッダを使用して送信する。ここで、サーバB−2が次にルーティング先とすべきサーバとは、元のサーバB−1で次のルーティング先としていたサーバC−1となる。サーバB−2は、サーバAから受信した情報に基づいて、当初の通信トランザクションで使用していたサーバC−1をルーティング先として選択して、通信を継続する。
このように、サーバB−2は、独自ヘッダによって提供される情報によって、次のルーティング先として選択するとリソースを二重確保することになってしまうサーバC−2の選択を避け、サーバC−1を次のルーティング先として選択することが可能となる。
続いて、図4〜図7を参照して、本発明の実施の形態にかかるネットワークシステムの障害発生サーバ迂回処理について説明する。図5は、サーバAにおける処理の流れを示す図である。図6は、サーバB−2における処理の流れを示す図である。図7は、サーバC−1における処理の流れを示す図である。
まず、図4に示すサーバ障害発生前の処理について説明する。なお、以下に説明する処理は、例えば、最初に、端末装置Xから端末装置Yに対して信号が送信され、その信号の応答として端末装置Yから端末装置Xに対して信号が送信される場合に行われる。すなわち、端末装置Xから端末装置Yに対して通信トランザクションの確立を要求する信号が送信され、端末装置Yから端末装置Xに対して、その信号の応答となる信号の送信される場合に行われる。
図5を参照して、サーバAにおける処理について説明する。サーバAのトランザクション管理部105は、信号受信部101において端末装置Xから送信された信号を受信したとき、受信した信号の次のルーティング先を決定するため、次のルーティング先の候補のサーバ群の装置状態を要求する状態要求情報を対向装置情報管理部104に出力する(A1)。ここでは、サーバAの次のルーティング先のサーバ群は、サーバB−1、B−2となる。
対向装置情報管理部104は、トランザクション管理部105から出力された状態要求情報において要求されたサーバ群の装置状態情報を、サーバ群リストから抽出する(A2)。対向装置情報管理部104は、抽出した装置状態情報をトランザクション管理部105に出力する(A3)。
トランザクション管理部105は、対向装置情報管理部104から出力された装置状態情報に基づいて、次のルーティング先となるサーバ10を決定する。ここでは、図4に示すように、サーバB−1、B−2のいずれにおいても障害が発生していないため、いずれのサーバを次のルーティング先として選択してもよいが、次のルーティング先としてサーバB−1を決定するものとする。このとき、トランザクション管理部105は、管理情報として、今回確立する通信トランザクションにおける端末装置Y方向の次のルーティング先がサーバB−1であることを示す情報を、サーバAの記憶装置(図示せず)に格納する。
また、トランザクション管理部105は、通信トランザクションのキー情報を作成する。また、トランザクション管理部105は、その通信トランザクションにおけるルート情報を作成する(A4)。ここでは、トランザクション管理部105は、ルート情報として、自身(サーバA)を示す情報を作成する。
トランザクション管理部105は、作成したキー情報とルート情報との登録を指示する登録指示情報をルーティング管理部106に出力する。登録指示情報には、作成したキー情報とルート情報とが含まれる。
ルーティング管理部106は、トランザクション管理部105からの出力された登録指示情報に含まれるキー情報とルート情報とを対応付けて内部DBに登録する(A6)。ルーティング管理部106は、キー情報とルート情報の登録が完了したとき、登録完了を通知する登録完了通知情報をトランザクション管理部105に出力する(A7)。
トランザクション管理部105は、トランザクション管理部105からの登録完了通知情報の出力に応じて、作成したキー情報及びルート情報と、次のルーティング先として決定したサーバB−1を示す次ルーティング先情報とを通知する通知情報を信号解析/作成部102に出力する(A8)。すなわち、通知情報には、キー情報、ルート情報、及び、次ルーティング先情報が含まれる。
信号解析/作成部102は、トランザクション管理部105から出力された通知情報に基づいて、次のルーティング先となるサーバB−1に送信する信号を作成する。具体的には、信号受信部101において受信した信号のヘッダにおいて、通信トランザクションのキー情報として、通知情報に含まれるキー情報を設定する。信号のヘッダ部分を除くデータ部分の内容は、信号受信部101において受信した信号のデータ部分の内容と同様となる。ここで、本実施の形態では、信号のヘッダとして、信号には独自ヘッダを採用し、ヘッダにおいて、さらに通知情報に含まれるルート情報を設定する(A9)。
信号解析/作成部102は、作成した信号の通知情報に含まれる次ルーティング先情報が示すサーバB−1への送信を指示する指示情報を信号送信部103に出力する(A10)。指示情報には、作成した信号が含まれる。信号送信部103は、信号解析/作成部102から出力された指示情報に含まれる信号をサーバB−1に送信する(A11)。
以降、サーバB−1と、その次のルーティング先となるサーバC−1においても、同様にして、次のルーティング先の決定、キー情報及びルート情報の格納等が行われる。ここで、サーバB−1及びサーバC−1の処理において、サーバAと異なる点について説明する。
サーバB−1では、信号受信部101は、サーバAから受信した信号を信号解析/作成部102に出力する。信号解析/作成部102は、信号受信部101から出力された信号を解析して、信号の独自ヘッダに含まれるキー情報及びルート情報を抽出してトランザクション管理部105に出力する。
トランザクション管理部105は、次のルーティング先の候補のサーバ群として、サーバC−1、C−2の装置状態を対向装置情報管理部104に要求して、次のルーティング先となるサーバ10を決定する。ここでは、図4に示すように、サーバC−1、C−2のいずれにおいても障害が発生していないため、いずれのサーバを次のルーティング先として選択してもよいが、次のルーティング先としてサーバC−1を決定するものとする。このとき、トランザクション管理部105は、管理情報として、今回確立する通信トランザクションにおける、端末装置Y方向の次のルーティング先がサーバC−1であり、端末装置X方向の次のルーティング先が信号の送信元のサーバAであることを示す情報を、サーバB−1の記憶装置(図示せず)に格納する。
トランザクション管理部105は、信号解析/作成部102から出力されたルート情報を、さらに自身(サーバB−1)を示すように更新する。これによって、サーバA及びサーバB−1を示すルート情報が作成される。トランザクション管理部105は、信号解析/作成部102から出力されたキー情報と、作成したルート情報との登録をルーティング管理部106に指示する。
トランザクション管理部105は、信号解析/作成部102から出力されたキー情報と、作成したルート情報と、決定した次のルーティング先となるサーバC−1を示す次ルーティング先情報とを信号解析/作成部102に通知する。信号解析/作成部102は、トランザクション管理部105から出力された通知情報に基づいて、次ルーティング先となるサーバC−1に送信する信号を作成する。信号解析/作成部102は、作成した信号のサーバC−1への送信を信号送信部103に指示する。
サーバC−1では、信号受信部101は、サーバB−1から受信した信号を信号解析/作成部102に出力する。信号解析/作成部102は、信号受信部101から出力された信号を解析して、信号の独自ヘッダに含まれるキー情報及びルート情報を抽出してトランザクション管理部105に出力する。
トランザクション管理部105は、信号の最終的な送信先である端末装置Yに対して、サーバC−1から信号を送信することが可能であるため、次のルーティング先のサーバの決定は不要である。このとき、トランザクション管理部105は、管理情報として、今回確立する通信トランザクションにおける、端末装置X方向の次のルーティング先が信号の送信元のサーバB−1であることを示す情報を、サーバC−1の記憶装置(図示せず)に格納する。
トランザクション管理部105は、信号解析/作成部102から出力されたルート情報を、さらに自身(サーバC−2)を示すように更新する。これによって、サーバA、サーバB−1、及び、サーバC−1を示すルート情報が作成される。トランザクション管理部105は、信号解析/作成部102から出力されたキー情報と、作成したルート情報との登録をルーティング管理部106に指示する。
トランザクション管理部105は、信号解析/作成部102から出力されたキー情報と、作成したルート情報と、決定した次のルーティング先となる端末装置Yを示す次ルーティング先情報とを信号解析/作成部102に通知する。信号解析/作成部102は、トランザクション管理部105から出力された通知情報に基づいて、次ルーティング先となる端末装置Yに送信する信号を作成する。信号解析/作成部102は、作成した信号の端末装置Yへの送信を信号送信部103に指示する。
続いて、端末装置Yが、端末装置Xから送信された信号をサーバC−1から受信して、受信した信号の応答となる信号を端末装置Xに対して送信するときにおける処理について説明する。この信号は、サーバC−1及びサーバB−1によって中継されて、サーバAに到達する。
サーバAの信号受信部101は、サーバB−1から送信された信号を受信する(A12)。信号受信部101は、受信した信号を信号解析/作成部102に送信する(A13)。
信号解析/作成部102は、信号受信部101から送信された信号を解析して、信号の独自ヘッダに含まれる通信トランザクションのキー情報とルート情報とを抽出する(A9)。信号解析/作成部102は、抽出したキー情報とルート情報とを通知する通知情報をトランザクション管理部105に出力する(A14)。通知情報には、キー情報及びルート情報が含まれる。
トランザクション管理部105は、信号の最終的な送信先である端末装置Yに対して、サーバAから信号を送信することが可能であるため、次のルーティング先となるサーバの決定は不要である。トランザクション管理部105は、信号解析/作成部102から出力された通知情報に含まれるキー情報とルート情報との登録を指示する登録指示情報をルーティング管理部106に出力する(A5)。ルーティング管理部106は、トランザクション管理部105からの出力された登録指示情報に含まれるキー情報とルート情報とを対応付けて内部DBに登録する(A6)。このとき、ルーティング管理部106は、内部DBから、登録指示情報に含まれるキー情報を検索して、検索したキー情報に対応付けられたルート情報を、登録指示情報に含まれるルート情報で更新する。このように、ルーティング管理部106は、登録が指示されたキー情報が存在する場合には、そのキー情報に対応するルート情報を更新するようにする。
ルーティング管理部106は、キー情報とルート情報の登録が完了したとき、登録完了を通知する登録完了通知情報をトランザクション管理部105に出力する(A7)。トランザクション管理部105は、トランザクション管理部105からの登録完了通知情報の出力に応じて、次のルーティング先として決定した端末装置Xを示す次ルーティング先情報を通知する通知情報を信号解析/作成部102に出力する(A8)。通知情報には、次ルーティング先情報が含まれる。
信号解析/作成部102は、トランザクション管理部105から出力された通知情報に基づいて、次ルーティング先となる端末装置Xに送信する信号を作成する。具体的には、信号のデータ部分の内容は、信号受信部101において受信した信号のデータ部分の内容と同様となる(A9)。信号解析/作成部102は、作成した信号の通知情報に含まれる次ルーティング先情報が示す端末装置Xへの送信を指示する指示情報を信号送信部103に出力する(A10)。信号送信部102は、信号解析/作成部102から出力された指示情報に含まれる信号を端末装置Xに送信する(A11)。
なお、サーバC−1と、その次のルーティング先となるサーバB−1においても、同様にして、次のルーティング先の決定、キー情報及びルート情報の格納等が行われる。ここで、サーバB−1及びサーバC−1の処理において、サーバAと異なる点について説明する。
サーバC−1では、信号受信部101は、端末装置Yから送信された信号を受信する。トランザクション管理部105は、信号受信部101において端末装置Yから送信された信号を受信したとき、ルーティング管理部106から端末装置Xと端末装置Yとの通信トランザクションにおけるキー情報及びルート情報を取得する。ここで取得されるルート情報は、上述したように、サーバA、サーバB−1、及び、サーバC−1を示す。
ここで、上述したように、次のルーティング先としてサーバB−1が決定されている。トランザクション管理部105は、取得したキー情報及びルート情報と、次のルーティング先として決定したサーバB−1を示す次ルーティング先情報とを信号解析/作成部102に通知する。
信号解析/作成部102は、トランザクション管理部105から出力された通知情報に基づいて、次ルーティング先となるサーバB−1に送信する信号を作成する。具体的には、信号受信部101において受信した信号のヘッダにおいて、通知情報に含まれるキー情報及びルート情報を設定する。信号のデータ部分の内容は、信号受信部101において受信した信号のデータ部分の内容と同様となる。信号解析/作成部102は、作成した信号のサーバB−1への送信を信号送信部103に指示する。
サーバB−1では、信号受信部101は、サーバC−1から送信された信号を受信する。上述のサーバAの処理と同様にして、信号のヘッダに含まれるキー情報及びルート情報が、ルーティング管理部106の内部DBに登録される。これによって、端末装置Xと端末装置Yとの通信トランザクションのキー情報に対応するルート情報が、サーバA、サーバB−1、及び、サーバC−1を示すルート情報に更新される。
ここで、上述したように、次のルーティング先としてサーバAが決定されている。トランザクション管理部105は、登録したキー情報及びルート情報と、次のルーティング先として決定したサーバAを示す次ルーティング先情報とを信号解析/作成部102に通知する。
信号解析/作成部102は、トランザクション管理部105から出力された通知情報に基づいて、次ルーティング先となるサーバAに送信する信号を作成する。具体的には、信号受信部101において受信した信号のヘッダにおいて、通知情報に含まれるキー情報及びルート情報を設定する。信号のデータ部分の内容は、信号受信部101において受信した信号のデータ部分の内容と同様となる。信号解析/作成部102は、作成した信号のサーバB−1への送信を信号送信部103に指示する。
これによって、サーバB−1から送信された信号に基づいて、上述したように、サーバAにおいて、サーバA、サーバB−1、及び、サーバC−1を示すルート情報が登録される。
この一連の処理によって、端末装置Xと端末装置Yとの間の通信トランザクションにおいて決定された通信経路上のサーバA、B−1、サーバC−1のそれぞれにおいて、通信経路上のサーバA、B−1、サーバC−1を示すルート情報が格納される。これによって、サーバが次のルーティング先としているサーバの障害を検出して、次のルーティング先とするサーバ(通信経路)を変更した場合であっても、新たに次のルーティング先としたサーバに対して、元のサーバで次のルーティング先としていたサーバを通知することが可能となる。そのため、新たなサーバにおいて、次のルーティング先のサーバとして、元のサーバが次のルーティング先としていたサーバと同一のサーバを決定することができ、新たなリソースが消費されてリソースが圧迫されることを防止することが可能となる。
続いて、この状態で、サーバB−1において障害が発生した場合について説明する。
図5を参照して、サーバAにおける処理について説明する。サーバAにおいてサーバB−1の障害が検出された場合、サーバAのトランザクション管理部105は、次ルーティング先の候補のサーバ群の装置状態を要求する状態要求情報を対向装置情報管理部104に出力する(A1)。
対向装置情報管理部104は、トランザクション管理部105から出力された状態要求情報において要求されたサーバ群の装置状態情報を、サーバ群リストから抽出する(A2)。対向装置情報管理部104は、抽出した装置状態情報をトランザクション管理部105に出力する(A3)。
トランザクション管理部105は、対向装置情報管理部104から出力された装置状態情報に基づいて、次のルーティング先となるサーバ10を決定する。このとき、装置状態情報では、これまで使用していたサーバB−1が障害状態で示されている。そのため、トランザクション管理部105は、サーバB−1を迂回するように、次のルーティング先を決定する。すなわち、トランザクション管理部105は、サーバB−1と同一機能を有するサーバB−2を次のルーティング先と決定する(A4)。このとき、トランザクション管理部105は、管理情報において、通信トランザクションにおける端末装置Y方向の次のルーティング先をサーバB−2に更新する。
トランザクション管理部105は、サーバAからサーバB−1を通信経路とする通信トランザクションのキー情報及びルート情報を要求するルート情報要求情報をルーティング管理部106に出力する(A5)。
ルーティング管理部106は、トランザクション管理部105から出力されたルート情報要求情報で要求されるキー情報及びルート情報を内部DBから抽出する(A6)。ルーティング管理部106は、抽出したキー情報及びルート情報をトランザクション管理部105に出力する(A7)。
トランザクション管理部106は、ルーティング管理部106から出力されたキー情報及びルート情報と、次のルーティング先として決定したサーバB−2を示す次ルーティング先情報と次ルーティング先情報を通知する通知情報を信号解析/作成部に出力する(A8)。
信号解析/作成部102は、トランザクション管理部105から出力された通知情報に基づいて、次ルーティング先となるサーバB−2に送信する信号を作成する。具体的には、信号のヘッダにおいて、通知情報に含まれるキー情報及びルート情報を設定する。このとき、ルート情報において、元々、記載されていたサーバB−1は、サーバB−2へと書き換えられる(A9)。なお、このルート情報の書き換えは、トランザクション管理部106によって行って、その時点で書き換え後のルート情報を上述と同様に登録指示情報によって内部DBに登録するようにしてもよい。
信号解析/作成部102は、作成した信号の通知情報に含まれる次ルーティング先情報が示すサーバB−2への送信を指示する指示情報を信号送信部103に出力する(A10)。指示情報には、作成した信号が含まれる。信号送信部103は、信号解析/作成部102から出力された指示情報に含まれる信号をサーバB−2に送信する(A11)。
続いて、図6を参照して、サーバB−2の処理について説明する。サーバBの信号受信部101は、サーバAから送信された信号を受信する(B1)。信号受信部101は、受信した信号を信号解析/作成部102に出力する(B2)。信号解析/作成部102は、信号受信部101から送信された信号を解析して、独自ヘッダに含まれる通信トランザクションのキー情報とルート情報とを抽出する(B3)。信号解析/作成部102は、抽出したキー情報とルート情報とを通知する通知情報をトランザクション管理部105に出力する(B4)。
トランザクション管理部105は、信号解析/作成部102から出力された通知情報に含まれるキー情報とルート情報との登録を指示する登録指示情報をルーティング管理部106に出力する(B5)。ルーティング管理部106は、トランザクション管理部105からの出力された登録指示情報に含まれるキー情報とルート情報とを対応付けて内部DBに登録する(B6)。このとき、ルーティング管理部106は、内部DBから、登録指示情報に含まれるキー情報を検索して、検索したキー情報に対応付けられたルート情報を、登録指示情報に含まれるルート情報で更新する。
ルーティング管理部106は、キー情報とルート情報の登録が完了したとき、登録完了を通知する登録完了通知情報をトランザクション管理部105に出力する(A7)。
トランザクション管理部105は、次のルーティング先の候補のサーバ群の装置状態を要求する状態要求情報を対向装置情報管理部104に出力する(B8)。対向装置情報管理部104は、トランザクション管理部105から出力された状態要求情報において要求されたサーバ群の装置状態情報を、サーバ群リストから抽出する(B9)。対向装置情報管理部104は、抽出した装置状態情報をトランザクション管理部105に出力する(B10)。
トランザクション管理部105は、対向装置情報管理部104から出力された装置状態情報に基づいて、次のルーティング先となるサーバ10を決定する(B11)。このとき、トランザクション管理部105は、さらに、サーバAから受信したルート情報に基づいて、次のルーティング先を決定する。具体的には、ルート情報では、通信トランザクションにおける通信経路として、サーバA、サーバB−2、サーバC−1が示されている。すなわち、サーバB−2の次のルーティング先としてサーバC−1が示されている。そのため、トランザクション管理部105は、サーバC−1を次のルーティング先として決定する。このように、サーバB−2は、次のルーティング先が未決定のときに、受信したルート情報において自サーバB−2が示されている場合、ルート情報に基づいて次のルーティング先を決定する。このとき、トランザクション管理部105は、管理情報として、通信トランザクションにおける、端末装置Y方向の次のルーティング先がサーバC−1であり、端末装置X方向の次のルーティング先が信号の送信元のサーバAであることを示す情報を、サーバB−2の記憶装置(図示せず)に格納する。
トランザクション管理部105は、サーバAから受信したキー情報及びルート情報と、次のルーティング先として決定したサーバC−1を示す次ルーティング先情報とを通知する通知情報を信号解析/作成部102に出力する(B12)。すなわち、通知情報には、キー情報、ルート情報、及び、次ルーティング先情報が含まれる。
信号解析/作成部102は、トランザクション管理部105から出力された通知情報に基づいて、次ルーティング先となるサーバC−1に送信する信号を作成する。具体的には、信号のヘッダにおいて、通知情報に含まれるキー情報及びルート情報を設定する(B3)。
信号解析/作成部102は、作成した信号の通知情報に含まれる次ルーティング先情報が示すサーバC−1への送信を指示する指示情報を信号送信部103に出力する(A13)。指示情報には、作成した信号が含まれる。信号送信部103は、信号解析/作成部102から出力された指示情報に含まれる信号をサーバC−1に送信する(A14)。
続いて、図7を参照して、サーバC−1の処理について説明する。サーバBの信号受信部101は、サーバAから送信された信号を受信する(C1)。信号受信部101は、受信した信号を信号解析/作成部102に出力する(C2)。信号解析/作成部102は、信号受信部101から送信された信号を解析して、独自ヘッダに含まれる通信トランザクションのキー情報とルート情報とを抽出する(C3)。信号解析/作成部102は、抽出したキー情報とルート情報とを通知する通知情報をトランザクション管理部105に出力する(C4)。
トランザクション管理部105は、信号解析/作成部102から出力された通知情報に含まれるキー情報とルート情報との登録を指示する登録指示情報をルーティング管理部106に出力する(C5)。ルーティング管理部106は、トランザクション管理部105からの出力された登録指示情報に含まれるキー情報とルート情報とを対応付けて内部DBに登録する(C6)。このとき、ルーティング管理部106は、内部DBから、登録指示情報に含まれるキー情報を検索して、検索したキー情報に対応付けられたルート情報を、登録指示情報に含まれるルート情報で更新する。
ルーティング管理部106は、キー情報とルート情報の登録が完了したとき、登録完了を通知する登録完了通知情報をトランザクション管理部105に出力する(C7)。また、トランザクション管理部105は、管理情報において、通信トランザクションにおける端末装置X方向の次のルーティング先をサーバB−2に更新する(C8)。ここで、サーバC−1がサーバB−2から受信した信号は、通信トランザクションにおける通信経路を変更するためのものであり、端末装置Yに送信するデータは含まれていないため、サーバC−1は、信号(キー情報及びルート情報)を折り返してサーバB−2に送信する。
よって、トランザクション管理部105は、サーバB−2から受信したキー情報及びルート情報と、次のルーティング先として決定したサーバB−2を示す次ルーティング先情報とを通知する通知情報を信号解析/作成部102に出力する(C9)。すなわち、通知情報には、キー情報、ルート情報、及び、次ルーティング先情報が含まれる。
信号解析/作成部102は、トランザクション管理部105から出力された通知情報に基づいて、次ルーティング先となるサーバB−2に送信する信号を作成する。具体的には、信号のヘッダにおいて、通知情報に含まれるキー情報及びルート情報を設定する(C3)。
信号解析/作成部102は、作成した信号の通知情報に含まれる次ルーティング先情報が示すサーバB−2への送信を指示する指示情報を信号送信部103に出力する(C10)。指示情報には、作成した信号が含まれる。信号送信部103は、信号解析/作成部102から出力された指示情報に含まれる信号をサーバB−2に送信する(C11)。
以降は、サーバB−2及びサーバAにおいて、上述した、応答となる信号を端末装置Xに対して送信したときにおける処理と同様にして、キー情報及びルート情報の更新等が行われる。これによって、サーバAにおいても、サーバA、サーバB−2、及び、サーバC−1を示すルート情報が登録される。
続いて、図6を参照して、ルーティング管理部106が有する内部DBの構成例について説明する。図6は、ルーティング管理部106が有する内部DBの構成例を示す図である。
ルーティング管理部106は、トランザクション管理部105から出力される、通信トランザクションのキー情報及びルート情報に基づいて、内部DBに対する情報の追加及び更新を行う。上述した、サーバA、サーバB−1、サーバC−1の通信が行われた場合における内部DBの情報の変化について説明する。なお、以下の説明で例示するキー情報の値は、一例であり、一意に定まる値であれば、任意の値を生成するようにしてよい。
まず、サーバAからサーバB−1へ信号が送られる際に、サーバAは、通信トランザクションのキー情報(0000000001)を生成する。サーバAは、同一の通信トランザクションのキー情報を内部DBより検索し、同一のキー情報が無ければ、自サーバAのルート情報を内部DBに追加する(第1ルート)。サーバAは、サーバB−1に、通信トランザクションのキー情報、及び、ルート情報(この時点では第1ルートのみ)を送信する。
サーバB−1は、サーバAから受信した信号を解析し、解析によって抽出した通信トランザクションのキー情報を内部DBより検索し、同一のものが無ければ、内部DBにトランザクションのキー情報、及び、第1ルート(サーバA)のルート情報を追加する。このとき、サーバB−1は、自サーバB−1の情報を内部DBの該当する通信トランザクションのキー情報に対応するルート情報に、第2ルートとして記録する(第2ルート)。サーバB−1は、サーバC−1に、通信トランザクションのキー情報、及び、ルート情報(この時点では第2ルートまで)を送信する。
サーバC−1は、サーバB−1から受信した信号を解析し、解析によって抽出した通信トランザクションのキー情報を内部DBより検索し、同一のものが無ければ、内部DBにトランザクションのキー情報、及び、第2ルートまで(サーバA、サーバB−1)のルート情報を追加する。このとき、サーバC−1は、自サーバC−1の情報を内部DBの該当する通信トランザクションのキー情報に対応するルート情報に、第3ルートとして記録する(第3ルート)。この時点で、サーバC−1は、今回の通信トランザクションにおいて使用される、全装置を把握することが出来る。サーバC−1は、サーバB−1に、通信トランザクションのキー情報、及び、ルート情報(この時点で第3ルートまで)を送信する。
サーバB−1は、サーバC−1から受信した信号を解析し、解析によって抽出した通信トランザクションのキー情報から内部DBを検索し、ルート情報を更新する。この時点で、サーバB−1は、今回のトランザクションにおいて使用される、全装置を把握することが出来る。サーバB−1は、サーバAに、トランザクションのキー情報、及び、ルート情報(この時点で第3ルートまで)を送信する。
サーバAは、サーバB−1から受信した信号を解析し、解析によって抽出した通信トランザクションのキー情報から内部DBを検索し、ルート情報を更新する。この時点でサーバAも、今回のトランザクションにおいて使用される、全装置を把握することが出来る。
ここで、上述した説明では、サーバにおいて、信号を受信したときに、自サーバの情報を追加するように更新したルート情報を内部DBに格納して、そのルート情報を次のルーティング先に送信するようにしているが、最終的に内部DBにおいて通信経路の全てのサーバを示すことができれば、これに限られない。例えば、自サーバの情報を追加するように更新して、ルート情報を内部DBに格納せずに、次のルーティング先に送信して、ルート情報がサーバC−1で折り返して送信されてきたときに、内部DBに格納するようにしてもよい。
以上に説明したように、本実施の形態では、障害発生装置の迂回動作時に、次にルーティングさせる装置を独自ヘッダを用いて指示し、それまで使用していた装置を選択させる。これにより、ネットワーク全体で二重にリソースが消費されること無く、効率的にリソースを使用することができる。
また、本実施の形態では、同一トランザクションで使用されるルート情報を信号に乗せるだけではなく、各サーバで管理している。これによれば、同一トランザクション内で使用される、どのサーバが障害状態になっても、障害装置だけを迂回し、それ以外の装置はそのまま使用することができ、無駄なリソース使用が抑えることが出来る。また、装置の障害検出に応じて、動的にルート変更が行っているため、円滑に運用していくことが出来る点である。
<発明の実施の形態の概要>
続いて、図9を参照して、本発明の実施の形態にかかるサーバ10の概要となる中継装置9について説明する。図9は、本発明の実施の形態にかかる中継装置9の構成を示すブロック図である。
中継装置9は、第1の端末装置と第2の端末装置との間で送受信されるデータの通信経路を決定して、決定した通信経路でデータを中継するように複数が接続される。中継装置9は、記憶部91、ルート情報管理部92、ルート通知部93、及び、ルート決定部94を有する。
記憶部91は、ルート情報を格納する。記憶部91は、ルーティング管理部106に対応する。
ルート情報管理部92は、通信経路において第1の端末装置側の中継装置から第2の端末装置側の中継装置まで往復するようにルート情報を送信するときに、ルート情報の送信の往路において自中継装置を追加的に示すようにルート情報を更新する。また、ルート情報管理部92は、ルート情報の送信の復路においてルート情報を記憶部91に格納する。
ルート通知部93は、通信経路における第2の端末装置側の次段の中継装置の障害を検出した場合、障害が検出された中継装置に代わる新たな次段の中継装置を決定して、決定した中継装置に対して、記憶部91に格納されたルート情報で示される中継装置のうち、少なくとも障害が検出された中継装置に対する第2の端末装置側の次段の中継装置を示すルート通知情報を送信する。
ルート決定部94は、ルート通知情報を受信したときに、受信したルート通知情報で示される、障害が検出された中継装置に対する第2の端末装置側の中継装置を、通信経路における第2の端末装置側の次段の中継装置として決定する。ルート情報管理部92、ルート通知部93、及び、ルート決定部94は、信号解析/作成部102及びトランザクション管理部105に対応する。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
例えば、サーバ10の数、及び、端末装置20の数は、本実施の形態において例示した数に限られない。具体的には、端末装置20の間で、サーバA、サーバB−1又はサーバB−2、サーバC−1又はサーバC−2の3つのサーバを中継して信号が送受信される場合について例示したが、3つよりも多いサーバを中継して信号が送受信されるようにしてもよい。
また、多重でサーバに障害が発生した場合にも、上述した迂回論理と同様の処理によって、リソースの圧迫を防止して、通信経路を変更することも可能である。また、ルート情報は、独自ヘッダではなく、他の方法によってサーバ間で送受信するようにして、上述した処理を実現するようにしてもよい。例えば、端末装置間で信号を送信するときに、その信号に対応付けて、別途ルート情報を送信するようにしてもよい。
本発明の実施の形態にかかるサーバ10は、上述の実施の形態の機能を実現するプログラムを、コンピュータ(サーバ10)又はコンピュータが有するプロセッサが実行することによって、構成することが可能である。
また、このプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。