説明

監視プログラム、監視方法及び監視装置

【課題】クライアントとサーバとを含む通信システムについて、サーバが輻輳状態にあるか否かが判断されるだけではなく、クライアントが輻輳状態にあるか否かも判断されるようにすること。
【解決手段】監視装置40は、監視対象のコンピュータ10、20間を流れるパケットを受信するたびに、受信したパケットと同じコネクションにおいてその直前に受信したパケットとの受信時間間隔に基づいて、そのコネクションにおけるパケットの送信元が被擬ホストであるか否かを特定する。また、監視装置40は、監視対象のコンピュータ10、20のそれぞれについて、そのコンピュータの有するコネクションの本数に対する被擬ホストとして特定したコネクションの本数の占める被擬割合を求める。また、監視装置40は、その被擬割合が高いホストを、輻輳状態にあるホストとして割り出して、警告を出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書において開示する方法及び装置は、クライアントとサーバとの間の通信状態を監視する技術に、関する。
【背景技術】
【0002】
周知のように、クライアントがサーバにリクエストメッセージを送信し、サーバがクライアントにレスポンスメッセージを送信する通信システムがある。この種の通信システムでは、メッセージのデータ量が、パケットに収納できる最大のデータ量を超えているときには、送信側は、メッセージを複数の部分に分割する。メッセージの全部又は一部は、それぞれセグメントとしてパケットに収納されて順次送信される。また、受信側は、受信した複数のパケットからメッセージの全部又は一部を取り出し、分割されたメッセージについては、複数の部分からメッセージの再組み立てを行う。
【0003】
また、この種の通信システムのサーバが輻輳状態(混雑状態)にあるか否かを判断する監視システムがある。監視システムは、クライアントとサーバとにともに接続されているスイッチのミラーポートから、クライアントとサーバとの間に流れるパケットの複製を取得し、取得したパケットからメッセージの再組み立てを行う。また、監視システムは、サーバがクライアントからリクエストメッセージを受信した時点からサーバがレスポンスメッセージをクライアントに送信した時点までのレスポンス時間の長さにより、サーバが輻輳状態にあるか否かを判断するようになっている。
【0004】
ところで、メッセージが複数の部分に分割されて送信される場合において、図14に示すように、メッセージの先頭部分PK1がサーバに到達した時点が、サーバのレスポンス時間の起算時点とされていると、当該メッセージの各部分が収納されたパケットのうちの何れかの送信が、クライアントによって遅延されてしまったときに、その遅延時間が、サーバのレスポンス時間に含まれてしまう。このため、この起算方法に依ると、クライアントが輻輳状態にあるにも拘わらず、サーバが輻輳状態にあるとしか判断されず、クライアントが輻輳状態にあることが判断されないという問題があった。
【0005】
また、メッセージが複数の部分に分割されて送信される場合において、図15に示すように、メッセージの末尾部分PKNがサーバに到達した時点が、サーバのレスポンス時間の起算時点とされていると、当該メッセージの各部分が収納されたパケットのうちの何れかの送信が、クライアントによって遅延されても、その遅延時間が、サーバのレスポンス時間に含まれることはない。このため、この起算方法に依れば、クライアントが輻輳状態にあっても、サーバが輻輳状態にあると判断されることはない。しかしながら、この起算方法では、サーバが輻輳状態にあるか否かは判断されても、クライアントが輻輳状態にあるか否かは全く判断されないという問題があった。
【0006】
【特許文献1】特開2007−026303号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本明細書で開示する方法及び装置は、前述したような従来技術の有する問題点に鑑みてなされたものであり、その課題は、クライアントとサーバとを含む通信システムについて、サーバが輻輳状態にあるか否かが判断されるだけではなく、クライアントが輻輳状態にあるか否かも判断されるようにすることにある。
【課題を解決するための手段】
【0008】
前述の課題を解決するために案出された監視方法では、コンピュータに、2個以上のホストの間を流れるパケットを受信させる。そのコンピュータには、パケットを受信するたびに、そのパケットの受信時点からそのパケットと同一のコネクションにおいてそのパケットの直前に受信したパケットの受信時点までの受信時間間隔を、取得させる。また、そのコンピュータには、受信時間間隔が所定の第1の閾値を超えている場合に、受信したパケットと同一のコネクションの送信元ホストを被擬ホストとして特定させる。また、そのコンピュータには、2個以上のホストのそれぞれについて、そのホストの有するコネクションの本数に対して、そのホストが被擬ホストとして特定されたコネクションの本数が占める割合を算出させる。さらに、そのコンピュータには、算出した割合が所定の第2の閾値を超えているホストがあった場合に、警告を出力させる。
【0009】
このように、パケットを受信するたびに、同じコネクションにおいて直前に受信したパケットとの受信時間間隔に基づいて、そのコネクションにおけるパケットの送信元が被擬ホストであるか否かが特定されるとともに、2個以上のホストのそれぞれについて、そのホストの有するコネクションの本数に対する被擬ホストとして特定されたコネクションの本数の割合が求められるようになっていると、その割合が高いホストを、輻輳状態にあるホストとして割り出して警告を出力することができるようになる。これにより、或るコネクションについてクライアントとなるホストとサーバとなるホストのどちらが、輻輳状態にあるかが判断できるようになる。
【発明の効果】
【0010】
従って、先に開示した監視方法によれば、クライアントとサーバとを含む通信システムについて、サーバが輻輳状態にあるか否かが判断されるだけではなく、クライアントが輻輳状態にあるか否かも判断されるようになる。
【発明を実施するための最良の形態】
【0011】
以下、添付図面を参照しながら、先に開示した監視方法の実施形態であるコンピュータネットワークシステムについて、説明する。
【0012】
《構成》
図1は、本実施形態のコンピュータネットワークシステムの構成を示す図である。
【0013】
本実施形態のコンピュータネットワークシステムは、第1のコンピュータ10、第2のコンピュータ20、LAN[Local Area Network]スイッチ30、及び、監視装置40を、含んでいる。
【0014】
第1及び第2のコンピュータ10、20は、何れも、相手側とメッセージの遣り取りを行う機能を有する一般的なコンピュータである。ここで、メッセージとは、通信モデルの1つであるTCP/IP[Transmission Control Protocol/Internet Protocol]モデルにおけるインターネットレイヤでの送信単位である。インターネットレイヤに所属するプロトコルとしては、IIOP[Internet Inter-ORB Protocol](オブジェクトマネージメントグループの商標)などがある。
【0015】
第1及び第2のコンピュータ10、20は、メッセージを相手側に送信する場合において、メッセージのデータ量が、TCP/IPモデルにおけるインターネットレイヤでの1回の送信容量を超えるときには、メッセージを幾つかの部分に分割する。そして、メッセージの全部又は一部は、それぞれセグメントとしてパケットに収納されて順次出所から宛先へと送信される。また、第1及び第2のコンピュータ10、20は、パケットを受信すると、受信した複数のパケットからメッセージの全部又は一部を取り出し、分割されたメ
ッセージについては、複数の部分からメッセージの再組み立てを行う。ここで、パケットとは、通信モデルの1つであるTCP/IP[Transmission Control Protocol/Internet
Protocol]モデルの中のインターネットレイヤでの送信単位である。
【0016】
なお、本実施形態では、第1及び第2のコンピュータ10、20は、1個のIPアドレスが付与される論理ホストを、1個ずつ備えている。
【0017】
LANスイッチ30は、パケット伝送路のスイッチングを行う中継機器である。図1に示すように、LANスイッチ30には、第1及び第2のコンピュータ10、20がそれぞれ接続されている。
【0018】
監視装置40は、複数のコンピュータが互いに遣り取りするパケットをLANスイッチ30を介して取得し、取得したパケットに基づいてその通信状態を監視するための装置である。本実施形態では、第1及び第2のコンピュータ10、20が、監視装置40の監視対象となっている。なお、図1では、監視装置40の監視対象が備えられたコンピュータは、2台となっているが、3台以上であってもよい。
【0019】
図2は、LANスイッチ30の構成を示す図である。
【0020】
LANスイッチ30は、通信ユニット30a、ROM[Read Only Memory]ユニット30b、CPU[Central Processing Unit]30c、及び、RAM[Random Access Memory]ユニット30dを、含んでいる。
【0021】
通信ユニット30aは、コンピュータ又は中継機器とパケットの遣り取りを行うためのユニットである。通信ユニット30aは、複数の通信ポート31を備え、1つの通信ポート31からパケットが進入してくると、そのパケットの送り出し先として適切な通信ポート31を選択し、選択した通信ポート31からそのパケットを送出する。本実施形態では、これら通信ポート31には、それぞれ、第1及び第2のコンピュータ10、20が接続されている。なお、図2では、2個の通信ポート31しか示していないが、通信ユニット30aは、3個以上の通信ポート31を備えていてもよい。また、通信ユニット30aは、ポートミラーリング機能32を実現するための回路を内蔵している。ポートミラーリング機能32は、特定の通信ポート31を通過するパケットを複製し、複製したパケットをミラーポート33から送出するための機能である。本実施形態では、通信ユニット30aは、1個のミラーポート33を備え、ポートミラーリング機能32は、2個の通信ポート31から進入してくる全てのパケットを複製し、複製したパケットをミラーポート33から出力するようになっている。なお、複製元のパケットは、前述したように、適切な通信ポート31から送出される。本実施形態では、ミラーポート33には、監視装置40が接続されている。
【0022】
なお、3台以上のコンピュータがそれぞれ通信ポート31に接続され、ポートミラーリング機能32が、各通信ポート31に接続される3台以上のコンピュータからのパケットを複製してミラーポート33から送出するようになっていれば、これら3台以上のコンピュータが、監視装置40の監視対象となり得る。
【0023】
ROMユニット30bは、通信ユニット30aを制御するためのプログラムや各種の設定データが記録されているユニットである。CPU30cは、ROMユニット30b内のプログラムに従って処理を行うユニットである。RAMユニット30dは、CPU30cがプログラムやデータをキャッシュしたり作業領域を展開したりするためのユニットである。
【0024】
図3は、監視装置40の構成を示す図である。
【0025】
監視装置40は、監視対象のコンピュータ10、20間の通信状態を監視するための機能が附加されたコンピュータである。監視装置40は、出力デバイス40aと、操作デバイス40bと、これらデバイス40a、40bに接続された本体とからなる。ここで、出力デバイス40aは、スピーカ付きディスプレイ等のデバイスである。操作デバイス40bは、キーボードやマウス等のデバイスである。本体は、ビデオ制御ユニット40c、入力制御ユニット40d、通信ユニット40e、ストレージユニット40f、CPU[Central Processing Unit]40g、及び、メインメモリユニット40hを、内蔵している。なお、本実施形態では、通信ユニット40eは、LANスイッチ30のミラーポート33に接続されている。
【0026】
また、監視装置40には、オペレーティングシステム41と監視アプリケーション42とが、少なくとも導入されている。図3には、オペレーティングシステム41と監視アプリケーション42とがメインメモリユニット40hに展開された状態が、示されている。これらオペレーティングシステム41と監視アプリケーション42は、ストレージユニット40fに格納され、CPU40gによって読み出されて実行される。
【0027】
オペレーティングシステム41は、ソフトウエアとハードウエアの仲介、メモリ空間の管理、ファイル管理、プロセスやタスクの管理などを行うためのソフトウエアである。また、オペレーティングシステム41は、通信ユニット40eの動作を制御するためのドライバ(図4の41a)を含んでいる。なお、オペレーティングシステム41には、図示せぬTCP/IPスイートが含まれていても良い。TCP/IPスイートは、通信ユニット40eを介して接続されている他のコンピュータのTCP/IPスイートと、TCP/IPに従ってパケットの遣り取りを行うためのプログラムである。但し、本実施形態では、オペレーティングシステム41に含まれるTCP/IPスイートは、使用されない。
【0028】
図4は、監視アプリケーション42の構成を示す図である。
【0029】
監視アプリケーション42は、監視対象のコンピュータ10、20間の通信状態を監視するための機能をコンピュータに附加するためのソフトウエアである。監視アプリケーション42は、具体的には、パケット監視機能42a、ホスト監視機能42b、コネクション情報管理機能42c、及び、コネクション情報テーブル42dを、含んでいる。
【0030】
パケット監視機能42aは、監視対象のコンピュータ10、20の間を流れるパケットを監視する機能である。このパケット監視機能42aは、受信機能421、判定機能422、取得機能423、及び、特定機能424を、含んでいる。
【0031】
受信機能421は、監視対象のコンピュータ10、20間を流れるパケットの複製をLANスイッチ30のポートミラーリング機能32からオペレーティングシステム41のドライバ41aを介して受信する機能である。
【0032】
判定機能422は、受信機能421が受信したパケットに係るTCPコネクションにおいて、そのパケットの送信方向がサーバに向かう上りであるかクライアントに向かう下りであるかを判定する機能である。なお、第1のコンピュータ10による要求によって第1及び第2のコンピュータ10、20間に確立されたTCPコネクションにおいては、第1のコンピュータ10がクライアントとなり、第2のコンピュータ20がサーバとなる。逆に、第2のコンピュータ20による要求によって第1及び第2のコンピュータ10、20間に確立されたTCPコネクションにおいては、第2のコンピュータ20がクライアントとなり、第1のコンピュータ10がサーバとなる。
【0033】
取得機能423は、受信機能421が受信したパケットの受信時点から、そのパケットと同一のTCPコネクションにおいてそのパケットの直前に受信したパケットの受信時点までの受信時間間隔を、取得する機能である。
【0034】
特定機能424は、取得機能423が取得した受信時間間隔が所定の第1の閾値を超えている場合に、受信機能421が受信したパケットと同一のコネクションの送信元を、輻輳状態にあると推定される被擬ホストとして特定する機能である。
【0035】
ホスト監視機能42bは、監視対象のコンピュータ10、20の何れか一方又は両方が輻輳状態になったか否かを監視する機能である。このホスト監視機能42bは、例えば、1分おきに、実行される。このホスト監視機能42bは、算出機能426、及び、警告機能427を、含んでいる。
【0036】
算出機能426は、監視対象のコンピュータ10、20のそれぞれについて、そのコンピュータが輻輳状態にあるか否かの判断材料となる数値を算出する機能である。
【0037】
警告機能427は、算出機能426が算出した数値が所定の第2の閾値を超えているホストがあった場合に、警告を出力する機能である。
【0038】
コネクション情報管理機能42cは、監視対象のコンピュータ10、20間にコネクションが確立されるとそのコネクションに係るパケットからコネクション情報を取得してコネクション情報テーブル42dに登録する機能である。また、コネクション情報管理機能42cは、監視対象のコンピュータ10、20間のコネクションが切断されるとコネクション情報の登録を抹消する機能でもある。
【0039】
ここで、パケットは、図5に示すように、IPヘッダと、TCPヘッダと、セグメントとからなる。また、IPヘッダは、図6のヘッダフォーマット図に示すように、「出所IPアドレス」及び「宛先IPアドレス」のフィールドを、含んでいる。なお、図6では、これら以外のフィールドには、斜線掛けが施されされているが、この斜線掛けが施されたフィールドについては、本実施形態では使用しないため、説明を省略する。「出所IPアドレス」フィールドには、パケットの出所となるTCP/IPホストのIPアドレスが格納され、「宛先IPアドレス」フィールドには、パケットの宛先となるTCP/IPホストのIPアドレスが格納される。また、TCPヘッダは、図7のヘッダフォーマット図に示すように、「出所ポート番号」、「宛先ポート番号」及び「制御ビット」のフィールドを、含んでいる。なお、図7では、これら以外のフィールドには、斜線掛けが施されているが、この斜線掛けが施されたフィールドについては、本実施形態では使用しないため、説明を省略する。「出所ポート番号」フィールドには、パケットにより全部又は一部が運搬されるメッセージを作成した通信アプリケーションを特定するポート番号が格納される。「宛先ポート番号」フィールドには、パケットにより全部又は一部が運搬されるメッセージを利用する通信アプリケーションを特定するポート番号が格納される。「制御ビット」フィールドは、パケットの種類や特別な制御情報を示す6個の制御ビットが格納される。なお、6個の制御ビットは、それぞれ、URG[URGent]、ACK[ACKnowledge]、PSH[PuSH]、RST[ReSeT]、SYN[SYNchronize]、及び、FIN[FINish]のフラグのオンオフを示す。但し、以下の説明では、ACK、SYN、FINのみ使用している。
【0040】
図8は、TCPコネクションのシーケンスの一例を示す図である。
【0041】
TCPコネクションを通じてメッセージの送信を行おうとする送信側コンピュータ(ク
ライアント)は、TCPに従って、TCPヘッダ内の制御ビットのSYNフラグが立ったパケット(以下、SYNパケットと表記)P1を生成し、生成したSYNパケットP1をメッセージ送信先となる受信側コンピュータ(サーバ)へ送信する。
【0042】
すると、受信側コンピュータは、TCPに従って、TCPヘッダ内の制御ビットのSYNフラグとACKフラグとがともに立ったパケット(以下、SYN+ACKパケットと表記)P2を生成し、生成したSYN+ACKパケットP2を送信側コンピュータへ送信する。
【0043】
これを受けて、送信側コンピュータは、TCPに従って、ACKパケットP3を生成し、生成したACKパケットP3を受信側コンピュータに送信する。
【0044】
以上に示したSYNパケットP1とSYN+ACKパケットP2とACKパケットP3との遣り取り(スリーウエイハンドシェイク)により、送信側コンピュータと受信側コンピュータとのTCPコネクションが確立する。
【0045】
また、TCPコネクションを切断しようとする一方のコンピュータ、例えば、送信側コンピュータは、TCPに従って、TCPヘッダ内の制御ビットのFINフラグが立ったパケット(以下、FINパケットと表記)P4を生成し、生成したFINパケットP4をメッセージ送信先となる受信側コンピュータ(サーバ)へ送信する。
【0046】
これを受けて、受信側コンピュータは、TCPに従って、ACKパケットP5を生成し、生成したACKパケットP5を送信側コンピュータに送信する。
【0047】
また、TCPコネクションにおいて一方のコンピュータが切断処理を終えると、他方のコンピュータ、例えば、受信側のコンピュータは、TCPに従って、FINパケットP6を生成し、生成したFINパケットP6をメッセージ送信先となる送信側コンピュータへ送信する。
【0048】
これを受けて、送信側コンピュータは、TCPに従って、ACKパケットP7を生成し、生成したACKパケットP7を受信側コンピュータに送信する。
【0049】
以上に示したFINパケットP4、P6とACKパケットP5、P7との遣り取りにより、送信側コンピュータと受信側コンピュータとのTCPコネクションが切断される。
【0050】
図4に戻り、コネクション情報管理機能42cは、オペレーティングシステム41のドライバ41aを介して受信されるパケットが、TCPコネクションの確立又は切断に係るパケットであるか否かを、判別する。すなわち、コネクション情報管理機能42cは、受信したパケットが、SYNパケット、SYN+ACKパケット、FINパケット、又は、これらに応答するためのACKパケットであるか否かを、判別する。そして、コネクション情報管理機能42cは、受信したパケットが、SYNパケット又はSYN+ACKパケットであれば、それらに含まれる情報を保存して、SYN+ACKパケットに対する応答としてのACKパケットを受信するまで待機する。また、コネクション情報管理機能42cは、受信したパケットが、SYN+ACKパケットに対する応答としてのACKパケットであれば、スリーウエイハンドシェークが完結してTCPコネクションが確立したとして、そのTCPコネクションに係るコネクション情報をコネクション情報テーブル42dに登録する。ここで、コネクション情報は、出所IPアドレス、宛先IPアドレス、出所ポート番号、及び、宛先ポート番号からなる情報となっている。TCPコネクションは、コネクション情報を構成する4個の情報の組み合わせにより、特定される。
【0051】
図9は、コネクション情報テーブル42dを模式的に示す図である。
【0052】
コネクション情報テーブル42dの各レコードは、「出所IPアドレス」、「宛先IPアドレス」、「出所ポート番号」、「宛先ポート番号」、「上りパケット受信時刻」、「下りパケット受信時刻」、「上り」及び「下り」のフィールドを、有している。「出所IPアドレス」及び「宛先IPアドレス」の各フィールドは、パケットのIPヘッダ(図6参照)に格納されている出所IPアドレス及び宛先IPアドレスがそれぞれ記録されるフィールドである。「出所ポート番号」及び「宛先ポート番号」の各フィールドは、パケットのTCPヘッダ(図7参照)に格納されている出所ポート番号及び宛先ポート番号がそれぞれ記録されるフィールドである。なお、「出所IPアドレス」及び「出所ポート番号」に格納されている出所IPアドレス及び出所ポート番号により特定されるコンピュータが、そのコネクションにおけるクライアントとなる。逆に、「宛先IPアドレス」及び「宛先ポート番号」に格納されている宛先IPアドレス及び宛先ポート番号により特定されるコンピュータが、そのコネクションにおけるサーバとなる。「上りパケット受信時刻」フィールドは、そのコネクションにおけるサーバがパケットを受信した時刻が記録されるフィールドである。「下りパケット受信時刻」フィールドは、そのコネクションにおけるクライアントがパケットを受信した時刻が記録されるフィールドである。「上り」フィールドは、そのコネクションにおけるクライアントが輻輳状態(混雑状態)にあるか否かを示す上り輻輳フラグが記録されるフィールドである。本実施形態では、「1」の状態の上り輻輳フラグが、クライアントが輻輳状態にあることを示し、「0」の状態の上り輻輳フラグが、クライアントが輻輳状態にないことを示している。「下り」フィールドは、そのコネクションにおけるサーバが輻輳状態(混雑状態)にあるか否かを示す下り輻輳フラグが記録されるフィールドである。本実施形態では、「1」の状態の下り輻輳フラグが、サーバが輻輳状態にあることを示し、「0」の状態の下り輻輳フラグが、サーバが輻輳状態にないことを示している。なお、図4に示すコネクション情報管理機能42cは、コネクション情報をコネクション情報テーブル42dに登録する際、「上り」及び「下り」のフィールドの値を、初期値として、「0」にする。
【0053】
また、コネクション情報管理機能42cは、オペレーティングシステム41のドライバ41aを介して受信されるパケットが、FINパケット、又は、FINパケットに応答するためのACKパケットであった場合、それらに含まれる情報を保存して、そのTCPコネクションの切断を完了させるACKパケットを受信するまで待機する。そして、コネクション情報管理機能42cは、TCPコネクションの切断を完了させるACKパケットを受信すると、そのTCPコネクションが切断されたとして、そのTCPコネクションに係るコネクション情報を含むレコードをコネクション情報テーブル42dから削除する。
【0054】
このように、コネクション情報管理機能42cは、監視対象のコンピュータ10、20間にTCPコネクションが確立されるたびに、そのTCPコネクションに係るコネクション情報をコネクション情報テーブル42dに登録する。また、コネクション情報管理機能42cは、監視対象のコンピュータ10、20間のTCPコネクションが切断されるたびに、そのTCPコネクションに係るコネクション情報をコネクション情報テーブル42dから削除する。従って、コネクション情報テーブル42dには、監視対象のコンピュータ10、20間に確立されているコネクションのコネクション情報だけが、記録されていることとなる。
【0055】
《処理》
〈パケット監視〉
図10は、パケット監視機能42aによるメインルーチンの流れを示す図である。
【0056】
メインルーチンの開始後、受信機能421が、オペレーティングシステム41のドライ
バ41aを介してパケットを受信するまで待機する(ステップS1001;いいえ)。
【0057】
そして、受信機能421が、オペレーティングシステム41のドライバ41aを介してパケットを受信すると(ステップS1001;はい)、判定機能422が、受信したパケットからコネクション情報を取得する(ステップS1002)。すなわち、判定機能422は、受信したパケットのIPヘッダ(図6参照)から出所IPアドレス及び宛先IPアドレスを取得するとともに、TCPヘッダ(図7参照)から出所ポート番号及び宛先ポート番号を取得する。
【0058】
次に、判定機能422は、受信したパケットから取得したコネクション情報を検索条件として、図9に示すコネクション情報テーブル42dを検索する(ステップS1003)。
【0059】
そして、検索条件に合致するレコードがコネクション情報テーブル42dから検出された場合(ステップS1004;はい)、判定機能422は、受信したパケットがそのコネクションにおけるクライアントからサーバに向かって送信されたものであるとして、受信したパケットに係るコネクションにおけるそのパケットの送信方向を、サーバに向かう「上り」であると特定する(ステップS1005)。なお、パケットの送信方向は、例えばフラグにより一時的に記録される。
【0060】
一方、検索条件に合致するレコードがコネクション情報テーブル42dから検出されなかった場合(ステップS1004;いいえ)、判定機能422は、受信したパケットから取得したコネクション情報において、出所と宛先のIPアドレスとポート番号を入れ替える処理を行う(ステップS1006)。その後、判定機能422は、出所と宛先のIPアドレスとポート番号を入れ替えたコネクション情報を検索条件として、図9に示すコネクション情報テーブル42dを検索する(ステップS1007)。
【0061】
そして、検索条件に合致するレコードがコネクション情報テーブル42dから検出されなかった場合(ステップS1008;いいえ)、パケット監視機能42aは、受信機能421がパケットを受信するまで待機する状態に戻る。
【0062】
一方、検索条件に合致するレコードがコネクション情報テーブル42dから検出された場合(ステップS1008;はい)、判定機能422は、受信したパケットがそのコネクションにおけるサーバからクライアントに向かって送信されたものであるとして、受信したパケットに係るコネクションにおけるそのパケットの送信方向を、クライアントに向かう「下り」であると特定する(ステップS1009)。なお、パケットの送信方向は、例えばフラグにより一時的に記録される。
【0063】
判定機能422が、受信機能421が受信したパケットの送信方向を「上り」又は「下り」に特定した後、輻輳判定サブルーチンが呼び出されて実行される(ステップS1010)。
【0064】
図11は、輻輳判定サブルーチンの流れを示す図である。
【0065】
輻輳判定サブルーチンの開始後、取得機能423が、受信機能421が受信したパケットが、メッセージの先頭部分を含むか否かを、判別する(ステップS1101)。なお、パケットがメッセージの先頭部分を含む場合とは、受信したパケットにセグメントとしてメッセージの全部が含まれている場合、又は、受信したパケットにセグメントとしてメッセージヘッダが含まれている場合である。ここで、メッセージヘッダが含まれる部分をメッセージの先頭部分としているのは、メッセージを遣り取りする一般的なプロトコルとし
て先に例示したIIOPなどでは、メッセージの先頭にメッセージヘッダを有しているためである。
【0066】
そして、受信機能421が受信したパケットが、メッセージの先頭部分を含んでいなかった場合(ステップS1101;いいえ)、取得機能423は、受信したパケットと同一コネクションにおける同一の送信方向において直前に受信したパケットとの受信時間間隔を、取得する(ステップS1102)。具体的には、取得機能423は、受信したパケット内のコネクション情報と、判定機能422が特定した送信方向とに基づいて、図9に示すコネクション情報テーブル42d内のレコードを特定する。続いて、取得機能423は、特定したレコードの「上りパケット受信時刻」フィールド及び「下りパケット受信時刻」フィールドのうち、判定機能422が特定した送信方向に対応するフィールドの値(受信時刻)を、読み出す。その後、取得機能423は、受信機能421が受信したパケットの受信時刻から、読み出した受信時刻を差し引くことにより、受信時間間隔を取得する。
【0067】
次に、特定機能424が、取得機能423が取得した受信時間間隔が、所定の第1の閾値を超過しているか否かを、判別する(ステップS1103)。そして、取得機能423が取得した受信時間間隔が、所定の第1の閾値を超過していた場合(ステップS1103;はい)、特定機能424は、受信したパケットと同一コネクションにおける同一の送信方向の輻輳フラグを「0」から「1」に切り替える(ステップS1104)。具体的には、特定機能424は、受信したパケット内のコネクション情報と、判定機能422が特定した送信方向とに基づいて、図9に示すコネクション情報テーブル42d内のレコードを特定する。続いて、特定機能424は、特定したレコードの「上り」フィールド及び「下り」フィールドのうち、判定機能422が特定した送信方向に対応するフィールドの値(輻輳フラグ)を、「0」から「1」に切り替える。このような輻輳フラグの切り替えにより、受信機能421が受信したパケットと同一のコネクションの送信元が、被擬ホストとして特定されることとなる。
【0068】
特定機能424が、受信パケットと同一コネクションにおける同一の送信方向の輻輳フラグを「0」から「1」に切り替えた後、取得機能423は、受信したパケットと同一コネクションにおける同一の送信方向の受信時刻を、受信したパケットの受信時刻へ更新する(ステップS1105)。具体的には、取得機能423は、受信したパケット内のコネクション情報と、判定機能422が特定した送信方向とに基づいて、図9に示すコネクション情報テーブル42d内のレコードを特定する。続いて、取得機能423は、特定したレコードの「上りパケット受信時刻」フィールド及び「下りパケット受信時刻」フィールドのうち、判定機能422が特定した送信方向に対応するフィールドの値(受信時刻)を、更新する。
【0069】
一方、取得機能423が取得した受信時間間隔が、所定の第1の閾値を超過していなかった場合(ステップS1103;いいえ)、特定機能424が、輻輳フラグの切り替えを行うことなく、取得機能423が、受信時刻の更新を行う(ステップS1105)。
【0070】
また、受信機能421が受信したパケットが、メッセージの先頭部分を含んでいた場合(ステップS1101;はい)、特定機能424が、受信したパケットと同一コネクションにおける同一の送信方向において送信元が輻輳状態にあるか否かを判別することなく、取得機能423が、受信時刻の更新を行う(ステップS1105)。
【0071】
なお、監視対象のコンピュータ10、20がメッセージを送信する場合、メッセージの分割は、監視対象のコンピュータ10、20のオペレーティングシステムのカーネル(TCP/IPスイート)において行われる。そして、1つのメッセージから分割された各部分をパケットに収納して送信する処理は、カーネルにおいて行われるため、送信元のコン
ピュータが輻輳状態に無ければ、1つのメッセージから分割された各部分が収納されたパケットの送信間隔は、殆ど同じである。これに対し、1つのメッセージの末尾部分とその次のメッセージの先頭部分とがそれぞれ収納された一対のパケットの送信間隔は、アプリケーションの実行スケジューリングに依存しており、そのコンピュータが輻輳状態にあるか否かとは無関係である。このため、本実施形態では、受信したパケットにメッセージの先頭部分が含まれている場合(ステップS1101;はい)には、そのパケットと同一コネクションにおける同一の送信方向において送信元が輻輳状態にあるか否かを判別する処理(ステップS1103)が行われないようになっている。
【0072】
取得機能423が、図9に示すコネクション情報テーブル42dにおける受信時刻の更新を行った後、図11に係る輻輳判定サブルーチンが終了され、パケット監視機能42aが、図10に係るメインルーチンに復帰する。その後、パケット監視機能42aは、受信機能421がパケットを受信するまで待機する状態に戻る。
【0073】
〈ホスト監視〉
図12は、ホスト監視機能42bによるメインルーチンの流れを示す図である。
【0074】
メインルーチンの開始後、ホスト監視機能42bは、第1の処理ループL1を実行する。第1の処理ループL1では、ホスト監視機能42bは、監視対象のコンピュータ10、20が有するIPアドレスを1個ずつ順に処理対象として特定する。そして、処理対象として特定した1個のIPアドレスに対し、算出機能426及び警告機能427が処理を行う。
【0075】
まず、算出機能426が、割合算出サブルーチンを呼び出して実行する。
【0076】
図13は、割合算出サブルーチンの流れを示す図である。
【0077】
割合算出サブルーチンの開始後、算出機能426は、図9に示すコネクション情報テーブル42dから、処理対象のIPアドレスを「出所IPアドレス」フィールドに持つレコードを抽出する。その後、算出機能426は、抽出したレコードの数を計数することにより、処理対象IPアドレスをクライアントとするコネクションの本数を取得する(ステップS2101)。
【0078】
次に、算出機能426は、図9に示すコネクション情報テーブル42dから、処理対象のIPアドレスを「宛先IPアドレス」フィールドに持つレコードを抽出する。その後、算出機能426は、抽出したレコードの数を計数することにより、処理対象IPアドレスをサーバとするコネクションの本数を取得する(ステップS2102)。
【0079】
そして、算出機能426は、処理対象IPアドレスをクライアントとするコネクションの本数と、サーバとするコネクションの本数とを合算することにより、処理対象IPアドレスの有するコネクションの総本数を取得する(ステップS2103)。
【0080】
次に、算出機能426は、図9に示すコネクション情報テーブル42dから、処理対象のIPアドレスを「出所IPアドレス」フィールドに持つとともに上り輻輳フラグが1であるレコードを抽出する。その後、算出機能426は、抽出したレコードの数を計数することにより、輻輳状態にあると推定される被擬クライアントとして処理対象IPアドレスが特定されるコネクションの本数を取得する(ステップS2104)。
【0081】
次に、算出機能426は、図9に示すコネクション情報テーブル42dから、処理対象のIPアドレスを「宛先IPアドレス」フィールドに持つとともに下り輻輳フラグが1で
あるレコードを抽出する。その後、算出機能426は、抽出したレコードの数を計数することにより、輻輳状態にあると推定される被擬サーバとして処理対象IPアドレスが特定されたコネクションの本数を取得する(ステップS2105)。
【0082】
そして、算出機能426は、処理対象IPアドレスが被擬クライアントとされたコネクションの本数と、処理対象IPアドレスが被擬サーバとされたコネクションの本数とを合算することにより、処理対象IPアドレスが被擬ホストとされたコネクションの本数を取得する(ステップS2106)。
【0083】
次に、算出機能426は、処理対象IPアドレスの有するコネクションの総本数で、処理対象IPアドレスが被擬ホストとされたコネクションの本数を除算することにより、被擬割合を算出する(ステップS2107)。
【0084】
算出機能426が、被擬割合を算出した後、図13に係る割合算出サブルーチンが終了され、ホスト監視機能42bが、図12に係るメインルーチンに復帰する。その後、算出機能426が、図9に示すコネクション情報テーブル42dにおける全てのレコードの上り輻輳フラグと下り輻輳フラグとを全て「0」に切り替える(ステップS2002)。
【0085】
次に、警告機能427が、算出機能426が算出した被擬割合が、所定の第2の閾値を超過しているか否かを、判別する(ステップS2003)。
【0086】
そして、算出機能426が算出した被擬割合が、所定の第2の閾値を超過していた場合(ステップS2003;はい)、警告機能427は、警告を出力する処理を行う(ステップS2004)。警告を出力する処理としては、例えば、処理対象IPアドレスが割り当てられたコンピュータが輻輳状態にある旨の警告文を出力デバイス40aに表示する処理、そのような警告文が記述された電子メールを送信する処理、及び、警告音を出力デバイス40aから出力する処理がある。警告機能427が、警告を出力する処理を行った後、ホスト監視機能42bが、第1の処理ループL1における処理対象IPアドレスの回を終了させる。
【0087】
一方、算出機能426が算出した被擬割合が、所定の第2の閾値を超過していなかった場合(ステップS2003;いいえ)、警告機能427が、警告を出力する処理を行うことなく、ホスト監視機能42bが、第1の処理ループL1における処理対象IPアドレスの回を終了させる。
【0088】
そして、監視対象のコンピュータ10、20が有するIPアドレスの全てに対し、算出機能426及び警告機能427が処理を終えると、ホスト監視機能42bが、第1の処理ループL1から離脱し、図12に係るメインルーチンを終了させる。
【0089】
《作用効果》
本実施形態の監視装置40によれば、パケットを受信するたびに、同じコネクションにおいて直前に受信したパケットとの受信時間間隔に基づいて、そのコネクションにおけるパケットの送信元が被擬ホストであるか否かが特定される。また、監視対象のコンピュータ10、20のそれぞれについて、そのコンピュータの有するコネクションの本数に対する被擬ホストとして特定されたコネクションの本数の割合が被擬割合として求められる。そして、その被擬割合が高いホストが、輻輳状態にあるホストとして割り出され、警告が出力される。
【0090】
これにより、或るコネクションについてクライアントとなるホストとサーバとなるホストのどちらが輻輳状態にあるかを、利用者が判断できるようになる。
【0091】
例えば、監視対象のコンピュータ10、20が、ウェブ三階層システムを構成するアプリケーションサーバ及びデータベースサーバである場合、アプリケーションサーバとしての第1のコンピュータ10は、データベースサーバとしての第2のコンピュータ20に所定の処理の実行を要求して第2のコンピュータ20から処理結果を取得するクライアントとなる。このような事例では、図9に示すコネクション情報テーブル42dには、第1のコンピュータ10がクライアントとなるコネクションのコネクション情報が、1個以上記録されることととなる。すなわち、第1のコンピュータ10のIPアドレスが「出所IPアドレス」フィールドに格納されるとともに第2のコンピュータ20のIPアドレスが「宛先IPアドレス」フィールドに格納されるレコードが、1個以上記録されることとなる。このため、「上り」フィールドの値(上り輻輳フラグ)がパケット監視機能42aによって「1」とされたレコードの数の全レコードに対する被擬割合が所定の第2の閾値を上回れば、クライアントとなる第1のコンピュータ10が輻輳状態であることが判明する。逆に、「下り」フィールドの値(下り輻輳フラグ)がパケット監視機能42aによって「1」とされたレコードの数の全レコードに対する被擬割合が所定の第2の閾値を上回れば、サーバとなる第2のコンピュータ20が輻輳状態であることが判明する。
【0092】
従って、本実施形態によれば、サーバが輻輳状態にあるか否かが判断されるだけではなく、クライアントが輻輳状態にあるか否かも判断されるようになる。
【図面の簡単な説明】
【0093】
【図1】本実施形態のコンピュータネットワークシステムの構成を示す図
【図2】LANスイッチの構成を示す図
【図3】監視装置の構成を示す図
【図4】監視アプリケーションの構成を示す図
【図5】一般的なメッセージの構成を示す図
【図6】IPヘッダフォーマットを示す図
【図7】TCPヘッダフォーマットを示す図
【図8】TCPコネクションのシーケンスの一例を示す図
【図9】コネクション情報テーブルを模式的に示す図
【図10】パケット監視機能によるメインルーチンの流れを示す図
【図11】輻輳判定サブルーチンの流れを示す図
【図12】ホスト監視機能によるメインルーチンの流れを示す図
【図13】割合算出サブルーチンの流れを示す図
【図14】メッセージの先頭部分がサーバに到達した時点がサーバのレスポンス時間の起算時点とされる例の説明に用いる図
【図15】メッセージの末尾部分がサーバに到達した時点がサーバのレスポンス時間の起算時点とされる例の説明に用いる図
【符号の説明】
【0094】
10 第1のコンピュータ
20 第2のコンピュータ
30 LANスイッチ
33 ミラーポート
40 監視装置
40a 出力デバイス
40e 通信ユニット
40f ストレージユニット
40g CPU
40h メインメモリユニット
41 オペレーティングシステム
41a ドライバ
42 監視アプリケーション
42a パケット監視機能
421 受信機能
422 判定機能
423 取得機能
424 特定機能
42b ホスト監視機能
426 算出機能
427 警告機能
42c コネクション情報管理機能
42d コネクション情報テーブル




【特許請求の範囲】
【請求項1】
コンピュータを、
2個以上のホストの間を流れるパケットを受信する受信手段、
前記受信手段がパケットを受信するたびに、そのパケットの受信時点からそのパケットと同一のコネクションにおいてそのパケットの直前に受信したパケットの受信時点までの受信時間間隔を、取得する取得手段、
前記取得手段が取得した受信時間間隔が所定の第1の閾値を超えている場合に、前記受信手段が受信したパケットと同一のコネクションの送信元ホストを被擬ホストとして特定する特定手段、
前記2個以上のホストのそれぞれについて、そのホストの有するコネクションの本数に対して、そのホストが前記特定手段により被擬ホストとして特定されたコネクションの本数が占める割合を算出する算出手段、及び、
前記算出手段が算出した割合が所定の第2の閾値を超えているホストがあった場合に、警告を出力する警告手段
として機能させるための監視プログラム。
【請求項2】
前記取得手段は、前記受信手段が受信したパケットに含まれるセグメントが、そのパケットと同一のコネクションにおいてそのパケットの直前に受信したパケットに含まれるセグメントと同一のメッセージを構成する場合に、受信時間間隔を取得する
ことを特徴とする請求項1記載の監視プログラム。
【請求項3】
前記コンピュータを、更に、
前記受信手段がパケットを受信すると、その受信したパケットに係るコネクションにおけるそのパケットの送信方向がサーバに向かう上りであるかクライアントに向かう下りであるかを、判定する判定手段
として機能させ
前記算出手段は、前記2個以上のホストのそれぞれについて前記割合を算出する場合に、そのホストが前記判定手段によりクライアントと判定されたコネクションの本数とそのホストが前記判定手段によりサーバと判定されたコネクションと本数とを合算することにより、そのホストの有するコネクションの総本数を算出する
ことを特徴とする請求項1又は2記載の監視プログラム。
【請求項4】
コンピュータが、
2個以上のホストの間を流れるパケットを受信する受信手順、
前記受信手順でパケットを受信するたびに、そのパケットの受信時点からそのパケットと同一のコネクションにおいてそのパケットの直前に受信したパケットの受信時点までの受信時間間隔を、取得する取得手順、
前記取得手順で取得した受信時間間隔が所定の第1の閾値を超えている場合に、前記受信手順で受信したパケットと同一のコネクションの送信元ホストを被擬ホストとして特定する特定手順、
前記2個以上のホストのそれぞれについて、そのホストの有するコネクションの本数に対して、そのホストが前記特定手順で被擬ホストとして特定されたコネクションの本数が占める割合を算出する算出手順、及び、
前記算出手順で算出した割合が所定の第2の閾値を超えているホストがあった場合に、警告を出力する警告手順
を実行する
ことを特徴とする監視方法。
【請求項5】
2個以上のホストの間を流れるパケットを受信する受信部、
前記受信部がパケットを受信するたびに、そのパケットの受信時点からそのパケットと同一のコネクションにおいてそのパケットの直前に受信したパケットの受信時点までの受信時間間隔を、取得する取得部、
前記取得部が取得した受信時間間隔が所定の第1の閾値を超えている場合に、前記受信部が受信したパケットと同一のコネクションの送信元ホストを被擬ホストとして特定する特定部、
前記2個以上のホストのそれぞれについて、そのホストの有するコネクションの本数に対して、そのホストが前記特定部により被擬ホストとして特定されたコネクションの本数が占める割合を算出する算出部、及び、
前記算出部が算出した割合が所定の第2の閾値を超えているホストがあった場合に、警告を出力する警告部
を備えることを特徴とする監視装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2010−109551(P2010−109551A)
【公開日】平成22年5月13日(2010.5.13)
【国際特許分類】
【出願番号】特願2008−278145(P2008−278145)
【出願日】平成20年10月29日(2008.10.29)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】