(57)【要約】【課題】クライアントとサーバとを含む通信システムについて、サーバが輻輳状態にあるか否かが判断されるだけではなく、クライアントが輻輳状態にあるか否かも判断されるようにすること。【解決手段】監視装置４０は、監視対象のコンピュータ１０、２０間を流れるパケットを受信するたびに、受信したパケットと同じコネクションにおいてその直前に受信したパケットとの受信時間間隔に基づいて、そのコネクションにおけるパケットの送信元が被擬ホストであるか否かを特定する。また、監視装置４０は、監視対象のコンピュータ１０、２０のそれぞれについて、そのコンピュータの有するコネクションの本数に対する被擬ホストとして特定したコネクションの本数の占める被擬割合を求める。また、監視装置４０は、その被擬割合が高いホストを、輻輳状態にあるホストとして割り出して、警告を出力する。【選択図】図１
2010109551.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
２個以上のホストの間を流れるパケットを受信する受信手段、
前記受信手段がパケットを受信するたびに、そのパケットの受信時点からそのパケットと同一のコネクションにおいてそのパケットの直前に受信したパケットの受信時点までの受信時間間隔を、取得する取得手段、
前記取得手段が取得した受信時間間隔が所定の第１の閾値を超えている場合に、前記受信手段が受信したパケットと同一のコネクションの送信元ホストを被擬ホストとして特定する特定手段、
前記２個以上のホストのそれぞれについて、そのホストの有するコネクションの本数に対して、そのホストが前記特定手段により被擬ホストとして特定されたコネクションの本数が占める割合を算出する算出手段、及び、
前記算出手段が算出した割合が所定の第２の閾値を超えているホストがあった場合に、警告を出力する警告手段
として機能させるための監視プログラム。
【請求項２】
前記取得手段は、前記受信手段が受信したパケットに含まれるセグメントが、そのパケットと同一のコネクションにおいてそのパケットの直前に受信したパケットに含まれるセグメントと同一のメッセージを構成する場合に、受信時間間隔を取得する
ことを特徴とする請求項１記載の監視プログラム。
【請求項３】
前記コンピュータを、更に、
前記受信手段がパケットを受信すると、その受信したパケットに係るコネクションにおけるそのパケットの送信方向がサーバに向かう上りであるかクライアントに向かう下りであるかを、判定する判定手段
として機能させ
前記算出手段は、前記２個以上のホストのそれぞれについて前記割合を算出する場合に、そのホストが前記判定手段によりクライアントと判定されたコネクションの本数とそのホストが前記判定手段によりサーバと判定されたコネクションと本数とを合算することにより、そのホストの有するコネクションの総本数を算出する
ことを特徴とする請求項１又は２記載の監視プログラム。
【請求項４】
コンピュータが、
２個以上のホストの間を流れるパケットを受信する受信手順、
前記受信手順でパケットを受信するたびに、そのパケットの受信時点からそのパケットと同一のコネクションにおいてそのパケットの直前に受信したパケットの受信時点までの受信時間間隔を、取得する取得手順、
前記取得手順で取得した受信時間間隔が所定の第１の閾値を超えている場合に、前記受信手順で受信したパケットと同一のコネクションの送信元ホストを被擬ホストとして特定する特定手順、
前記２個以上のホストのそれぞれについて、そのホストの有するコネクションの本数に対して、そのホストが前記特定手順で被擬ホストとして特定されたコネクションの本数が占める割合を算出する算出手順、及び、
前記算出手順で算出した割合が所定の第２の閾値を超えているホストがあった場合に、警告を出力する警告手順
を実行する
ことを特徴とする監視方法。
【請求項５】
２個以上のホストの間を流れるパケットを受信する受信部、
前記受信部がパケットを受信するたびに、そのパケットの受信時点からそのパケットと同一のコネクションにおいてそのパケットの直前に受信したパケットの受信時点までの受信時間間隔を、取得する取得部、
前記取得部が取得した受信時間間隔が所定の第１の閾値を超えている場合に、前記受信部が受信したパケットと同一のコネクションの送信元ホストを被擬ホストとして特定する特定部、
前記２個以上のホストのそれぞれについて、そのホストの有するコネクションの本数に対して、そのホストが前記特定部により被擬ホストとして特定されたコネクションの本数が占める割合を算出する算出部、及び、
前記算出部が算出した割合が所定の第２の閾値を超えているホストがあった場合に、警告を出力する警告部
を備えることを特徴とする監視装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書において開示する方法及び装置は、クライアントとサーバとの間の通信状態を監視する技術に、関する。
【背景技術】
【０００２】
周知のように、クライアントがサーバにリクエストメッセージを送信し、サーバがクライアントにレスポンスメッセージを送信する通信システムがある。この種の通信システムでは、メッセージのデータ量が、パケットに収納できる最大のデータ量を超えているときには、送信側は、メッセージを複数の部分に分割する。メッセージの全部又は一部は、それぞれセグメントとしてパケットに収納されて順次送信される。また、受信側は、受信した複数のパケットからメッセージの全部又は一部を取り出し、分割されたメッセージについては、複数の部分からメッセージの再組み立てを行う。
【０００３】
また、この種の通信システムのサーバが輻輳状態（混雑状態）にあるか否かを判断する監視システムがある。監視システムは、クライアントとサーバとにともに接続されているスイッチのミラーポートから、クライアントとサーバとの間に流れるパケットの複製を取得し、取得したパケットからメッセージの再組み立てを行う。また、監視システムは、サーバがクライアントからリクエストメッセージを受信した時点からサーバがレスポンスメッセージをクライアントに送信した時点までのレスポンス時間の長さにより、サーバが輻輳状態にあるか否かを判断するようになっている。
【０００４】
ところで、メッセージが複数の部分に分割されて送信される場合において、図１４に示すように、メッセージの先頭部分ＰＫ１がサーバに到達した時点が、サーバのレスポンス時間の起算時点とされていると、当該メッセージの各部分が収納されたパケットのうちの何れかの送信が、クライアントによって遅延されてしまったときに、その遅延時間が、サーバのレスポンス時間に含まれてしまう。このため、この起算方法に依ると、クライアントが輻輳状態にあるにも拘わらず、サーバが輻輳状態にあるとしか判断されず、クライアントが輻輳状態にあることが判断されないという問題があった。
【０００５】
また、メッセージが複数の部分に分割されて送信される場合において、図１５に示すように、メッセージの末尾部分ＰＫＮがサーバに到達した時点が、サーバのレスポンス時間の起算時点とされていると、当該メッセージの各部分が収納されたパケットのうちの何れかの送信が、クライアントによって遅延されても、その遅延時間が、サーバのレスポンス時間に含まれることはない。このため、この起算方法に依れば、クライアントが輻輳状態にあっても、サーバが輻輳状態にあると判断されることはない。しかしながら、この起算方法では、サーバが輻輳状態にあるか否かは判断されても、クライアントが輻輳状態にあるか否かは全く判断されないという問題があった。
【０００６】
【特許文献１】特開２００７−０２６３０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本明細書で開示する方法及び装置は、前述したような従来技術の有する問題点に鑑みてなされたものであり、その課題は、クライアントとサーバとを含む通信システムについて、サーバが輻輳状態にあるか否かが判断されるだけではなく、クライアントが輻輳状態にあるか否かも判断されるようにすることにある。
【課題を解決するための手段】
【０００８】
前述の課題を解決するために案出された監視方法では、コンピュータに、２個以上のホストの間を流れるパケットを受信させる。そのコンピュータには、パケットを受信するたびに、そのパケットの受信時点からそのパケットと同一のコネクションにおいてそのパケットの直前に受信したパケットの受信時点までの受信時間間隔を、取得させる。また、そのコンピュータには、受信時間間隔が所定の第１の閾値を超えている場合に、受信したパケットと同一のコネクションの送信元ホストを被擬ホストとして特定させる。また、そのコンピュータには、２個以上のホストのそれぞれについて、そのホストの有するコネクションの本数に対して、そのホストが被擬ホストとして特定されたコネクションの本数が占める割合を算出させる。さらに、そのコンピュータには、算出した割合が所定の第２の閾値を超えているホストがあった場合に、警告を出力させる。
【０００９】
このように、パケットを受信するたびに、同じコネクションにおいて直前に受信したパケットとの受信時間間隔に基づいて、そのコネクションにおけるパケットの送信元が被擬ホストであるか否かが特定されるとともに、２個以上のホストのそれぞれについて、そのホストの有するコネクションの本数に対する被擬ホストとして特定されたコネクションの本数の割合が求められるようになっていると、その割合が高いホストを、輻輳状態にあるホストとして割り出して警告を出力することができるようになる。これにより、或るコネクションについてクライアントとなるホストとサーバとなるホストのどちらが、輻輳状態にあるかが判断できるようになる。
【発明の効果】
【００１０】
従って、先に開示した監視方法によれば、クライアントとサーバとを含む通信システムについて、サーバが輻輳状態にあるか否かが判断されるだけではなく、クライアントが輻輳状態にあるか否かも判断されるようになる。
【発明を実施するための最良の形態】
【００１１】
以下、添付図面を参照しながら、先に開示した監視方法の実施形態であるコンピュータネットワークシステムについて、説明する。
【００１２】
《構成》
図１は、本実施形態のコンピュータネットワークシステムの構成を示す図である。
【００１３】
本実施形態のコンピュータネットワークシステムは、第１のコンピュータ１０、第２のコンピュータ２０、ＬＡＮ［Local Area Network］スイッチ３０、及び、監視装置４０を、含んでいる。
【００１４】
第１及び第２のコンピュータ１０、２０は、何れも、相手側とメッセージの遣り取りを行う機能を有する一般的なコンピュータである。ここで、メッセージとは、通信モデルの１つであるＴＣＰ／ＩＰ［Transmission Control Protocol/Internet Protocol］モデルにおけるインターネットレイヤでの送信単位である。インターネットレイヤに所属するプロトコルとしては、ＩＩＯＰ［Internet Inter-ORB Protocol］（オブジェクトマネージメントグループの商標）などがある。
【００１５】
第１及び第２のコンピュータ１０、２０は、メッセージを相手側に送信する場合において、メッセージのデータ量が、ＴＣＰ／ＩＰモデルにおけるインターネットレイヤでの１回の送信容量を超えるときには、メッセージを幾つかの部分に分割する。そして、メッセージの全部又は一部は、それぞれセグメントとしてパケットに収納されて順次出所から宛先へと送信される。また、第１及び第２のコンピュータ１０、２０は、パケットを受信すると、受信した複数のパケットからメッセージの全部又は一部を取り出し、分割されたメ
ッセージについては、複数の部分からメッセージの再組み立てを行う。ここで、パケットとは、通信モデルの１つであるＴＣＰ／ＩＰ［Transmission Control Protocol/Internet
Protocol］モデルの中のインターネットレイヤでの送信単位である。
【００１６】
なお、本実施形態では、第１及び第２のコンピュータ１０、２０は、１個のＩＰアドレスが付与される論理ホストを、１個ずつ備えている。
【００１７】
ＬＡＮスイッチ３０は、パケット伝送路のスイッチングを行う中継機器である。図１に示すように、ＬＡＮスイッチ３０には、第１及び第２のコンピュータ１０、２０がそれぞれ接続されている。
【００１８】
監視装置４０は、複数のコンピュータが互いに遣り取りするパケットをＬＡＮスイッチ３０を介して取得し、取得したパケットに基づいてその通信状態を監視するための装置である。本実施形態では、第１及び第２のコンピュータ１０、２０が、監視装置４０の監視対象となっている。なお、図１では、監視装置４０の監視対象が備えられたコンピュータは、２台となっているが、３台以上であってもよい。
【００１９】
図２は、ＬＡＮスイッチ３０の構成を示す図である。
【００２０】
ＬＡＮスイッチ３０は、通信ユニット３０ａ、ＲＯＭ［Read Only Memory］ユニット３０ｂ、ＣＰＵ［Central Processing Unit］３０ｃ、及び、ＲＡＭ［Random Access Memory］ユニット３０ｄを、含んでいる。
【００２１】
通信ユニット３０ａは、コンピュータ又は中継機器とパケットの遣り取りを行うためのユニットである。通信ユニット３０ａは、複数の通信ポート３１を備え、１つの通信ポート３１からパケットが進入してくると、そのパケットの送り出し先として適切な通信ポート３１を選択し、選択した通信ポート３１からそのパケットを送出する。本実施形態では、これら通信ポート３１には、それぞれ、第１及び第２のコンピュータ１０、２０が接続されている。なお、図２では、２個の通信ポート３１しか示していないが、通信ユニット３０ａは、３個以上の通信ポート３１を備えていてもよい。また、通信ユニット３０ａは、ポートミラーリング機能３２を実現するための回路を内蔵している。ポートミラーリング機能３２は、特定の通信ポート３１を通過するパケットを複製し、複製したパケットをミラーポート３３から送出するための機能である。本実施形態では、通信ユニット３０ａは、１個のミラーポート３３を備え、ポートミラーリング機能３２は、２個の通信ポート３１から進入してくる全てのパケットを複製し、複製したパケットをミラーポート３３から出力するようになっている。なお、複製元のパケットは、前述したように、適切な通信ポート３１から送出される。本実施形態では、ミラーポート３３には、監視装置４０が接続されている。
【００２２】
なお、３台以上のコンピュータがそれぞれ通信ポート３１に接続され、ポートミラーリング機能３２が、各通信ポート３１に接続される３台以上のコンピュータからのパケットを複製してミラーポート３３から送出するようになっていれば、これら３台以上のコンピュータが、監視装置４０の監視対象となり得る。
【００２３】
ＲＯＭユニット３０ｂは、通信ユニット３０ａを制御するためのプログラムや各種の設定データが記録されているユニットである。ＣＰＵ３０ｃは、ＲＯＭユニット３０ｂ内のプログラムに従って処理を行うユニットである。ＲＡＭユニット３０ｄは、ＣＰＵ３０ｃがプログラムやデータをキャッシュしたり作業領域を展開したりするためのユニットである。
【００２４】
図３は、監視装置４０の構成を示す図である。
【００２５】
監視装置４０は、監視対象のコンピュータ１０、２０間の通信状態を監視するための機能が附加されたコンピュータである。監視装置４０は、出力デバイス４０ａと、操作デバイス４０ｂと、これらデバイス４０ａ、４０ｂに接続された本体とからなる。ここで、出力デバイス４０ａは、スピーカ付きディスプレイ等のデバイスである。操作デバイス４０ｂは、キーボードやマウス等のデバイスである。本体は、ビデオ制御ユニット４０ｃ、入力制御ユニット４０ｄ、通信ユニット４０ｅ、ストレージユニット４０ｆ、ＣＰＵ［Central Processing Unit］４０ｇ、及び、メインメモリユニット４０ｈを、内蔵している。なお、本実施形態では、通信ユニット４０ｅは、ＬＡＮスイッチ３０のミラーポート３３に接続されている。
【００２６】
また、監視装置４０には、オペレーティングシステム４１と監視アプリケーション４２とが、少なくとも導入されている。図３には、オペレーティングシステム４１と監視アプリケーション４２とがメインメモリユニット４０ｈに展開された状態が、示されている。これらオペレーティングシステム４１と監視アプリケーション４２は、ストレージユニット４０ｆに格納され、ＣＰＵ４０ｇによって読み出されて実行される。
【００２７】
オペレーティングシステム４１は、ソフトウエアとハードウエアの仲介、メモリ空間の管理、ファイル管理、プロセスやタスクの管理などを行うためのソフトウエアである。また、オペレーティングシステム４１は、通信ユニット４０ｅの動作を制御するためのドライバ（図４の４１ａ）を含んでいる。なお、オペレーティングシステム４１には、図示せぬＴＣＰ／ＩＰスイートが含まれていても良い。ＴＣＰ／ＩＰスイートは、通信ユニット４０ｅを介して接続されている他のコンピュータのＴＣＰ／ＩＰスイートと、ＴＣＰ／ＩＰに従ってパケットの遣り取りを行うためのプログラムである。但し、本実施形態では、オペレーティングシステム４１に含まれるＴＣＰ／ＩＰスイートは、使用されない。
【００２８】
図４は、監視アプリケーション４２の構成を示す図である。
【００２９】
監視アプリケーション４２は、監視対象のコンピュータ１０、２０間の通信状態を監視するための機能をコンピュータに附加するためのソフトウエアである。監視アプリケーション４２は、具体的には、パケット監視機能４２ａ、ホスト監視機能４２ｂ、コネクション情報管理機能４２ｃ、及び、コネクション情報テーブル４２ｄを、含んでいる。
【００３０】
パケット監視機能４２ａは、監視対象のコンピュータ１０、２０の間を流れるパケットを監視する機能である。このパケット監視機能４２ａは、受信機能４２１、判定機能４２２、取得機能４２３、及び、特定機能４２４を、含んでいる。
【００３１】
受信機能４２１は、監視対象のコンピュータ１０、２０間を流れるパケットの複製をＬＡＮスイッチ３０のポートミラーリング機能３２からオペレーティングシステム４１のドライバ４１ａを介して受信する機能である。
【００３２】
判定機能４２２は、受信機能４２１が受信したパケットに係るＴＣＰコネクションにおいて、そのパケットの送信方向がサーバに向かう上りであるかクライアントに向かう下りであるかを判定する機能である。なお、第１のコンピュータ１０による要求によって第１及び第２のコンピュータ１０、２０間に確立されたＴＣＰコネクションにおいては、第１のコンピュータ１０がクライアントとなり、第２のコンピュータ２０がサーバとなる。逆に、第２のコンピュータ２０による要求によって第１及び第２のコンピュータ１０、２０間に確立されたＴＣＰコネクションにおいては、第２のコンピュータ２０がクライアントとなり、第１のコンピュータ１０がサーバとなる。
【００３３】
取得機能４２３は、受信機能４２１が受信したパケットの受信時点から、そのパケットと同一のＴＣＰコネクションにおいてそのパケットの直前に受信したパケットの受信時点までの受信時間間隔を、取得する機能である。
【００３４】
特定機能４２４は、取得機能４２３が取得した受信時間間隔が所定の第１の閾値を超えている場合に、受信機能４２１が受信したパケットと同一のコネクションの送信元を、輻輳状態にあると推定される被擬ホストとして特定する機能である。
【００３５】
ホスト監視機能４２ｂは、監視対象のコンピュータ１０、２０の何れか一方又は両方が輻輳状態になったか否かを監視する機能である。このホスト監視機能４２ｂは、例えば、１分おきに、実行される。このホスト監視機能４２ｂは、算出機能４２６、及び、警告機能４２７を、含んでいる。
【００３６】
算出機能４２６は、監視対象のコンピュータ１０、２０のそれぞれについて、そのコンピュータが輻輳状態にあるか否かの判断材料となる数値を算出する機能である。
【００３７】
警告機能４２７は、算出機能４２６が算出した数値が所定の第２の閾値を超えているホストがあった場合に、警告を出力する機能である。
【００３８】
コネクション情報管理機能４２ｃは、監視対象のコンピュータ１０、２０間にコネクションが確立されるとそのコネクションに係るパケットからコネクション情報を取得してコネクション情報テーブル４２ｄに登録する機能である。また、コネクション情報管理機能４２ｃは、監視対象のコンピュータ１０、２０間のコネクションが切断されるとコネクション情報の登録を抹消する機能でもある。
【００３９】
ここで、パケットは、図５に示すように、ＩＰヘッダと、ＴＣＰヘッダと、セグメントとからなる。また、ＩＰヘッダは、図６のヘッダフォーマット図に示すように、「出所ＩＰアドレス」及び「宛先ＩＰアドレス」のフィールドを、含んでいる。なお、図６では、これら以外のフィールドには、斜線掛けが施されされているが、この斜線掛けが施されたフィールドについては、本実施形態では使用しないため、説明を省略する。「出所ＩＰアドレス」フィールドには、パケットの出所となるＴＣＰ／ＩＰホストのＩＰアドレスが格納され、「宛先ＩＰアドレス」フィールドには、パケットの宛先となるＴＣＰ／ＩＰホストのＩＰアドレスが格納される。また、ＴＣＰヘッダは、図７のヘッダフォーマット図に示すように、「出所ポート番号」、「宛先ポート番号」及び「制御ビット」のフィールドを、含んでいる。なお、図７では、これら以外のフィールドには、斜線掛けが施されているが、この斜線掛けが施されたフィールドについては、本実施形態では使用しないため、説明を省略する。「出所ポート番号」フィールドには、パケットにより全部又は一部が運搬されるメッセージを作成した通信アプリケーションを特定するポート番号が格納される。「宛先ポート番号」フィールドには、パケットにより全部又は一部が運搬されるメッセージを利用する通信アプリケーションを特定するポート番号が格納される。「制御ビット」フィールドは、パケットの種類や特別な制御情報を示す６個の制御ビットが格納される。なお、６個の制御ビットは、それぞれ、ＵＲＧ［URGent］、ＡＣＫ［ACKnowledge］、ＰＳＨ［PuSH］、ＲＳＴ［ReSeT］、ＳＹＮ［SYNchronize］、及び、ＦＩＮ［FINish］のフラグのオンオフを示す。但し、以下の説明では、ＡＣＫ、ＳＹＮ、ＦＩＮのみ使用している。
【００４０】
図８は、ＴＣＰコネクションのシーケンスの一例を示す図である。
【００４１】
ＴＣＰコネクションを通じてメッセージの送信を行おうとする送信側コンピュータ（ク
ライアント）は、ＴＣＰに従って、ＴＣＰヘッダ内の制御ビットのＳＹＮフラグが立ったパケット（以下、ＳＹＮパケットと表記）Ｐ１を生成し、生成したＳＹＮパケットＰ１をメッセージ送信先となる受信側コンピュータ（サーバ）へ送信する。
【００４２】
すると、受信側コンピュータは、ＴＣＰに従って、ＴＣＰヘッダ内の制御ビットのＳＹＮフラグとＡＣＫフラグとがともに立ったパケット（以下、ＳＹＮ＋ＡＣＫパケットと表記）Ｐ２を生成し、生成したＳＹＮ＋ＡＣＫパケットＰ２を送信側コンピュータへ送信する。
【００４３】
これを受けて、送信側コンピュータは、ＴＣＰに従って、ＡＣＫパケットＰ３を生成し、生成したＡＣＫパケットＰ３を受信側コンピュータに送信する。
【００４４】
以上に示したＳＹＮパケットＰ１とＳＹＮ＋ＡＣＫパケットＰ２とＡＣＫパケットＰ３との遣り取り（スリーウエイハンドシェイク）により、送信側コンピュータと受信側コンピュータとのＴＣＰコネクションが確立する。
【００４５】
また、ＴＣＰコネクションを切断しようとする一方のコンピュータ、例えば、送信側コンピュータは、ＴＣＰに従って、ＴＣＰヘッダ内の制御ビットのＦＩＮフラグが立ったパケット（以下、ＦＩＮパケットと表記）Ｐ４を生成し、生成したＦＩＮパケットＰ４をメッセージ送信先となる受信側コンピュータ（サーバ）へ送信する。
【００４６】
これを受けて、受信側コンピュータは、ＴＣＰに従って、ＡＣＫパケットＰ５を生成し、生成したＡＣＫパケットＰ５を送信側コンピュータに送信する。
【００４７】
また、ＴＣＰコネクションにおいて一方のコンピュータが切断処理を終えると、他方のコンピュータ、例えば、受信側のコンピュータは、ＴＣＰに従って、ＦＩＮパケットＰ６を生成し、生成したＦＩＮパケットＰ６をメッセージ送信先となる送信側コンピュータへ送信する。
【００４８】
これを受けて、送信側コンピュータは、ＴＣＰに従って、ＡＣＫパケットＰ７を生成し、生成したＡＣＫパケットＰ７を受信側コンピュータに送信する。
【００４９】
以上に示したＦＩＮパケットＰ４、Ｐ６とＡＣＫパケットＰ５、Ｐ７との遣り取りにより、送信側コンピュータと受信側コンピュータとのＴＣＰコネクションが切断される。
【００５０】
図４に戻り、コネクション情報管理機能４２ｃは、オペレーティングシステム４１のドライバ４１ａを介して受信されるパケットが、ＴＣＰコネクションの確立又は切断に係るパケットであるか否かを、判別する。すなわち、コネクション情報管理機能４２ｃは、受信したパケットが、ＳＹＮパケット、ＳＹＮ＋ＡＣＫパケット、ＦＩＮパケット、又は、これらに応答するためのＡＣＫパケットであるか否かを、判別する。そして、コネクション情報管理機能４２ｃは、受信したパケットが、ＳＹＮパケット又はＳＹＮ＋ＡＣＫパケットであれば、それらに含まれる情報を保存して、ＳＹＮ＋ＡＣＫパケットに対する応答としてのＡＣＫパケットを受信するまで待機する。また、コネクション情報管理機能４２ｃは、受信したパケットが、ＳＹＮ＋ＡＣＫパケットに対する応答としてのＡＣＫパケットであれば、スリーウエイハンドシェークが完結してＴＣＰコネクションが確立したとして、そのＴＣＰコネクションに係るコネクション情報をコネクション情報テーブル４２ｄに登録する。ここで、コネクション情報は、出所ＩＰアドレス、宛先ＩＰアドレス、出所ポート番号、及び、宛先ポート番号からなる情報となっている。ＴＣＰコネクションは、コネクション情報を構成する４個の情報の組み合わせにより、特定される。
【００５１】
図９は、コネクション情報テーブル４２ｄを模式的に示す図である。
【００５２】
コネクション情報テーブル４２ｄの各レコードは、「出所ＩＰアドレス」、「宛先ＩＰアドレス」、「出所ポート番号」、「宛先ポート番号」、「上りパケット受信時刻」、「下りパケット受信時刻」、「上り」及び「下り」のフィールドを、有している。「出所ＩＰアドレス」及び「宛先ＩＰアドレス」の各フィールドは、パケットのＩＰヘッダ（図６参照）に格納されている出所ＩＰアドレス及び宛先ＩＰアドレスがそれぞれ記録されるフィールドである。「出所ポート番号」及び「宛先ポート番号」の各フィールドは、パケットのＴＣＰヘッダ（図７参照）に格納されている出所ポート番号及び宛先ポート番号がそれぞれ記録されるフィールドである。なお、「出所ＩＰアドレス」及び「出所ポート番号」に格納されている出所ＩＰアドレス及び出所ポート番号により特定されるコンピュータが、そのコネクションにおけるクライアントとなる。逆に、「宛先ＩＰアドレス」及び「宛先ポート番号」に格納されている宛先ＩＰアドレス及び宛先ポート番号により特定されるコンピュータが、そのコネクションにおけるサーバとなる。「上りパケット受信時刻」フィールドは、そのコネクションにおけるサーバがパケットを受信した時刻が記録されるフィールドである。「下りパケット受信時刻」フィールドは、そのコネクションにおけるクライアントがパケットを受信した時刻が記録されるフィールドである。「上り」フィールドは、そのコネクションにおけるクライアントが輻輳状態（混雑状態）にあるか否かを示す上り輻輳フラグが記録されるフィールドである。本実施形態では、「１」の状態の上り輻輳フラグが、クライアントが輻輳状態にあることを示し、「０」の状態の上り輻輳フラグが、クライアントが輻輳状態にないことを示している。「下り」フィールドは、そのコネクションにおけるサーバが輻輳状態（混雑状態）にあるか否かを示す下り輻輳フラグが記録されるフィールドである。本実施形態では、「１」の状態の下り輻輳フラグが、サーバが輻輳状態にあることを示し、「０」の状態の下り輻輳フラグが、サーバが輻輳状態にないことを示している。なお、図４に示すコネクション情報管理機能４２ｃは、コネクション情報をコネクション情報テーブル４２ｄに登録する際、「上り」及び「下り」のフィールドの値を、初期値として、「０」にする。
【００５３】
また、コネクション情報管理機能４２ｃは、オペレーティングシステム４１のドライバ４１ａを介して受信されるパケットが、ＦＩＮパケット、又は、ＦＩＮパケットに応答するためのＡＣＫパケットであった場合、それらに含まれる情報を保存して、そのＴＣＰコネクションの切断を完了させるＡＣＫパケットを受信するまで待機する。そして、コネクション情報管理機能４２ｃは、ＴＣＰコネクションの切断を完了させるＡＣＫパケットを受信すると、そのＴＣＰコネクションが切断されたとして、そのＴＣＰコネクションに係るコネクション情報を含むレコードをコネクション情報テーブル４２ｄから削除する。
【００５４】
このように、コネクション情報管理機能４２ｃは、監視対象のコンピュータ１０、２０間にＴＣＰコネクションが確立されるたびに、そのＴＣＰコネクションに係るコネクション情報をコネクション情報テーブル４２ｄに登録する。また、コネクション情報管理機能４２ｃは、監視対象のコンピュータ１０、２０間のＴＣＰコネクションが切断されるたびに、そのＴＣＰコネクションに係るコネクション情報をコネクション情報テーブル４２ｄから削除する。従って、コネクション情報テーブル４２ｄには、監視対象のコンピュータ１０、２０間に確立されているコネクションのコネクション情報だけが、記録されていることとなる。
【００５５】
《処理》
〈パケット監視〉
図１０は、パケット監視機能４２ａによるメインルーチンの流れを示す図である。
【００５６】
メインルーチンの開始後、受信機能４２１が、オペレーティングシステム４１のドライ
バ４１ａを介してパケットを受信するまで待機する（ステップＳ１００１；いいえ）。
【００５７】
そして、受信機能４２１が、オペレーティングシステム４１のドライバ４１ａを介してパケットを受信すると（ステップＳ１００１；はい）、判定機能４２２が、受信したパケットからコネクション情報を取得する（ステップＳ１００２）。すなわち、判定機能４２２は、受信したパケットのＩＰヘッダ（図６参照）から出所ＩＰアドレス及び宛先ＩＰアドレスを取得するとともに、ＴＣＰヘッダ（図７参照）から出所ポート番号及び宛先ポート番号を取得する。
【００５８】
次に、判定機能４２２は、受信したパケットから取得したコネクション情報を検索条件として、図９に示すコネクション情報テーブル４２ｄを検索する（ステップＳ１００３）。
【００５９】
そして、検索条件に合致するレコードがコネクション情報テーブル４２ｄから検出された場合（ステップＳ１００４；はい）、判定機能４２２は、受信したパケットがそのコネクションにおけるクライアントからサーバに向かって送信されたものであるとして、受信したパケットに係るコネクションにおけるそのパケットの送信方向を、サーバに向かう「上り」であると特定する（ステップＳ１００５）。なお、パケットの送信方向は、例えばフラグにより一時的に記録される。
【００６０】
一方、検索条件に合致するレコードがコネクション情報テーブル４２ｄから検出されなかった場合（ステップＳ１００４；いいえ）、判定機能４２２は、受信したパケットから取得したコネクション情報において、出所と宛先のＩＰアドレスとポート番号を入れ替える処理を行う（ステップＳ１００６）。その後、判定機能４２２は、出所と宛先のＩＰアドレスとポート番号を入れ替えたコネクション情報を検索条件として、図９に示すコネクション情報テーブル４２ｄを検索する（ステップＳ１００７）。
【００６１】
そして、検索条件に合致するレコードがコネクション情報テーブル４２ｄから検出されなかった場合（ステップＳ１００８；いいえ）、パケット監視機能４２ａは、受信機能４２１がパケットを受信するまで待機する状態に戻る。
【００６２】
一方、検索条件に合致するレコードがコネクション情報テーブル４２ｄから検出された場合（ステップＳ１００８；はい）、判定機能４２２は、受信したパケットがそのコネクションにおけるサーバからクライアントに向かって送信されたものであるとして、受信したパケットに係るコネクションにおけるそのパケットの送信方向を、クライアントに向かう「下り」であると特定する（ステップＳ１００９）。なお、パケットの送信方向は、例えばフラグにより一時的に記録される。
【００６３】
判定機能４２２が、受信機能４２１が受信したパケットの送信方向を「上り」又は「下り」に特定した後、輻輳判定サブルーチンが呼び出されて実行される（ステップＳ１０１０）。
【００６４】
図１１は、輻輳判定サブルーチンの流れを示す図である。
【００６５】
輻輳判定サブルーチンの開始後、取得機能４２３が、受信機能４２１が受信したパケットが、メッセージの先頭部分を含むか否かを、判別する（ステップＳ１１０１）。なお、パケットがメッセージの先頭部分を含む場合とは、受信したパケットにセグメントとしてメッセージの全部が含まれている場合、又は、受信したパケットにセグメントとしてメッセージヘッダが含まれている場合である。ここで、メッセージヘッダが含まれる部分をメッセージの先頭部分としているのは、メッセージを遣り取りする一般的なプロトコルとし
て先に例示したＩＩＯＰなどでは、メッセージの先頭にメッセージヘッダを有しているためである。
【００６６】
そして、受信機能４２１が受信したパケットが、メッセージの先頭部分を含んでいなかった場合（ステップＳ１１０１；いいえ）、取得機能４２３は、受信したパケットと同一コネクションにおける同一の送信方向において直前に受信したパケットとの受信時間間隔を、取得する（ステップＳ１１０２）。具体的には、取得機能４２３は、受信したパケット内のコネクション情報と、判定機能４２２が特定した送信方向とに基づいて、図９に示すコネクション情報テーブル４２ｄ内のレコードを特定する。続いて、取得機能４２３は、特定したレコードの「上りパケット受信時刻」フィールド及び「下りパケット受信時刻」フィールドのうち、判定機能４２２が特定した送信方向に対応するフィールドの値（受信時刻）を、読み出す。その後、取得機能４２３は、受信機能４２１が受信したパケットの受信時刻から、読み出した受信時刻を差し引くことにより、受信時間間隔を取得する。
【００６７】
次に、特定機能４２４が、取得機能４２３が取得した受信時間間隔が、所定の第１の閾値を超過しているか否かを、判別する（ステップＳ１１０３）。そして、取得機能４２３が取得した受信時間間隔が、所定の第１の閾値を超過していた場合（ステップＳ１１０３；はい）、特定機能４２４は、受信したパケットと同一コネクションにおける同一の送信方向の輻輳フラグを「０」から「１」に切り替える（ステップＳ１１０４）。具体的には、特定機能４２４は、受信したパケット内のコネクション情報と、判定機能４２２が特定した送信方向とに基づいて、図９に示すコネクション情報テーブル４２ｄ内のレコードを特定する。続いて、特定機能４２４は、特定したレコードの「上り」フィールド及び「下り」フィールドのうち、判定機能４２２が特定した送信方向に対応するフィールドの値（輻輳フラグ）を、「０」から「１」に切り替える。このような輻輳フラグの切り替えにより、受信機能４２１が受信したパケットと同一のコネクションの送信元が、被擬ホストとして特定されることとなる。
【００６８】
特定機能４２４が、受信パケットと同一コネクションにおける同一の送信方向の輻輳フラグを「０」から「１」に切り替えた後、取得機能４２３は、受信したパケットと同一コネクションにおける同一の送信方向の受信時刻を、受信したパケットの受信時刻へ更新する（ステップＳ１１０５）。具体的には、取得機能４２３は、受信したパケット内のコネクション情報と、判定機能４２２が特定した送信方向とに基づいて、図９に示すコネクション情報テーブル４２ｄ内のレコードを特定する。続いて、取得機能４２３は、特定したレコードの「上りパケット受信時刻」フィールド及び「下りパケット受信時刻」フィールドのうち、判定機能４２２が特定した送信方向に対応するフィールドの値（受信時刻）を、更新する。
【００６９】
一方、取得機能４２３が取得した受信時間間隔が、所定の第１の閾値を超過していなかった場合（ステップＳ１１０３；いいえ）、特定機能４２４が、輻輳フラグの切り替えを行うことなく、取得機能４２３が、受信時刻の更新を行う（ステップＳ１１０５）。
【００７０】
また、受信機能４２１が受信したパケットが、メッセージの先頭部分を含んでいた場合（ステップＳ１１０１；はい）、特定機能４２４が、受信したパケットと同一コネクションにおける同一の送信方向において送信元が輻輳状態にあるか否かを判別することなく、取得機能４２３が、受信時刻の更新を行う（ステップＳ１１０５）。
【００７１】
なお、監視対象のコンピュータ１０、２０がメッセージを送信する場合、メッセージの分割は、監視対象のコンピュータ１０、２０のオペレーティングシステムのカーネル（ＴＣＰ／ＩＰスイート）において行われる。そして、１つのメッセージから分割された各部分をパケットに収納して送信する処理は、カーネルにおいて行われるため、送信元のコン
ピュータが輻輳状態に無ければ、１つのメッセージから分割された各部分が収納されたパケットの送信間隔は、殆ど同じである。これに対し、１つのメッセージの末尾部分とその次のメッセージの先頭部分とがそれぞれ収納された一対のパケットの送信間隔は、アプリケーションの実行スケジューリングに依存しており、そのコンピュータが輻輳状態にあるか否かとは無関係である。このため、本実施形態では、受信したパケットにメッセージの先頭部分が含まれている場合（ステップＳ１１０１；はい）には、そのパケットと同一コネクションにおける同一の送信方向において送信元が輻輳状態にあるか否かを判別する処理（ステップＳ１１０３）が行われないようになっている。
【００７２】
取得機能４２３が、図９に示すコネクション情報テーブル４２ｄにおける受信時刻の更新を行った後、図１１に係る輻輳判定サブルーチンが終了され、パケット監視機能４２ａが、図１０に係るメインルーチンに復帰する。その後、パケット監視機能４２ａは、受信機能４２１がパケットを受信するまで待機する状態に戻る。
【００７３】
〈ホスト監視〉
図１２は、ホスト監視機能４２ｂによるメインルーチンの流れを示す図である。
【００７４】
メインルーチンの開始後、ホスト監視機能４２ｂは、第１の処理ループＬ１を実行する。第１の処理ループＬ１では、ホスト監視機能４２ｂは、監視対象のコンピュータ１０、２０が有するＩＰアドレスを１個ずつ順に処理対象として特定する。そして、処理対象として特定した１個のＩＰアドレスに対し、算出機能４２６及び警告機能４２７が処理を行う。
【００７５】
まず、算出機能４２６が、割合算出サブルーチンを呼び出して実行する。
【００７６】
図１３は、割合算出サブルーチンの流れを示す図である。
【００７７】
割合算出サブルーチンの開始後、算出機能４２６は、図９に示すコネクション情報テーブル４２ｄから、処理対象のＩＰアドレスを「出所ＩＰアドレス」フィールドに持つレコードを抽出する。その後、算出機能４２６は、抽出したレコードの数を計数することにより、処理対象ＩＰアドレスをクライアントとするコネクションの本数を取得する（ステップＳ２１０１）。
【００７８】
次に、算出機能４２６は、図９に示すコネクション情報テーブル４２ｄから、処理対象のＩＰアドレスを「宛先ＩＰアドレス」フィールドに持つレコードを抽出する。その後、算出機能４２６は、抽出したレコードの数を計数することにより、処理対象ＩＰアドレスをサーバとするコネクションの本数を取得する（ステップＳ２１０２）。
【００７９】
そして、算出機能４２６は、処理対象ＩＰアドレスをクライアントとするコネクションの本数と、サーバとするコネクションの本数とを合算することにより、処理対象ＩＰアドレスの有するコネクションの総本数を取得する（ステップＳ２１０３）。
【００８０】
次に、算出機能４２６は、図９に示すコネクション情報テーブル４２ｄから、処理対象のＩＰアドレスを「出所ＩＰアドレス」フィールドに持つとともに上り輻輳フラグが１であるレコードを抽出する。その後、算出機能４２６は、抽出したレコードの数を計数することにより、輻輳状態にあると推定される被擬クライアントとして処理対象ＩＰアドレスが特定されるコネクションの本数を取得する（ステップＳ２１０４）。
【００８１】
次に、算出機能４２６は、図９に示すコネクション情報テーブル４２ｄから、処理対象のＩＰアドレスを「宛先ＩＰアドレス」フィールドに持つとともに下り輻輳フラグが１で
あるレコードを抽出する。その後、算出機能４２６は、抽出したレコードの数を計数することにより、輻輳状態にあると推定される被擬サーバとして処理対象ＩＰアドレスが特定されたコネクションの本数を取得する（ステップＳ２１０５）。
【００８２】
そして、算出機能４２６は、処理対象ＩＰアドレスが被擬クライアントとされたコネクションの本数と、処理対象ＩＰアドレスが被擬サーバとされたコネクションの本数とを合算することにより、処理対象ＩＰアドレスが被擬ホストとされたコネクションの本数を取得する（ステップＳ２１０６）。
【００８３】
次に、算出機能４２６は、処理対象ＩＰアドレスの有するコネクションの総本数で、処理対象ＩＰアドレスが被擬ホストとされたコネクションの本数を除算することにより、被擬割合を算出する（ステップＳ２１０７）。
【００８４】
算出機能４２６が、被擬割合を算出した後、図１３に係る割合算出サブルーチンが終了され、ホスト監視機能４２ｂが、図１２に係るメインルーチンに復帰する。その後、算出機能４２６が、図９に示すコネクション情報テーブル４２ｄにおける全てのレコードの上り輻輳フラグと下り輻輳フラグとを全て「０」に切り替える（ステップＳ２００２）。
【００８５】
次に、警告機能４２７が、算出機能４２６が算出した被擬割合が、所定の第２の閾値を超過しているか否かを、判別する（ステップＳ２００３）。
【００８６】
そして、算出機能４２６が算出した被擬割合が、所定の第２の閾値を超過していた場合（ステップＳ２００３；はい）、警告機能４２７は、警告を出力する処理を行う（ステップＳ２００４）。警告を出力する処理としては、例えば、処理対象ＩＰアドレスが割り当てられたコンピュータが輻輳状態にある旨の警告文を出力デバイス４０ａに表示する処理、そのような警告文が記述された電子メールを送信する処理、及び、警告音を出力デバイス４０ａから出力する処理がある。警告機能４２７が、警告を出力する処理を行った後、ホスト監視機能４２ｂが、第１の処理ループＬ１における処理対象ＩＰアドレスの回を終了させる。
【００８７】
一方、算出機能４２６が算出した被擬割合が、所定の第２の閾値を超過していなかった場合（ステップＳ２００３；いいえ）、警告機能４２７が、警告を出力する処理を行うことなく、ホスト監視機能４２ｂが、第１の処理ループＬ１における処理対象ＩＰアドレスの回を終了させる。
【００８８】
そして、監視対象のコンピュータ１０、２０が有するＩＰアドレスの全てに対し、算出機能４２６及び警告機能４２７が処理を終えると、ホスト監視機能４２ｂが、第１の処理ループＬ１から離脱し、図１２に係るメインルーチンを終了させる。
【００８９】
《作用効果》
本実施形態の監視装置４０によれば、パケットを受信するたびに、同じコネクションにおいて直前に受信したパケットとの受信時間間隔に基づいて、そのコネクションにおけるパケットの送信元が被擬ホストであるか否かが特定される。また、監視対象のコンピュータ１０、２０のそれぞれについて、そのコンピュータの有するコネクションの本数に対する被擬ホストとして特定されたコネクションの本数の割合が被擬割合として求められる。そして、その被擬割合が高いホストが、輻輳状態にあるホストとして割り出され、警告が出力される。
【００９０】
これにより、或るコネクションについてクライアントとなるホストとサーバとなるホストのどちらが輻輳状態にあるかを、利用者が判断できるようになる。
【００９１】
例えば、監視対象のコンピュータ１０、２０が、ウェブ三階層システムを構成するアプリケーションサーバ及びデータベースサーバである場合、アプリケーションサーバとしての第１のコンピュータ１０は、データベースサーバとしての第２のコンピュータ２０に所定の処理の実行を要求して第２のコンピュータ２０から処理結果を取得するクライアントとなる。このような事例では、図９に示すコネクション情報テーブル４２ｄには、第１のコンピュータ１０がクライアントとなるコネクションのコネクション情報が、１個以上記録されることととなる。すなわち、第１のコンピュータ１０のＩＰアドレスが「出所ＩＰアドレス」フィールドに格納されるとともに第２のコンピュータ２０のＩＰアドレスが「宛先ＩＰアドレス」フィールドに格納されるレコードが、１個以上記録されることとなる。このため、「上り」フィールドの値（上り輻輳フラグ）がパケット監視機能４２ａによって「１」とされたレコードの数の全レコードに対する被擬割合が所定の第２の閾値を上回れば、クライアントとなる第１のコンピュータ１０が輻輳状態であることが判明する。逆に、「下り」フィールドの値（下り輻輳フラグ）がパケット監視機能４２ａによって「１」とされたレコードの数の全レコードに対する被擬割合が所定の第２の閾値を上回れば、サーバとなる第２のコンピュータ２０が輻輳状態であることが判明する。
【００９２】
従って、本実施形態によれば、サーバが輻輳状態にあるか否かが判断されるだけではなく、クライアントが輻輳状態にあるか否かも判断されるようになる。
【図面の簡単な説明】
【００９３】
【図１】本実施形態のコンピュータネットワークシステムの構成を示す図
【図２】ＬＡＮスイッチの構成を示す図
【図３】監視装置の構成を示す図
【図４】監視アプリケーションの構成を示す図
【図５】一般的なメッセージの構成を示す図
【図６】ＩＰヘッダフォーマットを示す図
【図７】ＴＣＰヘッダフォーマットを示す図
【図８】ＴＣＰコネクションのシーケンスの一例を示す図
【図９】コネクション情報テーブルを模式的に示す図
【図１０】パケット監視機能によるメインルーチンの流れを示す図
【図１１】輻輳判定サブルーチンの流れを示す図
【図１２】ホスト監視機能によるメインルーチンの流れを示す図
【図１３】割合算出サブルーチンの流れを示す図
【図１４】メッセージの先頭部分がサーバに到達した時点がサーバのレスポンス時間の起算時点とされる例の説明に用いる図
【図１５】メッセージの末尾部分がサーバに到達した時点がサーバのレスポンス時間の起算時点とされる例の説明に用いる図
【符号の説明】
【００９４】
１０    第１のコンピュータ
２０    第２のコンピュータ
３０    ＬＡＮスイッチ
３３    ミラーポート
４０    監視装置
４０ａ  出力デバイス
４０ｅ  通信ユニット
４０ｆ  ストレージユニット
４０ｇ  ＣＰＵ
４０ｈ  メインメモリユニット
４１    オペレーティングシステム
４１ａ  ドライバ
４２    監視アプリケーション
４２ａ  パケット監視機能
４２１  受信機能
４２２  判定機能
４２３  取得機能
４２４  特定機能
４２ｂ  ホスト監視機能
４２６  算出機能
４２７  警告機能
４２ｃ  コネクション情報管理機能
４２ｄ  コネクション情報テーブル
【図１】
2010109551.tif 000003
【図２】
2010109551.tif 000004
【図３】
2010109551.tif 000005
【図４】
2010109551.tif 000006
【図５】
2010109551.tif 000007
【図６】
2010109551.tif 000008
【図７】
2010109551.tif 000009
【図８】
2010109551.tif 000010
【図９】
2010109551.tif 000011
【図１０】
2010109551.tif 000012
【図１１】
2010109551.tif 000013
【図１２】
2010109551.tif 000014
【図１３】
2010109551.tif 000015
【図１４】
2010109551.tif 000016
【図１５】
2010109551.tif 000017