(57)【特許請求の範囲】
【請求項１】
複数の情報処理装置と前記複数の情報処理装置間で送受信されるパケットを中継する複数の中継装置とを含む複数のノード装置を含むネットワークにおける第１ノード装置であって、
第２ノード装置から第３ノード装置に送信されたパケットが前記ネットワークで消失された可能性を前記第３ノード装置が検出したか否かを判定し、
前記可能性を前記第３ノード装置が検出したと判定した場合、前記ネットワークにおいて前記第１ノード装置と前記第２ノード装置との間に存在する各経路上の他のノード装置に対して、前記パケットの自装置における送信又は受信の有無の判定を依頼する第１情報を送信する、
処理を実行する制御部を有することを特徴とする第１ノード装置。
【請求項２】
前記制御部は、前記可能性を前記第３ノード装置が検出したことを示す第２情報を受信した場合、前記第２情報に基づいて、前記パケットの送信元である前記第２ノード装置と送信先である前記第３ノード装置とを特定し、前記第２ノード装置の識別情報と前記第３ノード装置の識別情報とを含む前記第１情報を生成する、
ことを特徴とする請求項１に記載の第１ノード装置。
【請求項３】
前記制御部は、自装置が中継したパケットの受信又は送信に応じて記憶させた前記中継したパケットの送信先情報と送信元情報とを対応付けた履歴情報と前記第２情報とに基づいて、障害の検知を実行する、
ことを特徴とする請求項２に記載の第１ノード装置。
【請求項４】
前記制御部は、前記他のノード装置から他のパケットの送信又は受信の有無の判定を依頼する第３情報を受信すると、前記第３情報に含まれる送信元情報と送信先情報と前記履歴情報とに基づいて、障害の有無を判定する、
ことを特徴とする請求項３に記載の第１ノード装置。
【請求項５】
前記履歴情報は、前記中継したパケットのシーケンス番号に基づいて決定されるフラグが対応付けられている、
ことを特徴とする請求項３に記載の第１ノード装置。
【請求項６】
前記第２情報はＳｅｌｅｃｔｉｖｅ  ＡＣＫｎｏｗｌｅｄｇｍｅｎｔパケットである、
ことを特徴とする請求項２に記載の第１ノード装置。
【請求項７】
前記第１ノード装置と前記第３ノード装置は同一のノード装置であり、
前記制御部は、ＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットの受信状況に応じて、前記可能性を前記第３ノード装置が検出したか否かを判定する、
ことを特徴とする請求項１に記載の第１ノード装置。
【請求項８】
第１ノード装置から第２ノード装置に送信されたパケットがネットワークで消失された可能性を前記第２ノード装置が検出したか否かを判定し、
前記可能性を前記第２ノード装置が検出したと判定した場合、前記ネットワークにおいて前記第１ノード装置と前記第２ノード装置との間に存在する各経路上の他のノード装置に対して、前記パケットの自装置における送信又は受信の有無の判定を依頼する第１情報を送信する、
処理をコンピュータが実行することを特徴とする障害検知方法。
【請求項９】
複数の情報処理装置と前記複数の情報処理装置間で送受信されるパケットを中継する複数の中継装置とを含む複数のノード装置を含む通信システムにおいて、
第１ノード装置が、第２ノード装置から第３ノード装置に送信されたパケットが前記通信システム内で消失された可能性を前記第３ノード装置が検出したか否かを判定し、前記可能性を前記第３ノード装置が検出したと判定した場合、前記通信システム内において前記第１ノード装置と前記第２ノード装置との間に存在する各経路上の他のノード装置に対して、前記パケットの自装置における送信又は受信の有無の判定を依頼する第１情報を送信する、
ことを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、障害検知技術、ノード装置、通信システムに関する。
【背景技術】
【０００２】
近年、ネットワークの利用者はデータセンターにデータを預けることが当たり前になっており、これに伴うシステム規模の拡大や、同じシステム環境を複数のユーザが共有して使用するマルチテナント化などの影響からネットワーク構成が従来のネットワーク構成と比較して非常に複雑化してきている。
【０００３】
例えば、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）で障害が発生した場合、障害の発生箇所や発生原因を特定するためには、各中継スイッチのログやネットワーク経路に専用の機器を接続し採取されたパケットを解析する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−８０５８４号公報
【特許文献２】特開２０１０−６３１１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術において、障害が発生した際、障害が発生した時刻まで遡って中継スイッチのログ解析を行うが、ネットワーク経路に専用の機器を接続しパケットの採取をしても事象が再現しない場合は、障害発生箇所の特定ができないという課題がある。また、近年の複雑化したネットワークにおいては、パケットの転送経路が行きと帰りとで異なる場合が少なからずあるが、そのような場合には更に障害発生箇所の特定は困難になる。
【０００６】
一の側面では、本発明は、ネットワーク上の障害発生箇所を特定することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一観点によれば、複数の情報処理装置と複数の情報処理装置間で送受信されるパケットを中継する複数の中継装置とを含む複数のノード装置を含むネットワークにおける第１ノード装置が、第２ノード装置から第３ノード装置に送信されたパケットがネットワークで消失された可能性を第３ノード装置が検出したか否かを判定し、可能性を第３ノード装置が検出したと判定した場合、ネットワークにおいて第１ノード装置と第２ノード装置との間に存在する各経路上の他のノード装置に対して、パケットの自装置における送信又は受信の有無の判定を依頼する第１情報を送信する。
【発明の効果】
【０００８】
一の側面において、本発明は、ネットワーク上の障害発生箇所を特定することを可能とする。
【図面の簡単な説明】
【０００９】
【図１】図１は、システムの構成例を示す図である。
【図２】図２は、中継装置のハードウェア構成例を示す図である。
【図３】図３は、受信履歴テーブルの一例を示す図である。
【図４】図４は、受信履歴テーブルの一例を示す図である。
【図５】図５は、受信履歴の生成処理手順の一例を示すフローチャートである。
【図６】図６は、障害検知の処理手順の一例を示すフローチャートである。
【図７】図７は、障害判定の処理手順の一例を示すフローチャートである。
【図８】図８は、システムの構成例を示す図である。
【図９】図９は、障害検知の処理手順の一例を示すフローチャートである。
【図１０】図１０は、障害判定の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して各実施形態について詳細に説明する。各実施形態における各処理は適宜変更することが可能である。なお、各実施形態を説明するための全図において、同一部分には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１１】
以下、第１実施形態について説明する。図１は、第１実施形態のシステムの構成例を示す図である。第１実施形態のシステムは、情報処理装置１ａ、情報処理装置１ｂ、情報処理装置１ｃ、情報処理装置１ｄ、中継装置２ａ、中継装置２ｂ、中継装置２ｃ、中継装置２ｄ、中継装置２ｅ、中継装置２ｆ、ネットワーク３、管理者端末４を含む。以下、情報処理装置１ａ、情報処理装置１ｂ、情報処理装置１ｃ、情報処理装置１ｄを区別しない場合は情報処理装置１と表記する。同様に、中継装置２ａ、中継装置２ｂ、中継装置２ｃ、中継装置２ｄ、中継装置２ｅ、中継装置２ｆを区別しない場合は、中継装置２と表記する。
【００１２】
図１に示したシステムの構成は一例であり、情報処理装置１や中継装置２はこれらの数に限られるものではない。また、情報処理装置１と中継装置２とをノード装置と総称する。
【００１３】
情報処置装置１は、例えば、利用者が直接操作や入力を行う一般的なコンピュータであってもよく、利用者へサービスを提供するサーバコンピュータであっても良い。情報処理装置１は、中継装置２やネットワーク３を介して相互に通信を行う。
【００１４】
中継装置２は、例えば伝送装置であって、ルータや中継スイッチなどであっても良い。中継装置２は、受信したＩＰパケットを、宛先情報（いわゆるルーティングテーブル）に基づいて経路選択を行い、転送する。
【００１５】
ネットワーク３は、例えば、ＷＡＮであって、複数の中継装置２によって中継されていても良い。
【００１６】
管理者端末４は、例えば、障害発生時にシステムの管理者が使用するための一般的なコンピュータである。システムの管理者は、管理者端末４を使用して管理者端末４に収集された障害情報を閲覧する。管理者端末４は、ネットワーク３に接続されている例を示したがこれに限られるものではなく、障害情報の収集を行う専用の回線によって各中継装置２と接続されていても良い。
【００１７】
次に、中継装置２に関して説明する。図２は、第１実施形態に係る中継装置２のハードウェア構成例を示す。中継装置２は、制御装置１０、記憶装置１１、ネットワーク接続装置１２を有し、これらはシステムバス１３で相互に接続されている。
【００１８】
制御装置１０は、中継装置２を制御する装置である。制御装置１０は、例えば、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の電子回路が用いられても良い。制御装置１０は、記憶装置１１に格納されているＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、各種プログラムに基づいて、各種演算や各ハードウェア構成部とのデータ入出力等、中継装置２の動作を制御して、各種処理を実行する。プログラムの実行中に必要となる各種情報等は、例えば記憶装置１１から取得することができる。なお、制御装置１０が行なう処理の一部を専用のハードウェアを用いて実現しても良い。制御装置１０は、記憶装置１１に記憶された第１実施形態に係るプログラムを読み出し実行することによって、第１実施形態に係る履歴情報生成処理、障害検知処理、障害判定処理を実行する。なお、障害とは、一例として、パケット抜けが挙げられる。
【００１９】
記憶装置１１は、例えば、制御装置１０に実行させるＯＳやアプリケーションプログラム、パケット転送時に宛先を調べるためのルーティングテーブルを記憶する。また、記憶装置１１は、制御装置１０による第１実施形態に係る処理に必要な各種プログラム及びデータを記憶する。なお、記憶装置１１としては、例えば、ＴＣＡＭ（Ｔｅｒｎａｒｙ  Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュメモリ等を用いても良い。
【００２０】
ネットワーク接続装置１２は、ネットワークインターフェースであり、例えば、複数のポートを備えている。パケットは、ネットワーク接続装置１２を介して送受信される。また、各ポートには、動作状況を示すＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）が備えられている場合もある。
【００２１】
以下、中継装置２の具体的な動作を例示する。中継装置２は、一般的なパケットの転送処理を実行する。例えば、中継装置２の制御措置１０は、パケットを受信すると、ヘッダに含まれる送信先のＩＰアドレスとルーティングテーブルとに基づいて、転送先のポート番号を特定し、特定したポート番号のポートよりパケットを送信する。
【００２２】
一般的なパケットの転送処理とは別に、中継装置２は、履歴情報生成処理を実行する機能を有する。中継装置２の制御装置１０は、例えば、受信したパケットのヘッダに含まれる送信元のＩＰアドレス、送信先のＩＰアドレス、シーケンス番号を特定する。制御装置１０は、特定したＩＰアドレスと送信先のＩＰアドレスとシーケンス番号とをパケットを受信した時刻情報とポート番号とステータス情報とに関連付けて受信履歴として記憶する。
【００２３】
同様にして、制御装置１０は、送信したパケットに含まれる送信元のＩＰアドレス、送信先のＩＰアドレス、シーケンス番号を特定する。制御装置１０は、特定したＩＰアドレスと送信先のＩＰアドレスとシーケンス番号とをパケットを送信した時刻情報とポート番号と障害の検知に使用するフラグとに関連付けて送信履歴として記憶する。なお、障害の検知に使用するフラグとは、障害検知の処理の際にフラグを参照することにより障害の有無を判定するための情報である。フラグは、例えば０又は１の情報であって、０は通知対象であることを意味し、１は正常を意味する。
【００２４】
履歴に記憶される情報は、送信元のＩＰアドレスや送信先のＩＰアドレスに限られるものではなく、送信元と送信先を一意に特定できる情報であれば良く、例えばホスト名が使用されても良い。更に、履歴に記憶される情報は、例示した情報に限られるものではなく、他の異なる情報が含まれても良い。
【００２５】
図３は、受信履歴テーブルの一例を示す図である。図３は、受信履歴テーブル３０の状態（Ａ）から状態（Ｅ）への状態遷移を示している。受信履歴テーブル３０の送信元カラムと送信先カラムとには、記載の都合上、情報処理装置１ａのＩＰアドレスとして「１ａ＿ＩＰａｄｄｒｅｓｓ」が、情報処理装置１ｃのＩＰアドレスとして「１ｃ＿ＩＰａｄｄｒｅｓｓ」が記載されているが、実際にはそれぞれのＩＰアドレスが格納されているものとする。以下、状態（Ａ）から状態（Ｅ）への遷移について順に説明する。
【００２６】
状態（Ａ）は、中継装置２が、送信元が情報処理装置１ａ、送信先が情報処理装置１ｃ、シーケンス番号が１のパケットを受信した際の受信履歴テーブル３０の状態を示す。状態（Ａ）が示すように、中継装置２の制御装置１０は、送信元、送信先、シーケンス番号の情報、受信時刻、受信ポート、０のフラグの情報を含むシーケンス番号が１のパケットの受信に対応するレコードを受信履歴テーブル３０に追加する。制御装置１０は、パケットを受信した段階ではフラグを０に設定する。
【００２７】
状態（Ｂ）は、状態（Ａ）に続いて、中継装置２が、送信元が情報処理装置１ａ、送信先が情報処理装置１ｃ、シーケンス番号が２のパケットを受信した際の受信履歴テーブル３０の状態を示す。状態（Ｂ）が示すように、シーケンス番号が２のパケットの受信に対応するレコードを受信履歴テーブル３０に追加する。制御装置１０は、シーケンス番号が１つ前のシーケンス番号の１のパケットの受信に対応するレコードのフラグを０から１に更新する。以上のように、受信履歴テーブル３０おいて、フラグは、１つ後のシーケンス番号のパケットを受信した際に、正常を意味する１に更新される。
【００２８】
状態（Ｃ）は、状態（Ｂ）に続いて、中継装置２が、送信元が情報処理装置１ａ、送信先が情報処理装置１ｃ、シーケンス番号が４のパケットを、シーケンス番号が３のパケットを受信する前に受信した際の受信履歴テーブル３０の状態を示す。状態（Ｃ）が示すように、制御装置１０は、シーケンス番号が４のパケットの受信に対応するレコードを受信履歴テーブル３０に追加する。状態（Ｃ）において、シーケンス番号が２のパケットの受信に対応するレコードのフラグは、シーケンス番号が３のパケットが受信されていないため、０のままとなる。
【００２９】
状態（Ｄ）は、状態（Ｃ）に続いて、中継装置２が、送信元が情報処理装置１ａ、送信先が情報処理装置１ｃ、シーケンス番号が３のパケット受信した際の受信履歴テーブル３０の状態を示す。状態（Ｄ）が示すように、制御装置１０は、シーケンス番号が３のパケットの受信に対応するレコードを受信履歴テーブル３０に追加する。制御装置１０は、シーケンス番号が１つ前のシーケンス番号が２のパケットの受信に対応するレコードのフラグを０から１に更新する。更に、制御装置１０は、既に１つ後のシーケンス番号が４のパケットの受信しているため、シーケンス番号３の受信に対応するレコードのフラグは１とする。
【００３０】
状態（Ｅ）は、状態（Ｄ）に続いて、中継装置２が、送信元が情報処理装置１ａ、送信先が情報処理装置１ｃ、シーケンス番号が５のパケット受信した際の受信履歴テーブル３０の状態を示す。状態（Ｅ）が示すように、制御装置１０は、シーケンス番号が５のパケットの受信に対応するレコードを受信履歴テーブル３０に追加する。制御装置１０は、シーケンス番号が１つ前のシーケンス番号が４のパケットの受信に対応するレコードのフラグを０から１に更新する。
【００３１】
以上のような流れで、中継装置２は、パケットの受信履歴を記憶する。中継装置２は、受信したパケットのシーケンス番号の順番が入れ替わった場合であっても、シーケンス番号に抜けがなくパケットが受信されれば、正常と判断する。シーケンス番号に抜けがないことは、パケットが消失していない（パケットロスが発生していない）ことを示すからである。中継装置２は、受信履歴と同様にパケットの送信の順に従って、パケットの送信履歴を記憶する。中継装置２内で異常が発生しない場合は、送信元、送信先、シーケンス番号、フラグが同じであって、ほぼ同様の受信履歴と送信履歴が記憶されることになる。受信履歴と送信履歴を記憶することにより、中継装置２は、自装置内で発生した異常を検知することができる。
【００３２】
また、中継装置２の制御装置１０は、受信履歴テーブル３０や送信履歴テーブルにおいて、フラグが１のレコードについては、適宜削除しても良い。フラグが１に設定されているレコードは、障害検知の処理において不要な履歴であり、削除によりメモリの圧迫を低減することができる。
【００３３】
図４は、受信履歴テーブルの一例を示す図である。図４は、シーケンス番号が３のパケットがロストし、中継装置２がシーケンス番号が３のパケットを受信しなかった際の受信履歴テーブル３０の状態を示す。図４が示すように、シーケンス番号が２のパケットの受信に対応するレコードのフラグは、１つ後のシーケンス番号が３のパケットが受信されていないため、０のままとなる。
【００３４】
他に、中継装置２は、障害検知処理を実行する機能を有する。中継装置２の制御装置１０は、例えば、ＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  ＡＣＫｎｏｗｌｅｄｇｍｅｎｔ）パケットを受信すると、ＳＡＣＫパケットを解析し、抜けたパケットの送信元のＩＰアドレス、送信先のＩＰアドレス、シーケンス番号を特定する。ＳＡＣＫパケットとは、データの送信先のエンドデバイスから送信されるパケットの抜けを通知する確認応答である。例えば、情報処理装置１ａから情報処理装置１ｃへデータが送信された場合、ＳＡＣＫパケットは、データの受信に応じて情報処理装置１ｃから情報処理装置１ａへ送信される。
【００３５】
制御装置１０は、受信履歴テーブル３０と送信履歴テーブルとを参照し、抜けたパケットの送信元のＩＰアドレス、送信先のＩＰアドレスと同一であって、抜けたパケットのシーケンス番号より１つ前のシーケンス番号であって、フラグが０であるレコードの有無を判定する。
【００３６】
該当するレコードが有る場合、制御装置１０は、障害を検知したものとして、当該抜けたパケットに関する障害情報を管理者端末４に送信する。制御装置１０は、併せて、該当するレコードのポート番号に対応するポートのＬＥＤを点灯させても良い。障害情報は、例えば、抜けたパケットの送信元のＩＰアドレス、送信先のＩＰアドレス、シーケンス番号、受信ポート番号、送信ポート番号、障害を検知した中継装置２の識別情報が含まれても良い。
【００３７】
制御装置１０は、ＳＡＣＫパケット受信後、受信履歴テーブル３０と送信履歴テーブルとにおいて、抜けたパケットの送信元のＩＰアドレス、送信先のＩＰアドレスと同一のレコードについては削除しても良い。ＳＡＣＫパケットが送信元に受信されると、送信元と送信先とのエンドデバイス間でパケットの再送が実行されるため、前回の履歴情報は不要となるためである。
【００３８】
より具体的には、受信履歴テーブル３０が図４で示す状態の場合、中継装置２の制御装置１０は、ＳＡＣＫパケット受信すると、ＳＡＣＫパケットを解析し、エンドデバイスが受信できていない（抜けた）パケットの送信元のＩＰアドレスが情報処置装置１ａ、送信先のＩＰアドレスが情報処理装置１ｃ、シーケンス番号が３であることを特定する。制御装置１０は、受信履歴テーブル３０を参照し、送信元のＩＰアドレスが情報処置装置１ａ、送信先のＩＰアドレスが情報処理装置１ｃ、１つ前のシーケンス番号が２、フラグが０であるレコードの有無を判定する。
【００３９】
図４の受信履歴テーブル３０が示す通り、制御装置１０は、受信履歴テーブル３０の参照の結果、送信元のＩＰアドレスが情報処置装置１ａ、送信先のＩＰアドレスが情報処理装置１ｃ、１つ前のシーケンス番号が２、フラグが０であるレコードの存在を検知する。制御装置１０は、該当するレコードが存在するため、障害有りと判定する。
【００４０】
中継装置２は、ＳＡＣＫパケットに基づいて障害を検知すると、システム内の他の中継装置２に対して、障害の判定依頼を送信する。中継装置２は、例えば、記憶装置１１に記憶された他の中継装置２の宛先情報を参照しても良い。なお、ここでの宛先情報は、通常のルーティングテーブルとは異なるものである。例えば、パケットの行きと帰りとの経路が異なる場合やルーティングテーブルが更新された場合に、抜けが発生したパケット（行き）とＳＡＣＫパケット（帰り）とが異なる経路を通ることになる。抜けが発生したパケット（行き）の経路上の他の中継装置２に対して障害判定依頼を送信すべきであるにも関わらず、通常のルーティングテーブルを用いると、障害判定依頼を送信すべき対象の中継装置２が障害判定依頼の宛先から漏れてしまう場合がある。
【００４１】
従って、中継装置２は、障害判定依頼の送信先を、通常のルーティングテーブルとは異なる規則に基づいて決定する。例えば、中継装置２は、宛先情報を参照し、システム内の全ての他の中継装置２それぞれを宛先とする障害判定依頼を生成し、送信しても良い。また、中継装置２は、宛先情報を参照し、自装置と（抜けた）パケットの送信元である情報処理装置１ａとの間の各経路上の中継装置２を宛先とする障害判定依頼を生成し、送信しても良い。また、ＳＡＣＫパケットの経路上の中継装置２は、ＳＡＣＫパケットに基づいて障害を検知及び判定することができることから、ＳＡＣＫパケットの経路上の中継装置２は障害判定依頼の宛先から除外しても良い。更に、障害判定依頼を隣接する中継装置２のみに送信し、その後はいわゆるバケツリレー方式によってネットワーク上の他の中継装置２に漏れなく障害判定依頼を送り届ける方式も考えられる。障害の判定依頼の送信には、ネットワーク３が使用されても良く、他に障害判定用の専用のネットワークが使用されても良い。
【００４２】
また、中継装置２は、障害判定処理を実行する機能を有する。障害判定処理は、システム内の他の中継装置２から送信された障害判定依頼に基づいて実行される。中継装置２の制御装置１０は、例えば、判定依頼を受信すると、判定依頼に含まれる送信元のＩＰアドレス、送信先のＩＰアドレス、シーケンス番号に基づいて、受信履歴テーブル３０と送信履歴テーブルとにおいて、該当するレコードの有無を判定する。該当するレコードが有る場合、中継装置２の制御装置１０は、障害を検知したものとして、該当するレコードに関する情報を管理者端末４に送信する。
【００４３】
第１実施形態に係る中継装置２の履歴情報の生成処理手順の一例について説明する。図５は、中継装置２の受信履歴の生成処理手順の一例を示すフローチャートである。
【００４４】
例えば、中継装置２は、パケットを受信する（Ｓ１０１）。制御装置１０は、受信したパケットのヘッダ情報から送信元のＩＰアドレス、送信先のＩＰアドレス、シーケンス番号を特定する（Ｓ１０２）。制御装置１０は、特定した送信元のＩＰアドレス、送信先のＩＰアドレス、シーケンス番号を、パケットの受信時刻、受信ポート番号、フラグ０と対応付けて受信履歴テーブル３０に格納する（Ｓ１０３）。制御装置１０は、受信履歴テーブル３０を参照し、特定した送信元のＩＰアドレス、送信先のＩＰアドレスが同一で、シーケンス番号が１つ前のパケットの受信に対応するレコードの有無を判定する（Ｓ１０４）。
【００４５】
シーケンス番号が１つ前のパケットの受信に対応するレコードが無い場合（Ｓ１０４Ｎｏ）、制御装置１０はＳ１０６のステップに進む。
【００４６】
シーケンス番号が１つ前のパケットの受信に対応するレコードが有る場合（Ｓ１０４Ｙｅｓ）、制御装置１０は、当該シーケンス番号が１つ前のレコードのフラグを０から１に更新する。（Ｓ１０５）。
【００４７】
制御装置１０は、受信履歴テーブル３０を参照し、特定した送信元のＩＰアドレス、送信先のＩＰアドレスが同一で、シーケンス番号が１つ後のパケットの受信に対応するレコードの有無を判定する（Ｓ１０６）。
【００４８】
シーケンス番号が１つ後のパケットの受信に対応するレコードが有る場合（Ｓ１０６Ｙｅｓ）、制御装置１０は、格納したレコードのフラグを０から１に更新する（Ｓ１０７）。制御装置１０は、受信履歴の生成処理を終了する。
【００４９】
シーケンス番号が１つ後のパケットの受信に対応するレコードが無い場合（Ｓ１０６Ｎｏ）、制御装置１０は、受信履歴の生成処理を終了する。
【００５０】
なお、制御装置１０は、パケットを送信した際に、同様の処理に基づいて、送信履歴テーブルを更新し、送信履歴を生成する。
【００５１】
第１実施形態に係る中継装置２の障害検知の処理手順の一例について説明する。図６は、中継装置２の障害検知の処理手順の一例を示すフローチャートである。
【００５２】
中継装置２は、ＳＡＣＫパケットを受信する（Ｓ２０１）。中継装置２の制御装置１０は、受信したＳＡＣＫパケットを解析し、抜けたパケットの送信元のＩＰアドレス、送信先のＩＰアドレス、シーケンス番号を特定する（Ｓ２０２）。制御装置１０は、特定した送信元のＩＰアドレス、送信先のＩＰアドレス、シーケンス番号と一致する障害判定依頼を既に受信しているか判定する（Ｓ２０３）。
【００５３】
一致する障害判定依頼を既に受信していると判定した場合（Ｓ２０３Ｙｅｓ）、制御装置１０は、障害検知処理を終了する。ＳＡＣＫパケットは複数の中継装置２を通過するため、他の中継装置２にて障害が検知されている場合がある。この場合、障害を検知した他の中継装置２から障害判定依頼を受信することによって、当該障害判定依頼に基づいて中継装置２は障害判定処理を既に実行しており、中継装置２は改めて障害検知処理を実行する必要ない。
【００５４】
一致する障害判定依頼を受信していないと判定した場合（Ｓ２０３Ｎｏ）、制御装置１０は、受信履歴テーブル３０を参照し、フラグが０、かつ、特定した送信元のＩＰアドレス、送信先のＩＰアドレスと同一であって、シーケンス番号が１つ前のパケットの受信に対応するレコードの有無を判定する（Ｓ２０４）。
【００５５】
フラグが０で、シーケンス番号が１つ前のパケットの受信に対応するレコードが無い場合（Ｓ２０４Ｎｏ）、制御装置１０は、障害検知処理を終了する。制御装置１０は、障害検知処理の終了前に、受信履歴テーブル３０に特定した送信元のＩＰアドレス、送信先のＩＰアドレスと同一のパケットの受信に対応するレコードが有る場合は、当該特定した送信元のＩＰアドレス、送信先のＩＰアドレスと同一のパケットの受信に対応するレコードを削除しても良い。
【００５６】
フラグが０で、シーケンス番号が１つ前のパケットの受信に対応するレコードが有る場合（Ｓ２０４Ｙｅｓ）、制御装置１０は、抜けたパケットに関連する障害が有りと判定し、障害情報を管理者端末４に送信する（Ｓ２０５）。制御装置１０は、抜けたパケットの送信元のＩＰアドレス、送信先のＩＰアドレス、シーケンス番号の情報を含む障害判定依頼を、システム内の他の中継装置２に送信する（Ｓ２０６）。制御装置１０は、受信履歴テーブル３０から抜けたパケットの送信元のＩＰアドレス、送信先のＩＰアドレスと同一のパケットの受信に対応するレコードを削除し、障害検知処理を終了する。
【００５７】
なお、障害検知処理において、受信履歴テーブル３０が参照されるフローを例示したが、これに限られるものではなく、送信履歴テーブルが参照されても良く、１度の障害検知処理において受信履歴テーブル３０と送信履歴テーブルの両テーブルが参照されても良い。
【００５８】
第１実施形態に係る中継装置２の障害判定の処理手順の一例について説明する。図７は、中継装置２の障害判定の処理手順の一例を示すフローチャートである。
【００５９】
中継装置２は、他の中継装置２から障害判定依頼を受信する（Ｓ３０１）。中継装置２の制御装置１０は、受信した障害判定依頼に含まれるパケットの送信元のＩＰアドレス、送信先のＩＰアドレス、シーケンス番号を特定する（Ｓ３０２）。制御装置１０は、受信履歴テーブル３０を参照し、フラグが０、かつ、特定したパケットの送信元のＩＰアドレス、送信先のＩＰアドレスと同一で、シーケンス番号が１つ前のパケットの受信に対応するレコードの有無を判定する（Ｓ３０３）。
【００６０】
フラグが０で、シーケンス番号が１つ前のパケットの受信に対応するレコードが無い場合（Ｓ３０３Ｎｏ）、制御装置１０は、障害判定処理を終了する。制御装置１０は、障害判定処理の終了前に、受信履歴テーブル３０に特定した送信元のＩＰアドレス、送信先のＩＰアドレスと同一のパケットの受信に対応するレコードが有る場合は、当該特定した送信元のＩＰアドレス、送信先のＩＰアドレスと同一のパケットの受信に対応するレコードを削除しても良い。
【００６１】
フラグが０で、シーケンス番号が１つ前のパケットの受信に対応するレコードが有る場合（Ｓ３０３Ｙｅｓ）、制御装置１０は、障害判定依頼に関連する障害が有りと判定し、障害情報を管理者端末４に送信する（Ｓ３０４）。制御装置１０は、受信履歴テーブル３０から障害判定依頼に含まれる送信元のＩＰアドレス、送信先のＩＰアドレスと同一のパケットの受信に対応するレコードを削除し、障害判定処理を終了する。
【００６２】
なお、障害判定処理において、受信履歴テーブル３０が参照されるフローを例示したが、これに限られるものではなく、送信履歴テーブルが参照されても良く、１度の障害判定処理において受信履歴テーブル３０と送信履歴テーブルの両テーブルが参照されても良い。
【００６３】
第１実施形態によれば、各中継装置２は、パケットの転送処理に応じて、履歴情報生成処理を実行する。そのため、ＳＡＣＫパケットを受信した中継装置２は、障害検知処理を実行し、履歴情報に基づいて自装置における障害の有無を判定できる。
【００６４】
さらに、障害を検知した中継装置２は、他の中継装置２に対して障害判定依頼を送信する。従って、ＳＡＣＫパケットを受信していない中継装置２においても、障害判定処理が実行され、履歴情報に基づいて障害の有無を判定できる。これにより、エンドデバイス間における行きのパケットの転送経路と帰りのＳＡＣＫパケットの転送経路が異なる箇所がある場合でも、ＳＡＣＫパケットが通過しない、行きのパケットの転送経路に該当する中継装置２において、障害判定処理が実行可能となる。
【００６５】
また、ＳＡＣＫパケットにより障害が検知されると、障害が発生している中継装置２から自動的に障害情報が送信され、管理端末４にて障害情報を閲覧、管理することができる。管理者は、障害情報に基づいて、ネットワーク上の障害発生箇所を特定することができる。更に、障害が発生した際の中継装置２のログの採取作業の工数が低減される。従って、システム規模の拡大によって解析対象が膨大となるといった問題や、マルチテナント化によって他システムへの影響を考慮し解析に着手できないといった問題が抑制される。
【００６６】
次に、第２実施形態について説明する。第２実施形態において、第１実施形態と同一部分には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００６７】
図８は、第２実施形態のシステムの構成例を示す図である。第２実施形態のシステムは、ＦＣＩＰ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  ｏｖｅｒ  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）通信を使用するシステムであって、ストレージ装置５ａ、ストレージ装置５ｂ、ストレージ装置５ｃ、ストレージ装置５ｄ、ＦＣＩＰスイッチ６ａ、ＦＣＩＰスイッチ６ｂ、中継装置２ａ、中継装置２ｂ、中継装置２ｃ、中継装置２ｄ、ネットワーク３、管理者端末４を含む。以下、ストレージ装置５ａ、ストレージ装置５ｂ、ストレージ装置５ｃ、ストレージ装置５ｄを区別しない場合はストレージ装置５と表記する。同様に、ＦＣＩＰスイッチ６ａ、ＦＣＩＰスイッチ６ｂを区別しない場合は、ＦＣＩＰスイッチ６と表記する。
【００６８】
図８に示したシステムの構成は一例であり、ストレージ装置５やＦＣＩＰスイッチ６はこれらの数に限られるものではない。また、第２実施形態に係るシステムはＦＣＩＰ通信を使用することを例として挙げたが、これに限られるものではなく、例えばｉＦＣＰ（Ｉｎｔｅｒｎｅｔ  Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｐｒｏｔｏｃｏｌ）通信を使用するシステムであっても良い。
【００６９】
ストレージ装置５は、例えば、個々のコンピュータからは独立したストレージであって、複数のコンピュータによって利用されるストレージであっても良い。なお、第２実施形態において、説明の都合によりストレージ装置５と情報処理装置１とを区別しているが、ストレージ装置５は情報処理装置１の一種である。
【００７０】
ＦＣＩＰスイッチ６のハードウェア構成例は、図２に示す中継装置２と同様とする。つまり、ＦＣＩＰスイッチ６は、制御装置１０、記憶装置１１、ネットワーク接続装置１２を有し、これらはシステムバス１３で相互に接続されている。ＦＣＩＰスイッチ６の記憶装置１１には、第２実施形態に係るプログラムが記憶されており、制御装置１０は、記憶装置１１に記憶された第２実施形態に係るプログラムを読み出し実行することによって、第２実施形態に係る履歴情報生成処理、障害検知処理、障害判定処理を実行する。なお、第２実施形態において、説明の都合によりＦＣＩＰスイッチ６と中継装置２とを区別しているが、ＦＣＩＰスイッチ６は中継装置２の一種である。
【００７１】
以下、ＦＣＩＰスイッチ６の具体的な動作を例示する。図８に示したシステムにおいて、例えば、ストレージ装置５ａからストレージ装置５ｄにデータが転送される場合、ストレージ装置５ａとＦＣＩＰスイッチ６ａとの間、及び、ストレージ装置５ｄとＦＣＩＰスイッチ６ｂとの間は、ＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）通信が行われ、ＦＣＩＰスイッチ６ａとＦＣＩＰスイッチ６ｂとの間は、ＦＣＩＰ通信が行われる。
【００７２】
ＦＣＩＰスイッチ６ａは、例えば、ストレージ装置５ａから受信したＦＣパケットをＩＰパケットでカプセル化したパケット（ＦＣＩＰパケットと称する）を生成してＷＡＮ側へ転送する。ＦＣＩＰパケットのヘッダには、例えば、送信元のＩＰアドレスとしてＦＣＩＰスイッチ６ａのＩＰアドレスを、送信先のＩＰアドレスとしてＦＣＩＰスイッチ６ｂのＩＰアドレスが含まれる。
【００７３】
ＦＣＩＰスイッチ６ｂは、例えば、受信したＦＣＩＰパケットをＦＣパケットへ展開し、ストレージ装置５ｄへ送信する。また、ＦＣＩＰスイッチ６ａ又はＦＣＩＰスイッチ６ｂは、ＦＣＩＰスイッチ６間のＦＣＩＰ通信を継続するために例えば１秒間隔でＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットを送信する。例えば、ＦＣＩＰスイッチ６ａとＦＣＩＰスイッチ６ｂとのうち、ＩＰアドレスが若い方が、ＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットを送信する役割を担っても良い。
【００７４】
ＦＣＩＰスイッチ６は、中継装置２同様に、履歴情報生成処理を実行する機能を有する。ＦＣＩＰスイッチ６は、中継装置２同様に、ＦＣパケット、ＦＣＩＰパケットの受信や送信に応じて、受信履歴テーブル３０や送信履歴テーブルにレコードを追加する。更に、ＦＣＩＰスイッチ６は、フラグが０であるレコードに対応するＦＣＩＰパケットを、履歴パケットとして記憶装置１１に保持する。ＦＣＩＰスイッチ６は、フラグを０から１に更新した際に、当該レコードに対応する履歴パケットを削除しても良い。
【００７５】
なお、中継装置２は、第１実施形態同様に、ＦＣＩＰパケットの受信送信に応じて、履歴情報生成処理を実行する。より具体的には、中継装置２は、ＦＣＩＰパケットのヘッダに含まれる送信元のＦＣＩＰスイッチ６のＩＰアドレス、送信先のＦＣＩＰスイッチ６のＩＰアドレス、シーケンス番号を特定して、受信履歴テーブル３０や送信履歴テーブルにレコードを追加する。
【００７６】
ＦＣＩＰスイッチ６は、中継装置２同様に、障害検知処理を実行する機能を有する。ＦＣＩＰスイッチ６は、ＳＡＣＫパケットに基づいて障害検知処理を行う機能を有するが、その他にＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットに基づいて障害検知処理を行う機能を有する。
【００７７】
ＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットを受信する側のＦＣＩＰスイッチ６は、前回のＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットから所定の時間内（例えば、１秒）に次のＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットを受信したか否かを判定し、ＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットを受信していない場合は、障害として検知する。
【００７８】
障害を検知したＦＣＩＰスイッチ６は、受信した前回のＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットのヘッダに含まれる送信元のＩＰアドレスと送信先のＩＰアドレスを特定する。ＦＣＩＰスイッチ６は、特定した送信元のＩＰアドレスと送信先のＩＰアドレスに基づいて、システム内の中継装置２及び他のＦＣＩＰスイッチ６に対して、障害の判定依頼を送信する。
【００７９】
第２実施形態に係るＦＣＩＰスイッチ６の障害検知の処理手順の一例について説明する。図９は、ＦＣＩＰスイッチ６の障害検知の処理手順の一例を示すフローチャートである。
【００８０】
ＦＣＩＰスイッチ６は、ＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットを受信する（Ｓ４０１）。ＦＣＩＰスイッチ６の制御装置１０は、時間の計測を開始する（Ｓ４０２）。制御装置１０は、受信したＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットから所定時間内に次のＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットを受信したか判定する（Ｓ４０３）。
【００８１】
所定時間内にＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットを受信した場合（Ｓ４０３Ｙｅｓ）、制御装置１０は、Ｓ４０２に戻って、計測時間をリセットし、再度時間の計測を開始する。
【００８２】
所定時間内にＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットを受信しなかった場合（Ｓ４０３Ｎｏ）、制御装置１０は、障害有りと判定し、既に受信しているＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットの送信元のＩＰアドレス、送信先のＩＰアドレスを含む障害判定依頼を、システム内の中継装置２と他のＦＣＩＰスイッチに送信する（Ｓ４０４）。
【００８３】
制御装置１０は、受信履歴テーブル３０を参照し、フラグが０、かつ、既に受信しているＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットの送信元のＩＰアドレス、送信先のＩＰアドレスと同一のパケットの受信に対応するレコードの有無を判定する（Ｓ４０５）。
【００８４】
フラグが０で、送信元のＩＰアドレス、送信先のＩＰアドレスと同一のパケットの受信に対応するレコードが無い場合（Ｓ４０５Ｎｏ）、制御装置１０は、障害検知処理を終了する。
【００８５】
フラグが０で、送信元のＩＰアドレス、送信先のＩＰアドレスと同一のパケットの受信に対応するレコードが有る場合（Ｓ４０５Ｙｅｓ）、制御装置１０は、障害情報を管理者端末４に送信する（Ｓ４０６）。制御装置１０は、受信履歴テーブル３０から既に受信しているＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットの送信元のＩＰアドレス及び送信先のＩＰアドレスと同一のパケットの受信に対応するレコードを削除し、障害検知処理を終了する。なお、受信履歴テーブル３０を参照する例を挙げたが、ＦＣＩＰスイッチ６の制御装置１０は、送信履歴テーブルを参照して、障害検知処理を実行しても良い。
【００８６】
続いて、第２実施形態に係る中継装置２の障害判定の処理手順の一例について説明する。図１０は、中継装置２の障害判定の処理手順の一例を示すフローチャートである。
【００８７】
中継装置２は、ＦＣＩＰスイッチ６から障害判定依頼を受信する（Ｓ５０１）。中継装置２の制御装置１０は、受信した障害判定依頼に含まれる送信元のＩＰアドレス、送信先のＩＰアドレスを特定する（Ｓ５０２）。制御装置１０は、受信履歴テーブル３０を参照し、フラグが０、かつ、特定した送信元のＩＰアドレス及び送信先のＩＰアドレスと同一のパケットの受信に対応するレコードの有無を判定する（Ｓ５０３）。
【００８８】
フラグが０で、特定した送信元のＩＰアドレス及び送信先のＩＰアドレスと同一のパケットの受信に対応するレコードが無い場合（Ｓ５０３Ｎｏ）、制御装置１０は、受信履歴テーブル３０から障害判定依頼に含まれる送信元のＩＰアドレス及び送信先のＩＰアドレスと同一のパケットの受信に対応するレコードを削除し、障害判定処理を終了する。
【００８９】
フラグが０で、特定した送信元のＩＰアドレス及び送信先のＩＰアドレスと同一のパケットの受信に対応するレコードが有る場合（Ｓ５０３Ｙｅｓ）、制御装置１０は、障害判定依頼に関連する障害が有りと判定し、障害情報を管理者端末４に送信する（Ｓ５０４）。制御装置１０は、受信履歴テーブル３０から障害判定依頼に含まれる送信元のＩＰアドレス、送信先のＩＰアドレスと同一のパケットの受信に対応するレコードを削除し、障害判定処理を終了する。なお、受信履歴テーブル３０を参照する例を挙げたが、中継装置２の制御装置１０は、送信履歴テーブルを参照して、障害判定処理を実行しても良い。
【００９０】
第２実施形態によれば、ＦＣＩＰスイッチ６は、ＳＡＣＫパケットの他にＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットに基づいて、障害を検知することができる。従って、ＫｅｅｐＡｌｉｖｅＴｉｍｅｏｕｔパケットのロストを契機として、システム内の中継装置２及びＦＣＩＰスイッチ６において障害検知処理又は障害判定処理が実行される。
【００９１】
本発明は、上述した実施形態の構成及び手順に限定されるものではなく、本発明の趣旨を逸脱しない範囲で変更、組み換え等が可能である。
【符号の説明】
【００９２】
１ａ、１ｂ、１ｃ、１ｄ：情報処理装置
２ａ、２ｂ、２ｃ、２ｄ、２ｅ、２ｆ：中継装置
３：ネットワーク
４：管理者端末
５ａ、５ｂ、５ｃ、５ｄ：ストレージ装置
６ａ、６ｂ：ＦＣＩＰスイッチ
１０：制御装置
１１：記憶装置
１２：ネットワーク接続装置
１３：システムバス
３０：受信履歴テーブル
【図１】
0006988511.tif 000002
【図２】
0006988511.tif 000003
【図３】
0006988511.tif 000004
【図４】
0006988511.tif 000005
【図５】
0006988511.tif 000006
【図６】
0006988511.tif 000007
【図７】
0006988511.tif 000008
【図８】
0006988511.tif 000009
【図９】
0006988511.tif 000010
【図１０】
0006988511.tif 000011