(57)【特許請求の範囲】
【請求項１】
ネットワーク上の障害発生箇所を検出するためのネットワーク監視プログラムにおいて、
コンピュータを、
前記コンピュータが接続された内部ネットワークと外部ネットワークとの間で送受信データを中継するルータの物理アドレスを記憶するアドレス記憶手段、
他の機器との間の通信状況を監視する通信状況監視手段、
前記通信状況監視手段で検出された通信内容から通信の異常を検出する異常検出手段、
前記アドレス記憶手段を参照し、前記異常検出手段で異常が検出された通信相手機器の物理アドレスが、前記アドレス記憶手段に記憶されたルータの物理アドレスと一致しないとき、当該ルータ以外の前記内部ネットワークに接続された機器との間の通信において障害が発生したと判定し、異常が検出された通信相手機器の物理アドレスが、前記アドレス記憶手段に記憶されたルータの物理アドレスと一致したとき、当該ルータとの接続を確認し、接続が確認された場合には、当該ルータに接続された前記外部ネットワークにおいて通信の障害が発生したと判定し、接続が確認されなかった場合には、前記内部ネットワークを通じた当該ルータとの間の通信において障害が発生したと判定する障害箇所判定手段、
として機能させることを特徴とするネットワーク監視プログラム。
【請求項２】
情報処理装置に接続されたネットワーク上の障害発生箇所を検出するためのネットワーク監視方法において、
アドレス記憶手段が、前記情報処理装置が接続された内部ネットワークと外部ネットワークとの間で送受信データを中継するルータの物理アドレスを記憶し、
通信状況監視手段が、他の機器との間の通信状況を監視し、
異常検出手段が、前記通信状況監視手段で検出された通信内容から通信の異常を検出し、
障害箇所判定手段が、前記アドレス記憶手段を参照し、前記異常検出手段で異常が検出された通信相手機器の物理アドレスが、前記アドレス記憶手段に記憶されたルータの物理アドレスと一致しないとき、当該ルータ以外の前記内部ネットワークに接続された機器との間の通信において障害が発生したと判定し、異常が検出された通信相手機器の物理アドレスが、前記アドレス記憶手段に記憶されたルータの物理アドレスと一致したとき、当該ルータとの接続を確認し、接続が確認された場合には、当該ルータに接続された前記外部ネットワークにおいて通信の障害が発生したと判定し、接続が確認されなかった場合には、前記内部ネットワークを通じた当該ルータとの間の通信において障害が発生したと判定する、
ことを特徴とするネットワーク監視方法。
【請求項３】
ネットワーク上の障害発生箇所を検出するためのネットワーク監視装置において、
前記ネットワーク監視装置が接続された内部ネットワークと外部ネットワークとの間で送受信データを中継するルータの物理アドレスを記憶するアドレス記憶手段と、
他の機器との間の通信状況を監視する通信状況監視手段と、
前記通信状況監視手段で検出された通信内容から通信の異常を検出する異常検出手段と、
前記アドレス記憶手段を参照し、前記異常検出手段で異常が検出された通信相手機器の物理アドレスが、前記アドレス記憶手段に記憶されたルータの物理アドレスと一致しないとき、当該ルータ以外の前記内部ネットワークに接続された機器との間の通信において障害が発生したと判定し、異常が検出された通信相手機器の物理アドレスが、前記アドレス記憶手段に記憶されたルータの物理アドレスと一致したとき、当該ルータとの接続を確認し、接続が確認された場合には、当該ルータに接続された前記外部ネットワークにおいて通信の障害が発生したと判定し、接続が確認されなかった場合には、前記内部ネットワークを通じた当該ルータとの間の通信において障害が発生したと判定する障害箇所判定手段と、
を有することを特徴とするネットワーク監視装置。
【請求項４】
ネットワーク上の障害発生箇所を検出するためのネットワーク監視プログラムにおいて、
コンピュータを、
当該コンピュータと通信を行った通信相手機器の、当該コンピュータが接続された内部ネットワークにおけるネットワークアドレスと、当該通信相手機器の物理アドレスとを対応付けて記憶する第１のアドレス記憶手段、
前記内部ネットワークと外部ネットワークとの間で送受信データを中継するルータのネットワークアドレスを記憶する第２のアドレス記憶手段、
他の機器との間の通信状況を監視する通信状況監視手段、
前記通信状況監視手段で検出された通信内容から通信の異常を検出する異常検出手段、
前記異常検出手段が異常を検出すると、前記第２のアドレス記憶手段からルータのネットワークアドレスを読み出し、読み出したルータのネットワークアドレスに対応して記憶された物理アドレスを前記第１のアドレス記憶手段から読み出し、前記第１のアドレス記憶手段から読み出した物理アドレスと、前記異常検出手段で異常が検出された通信相手機器の物理アドレスとを比較することで障害発生箇所を判定する障害箇所判定手段、
として機能させることを特徴とするネットワーク監視プログラム。
【請求項５】
前記障害箇所判定手段は、前記第１のアドレス記憶手段から読み出した物理アドレスと、前記異常検出手段で異常が検出された通信相手機器の物理アドレスとが一致しないとき、前記ルータ以外の前記内部ネットワークに接続された機器との間の通信において障害が発生したと判定することを特徴とする請求項４記載のネットワーク監視プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークの運用状態を監視するためのネットワーク監視プログラム、ネットワーク監視方法、およびネットワーク監視装置に関し、特に、ネットワーク上で発生した障害を検出するネットワーク監視プログラム、ネットワーク監視方法、およびネットワーク監視装置に関する。
【背景技術】
【０００２】
情報技術の発達に伴い、多くの企業では、コンピュータシステムを使用した業務の効率化が図られている。コンピュータシステムは、ネットワークを介して複数のコンピュータやスイッチ等の複数の通信機器が接続される。そして、コンピュータで行うことができる業務範囲の拡大に伴って、ネットワークが年々大規模化している。
【０００３】
また、システムのアーキテクチャ等のオープン化や規格化に伴って、異なるメーカ製の機器を組み合わせて、ネットワークを構築することが可能となっている。さらに、ネットワーク上の機器のインテリジェント化も進められている。その結果、ネットワークの構成が複雑化している。
【０００４】
このように、大規模で且つ複雑な構成のネットワークでトラブルが発生した場合、個々の装置の動作状況が確認される。ところで、ネットワークにおける障害は、個々の装置の動作状況だけでは判断できない場合が多く存在する。そのため、ネットワーク上の故障箇所や原因を特定するのは、非常に困難な作業である。故障箇所や原因が長期間判明しなければ、ネットワークを利用する顧客の業務が長時間停止してしまう。
【０００５】
そこで、ネットワーク上の障害発生箇所やその原因を、システム管理者が判断することなく自動的に検出できることが要望されている。このために、ネットワーク上で障害の発生原因となり得る要素と通信の異常を示す事象とを対応付けたテーブルを用意しておき、他の機器との通信中に異常を示す事象を検出したとき、テーブルを参照してその事象に対応する障害発生原因を判定する技術が考えられている（たとえば、特許文献１参照）。
【０００６】
この特許文献１に記載された技術では、主に、ネットワーク層およびトランスポート層のプロトコルでの通信の監視を行うことで、自装置側、隣接伝送路側、非隣接伝送路側（たとえば、ルータを介した先の伝送路側）のうちのどこで障害が発生しているかを判別できるようになっていた。具体的には、再生パケットの有無、重複受信パケットの有無、データの欠落の有無、Ａｃｋ（確認応答）の応答時間、リセット信号などをモニタすることで通信の異常を検出し、どの異常事象がどのコネクションで発生しているかを上記のテーブルに照らし合わせることにより、障害発生箇所を判別している。
【特許文献１】特開２００５−１６７３４７号公報（段落番号〔００２１〕〜〔００３１〕、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１に記載された技術では、コネクションのそれぞれにおいて検出された、異常を示す事象の違いを基に、障害発生箇所を判別していたために、通信相手の機器やコネクションの数が少ない場合には、障害発生箇所を正確に判別できなくなるという問題があった。たとえば、特定のＩＰ（Internet Protocol）アドレスおよびポートにおいて通信の異常が検出された場合には、通信相手機器において障害が発生したと判定できるが、監視対象のコネクションが１つしか存在しないときには、その機器がルータを介した外部のネットワークに接続された機器か、あるいはルータの手前のネットワークに接続された機器かを判別することができなかった。
【０００８】
本発明はこのような点に鑑みてなされたものであり、コネクションの数に関係なく、ネットワーク上での障害発生箇所を高精度、且つ自動的に判別できるネットワーク監視プログラム、ネットワーク監視方法、およびネットワーク監視装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、図１に示すような機能をコンピュータに実現させるネットワーク監視プログラムが提供される。このネットワーク監視プログラムは、ネットワーク上の障害発生箇所を検出するためのものであり、コンピュータを以下のように機能させることができる。
【００１０】
ネットワーク監視プログラムに基づいて動作するコンピュータは、アドレス記憶手段１４、通信状況監視手段１６、異常検出手段１７および障害箇所判定手段１８の機能を有する。アドレス記憶手段１４は、このコンピュータが接続された内部ネットワークと外部ネットワークとの間で送受信データを中継するルータ３０の物理アドレスを記憶する。通信状況監視手段１６は、他の機器との間の通信状況を監視する。異常検出手段１７は、通信状況監視手段１６で検出された通信内容から通信の異常を検出する。障害箇所判定手段１８は、アドレス記憶手段１４を参照し、異常検出手段１７で異常が検出された通信相手機器の物理アドレスが、アドレス記憶手段１４に記憶されたルータ３０の物理アドレスと一致しないとき、そのルータ３０以外の内部ネットワークに接続された機器との間の通信において障害が発生したと判定する。また、障害箇所判定手段１８は、異常が検出された通信相手機器の物理アドレスが、アドレス記憶手段１４に記憶されたルータ３０の物理アドレスと一致したとき、ルータ３０との接続を確認し、接続が確認された場合には、ルータ３０に接続された外部ネットワークにおいて通信の障害が発生したと判定し、接続が確認されなかった場合には、内部ネットワークを通じたルータ３０との間の通信において障害が発生したと判定する。
【００１１】
このようなネットワーク監視プログラムをコンピュータに実行させると、アドレス記憶手段１４により、このコンピュータが接続された内部ネットワークと外部ネットワークとの間で送受信データを中継するルータ３０の物理アドレスが記憶される。また、通信状況監視手段１６により、他の機器との間の通信状況が監視され、異常検出手段１７により、通信状況監視手段１６で検出された通信内容から通信の異常が検出される。すると、障害箇所判定手段１８により、アドレス記憶手段１４が参照され、異常検出手段１７で異常が検出された通信相手機器の物理アドレスが、アドレス記憶手段１４に記憶されたルータ３０の物理アドレスと一致しないとき、そのルータ３０以外の内部ネットワークに接続された機器との間の通信において障害が発生したと判定される。また、異常が検出された通信相手機器の物理アドレスがルータ３０の物理アドレスと一致したときには、障害箇所判定手段１８によってルータ３０との接続が確認される。ルータ３０との接続が確認された場合には、ルータ３０に接続された外部ネットワークにおいて通信の障害が発生したと判定され、接続が確認されなかった場合には、内部ネットワークを通じたルータ３０との間の通信において障害が発生したと判定される。
【００１２】
また、上記課題を解決するために、情報処理装置に接続されたネットワーク上の障害発生箇所を検出するためのネットワーク監視方法が提供される。このネットワーク監視方法では、アドレス記憶手段が、前記情報処理装置が接続された内部ネットワークと外部ネットワークとの間で送受信データを中継するルータの物理アドレスを記憶し、通信状況監視手段が、他の機器との間の通信状況を監視し、異常検出手段が、前記通信状況監視手段で検出された通信内容から通信の異常を検出し、障害箇所判定手段が、前記アドレス記憶手段を参照し、前記異常検出手段で異常が検出された通信相手機器の物理アドレスが、前記アドレス記憶手段に記憶されたルータの物理アドレスと一致しないとき、当該ルータ以外の前記内部ネットワークに接続された機器との間の通信において障害が発生したと判定し、異常が検出された通信相手機器の物理アドレスが、前記アドレス記憶手段に記憶されたルータの物理アドレスと一致したとき、当該ルータとの接続を確認し、接続が確認された場合には、当該ルータに接続された前記外部ネットワークにおいて通信の障害が発生したと判定し、接続が確認されなかった場合には、前記内部ネットワークを通じた当該ルータとの間の通信において障害が発生したと判定する。
【００１３】
このようなネットワーク監視方法によれば、上記のネットワーク監視プログラムを実行するコンピュータと同様の処理が行われる。
さらに、上記課題を解決するために、ネットワーク上の障害発生箇所を検出するためのネットワーク監視プログラムが提供される。このネットワーク監視プログラムは、コンピュータを以下のように機能させることができる。
【００１４】
ネットワーク監視プログラムに基づいて動作するコンピュータは、第１のアドレス記憶手段、第２のアドレス記憶手段、通信状況監視手段、異常検出手段および障害箇所判定手段の機能を有する。第１のアドレス記憶手段は、このコンピュータと通信を行った通信相手機器の、コンピュータが接続された内部ネットワークにおけるネットワークアドレスと、通信相手機器の物理アドレスとを対応付けて記憶する。第２のアドレス記憶手段は、内部ネットワークと外部ネットワークとの間で送受信データを中継するルータのネットワークアドレスを記憶する。通信状況監視手段は、他の機器との間の通信状況を監視する。異常検出手段は、通信状況監視手段で検出された通信内容から通信の異常を検出する。障害発生箇所判定手段は、異常検出手段が異常を検出すると、第２のアドレス記憶手段からルータのネットワークアドレスを読み出し、読み出したルータのネットワークアドレスに対応して記憶された物理アドレスを第１のアドレス記憶手段から読み出し、第１のアドレス記憶手段から読み出した物理アドレスと、異常検出手段で異常が検出された通信相手機器の物理アドレスとを比較することで障害発生箇所を判定する。
【発明の効果】
【００１５】
上記のネットワーク監視プログラムおよびネットワーク監視方法によれば、ルータを介して外部ネットワークに接続された状態において通信の障害が発生したときに、障害の発生箇所を自動的、且つ確実に判定でき、その結果、障害の自動回避や早期復旧が可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して説明する。
まず、実施の形態に適用される発明の概要について図１を用いて説明し、その後、実施の形態の具体的な内容を説明する。
【００１７】
図１は、本発明に係るネットワーク監視機能の概要を説明するための図である。
図１では、例として、本発明に係るネットワーク監視機能が実装された自装置１と、この自装置１の通信相手となる２つの相手装置２および３とを示している。自装置１と相手装置２は、ともにネットワーク２１に接続されている。また、ネットワーク２１は、ルータ３０を介して、他のネットワーク２２に接続されており、相手装置３は、ネットワーク２２に接続されている。
【００１８】
自装置１、相手装置２および３には、それぞれネットワークアドレス（たとえば、ＩＰアドレス）と物理アドレス（たとえば、ＭＡＣ（Media Access Control address）アドレス）とが付与されている。ルータ３０は、ネットワーク２１および２２の間でパケットを中継し、その中継時には、パケットのヘッダに付加された送信側ネットワーク上のネットワークアドレスを、受信側ネットワーク上のネットワークアドレスに変換する。このような中継装置としては、ルータ３０の代わりにゲートウェイなどを適用してもよい。
【００１９】
自装置１は、アプリケーション１１、通信手段１２、通信インタフェース１３、アドレス記憶手段１４、物理アドレス取得手段１５、通信状況監視手段１６、異常検出手段１７、障害箇所判定手段１８および障害情報出力手段１９を備えている。
【００２０】
アプリケーション１１は、自装置１内で動作する処理機能である。たとえば、アプリケーション１１として、Ｗｅｂサーバ機能などのサーバ機能を実装することができる。通信手段１２は、アプリケーション１１と通信相手装置との間のデータ通信を制御する。通信インタフェース１３は、接続された伝送路を介した通信を行う。
【００２１】
アドレス記憶手段１４は、自装置１と通信した相手機器のネットワーク２１におけるネットワークアドレスと、その機器の物理アドレスとを対応付けて記憶している。従って、アドレス記憶手段１４は、ルータ３０の物理アドレスも記憶している。
【００２２】
アドレス記憶手段１４に記憶される情報は、物理アドレス取得手段１５により取得される。物理アドレス取得手段１５は、たとえば、通信相手機器のネットワークアドレスを基に、ネットワーク２１を通じてその通信相手機器から物理アドレスを取得する。このような物理アドレスの取得手順として、たとえば、ＴＣＰ（Transmission Control Protocol）／ＩＰにおけるＡＲＰ（Address Resolution Protocol）というプロトコルで規定された手順を利用でき、この場合、アドレス記憶手段１４は、ＩＰアドレスとＭＡＣアドレスとが対応付けられたＡＲＰテーブルを記憶する。
【００２３】
通信状況監視手段１６は、通信インタフェース１３を通じた他の機器との間の通信状況を監視する。たとえば、通信状況監視手段１６は、通信手段１２と通信インタフェース１３との間で受け渡されるパケットを取得して、その内容を解析する。なお、通信状況の監視は、たとえば、コネクション毎に監視することができる。また、通信状況の監視は、異常な通信に限らず、正常な通信も含めて監視する。たとえば、異常な通信と同時期に行われた正常な通信を監視し、その履歴を記録しておく。このような正常な通信の履歴も障害原因の特定に有効に利用できる。
【００２４】
異常検出手段１７は、通信状況監視手段１６で検出された通信内容から、通信の異常を検出する。たとえば、応答遅延、パケットの再送、パケットの重複受信などの異常を示す事象が検出される。なお、異常を示す事象と同時に、その事象と同時期に発生した正常な事象も検出してもよい。
【００２５】
障害箇所判定手段１８は、異常検出手段１７により通信の異常が検出されたときに、通信障害の発生箇所を判定する。この障害箇所判定手段１８は、まず、異常が検出された通信相手機器の物理アドレスと、アドレス記憶手段１４に記憶されたルータ３０の物理アドレスとの比較結果を基に、障害発生箇所を判定する。
【００２６】
ここで、障害箇所判定手段１８は、たとえば、異常が検出された相手機器の物理アドレスを、通信状況監視手段１６で検出された通信内容の情報から取得することができる。たとえば、通信状況監視手段１６が、通信内容の検出結果をその通信相手機器の物理アドレスなどのアドレス情報とともに記憶するようにし、障害箇所判定手段１８は、通信状況監視手段１６の記憶情報から物理アドレスを取得する。
【００２７】
物理アドレスを取得すると、障害箇所判定手段１８は、アドレス記憶手段１４を参照してルータ３０の物理アドレスを抽出し、ルータ３０の物理アドレスと、異常が検出された通信相手機器の物理アドレスとを比較する。この比較により、各物理アドレスが一致しないときは、ルータ３０を介した外部のネットワーク２２上の機器（たとえば、相手装置３）との通信において障害が発生したのではないことがわかるので、障害箇所判定手段１８は、ルータ３０を除くネットワーク２１上の機器との間の通信において障害が発生したと判定する。図１の例では、相手装置２との通信において障害が発生したと判定できる。
【００２８】
一方、上記の比較により物理アドレスが一致した場合には、障害箇所判定手段１８はさらに、通信インタフェース１３を介して、物理アドレスが一致したルータ３０との接続を確認するための処理を実行する。たとえば、ｐｉｎｇ（Packet INternet Groper）コマンドなど、ルータ３０に対して何らかの応答を要求するコマンドを発行し、その応答状況から接続の有無を確認する。
【００２９】
ルータ３０との接続が確認された場合には、自装置１からルータ３０までの通信が正常であることがわかるので、障害箇所判定手段１８は、外部のネットワーク２２（たとえば、相手装置３や、相手装置３とルータ３０との間の伝送路）において通信の障害が発生したと判定する。また、ルータ３０との接続が確認されなかった場合には、障害箇所判定手段１８は、このルータ３０との間のネットワーク２１における通信において障害が発生したと判定する。
【００３０】
このような障害箇所の判定手順によれば、物理アドレスを用いたことで、異常が検出された通信相手機器がルータ３０であるか否かを識別できるので、少なくとも、通信相手機器がネットワーク２１に接続されている場合には、その機器との間の通信障害を確実に検出できる。また、ルータ３０を介した通信での異常発生時にも、上記のようにルータ３０との接続を確認することで、障害発生箇所がネットワーク２１あるいは２２のどちらであるかを確実に判別できる。そして、このような障害箇所の判別を、通信状況監視手段１６によって監視されているコネクションが少ない場合（たとえば、通信相手機器が１つのみの場合）でも確実に行うことができるようになる。
【００３１】
障害情報出力手段１９は、障害箇所判定手段１８による障害箇所の判定結果を示す障害情報１９ａを出力する。この障害情報１９ａを参照することで、障害発生箇所を正確に識別できるので、障害を自動的に回避させたり、早期に復旧させることが可能となる。
【００３２】
次に、本発明に係るネットワーク監視機能を適用したシステムについて、より具体的に説明する。
図２は、本発明の実施の形態に係るネットワークシステムの構成例を示す図である。
【００３３】
図２では、例として、サーバ１００，２０１，２０２およびクライアント３０１〜３０４が、スイッチ４０１〜４０３およびルータ５００を介して相互に接続されたシステムを示している。サーバ１００，２０１および２０２は、それぞれスイッチ４０１を介してルータ５００に接続し、これらの機器により１つのセグメントが構成されている。クライアント３０１および３０２は、スイッチ４０２を介してルータ５００に接続し、クライアント３０３および３０４は、スイッチ４０３を介してルータ５００に接続しており、これらの機器により１つのセグメントが構成されている。
【００３４】
スイッチ４０１〜４０３は、ＯＳＩ（Open Systems Interconnection）参照モデルのネットワーク層でパケットの送信先を判断して転送する。ルータ５００は、セグメント間で送受信されるパケットを中継し、その中継時には、パケットのヘッダに付加された送信側セグメント上のＩＰアドレスを、受信側セグメント上のＩＰアドレスに変換する。
【００３５】
このネットワークシステムにおいて、ネットワーク監視機能はサーバ１００に実装されている。なお、同様なネットワーク監視機能を、他のサーバやクライアントに実装させることもできる。
【００３６】
図３は、ネットワーク監視機能が搭載されたサーバのハードウェア構成例を示す図である。
サーバ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、ＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が、バス１０７を介して接続されている。
【００３７】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００３８】
グラフィック処理装置１０４には、モニタ１０４ａが接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１０４ａの画面に表示させる。入力インタフェース１０５には、キーボード１０５ａと１０５ｂとが接続されている。入力インタフェース１０５は、キーボード１０５ａやマウス１０５ｂから送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００３９】
通信インタフェース１０６は、ネットワークケーブルを介してスイッチ４０１に接続されており、このスイッチ４０１を介して、他のコンピュータとの間でデータの送受信を行う。
【００４０】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、サーバ１００のハードウェア構成を示したが、他のサーバやクライアントも同様のハードウェア構成で実現することができる。
【００４１】
次に、サーバ１００に実装されたネットワーク監視機能について具体的に説明する。はじめに、このネットワーク監視機能を実現するソフトウェアの構成について説明する。
図４は、ネットワーク監視機能が実装されたサーバのソフトウェア構成例を示す図である。
【００４２】
ネットワーク監視機能は、ＯＳのカーネル部分で動作する機能と、カーネルより上位のユーザ部分で動作する機能とに分かれる。図４において、前者の機能をネットワーク監視部１００ａが司り、後者の機能をネットワーク監視部１００ｂが司っている。
【００４３】
カーネル内に配置されたネットワーク監視部１００ａは、通信インタフェース１０６とＩＰ／ＡＲＰ１００ｃとの間のドライバ部分に設けられる。すなわち、通信インタフェース１０６とＩＰ／ＡＲＰ１００ｃとの間で受け渡されるパケットは、常にネットワーク監視部１００ａを経由する。また、ネットワーク監視部１００ａは、ＩＰ／ＡＲＰ１００ｃなどのレイヤ３レベル（ネットワーク層）の情報を監視すると共に、ＴＣＰ１００ｄなどのレイヤ４レベル（トランスポート層）のプロトコルでの通信の監視も行う。
【００４４】
ユーザ部分（カーネル以外の部分）に配置されたネットワーク監視部１００ｂは、障害情報収集機能を行うデーモン（バックグラウンドサービス）である。具体的には、ネットワーク監視部１００ｂは、カーネルに配置されたネットワーク監視部１００ａから異常検出通知を受け取って、障害情報１１０に蓄積する。障害情報１１０は、たとえば、ＨＤＤ１０３内の記憶領域に格納される。また、異常検出通知を受け取った際に、その異常検出通知を障害情報１１０に蓄積すると共に、たとえば外部に設けられた管理サーバなどに通知することもできる。
【００４５】
ところで、ＩＰ／ＡＲＰ１００ｃには、ＡＲＰテーブル１００ｅおよびルーティングテーブル１００ｆが接続されている。
図５は、ＡＲＰテーブルに記憶された情報の例を示す図である。
【００４６】
ＡＲＰテーブル１００ｅには、同一セグメント内で通信を行った相手先のＩＰアドレスとＭＡＣアドレスとが対応付けられて記憶されている。ＩＰ／ＡＲＰ１００ｃは、ＡＲＰのプロトコルに従って、通信相手機器のＩＰアドレスをセットしたＡＲＰパケットを、通信インタフェース１０６を通じてネットワーク（同一セグメント）にブロードキャストし、その応答パケットから通信相手機器のＭＡＣアドレスを取得して、ＡＲＰテーブル１００ｅに格納する。これにより、パケットの送信の際に、ＡＲＰテーブル１００ｅを参照することで、宛先ＩＰアドレスに対応するＭＡＣアドレスを抽出してパケットのヘッダに格納することが可能になる。
【００４７】
図６は、ルーティングテーブルに記憶された情報の例を示す図である。
ルーティングテーブル１００ｆには、パケットの送信経路を示すＩＰアドレスが記憶されている。ＩＰ／ＡＲＰ１００ｃは、パケットの送信の際に、ルーティングテーブル１００ｆを参照することで、上位層から指定された宛先ＩＰアドレスに対応するパケットの送信経路を決定することが可能になる。ルーティングテーブル１００ｆは、ＩＰ／ＡＲＰ１００ｃにより所定のルーティングプロトコルに従った手順で作成される。また、ルーティングテーブル１００ｆには、“Default Gateway”としてルータ５００のＩＰアドレスが設定される。
【００４８】
図７は、ネットワーク監視部の機能を示すブロック図である。
ネットワーク監視部１００ａ，１００ｂは、通信状態を監視するために、図７に示すような機能を備えている。カーネル側のネットワーク監視部１００ａは、パケット解析部１２０とコネクション監視部１３０とを有する。
【００４９】
パケット解析部１２０は、通信パケットの内容を解析する。解析結果は、コネクション監視部１３０に渡される。
コネクション監視部１３０は、パケット解析部１２０から渡された解析結果に基づいて、コネクションの状態を監視し、コネクションの異常等を検出する。コネクションの監視には、コネクション毎のコネクションテーブル１４０，１４０ａ，１４０ｂ，・・・が利用される。コネクションテーブル１４０，１４０ａ，１４０ｂ，・・・には、現在のコネクションの状態やエラー等の発生状況が記録される。
【００５０】
たとえば、コネクションテーブル１４０には、コネクション管理テーブル１４１、送信監視テーブル１４２、受信監視テーブル１４３が設けられる。コネクション管理テーブル１４１は、コネクションの接続相手機器を示す情報や、そのコネクションでの異常の発生状況などが登録される。送信監視テーブル１４２には、サーバ１００から送信されるパケットの異常の有無を監視するための情報が逐次登録される。受信監視テーブル１４３には、サーバ１００が受信したパケットの異常の有無を監視するための情報が逐次登録される。
【００５１】
このコネクション監視部１３０は、パケット解析部１２０からの情報から、レイヤ２（データリンク層）〜レイヤ４（トランスポート層）レベルの情報を監視する。具体的には、たとえば、自分側の通信インタフェース、ＩＰアドレス、ポート番号、相手側の通信インタフェース、ＩＰアドレス、ポート番号、ＭＡＣアドレスなどをモニタする。そして、コネクションの有無（確立状態）の情報を取得する。さらに、レイヤ４のプロトコル（ＴＣＰ）に基づく再送パケットの有無、重複受信パケットの有無、データの欠落の有無、Ａｃｋ（確認応答）の応答時間、およびリセット信号をモニタし、統計的に処理する。
【００５２】
ユーザ部分に配置されたネットワーク監視部１００ｂは、障害判定部１５０を有する。障害判定部１５０は、コネクションテーブル１４０，１４０ａ，１４０ｂ，・・・を参照し、エラー等の異常発生を検出する。この障害判定部１５０は、ＡＲＰテーブル１００ｅおよびルーティングテーブル１００ｆを参照して、通信相手機器がルータ５００であるか否かを判定する機能や、通信相手機器に対してｐｉｎｇコマンドを発行して、その機器との接続の有無を確認する機能を備える。そして、これらの機能を用いて、通信障害の発生箇所を判定し、その判定結果を障害情報１１０に設定して出力する。
【００５３】
この障害判定部１５０は、コネクションテーブル１４０，１４０ａ，１４０ｂ，・・・に格納された情報を基に、レイヤ４レベルにおける異常発生を検出する。また、これとともに、一般的に障害と認識される前の段階の予兆を検出することもできる。たとえば、ネットワークは自立制御されているために、ＴＣＰレベルで問題（再送等）が起こっていても自動復旧してしまい、障害は検知されない。ところが、障害発生の予兆として、ＴＣＰレベルで問題（再送等）が頻発する場合もある。従来は、ＴＣＰレベルで問題（再送等）に基づく障害検出が行われていないため、通常管理者は重大な問題が発生するまでシステムに異常があることを認識できなかった。
【００５４】
そこで、本実施の形態に係るコネクション監視部１３０は、ＴＣＰレベルで自動復旧（再送等）しているような、通常では確認することのできない情報をモニタする。そして、障害判定部１５０は、モニタされた情報に基づいてトラブルの予兆推定を行う。
【００５５】
図８は、トラブル予兆推定例を示す図である。ここでは例として、サーバ１００からサーバ２０１に対して送信されるパケットが一度で届かずに再送された場合を考える。
通常、サーバ１００からサーバ２０１への再送が発生していても、異常が発生していないと考えられている。しかし、サーバ１００からサーバ２０１へのパケットの再送が発生しているということは、伝送路またはサーバでパケットが失われたことを意味している。この頻度が高くなると重大なトラブルに発展してしまう。たとえば、サーバ１００からサーバ２０１へ頻繁に再送パケットが送られていれば、サーバ２０１でＣＰＵ等の能力不足などが発生し始めている場合が考えられる。このようなトラブルの予兆を検出して障害情報として管理者に通知すれば、重大なトラブルが発生する前に対処が可能となる。
【００５６】
以下、障害やその予兆を検出して、障害箇所を判定するための処理手順について説明する。
図９は、ネットワーク監視処理手順を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。なお、以下の処理は、他の装置との間の通信が行われる毎に実行される。
【００５７】
［ステップＳ１１］パケット解析部１２０は、コネクションをキャプチャする。すなわち、他の装置との間でのコネクション確立から、そのコネクションを介して伝送されたパケットを取得する。
【００５８】
［ステップＳ１２］パケット解析部１２０は、キャプチャしたパケットのＴＣＰやＩＰ、データリンク層のヘッダを抽出する。
［ステップＳ１３］パケット解析部１２０は、抽出したヘッダ情報を解析する。この処理の詳細は後述する。
【００５９】
［ステップＳ１４］コネクション監視部１３０は、初回のイベントか否かを判断する。該当コネクションに対応する更新中のコネクションテーブルが設けられていなければ、初回のイベントであると判断できる。初回のイベントの場合、処理がステップＳ１５に進められる。そうでなければ、処理がステップＳ１６に進められる。
【００６０】
［ステップＳ１５］コネクション監視部１３０は、コネクションテーブルの内容に基づいて検出される障害情報を、一定時間後に障害情報１１０にマージ（追加統合）するように、該当するコネクションテーブルの状態を設定する。
【００６１】
［ステップＳ１６］障害判定部１５０は、コネクションテーブル１４０に基づいて障害を検出して、障害発生箇所を判定する。そして、その判定結果に基づいて障害情報１１０を更新（マージ）する。この処理の詳細は後述する。
【００６２】
次に、ヘッダ情報の解析処理について詳細に説明する。
図１０は、ヘッダ情報解析処理の手順を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【００６３】
［ステップＳ２１］コネクション監視部１３０は、取得したパケットに対応するコネクションテーブルが存在するか否かを判断する。コネクションテーブルが存在すれば、処理がステップＳ２３に進められる。コネクションテーブルが存在しなければ、処理がステップＳ２２に進められる。
【００６４】
［ステップＳ２２］コネクション監視部１３０は、ＩＰアドレス、ポート番号の組み合わせに対応付けたコネクションテーブルを生成する。生成されたコネクションテーブルは、たとえば、ＲＡＭ１０２内の記憶領域に格納される。
【００６５】
［ステップＳ２３］コネクション監視部１３０は、応答（Ａｃｋ）の番号、シーケンス番号、およびデータ長より、再送、重複受信、遅延、およびパケットロストを検出する。検出した結果は、コネクションテーブルに登録される。その後、図９に示す処理に戻り、ステップＳ１４に処理が進められる。
【００６６】
次に、特定のコネクションによって送受信されるパケットに基づいたコネクションテーブルの作成例を具体的に説明する。
図１１は、コネクション上での通信例を示す図である。
【００６７】
図１１は、サーバ１００に実装されたネットワーク監視機能によって、サーバ２０１との間で確立したコネクションを監視した場合の例を示している。この図１１では例として、サーバ１００をＷｅｂサーバ、サーバ２０１をアプリケーション（ＡＰ）サーバとしている。サーバ１００のＩＰアドレスは「192.168.10.10」であり、Ｗｅｂサーバとして機能を提供するアプリケーションのポート番号は「80」である。また、サーバ２０１のＩＰアドレスは「192.168.10.20」であり、処理機能を提供するアプリケーションのポート番号は「10000」である。
【００６８】
ここで、サーバ１００とサーバ２０１との間で受け渡されるパケット４０〜４５に着目する。ここで、パケット４０〜４５の内容について、図１２を参照して説明する。なお、パケット４４は、何らかの障害により正しく伝送されなかったものとする。
【００６９】
図１２は、Ｗｅｂサーバ側のパケットの内容を示す図である。
この図１２には、パケット４０〜４５について、サーバ１００が認識した通信状態（正常か異常か）、サーバ１００におけるパケットの送受信の時間（監視開始からの時間）、ＳＲＣ−ＩＰ（送信元のＩＰアドレス）、ＳＲＣ−Ｐｏｒｔ（送信元のポート番号）、ＤＳＴ−ＩＰ（宛先のＩＰアドレス）、ＤＳＴ−Ｐｏｒｔ（宛先のポート番号）、Sequence no（シーケンス番号）、Ack no（応答番号）、Data Len（データ長）が示されている。
【００７０】
パケット４０は、状態が正常、時間が０．５秒、ＳＲＣ−ＩＰが「192.168.10.20」、ＳＲＣ−Ｐｏｒｔが「10000」、ＤＳＴ−ＩＰが「192.168.10.10」、ＤＳＴ−Ｐｏｒｔが「80」、Sequence noが「1900」、Ack noが「1000」、Data Lenが１００バイトである。
【００７１】
パケット４１は、状態が正常、時間が１．０秒、ＳＲＣ−ＩＰが「192.168.10.10」、ＳＲＣ−Ｐｏｒｔが「80」、ＤＳＴ−ＩＰが「192.168.10.20」、ＤＳＴ−Ｐｏｒｔが「10000」、Sequence noが「1000」、Ack noが「2000」、Data Lenが１０バイトである。
【００７２】
パケット４２は、状態が正常、時間が２．５秒、ＳＲＣ−ＩＰが「192.168.10.20」、ＳＲＣ−Ｐｏｒｔが「10000」、ＤＳＴ−ＩＰが「192.168.10.10」、ＤＳＴ−Ｐｏｒｔが「80」、Sequence noが「2000」、Ack noが「1010」、Data Lenが０バイトである。
【００７３】
パケット４３は、状態が正常、時間が３．０秒、ＳＲＣ−ＩＰが「192.168.10.10」、ＳＲＣ−Ｐｏｒｔが「80」、ＤＳＴ−ＩＰが「192.168.10.20」、ＤＳＴ−Ｐｏｒｔが「10000」、Sequence noが「1010」、Ack noが「2000」、Data Lenが２０バイトである。
【００７４】
パケット４４は、何らかの理由でサーバ１００に到達できなかったパケットである。そのため、図１２では状態と時間との欄が空欄となっている。パケット４４の内容はＳＲＣ−ＩＰが「192.168.10.20」、ＳＲＣ−Ｐｏｒｔが「10000」、ＤＳＴ−ＩＰが「192.168.10.10」、ＤＳＴ−Ｐｏｒｔが「80」、Sequence noが「2000」、Ack noが「1030」、Data Lenが１００バイトであるが、このパケット４４はサーバ１００に到達しない。そのため、サーバ１００側では、ＴＣＰプロトコルの機能により、パケット４３と同様の内容のパケット４５が再送される。
【００７５】
パケット４５は、状態が異常、時間が６．０秒、ＳＲＣ−ＩＰが「192.168.10.10」、ＳＲＣ−Ｐｏｒｔが「80」、ＤＳＴ−ＩＰが「192.168.10.20」、ＤＳＴ−Ｐｏｒｔが「10000」、Sequence noが「1010」、Ack noが「2000」、Data Lenが２０バイトである。
【００７６】
サーバ１００のパケット解析部１２０は、実際に入出力されたパケット４１〜４３，４５のヘッダ情報を解析して、それらの情報（図１２に示す情報）をコネクション監視部１３０に渡す。コネクション監視部１３０は、受け取った情報に基づいてコネクションテーブル１４０を作成する。コネクションテーブル１４０は、図７に示すようにコネクション管理テーブル１４１、送信監視テーブル１４２、および受信監視テーブル１４３で構成される。これらのテーブルのデータ構造例を以下に示す。
【００７７】
図１３は、コネクション管理テーブルのデータ構造例を示す図である。
コネクション管理テーブル１４１には、インタフェース名、自側ＩＰ、自側Ｐｏｒｔ、相手側ＩＰ、相手側Ｐｏｒｔ、相手側ＭＡＣ、再送カウンタ、重複受信カウンタ、パケットロストカウンタ、応答遅延カウンタ、パケットサイズカウンタ、パケット数カウンタ、相手側応答時間基準、および自側応答時間基準が登録されている。
【００７８】
インタフェース名は、コネクションを確立した通信インタフェースの識別情報である。図１３の例では、インタフェース名は「hme0」である。自側ＩＰは、自分のＩＰアドレスである。図１３の例では、ＩＰアドレスは「192.168.10.10」である。自側Ｐｏｒｔは、コネクション使用するアプリケーションのポート番号である。図１３の例では、ポート番号は「80」である。
【００７９】
相手側ＩＰは、通信相手側の装置のＩＰアドレスである。図１３の例では、相手側のＩＰアドレスは「192.168.10.20」である。相手側Ｐｏｒｔは、コネクションを使用して通信する相手側のアプリケーションのポート番号である。図１３の例では、相手側アプリケーションのポート番号は「10000」である。相手側ＭＡＣは、通信相手側装置のＭＡＣアドレスである。図１３の例では、相手側のＭＡＣアドレスは「00:80:91:a2:b3:c4」である。
【００８０】
再送カウンタは、パケットの再送を行った回数である。図１３の例では、パケットの再送を１回行っている。重複受信カウンタは、同一パケットを重複して受け取った回数である。図１３の例では、パケットの重複受信は発生していない。パケットロストカウンタは、パケットを紛失した回数である。図１３の例では、パケットロストは発生していない。
【００８１】
応答遅延カウンタは、自装置においてパケットを受信してから通信相手に応答を返すまでの時間が基準値を超えてしまった回数である。自装置の処理負荷が過大である場合に、応答の遅延が発生する。そのために応答遅延の発生回数をカウントすることで、自装置の処理負荷の増大による障害の発生を検知できる。図１３の例では、応答遅延は発生していない。
【００８２】
パケットサイズカウンタは、受信したパケットサイズのトータルを示している。図１３の例では、パケットサイズカウンタの値は「０」である。パケット数カウンタは、送受信したパケットの総数を示すカウンタである。図１３の例では、パケット数カウンタの値は「０」である。
【００８３】
相手側応答時間基準は、相手側から応答の待ち時間である。この時間だけ待っても応答がない場合、応答遅延と判定され、応答遅延カウンタをカウントアップする。図１３の例では、相手側応答時間基準は、「１．５秒」である。自側応答時間基準は、自分が相手に応答を返すときの許容時間である。この時間内に応答が返せない場合、応答遅延が検出される。図１３の例では、自側応答時間基準は、「０．５秒」である。
【００８４】
図１４は、送信監視テーブルのデータ構造例を示す図である。
送信監視テーブル１４２には、シーケンス番号予測、時間、相手側応答時間の欄が設けられている。
【００８５】
シーケンス番号予測の欄には、相手装置に対して次に送信されるパケットのシーケンス番号の予測値が設定される。前回送信されたパケットのシーケンス番号にデータ長を加えた値がシーケンス番号の予測値となる。次に送信されたパケットのシーケンス番号がシーケンス番号予測値より小さければ、パケットの再送が行われたことが分かる。
【００８６】
時間は、自側でパケットを送信した時間（コネクションの監視を開始してからの経過時間）である。相手側応答時間は、パケットを送信した時刻から、そのパケットに対する通信相手からの応答を受け取った時刻までの経過時間である。
【００８７】
図１５は、受信監視テーブルのデータ構造例を示す図である。
受信監視テーブル１４３には、シーケンス番号予測、時間、および自側応答時間の欄が設けられている。
【００８８】
シーケンス番号予測の欄には、相手装置から次に受信するパケットのシーケンス番号の予測値が設定される。前回受信したパケットのシーケンス番号にデータ長を加えた値がシーケンス番号の予測値となる。次に受信したパケットのシーケンス番号がシーケンス番号予測値より小さければ、パケットの重複受信であることが分かる。
【００８９】
時間は、相手側からパケットを受信した時間（コネクションの監視を開始してからの経過時間）である。自側応答時間は、パケットを受信した時刻から、そのパケットに対して自側の装置が応答するまでの経過時間である。
【００９０】
次に、図１１に示す通信（パケットの内容は図１２に示す）が行われたときの送信監視テーブル１４２と受信監視テーブル１４３との状態遷移について説明する。
図１６は、送信監視テーブルと受信監視テーブルとの状態遷移を示す第１の図である。
【００９１】
状態ＳＴ１は、図１１に示すパケット４０の受信直後（時間０．５）の状態である。サーバ１００がパケット４０を受信すると、コネクション監視部１３０が受信側のシーケンス番号を予測し、受信監視テーブル１４３にレコードを追加する。
【００９２】
図１６の例では、シーケンス番号予測の欄に「2000」（パケット４０のシーケンス番号「1900」にデータ長「100」を加えた値）が設定され、時間の欄に「０．５」が設定されている。
【００９３】
状態ＳＴ２は、図１１に示すパケット４１の送信直後（時間１．０）の状態である。サーバ１００がパケット４１を送信すると、コネクション監視部１３０が送信側のシーケンス番号を予測し、送信監視テーブル１４２にレコードを追加する。同時に、コネクション監視部１３０は、受信監視テーブル１４３の自側応答時間の欄に値を設定する。
【００９４】
図１６の例では、送信監視テーブル１４２のシーケンス番号予測の欄に「1010」（パケット４１のシーケンス番号「1000」にデータ長「10」を加えた値）が設定され、時間の欄に「１．０」が設定されている。また、受信監視テーブル１４３の自側応答時間の欄に、「０．５」（送信監視テーブル１４２の時間「１．０」から受信監視テーブル１４３の時間「０．５」を減算した値）が設定されている。
【００９５】
状態ＳＴ３は、図１１に示すパケット４２の受信直後（時間２．５）の状態である。サーバ１００がパケット４２を受信すると、コネクション監視部１３０が受信側のシーケンス番号を予測し、受信監視テーブル１４３を更新する。同時にコネクション監視部１３０は、送信監視テーブル１４２の相手側応答時間の欄に値を設定する。
【００９６】
図１６の例では、受信監視テーブル１４３のシーケンス番号予測の欄に「2000」（パケット４２のシーケンス番号「2000」にデータ長「0」を加えた値）が設定され、時間の欄に「２．５」が設定されている。また、送信監視テーブル１４２の相手側応答時間の欄に「１．５」（受信監視テーブル１４３の時間「２．５」から送信監視テーブルの時間「１．０」を減算した値）が設定されている。
【００９７】
なお、パケット４２のシーケンス番号は、事前に予測されていたシーケンス番号と一致するため、異常が起こっていないと判断される。
図１７は、送信監視テーブルと受信監視テーブルとの状態遷移を示す第２の図である。
【００９８】
状態ＳＴ４は、図１１に示すパケット４３の送信直後（時間３．０）の状態である。サーバ１００がパケット４３を送信すると、コネクション監視部１３０が送信側のシーケンス番号を予測し、送信監視テーブル１４２を更新する。同時に、コネクション監視部１３０は、受信監視テーブル１４３の自側応答時間の欄に値を設定する。
【００９９】
図１７の例では、送信監視テーブル１４２の新たなレコードとして、シーケンス番号予測の欄に「1030」（パケット４３のシーケンス番号「1010」にデータ長「20」を加えた値）が設定され、時間の欄に「３．０」が設定されている。また、受信監視テーブル１４３の自側応答時間の欄に、「０．５」（送信監視テーブル１４２に新たに設定された時間「３．０」から受信監視テーブル１４３の時間「２．５」を減算した値）が設定されている。
【０１００】
なお、パケット４３のシーケンス番号は、事前に予測されていたシーケンス番号と一致するため、異常が起こっていないと判断される。
状態ＳＴ５は、図１１に示すパケット４５の送信直後（時間６．０）の状態である。サーバ１００がパケット４５を送信すると、コネクション監視部１３０が送信側のシーケンス番号を予測し、送信監視テーブル１４２を更新する。
【０１０１】
図１７の例では、送信監視テーブル１４２のシーケンス番号予測の欄に「1030」（パケット４５のシーケンス番号「1010」にデータ長「20」を加えた値）が設定され、時間の欄に「６．０」が設定されている。
【０１０２】
ここで、パケット４５の送信を検出したコネクション監視部１３０は、パケット４５のシーケンス番号「1010」が、送信監視テーブル１４２に既に設定されていたシーケンス番号予測「1030」よりも小さいことを検出する。これにより、コネクション監視部１３０はパケット４５が再送用のパケットであると判断する。すると、コネクション監視部１３０は、コネクション管理テーブル１４１の再送カウンタの値をカウントアップする。
【０１０３】
このようにしてコネクションテーブル１４０が更新される。そして、障害判定部１５０は、コネクションテーブル１４０内の情報に基づいて、各コネクションでの障害の発生の有無を判断する。そして、障害判定部１５０は、障害を検出すると、その障害の発生箇所を判定し、障害情報を更新する。
【０１０４】
ここで、参考のために、上記の特許文献１（特許公開番号「特開２００５−１６７３４７号」の公開特許公報）に開示された従来の障害箇所判定手法について説明する。この従来手法では、上記のように作成されたコネクションテーブル１４０を基に異常を検出すると、その検出した異常を示す事象に対して以下のような判定条件を適用することで、障害発生箇所を判定していた。
【０１０５】
判定条件１：自装置側（すなわちサーバ１００）におけるＡｃｋの応答時間が基準値より大きかった場合、異常事象として応答遅延を検出し、自装置に何らかの問題があると判定する。
【０１０６】
判定条件２：自装置の通信インタフェースに対するコネクションすべてに異常（再送パケット、重複受信パケット、データの欠落、または応答遅延）があるとき、異常事象としてコネクション異常を検出し、隣接している伝送路（すなわち、サーバ１００とルータ５００との間の伝送路）が故障していると判断する。
【０１０７】
判定条件３：一部のコネクションにおいて、不特定のＩＰアドレス、ポートで異常が発生した場合、異常事象としてコネクション異常を検出し、隣接していない伝送路中（すなわち、サーバ１００から見てルータ５００より外側の伝送路）にエラーが発生したとして判断する。
【０１０８】
判定条件４：コネクション確立時に、特定相手ＩＰアドレス、ポートで障害が発生している場合、異常事象としてコネクション異常を検出し、通信相手機器が故障していると判断する。
【０１０９】
以上の判定条件により、通信の障害が自装置側、隣接伝送路、非隣接伝送路、通信相手機器のどこで発生しているかを判定していた。しかし、本実施の形態のように、ルータやゲートウェイを介して通信可能なシステムでは、接続相手機器が少ない場合、すなわちコネクション監視部１３０で監視されているコネクションが少ない場合には、上記のような判定条件を適用すると、障害発生箇所を正確に特定できないことがあった。
【０１１０】
たとえば、監視対象のコネクションが１つしか存在しない状況下で、判定条件４に合致する異常事象が検出された場合には、サーバ１００と同一セグメント内の通信相手機器（たとえばサーバ２０１あるいは２０２）において障害が発生している場合と、ルータ５００の外部のネットワークにおいて（たとえばクライアント３０１〜３０４のいずれかにおいて）障害が発生している場合の両方が考えられる。すなわち、従来の障害箇所判定手法では、ハードウェア的な障害箇所の切り分けをレイヤ３および４のレベルでしか行っていなかったために、ルータやゲートウェイが存在した場合には、障害箇所がそれより内側であるか外側であるかを区別できなかった。
【０１１１】
そこで、本実施の形態では、ＭＡＣアドレスを用いて、同一セグメント内の通信相手機器がルータであるか否かを判別することで、監視対象のコネクション数に関係なく、障害発生箇所を正確に特定できるようにする。ルータのＭＡＣアドレスは、ＴＣＰ／ＩＰの通信手順において従来からすでにサーバ２０１自身が保持している情報（ＡＲＰテーブル）から取得することができるので、本実施の形態の判定手法により、通信のためのプログラムの構造や必要な情報記憶領域を大きく変更することなく、正確な障害箇所判定を行うことができる。
【０１１２】
図１８は、本実施の形態で適用される障害箇所判定処理の手順を示すフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。
［ステップＳ３１］障害判定部１５０は、コネクションテーブル１４０を参照してコネクション情報を解析し、発生した全コネクションのイベントを集計する。
【０１１３】
［ステップＳ３２］障害判定部１５０は、イベントの集計結果に基づき、障害が発生しているか否かを検出する。障害が発生していた場合は、処理がステップＳ３３に進められる。障害が発生していない場合は、処理が終了される。
【０１１４】
［ステップＳ３３］障害判定部１５０は、ルーティングテーブル１００ｆを参照し、ルータのＩＰアドレスを取得する。この処理は、たとえば、ｎｅｔｓｔａｔコマンド、あるいはｒｏｕｔｅコマンドを実行して、ルーティングテーブル１００ｆの内容を取得し、その中に記載されたゲートウェイのＩＰアドレスを抽出することで実行できる。
【０１１５】
［ステップＳ３４］障害判定部１５０は、ＡＲＰテーブル１００ｅを参照し、ステップＳ３３で取得したルータのＩＰアドレスに対応するＭＡＣアドレスを取得する。
［ステップＳ３５］障害判定部１５０は、ステップＳ３２で障害を検出したコネクションにおける通信相手機器のＩＰアドレスを、コネクションテーブル１４０から取得し、このＩＰアドレスに対応するＭＡＣアドレスをＡＲＰテーブル１００ｅから取得する。
【０１１６】
［ステップＳ３６］障害判定部１５０は、ステップＳ３５で取得した通信相手機器のＭＡＣアドレスが、ステップＳ３４で取得したいずれかのルータのＭＡＣアドレスと一致するか否かを判定する。一致するルータがあった場合は、処理がステップＳ３８に進められ、一致するルータがなかった場合は、処理がステップＳ３７に進められる。
【０１１７】
［ステップＳ３７］このステップでは、サーバ１００から見てルータの外側のネットワーク上の機器との通信において障害が発生したのではないことがわかる。このため、障害判定部１５０は、ルータより内側の同一セグメントに属するネットワークに接続された、ルータ以外の機器、またはそのネットワーク上の伝送路において、障害が発生したと判定する。図２の構成では、たとえば、サーバ１００，２０１，２０２，スイッチ４０１のいずれか、あるいはこれらに接続された伝送路を、障害発生箇所と判定する。その後、処理がステップＳ４２に進められる。
【０１１８】
［ステップＳ３８］障害判定部１５０は、ステップＳ３６でＭＡＣアドレスが一致したルータに対して、ｐｉｎｇコマンドを発行する。
［ステップＳ３９］障害判定部１５０は、ｐｉｎｇコマンドに対する応答動作が正常に終了したか否かを判定する。具体的には、ルータからの応答が所定時間内にあった場合に、正常終了と判定する。正常に終了した場合には、処理がステップＳ４０に進められる。正常に終了しなかった場合には、処理がステップＳ４１に進められる。
【０１１９】
［ステップＳ４０］このステップでは、サーバ１００から見てルータの外側のネットワーク上の機器との通信において障害が発生し、そのルータが正常に動作していることがわかる。このため、障害判定部１５０は、ステップＳ３６でＭＡＣアドレスが一致したサーバから見てルータより外側のセグメントに属するネットワークに接続された機器、またはそのセグメントの伝送路において、障害が発生したと判定する。図２の構成では、たとえば、クライアント３０１〜３０４、スイッチ４０２，４０３、ルータ５００のいずれか、あるいはこれらの機器間の伝送路を、障害発生箇所と判定する。その後、処理がステップＳ４２に進められる。
【０１２０】
［ステップＳ４１］このステップでは、サーバ１００から見てルータの外側のネットワーク上の機器との通信において障害が発生しており、且つ、そのルータとの接続が確認できない状態となる。このため、障害判定部１５０は、ステップＳ３６でＭＡＣアドレスが一致したルータとサーバ１００との間の通信において、障害が発生したと判定する。図２の構成では、たとえば、サーバ１００またはスイッチ４０１、またはサーバ１００とルータ５００との間の伝送路を、障害発生箇所と判定する。その後、処理がステップＳ４２に進められる。
【０１２１】
［ステップＳ４２］障害判定部１５０は、障害推定結果を障害情報に登録する。
以上の処理手順によれば、障害発生箇所が、同一セグメント内のルータ以外の機器であるか、サーバ１００とルータとの経路上の機器であるか、ルータより外側のネットワークであるかを、監視対象のコネクション数に関係なく、常に確実に判定することができる。また、この判定結果が登録された障害情報１１０をネットワーク管理者が参照することで、通信障害を未然に回避するための、あるいは早期に復旧させるための迅速、且つ的確な操作を、ネットワーク管理者の経験に頼ることなく実行できるようになる。また、障害情報１１０に基づいて、通信障害を自動的に回避させることも可能になる。
【０１２２】
なお、以上の図１８に示した判定手順に対して、上述した従来の判定条件１〜４を併用することで、障害発生箇所をより細かく特定することもできる。たとえば、ステップＳ３７あるいはＳ４１の状態では、判定条件１を適用することで、障害発生箇所がサーバ１００自身であるか否かを判別することができる。
【０１２３】
次に、上記実施の形態で用いた障害発生箇所の判定手法を、より大規模なネットワークシステムに適用した場合の例について説明する。
図１９は、本発明の別の実施の形態に係るネットワークシステムの構成例である。
【０１２４】
図１９では、各種機能および通信路が２重化されたネットワークの例を示している。この例では、インターネット６１０に、ルータ６２１，６２２が接続されている。ルータ６２１，６２２には、ファイアウォール６３１，６３２が接続されている。ファイアウォール６３１，６３２には、スイッチ６４１，６４２を介して、Ｗｅｂサーバ７０１，７０２が接続されている。Ｗｅｂサーバ７０１，７０２には、スイッチ（ＳＷ）６４３，６４４を介して、アプリケーション（ＡＰ）サーバ７１１，７１２が接続されている。ＡＰサーバ７１１，７１２には、スイッチ（ＳＷ）６４５，６４６を介して、データベース（ＤＢ）サーバ７２１，７２２が接続されている。
【０１２５】
また、スイッチ６４１，６４３，６４５には、管理サーバ７３０が接続されている。このネットワークシステムでは、Ｗｅｂサーバ７０１，７０２、ＡＰサーバ７１１，７１２、およびＤＢサーバ７２１，７２２のそれぞれに、上述した判定条件１〜４を利用した従来のネットワーク監視機能が実装されているものとする。そして、各ネットワーク監視機能が検出した障害情報は、管理サーバ７３０で収集され、管理サーバ７３０において、収集した障害情報を解析することで、障害箇所を特定できるようになっている。
【０１２６】
たとえば、スイッチ６４３で障害が発生した場合を考える。この場合、Ｗｅｂサーバ７０１において、スイッチ６４３を経由した通信路での異常を検出できる。また、ＡＰサーバ７１１も同様に、スイッチ６４３を経由した通信路での異常を検出できる。さらに、ＤＢサーバ７２１において、スイッチ６４５，６４６を経由した隣接しない通信路での異常を検出できる。各サーバで検出された異常を示す障害情報は、管理サーバ７３０に通知される。
【０１２７】
管理サーバ７３０は、各サーバから通知された障害情報に基づいて、障害箇所を特定する。具体的には、各サーバから収集した障害情報で示される障害発生要素のうち、重複する要素に障害があると判断することができる。この例では、スイッチ６４３で障害が発生していると判断される。このように、各サーバに従来のネットワーク監視機能を実装することで、的確な障害解析を迅速、且つ的確に行うことが可能となる。
【０１２８】
しかし、このような管理サーバ７３０を含むシステムにおいて、従来のネットワーク監視機能を実装した場合でも、Ｗｅｂサーバ７０１とインターネット６１０との間の通信に障害が発生した場合には、監視対象のコネクション数が少ないときには、障害箇所を細かく特定することはできなかった。たとえば、障害発生箇所が、ファイアウォール６３１，６３２であるのか、あるいはルータ６２１，６２２の外側のインターネット６１０上であるのかを判定できないことがある。
【０１２９】
そこで、本発明を適用したネットワーク監視機能をＷｅｂサーバ７０１に実装する。Ｗｅｂサーバ７０１は、上記図１８に示した手順に従い、スイッチ６４１または６４２を通じた通信時に異常を検出したとき、自身が保持しているＡＲＰテーブルを参照してルータ６２１および６２２のＭＡＣアドレスを取得し、異常を検出したコネクションにおける通信相手機器のＭＡＣアドレスと比較する。そして、それらのＭＡＣアドレスとの比較結果や、ルータ６２１または６２２との接続の有無に基づいて、障害発生箇所がＷｅｂサーバ７０１とルータ６２１または６２２との間のネットワークか、あるいはルータ６２１または６２２より外側のインターネット６１０であるかを判定する。この判定結果が管理サーバ７３０に送信されることで、管理サーバ７３０は、ネットワーク上の障害発生箇所をより正確に特定できるようになる。
【０１３０】
なお、上述したネットワーク監視部や管理サーバが有すべき機能の処理内容を記述したプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現できる。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１３１】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１３２】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１３３】
（付記１）  ネットワーク上の障害発生箇所を検出するためのネットワーク監視プログラムにおいて、
コンピュータを、
前記コンピュータが接続された内部ネットワークと外部ネットワークとの間で送受信データを中継するルータの物理アドレスを記憶するアドレス記憶手段、
他の機器との間の通信状況を監視する通信状況監視手段、
前記通信状況監視手段で検出された通信内容から通信の異常を検出する異常検出手段、
前記アドレス記憶手段を参照し、前記異常検出手段で異常が検出された通信相手機器の物理アドレスが、前記アドレス記憶手段に記憶された前記ルータの物理アドレスと一致しないとき、当該ルータ以外の前記内部ネットワークに接続された機器との間の通信において障害が発生したと判定する障害箇所判定手段、
として機能させることを特徴とするネットワーク監視プログラム。
【０１３４】
（付記２）  前記障害箇所判定手段は、異常が検出された通信相手機器の物理アドレスが前記アドレス記憶手段に記憶された前記ルータの物理アドレスと一致したとき、当該ルータとの接続を確認し、接続が確認された場合には、当該ルータに接続された前記外部ネットワークにおいて通信の障害が発生したと判定し、接続が確認されなかった場合には、前記内部ネットワークを通じた当該ルータとの間の通信において障害が発生したと判定することを特徴とする付記１記載のネットワーク監視プログラム。
【０１３５】
（付記３）  前記障害箇所判定手段は、前記ルータとの接続の確認を、当該ルータに対して応答を要求するコマンドを発行し、所定時間以内に当該コマンドに対する応答があったか否かによって判定することを特徴とする付記２記載のネットワーク監視プログラム。
【０１３６】
（付記４）  前記異常検出手段は、前記通信状況監視手段で検出された通信内容のうち、トランスポート層に対応する送受信パケットのヘッダの内容から、通信の異常を検出することを特徴とする付記１記載のネットワーク監視プログラム。
【０１３７】
（付記５）  前記異常検出手段は、前記通信状況監視手段で検出された通信内容のうち、再送パケットの有無、重複受信パケットの有無、送信データの欠落の有無、および、自装置側または相手装置側の応答遅延の有無の少なくとも１つから、通信の異常を検出することを特徴とする付記４記載のネットワーク監視プログラム。
【０１３８】
（付記６）  前記通信状況監視手段は、新たなコネクションの確立毎に、トランスポート層に対応する送受信パケットのヘッダから抽出した情報を、当該通信相手機器の前記内部ネットワーク上におけるネットワークアドレス、および当該通信相手機器の物理アドレスとともにコネクション管理テーブルとして記憶し、
前記異常検出手段は、前記コネクション管理テーブルから通信の異常を検出することを特徴とする付記４記載のネットワーク監視プログラム。
【０１３９】
（付記７）  前記アドレス記憶手段は、前記コンピュータと通信を行った通信相手機器の前記内部ネットワークにおけるネットワークアドレスと、当該通信相手機器の物理アドレスとを対応づけたアドレステーブルを記憶することを特徴とする付記１記載のネットワーク監視プログラム。
【０１４０】
（付記８）  前記コンピュータが前記内部ネットワークを通じて通信するときに、通信相手機器の前記内部ネットワークにおける前記ネットワークアドレスをセットしたアドレス要求パケットを前記内部ネットワーク上にブロードキャストし、その応答パケットから当該通信相手機器の物理アドレスを取得して、前記アドレステーブルに格納するアドレス取得手段をさらに有することを特徴とする付記７記載のネットワーク監視プログラム。
【０１４１】
（付記９）  前記障害箇所判定手段は、前記異常検出手段で異常が検出されると、前記コンピュータが前記内部ネットワークを通じて他の機器と通信するための経路情報から前記ルータの前記内部ネットワークにおけるネットワークアドレスを抽出し、当該ネットワークアドレスに対応する物理アドレスを前記アドレステーブルから抽出して、抽出した物理アドレスと、異常が検出された通信相手機器の物理アドレスとの比較結果から障害発生箇所を判定することを特徴とする付記７記載のネットワーク監視プログラム。
【０１４２】
（付記１０）  情報処理装置に接続されたネットワーク上の障害発生箇所を検出するためのネットワーク監視方法において、
アドレス記憶手段が、前記情報処理装置が接続された内部ネットワークと外部ネットワークとの間で送受信データを中継するルータの物理アドレスを記憶し、
通信状況監視手段が、他の機器との間の通信状況を監視し、
異常検出手段が、前記通信状況監視手段で検出された通信内容から通信の異常を検出し、
障害箇所判定手段が、前記アドレス記憶手段を参照し、前記異常検出手段で異常が検出された通信相手機器の物理アドレスが、前記アドレス記憶手段に記憶された前記ルータの物理アドレスと一致しないとき、当該ルータ以外の前記内部ネットワークに接続された機器との間の通信において障害が発生したと判定する、
ことを特徴とするネットワーク監視方法。
【０１４３】
（付記１１）  ネットワーク上の障害発生箇所を検出するためのネットワーク監視装置において、
前記ネットワーク監視装置が接続された内部ネットワークと外部ネットワークとの間で送受信データを中継するルータの物理アドレスを記憶するアドレス記憶手段と、
他の機器との間の通信状況を監視する通信状況監視手段と、
前記通信状況監視手段で検出された通信内容から通信の異常を検出する異常検出手段と、
前記アドレス記憶手段を参照し、前記異常検出手段で異常が検出された通信相手機器の物理アドレスが、前記アドレス記憶手段に記憶された前記ルータの物理アドレスと一致しないとき、当該ルータ以外の前記内部ネットワークに接続された機器との間の通信において障害が発生したと判定する障害箇所判定手段と、
を有することを特徴とするネットワーク監視装置。
【図面の簡単な説明】
【０１４４】
【図１】本発明に係るネットワーク監視機能の概要を説明するための図である。
【図２】本発明の実施の形態に係るネットワークシステムの構成例を示す図である。
【図３】ネットワーク監視機能が搭載されたサーバのハードウェア構成例を示す図である。
【図４】ネットワーク監視機能が実装されたサーバのソフトウェア構成例を示す図である。
【図５】ＡＲＰテーブルに記憶された情報の例を示す図である。
【図６】ルーティングテーブルに記憶された情報の例を示す図である。
【図７】ネットワーク監視部の機能を示すブロック図である。
【図８】トラブル予兆推定例を示す図である。
【図９】ネットワーク監視処理手順を示すフローチャートである。
【図１０】ヘッダ情報解析処理の手順を示すフローチャートである。
【図１１】コネクション上での通信例を示す図である。
【図１２】Ｗｅｂサーバ側のパケットの内容を示す図である。
【図１３】コネクション管理テーブルのデータ構造例を示す図である。
【図１４】送信監視テーブルのデータ構造例を示す図である。
【図１５】受信監視テーブルのデータ構造例を示す図である。
【図１６】送信監視テーブルと受信監視テーブルとの状態遷移を示す第１の図である。
【図１７】送信監視テーブルと受信監視テーブルとの状態遷移を示す第２の図である。
【図１８】本実施の形態で適用される障害箇所判定処理の手順を示すフローチャートである。
【図１９】本発明の別の実施の形態に係るネットワークシステムの構成例である。
【符号の説明】
【０１４５】
１  自装置
２，３  相手装置
１１  アプリケーション
１２  通信手段
１３  通信インタフェース
１４  アドレス記憶手段
１５  物理アドレス取得手段
１６  通信状況監視手段
１７  異常検出手段
１８  障害箇所判定手段
１９  障害情報出力手段
１９ａ  障害情報
２１，２２  ネットワーク
３０  ルータ
【図１】
0004570582.tif 000002
【図２】
0004570582.tif 000003
【図３】
0004570582.tif 000004
【図４】
0004570582.tif 000005
【図５】
0004570582.tif 000006
【図６】
0004570582.tif 000007
【図７】
0004570582.tif 000008
【図８】
0004570582.tif 000009
【図９】
0004570582.tif 000010
【図１０】
0004570582.tif 000011
【図１１】
0004570582.tif 000012
【図１２】
0004570582.tif 000013
【図１３】
0004570582.tif 000014
【図１４】
0004570582.tif 000015
【図１５】
0004570582.tif 000016
【図１６】
0004570582.tif 000017
【図１７】
0004570582.tif 000018
【図１８】
0004570582.tif 000019
【図１９】
0004570582.tif 000020