図1は、実施例に係るネットワーク監視システムを示す構成図である。本実施例において、VoIPが実行されるネットワークを監視対象の一例として挙げるが、これに限定されず、他種のプロトコルが実行されるネットワークを監視対象としてもよい。
ネットワーク監視システムは、ネットワーク監視装置1と、TAP2と、第1サーバ装置(通信装置)31と、第2サーバ装置(通信装置)32とを有する。第1サーバ装置31及び第2サーバ装置32は、例えば業務サーバであり、無線LAN(Local Area Network)などのネットワークNWを介して複数のクライアント装置41〜43,44〜46にそれぞれ接続されている。第1サーバ装置31及び第2サーバ装置32は、第1サーバ装置31側のクライアント装置41〜43と、第2サーバ装置32側のクライアント装置44〜46との間において、VoIPのセッション(呼)SN1〜SN3を実行する。
クライアント装置44〜46は、例えばスマートフォンや携帯電話機などの端末装置であり、VoIPにより互いに音声通信(通話)が可能である。本例では、クライアント装置41,44は、VoIPに基づくセッションSN1を実行することにより、音声通信を行う。これと同様に、クライアント装置42,45は、セッションSN2を実行し、クライアント装置43,46は、セッションSN3を実行する。なお、本例では、3つのセッションSN1〜SN3を例に挙げるが、セッション数に限定はなく、クライアント装置の台数も、同様に限定されない。
第1サーバ装置31及び第2サーバ装置32は、TAP2を介し、例えばLANケーブルRにより互いに接続され、要求メッセージ及び応答メッセージを含むパケットを送受信する。TAP2は、LANケーブルRに接続され、第1サーバ装置31及び第2サーバ装置32の間において送受信されるパケットを検出して複製する。なお、パケットとしては、例えばIPパケットやイーサネットフレームが挙げられるが、これに限定されず、ATMセルなどの他の形態のデータでもよい。
TAP2は、複製により得たパケットをネットワーク監視装置1に出力する。このとき、TAP2は、第1サーバ装置31から入力された複製元のパケットを、そのまま第2サーバ装置32に出力し、第2サーバ装置32から入力された複製元のパケットを、そのまま第1サーバ装置31に出力する。
ネットワーク監視装置1は、TAP2から入力されたパケットを検出することにより、各セッションSN1〜SN3において送受信されるパケット(つまり要求メッセージ及び応答メッセージ)を監視する。ネットワーク監視装置1は、セッションSN1〜SN3のうち、要求メッセージに対応する応答メッセージが、要求メッセージの検出時刻から制限時間内に検出されないセッションSN1〜SN3を異常(つまり通信品質の劣化)と判断する。
図2は、各セッションSN1〜SN3で送受信されるメッセージの一例を示すラダーチャートである。図2は、一例としてVoIPのセッションにおいて送受信されるメッセージを示す。
まず、第1サーバ装置31は、第2サーバ装置32に「INVITE」メッセージを送信する。第2サーバ装置32は、「INVITE」メッセージを受信すると、第1サーバ装置31に「200OK」メッセージを送信する。第1サーバ装置31は、「200OK」メッセージを受信すると、第2サーバ装置32に「ACK」メッセージを送信する。これにより、セッションSN1〜SN3が確立される。
次に、第1サーバ装置31は、第2サーバ装置32に「BYE」メッセージを送信する。第2サーバ装置32は、「BYE」メッセージを受信すると、第1サーバ装置31に「ACK」メッセージを送信する。これにより、セッションSN1〜SN3が終了する。なお、以降の説明において、上記の2つの「ACK」メッセージを区別するため、第2サーバ装置32から送信される「ACK」メッセージを「第2ACK」と表記し、第1サーバ装置31から送信される「ACK」メッセージを「第1ACK」と表記する。
ネットワーク監視装置1は、上記の各メッセージの検出時刻の間隔Ta1〜Ta4を指標として、通信品質(音声通話サービスの質)を判断する。ネットワーク監視装置1は、例えば、「INVITE」メッセージを要求メッセージとして、「INVITE」メッセージの検出時刻と、その応答メッセージである「200OK」の検出時刻の間隔Ta1を計測する。また、ネットワーク監視装置1は、例えば、「200OK」メッセージを要求メッセージとして、「200OK」メッセージの検出時刻と、その応答メッセージである「第1ACK」メッセージの検出時刻の間隔Ta2を計測する。
(第1比較例)
図3は、第1比較例に係るネットワーク監視方法を示すタイムチャートである。本例は、セッションSN1,SN2の各メッセージをタイマT10〜T13,T20〜T23により監視する方法を示す。図3において、横軸は時刻(秒)を示し、矢印の根元及び先端は、タイマT10〜T13,T20〜T23の開始時刻及び満了(終了)時刻を示す。このため、矢印の長さは、各メッセージの制限時間を示す。なお、制限時間は、メッセージの種類に応じて決定される。
セッションSN1〜SN3の開始及び終了のタイミングは、セッションごとに異なるので、ネットワーク監視装置1は、各セッションSN1〜SN3のメッセージごとにタイマT10〜T13,T20〜T23を起動して、メッセージを監視する。タイマT10〜T13,T20〜T23は、メッセージが検出されるたびに起動され、計時を開始する。
例えば、セッションSN1について、「INVITE」メッセージが検出されると、タイマT10が起動され、「200OK」メッセージが検出されると、タイマT11が起動される。また、「第1ACK」メッセージが検出されると、タイマT12が起動され、「BYE」メッセージが検出されると、タイマT13が起動される。なお、セッションSN2のメッセージを監視するタイマT20〜T23も、上記と同様である。
セッションSN2は、「第1ACK」メッセージが、タイマT21の制限時間内に検出されないため、タイムアウトと判断される。したがって、ネットワーク監視装置1は、セッションSN2を異常と判断する。
このように、ネットワーク監視装置1は、各セッションSN1〜SN3のメッセージを、個別のタイマT10〜T13,T20〜T23により監視する。タイマ処理は、例えばタイマ数分のスレッド(一連の処理群)により行われる。このため、セッション数が、例えば数十万〜数百万に及ぶ場合、多数のタイマの計時処理によって、ネットワーク監視装置1の監視処理の負荷が増加する。したがって、第1比較例に係る監視方法によると、プロセッサ及びメモリなどのリソースが不足し、装置全体の処理能力が低下し得る。
(第2比較例)
監視処理に負荷を低減するため、一定の監視周期でメッセージを検出することも可能である。図4は、第2比較例に係るネットワーク監視方法を示すタイムチャートである。本例において、各セッションSN1〜SN3のメッセージの監視周期を1(秒)とする。また、図4において、横軸は時刻(秒)を示し、「CHK」は、監視処理が実行される時刻を示す。監視周期は1(秒)であるため、監視処理は、時刻が0(秒),1(秒),2(秒),・・・,8(秒)のときに行われる。
また、図4において、矢印の根元及び先端は、各メッセージの検出時刻及びタイムアウト時刻を示す。言い換えれば、矢印の長さは、各メッセージの制限時間を示す。なお、各メッセージの検出時刻は、当該矢印の根元近傍に記載されている。また、以降の説明において、時刻は、時及び分を省略して、秒のみを単位とする。
ネットワーク監視装置1は、一定の監視周期(1(秒))ごとに各メッセージの監視処理を行う。監視処理では、各セッションSN1〜SN3のメッセージが検出済みであるか否かが判定される。ここで、メッセージの検出処理は、TAP2を介して行われる。期待されるメッセージが検出されておらず、かつ、監視処理が行われた時刻がタイムアウト時刻を過ぎている場合、当該セッションSN2のタイムアウトが検出される。タイムアウトしたセッションSN2は、異常と判断される。
ネットワーク監視装置1は、上述した監視処理を行うため、セッションSN1〜SN3ごとに、メッセージの検出時刻及び当該メッセージに対応する応答メッセージの制限時間が登録されたセッション管理テーブルを保持する。ネットワーク監視装置1は、監視処理を行うとき、セッション管理テーブルを参照して、監視処理が行われた時刻(現在時刻)とメッセージの検出時刻の差分が制限時間より大きい場合、タイムアウト時刻が経過したと判断する。
例えば、セッションSN1において、「INVITE」メッセージの検出時刻は、0.2(秒)であるので、制限時間を1(秒)とすると、時刻が1(秒)の時点で、経過時刻は、1−0.2=0.8≦1である。このため、ネットワーク監視装置1は、タイムアウト時刻(0.2(秒)+1(秒)=1.2(秒))が未経過であると判断する。
また、時刻が2(秒)の時点で、経過時刻は、2−0.2=1.8>1であるため、ネットワーク監視装置1は、タイムアウト時刻が経過したと判断する。しかし、「INVITE」メッセージに対応する応答メッセージである「200OK」が、時刻が1.2(秒)のときに検出されているため、セッション管理テーブルの検出時刻が更新されている。このため、ネットワーク監視装置1は、「200OK」メッセージのタイムアウトを検出せず、セッションSN1を異常と判断しない。
また、セッションSN2において、「200OK」メッセージの検出時刻は、2.5(秒)であるので、制限時間を2(秒)とすると、時刻が5(秒)の時点で、経過時刻は、5−2.5=2.5>2である。このため、ネットワーク監視装置1は、タイムアウト時刻が経過したと判断する。このとき、「200OK」メッセージに対応する応答メッセージである「第1ACK」は、検出済みではないため、セッション管理テーブルの検出時刻が更新されていない。「第1ACK」メッセージの検出時刻は、5.2(秒)であり、時刻が5(秒)の時点で行われる監視処理の終了後である。このため、ネットワーク監視装置1は、「第1ACK」メッセージのタイムアウトを検出し(「タイムアウト」参照)、セッションSN2を異常と判断する。
また、セッションSN3において、「200OK」メッセージの検出時刻は、2.5(秒)であるので、制限時間を2(秒)とすると、時刻が5(秒)の時点で、経過時刻は、5−2.5=2.5>2である。このため、ネットワーク監視装置1は、タイムアウト時刻が経過したと判断する。しかし、「200OK」メッセージに対応する応答メッセージである「第1ACK」は、時刻が4.6(秒)のときに検出されているため、セッション管理テーブルの検出時刻が更新されている。このため、ネットワーク監視装置1は、「第1ACK」メッセージのタイムアウトを検出せず、セッションSN3を異常と判断しない。
しかし、実際には、「第1ACK」メッセージの検出時刻(4.6(秒))は、タイムアウト時刻(2.5(秒)+2(秒)=4.5(秒))を経過しているため、正確には、「第1ACK」メッセージは、タイムアウトである。「第1ACK」メッセージのタイムアウトが検出されないのは、周期的な監視処理において、監視周期内にメッセージが検出済みであるか否かのみが判定されるからである。
このように、ネットワーク監視装置1は、タイマを用いずに、一定の監視周期ごとに監視処理を行うことにより、各セッションSN1〜SN3のメッセージを監視する。このため、第1比較例の場合より監視処理の負荷が低減される。
しかし、ネットワーク監視装置1は、周期的な監視処理が行われる時点でメッセージが検出済みであれば、仮に、当該検出時刻が制限時間を超えていても、セッションはタイムアウトしていないと判断するので、監視精度に問題を生ずる。
上述したように、第1比較例に係るネットワーク監視方法によると、各セッションSN1〜SN3のメッセージごとにタイマを用いて監視を行うため、メッセージのタイムアウトを正確に検出することができる。しかし、セッション数が増加するほど、多くのタイマが用いられて、監視処理の負荷が増加するため、リソース不足により、処理可能なセッション数が制限される。したがって、第1比較例に係るネットワーク監視方法は、スケーラビリティに乏しい。
一方、第2比較例に係るネットワーク監視方法によると、タイマを用いずに、一定の監視周期ごとに監視処理を行うため、第1比較例の場合より監視処理の負荷が低減される。このため、処理可能なセッション数が、第1比較例より増加し、スケーラビリティが向上する。しかし、監視周期ごとにしか、メッセージの検出判定を行わないため、当該検出時刻が制限時間を超えていても、タイムアウトを検出することができない。したがって、第2比較例に係るネットワーク監視方法は、第1比較例の場合より監視精度が低い。
(実施例)
そこで、実施例に係るネットワーク監視方法は、周期的に実行される処理により各セッションのメッセージの検出有無を判定し、未検出の場合、次の処理までに制限時間が経過するセッションのメッセージを監視するタイマを起動する。これにより、実施例に係るネットワーク監視方法は、監視精度を維持しつつ、監視処理の負荷を低減する。
図5は、実施例に係るネットワーク監視方法を示すタイムチャートである。図5において、横軸は時刻(秒)を示し、矢印の根元及び先端は、タイマT10〜T13,T30〜T33の開始時刻及び満了(終了)時刻を示す。また、黒丸は、メッセージの検出時刻を示し、黒丸から矢印の根元まで延びる線は、メッセージ検出後の時刻の経過を示す。つまり、黒丸から矢印の先端までの長さは、各メッセージの制限時間を示す。なお、各メッセージの検出時刻は、当該黒丸の根元近傍に記載されている。
また、「CHK」は、監視処理が実行される時刻Tpを示す。監視周期は1(秒)であるため、監視処理は、時刻が0(秒),1(秒),2(秒),・・・,8(秒)のときに行われる。
ネットワーク監視装置1は、監視対象の1以上のセッションSN1〜SN3のうち、要求メッセージに対応する応答メッセージが、要求メッセージの検出時刻Tdから制限時間Tout内に検出されないセッションを異常と判断する。ネットワーク監視装置1は、1以上のセッションSN1〜SN3の各々について、応答メッセージが検出されたか否かを周期的に判定する。より具体的には、ネットワーク監視装置1は、監視周期Tw(本例では1(秒))ごとに行われる監視処理において、応答メッセージが検出済みであるか否かを判定する。
応答メッセージの検出に関する判定処理は、セッション管理テーブル(図8参照)に基づいて行われる。セッション管理テーブルは、セッションSN1〜SN3ごとに、メッセージの検出時刻Td及び当該メッセージに対応する応答メッセージの制限時間Toutが登録されている。メッセージの検出時刻Tdは、メッセージが検出されるたびに更新される。このため、ネットワーク監視装置1は、メッセージの検出時刻Tdが更新されているか否かを判定し、更新されている場合、当該メッセージが検出済みであると判定し、更新されていない場合、当該メッセージが検出されていないと判定する。
ネットワーク監視装置1は、応答メッセージが検出されていないセッションSN1〜SN3のうち、応答メッセージの検出有無の判定処理が次に行われるときまでに制限時間が経過するセッションを判別する。より具体的には、ネットワーク監視装置1は、次の監視処理の時刻までに、タイムアウト時刻(つまりTd+Tout)が経過するセッションを判別する。この判別処理は、以下の式(1)に基づいて、タイムアウト時刻までの残り時間Trを算出することにより行われる。ここで、検出時刻Td及び制限時間Toutは、上記のセッション管理テーブルから取得される。
Tr=Tout−(Tp−Td) 式(1)
ネットワーク監視装置1は、周期的な監視処理において、セッションSN1〜SN3ごとに、残り時間Trを監視周期Twと比較する。ネットワーク監視装置1は、Tr<Twの場合、当該セッションを、次の監視処理の時刻までにタイムアウト時刻が経過するものと判別する。
そして、ネットワーク監視装置1は、当該セッションについて、制限時間Toutの経過により満了(終了)するタイマT10〜T13,T30〜T33を起動する。タイマT10〜T13,T30〜T33は、タイムアウト時刻(つまりTd+Tout)の経過により満了する。なお、Tr≧Twが成立するセッションについては、タイマT10〜T13,T30〜T33は、起動されない。
ネットワーク監視装置1は、タイマT10〜T13,T30〜T33が満了したときに応答メッセージが検出されていない場合、当該セッションSN1〜SN3を異常と判断する。応答メッセージが検出済みであるか否かの判定は、セッション管理テーブルの検出時刻Tdの更新の有無に基づいて行われる。
例えば、セッションSN1において、「200OK」メッセージの検出時刻Td=1.2(秒)であるので、制限時間Tout=2(秒)とすると、時刻Tp=2(秒)の監視処理において、残り時間Tr=2−(2−1.2)=1.2(式(1)参照)である。このため、残り時間Tr<Twが成立しないので、時刻Tp=2(秒)において、「200OK」メッセージに対応する応答メッセージ「第1ACK」を監視するタイマT11は、起動されない(符号P1参照)。
次に、時刻Tp=3(秒)の監視処理において、残り時間Tr=2−(3−1.2)=0.2(式(1)参照)である。このため、残り時間Tr<Twが成立するので、時刻Tp=3(秒)において、「200OK」メッセージに対応する応答メッセージ「第1ACK」を監視するタイマT11が起動される(符号P2参照)。なお、タイマT11の満了時刻(終了時刻)は、検出時刻Tdと制限時間Toutの和から3.2(秒)(=1.2(秒)+2(秒))である。
このように、セッションSN1は、時刻Tp=3(秒)の監視処理において、監視処理が次に行われる時刻(4(秒))までに、制限時間Toutが経過するため、タイマT11が起動される。「第1ACK」メッセージの検出時刻は3.1(秒)であり、制限時間Toutの経過前であるため、ネットワーク監視装置1は、セッションSN1のタイムアウトを検出しない。
また、例えば、セッションSN2において、「200OK」メッセージの検出時刻Td=2.5(秒)であるので、制限時間Tout=2(秒)とすると、時刻Tp=3(秒)の監視処理において、残り時間Tr=2−(3−2.5)=1.5(式(1)参照)である。このため、残り時間Tr<Twが成立しないので、時刻Tp=3(秒)において、「200OK」メッセージに対応する応答メッセージ「第1ACK」を監視するタイマT31は、起動されない(符号P3参照)。
次に、時刻Tp=4(秒)の監視処理において、残り時間Tr=2−(4−2.5)=0.5(式(1)参照)である。このため、残り時間Tr<Twが成立するので、時刻Tp=4(秒)において、「200OK」メッセージに対応する応答メッセージ「第1ACK」を監視するタイマT31が起動される(符号P4参照)。なお、タイマT31の満了時刻(終了時刻)は、検出時刻Tdと制限時間Toutの和から4.5(秒)(=2.5(秒)+2(秒))である。
このように、セッションSN2は、時刻Tp=4(秒)の監視処理において、監視処理が次に行われる時刻(5(秒))までに、制限時間Toutが経過するため、タイマt31が起動される。「第1ACK」メッセージの検出時刻は4.6(秒)であり、制限時間Toutの経過後であるため、ネットワーク監視装置1は、セッションSN2のタイムアウトを検出し(「タイムアウト」参照)、セッションSN2を異常と判断する。
次に、実施例に係るネットワーク監視装置1の構成を説明する。図6は、実施例に係るネットワーク監視装置の構成を示す構成図である。
ネットワーク監視装置1は、例えばサーバ装置などのコンピュータ装置である。ネットワーク監視装置1は、CPU10、ROM(Read Only Memory)11、RAM(Random Access Memory)12、HDD13、通信処理部14、可搬型記憶媒体用ドライブ15、入力処理部16、及び画像処理部17などを備えている。
CPU10は、演算処理手段であり、ネットワーク監視プログラムに従って、上述したネットワーク監視方法を実行する。CPU10は、各部11〜17とバス18を介して通信可能に接続されている。なお、ネットワーク監視装置1は、ソフトウェアにより動作するものに限定されず、CPU10に代えて、特定用途向け集積回路などのハードウェアが用いられてもよい。
RAM12は、CPU10のワーキングメモリとして用いられる。また、ROM11及びHDD13は、CPU10を動作させるネットワーク監視プログラムなどを記憶する記憶手段として用いられる。通信処理部14は、例えばネットワークカードであり、LANなどのネットワークを介して、TAP2などの外部装置と通信を行う通信手段である。
可搬型記憶媒体用ドライブ15は、可搬型記憶媒体150に対して、情報の書き込みや情報の読み出しを行う装置である。可搬型記憶媒体150の例としては、USBメモリ(USB: Universal Serial Bus)、CD−R(Compact Disc Recordable)、及びメモリカードなどが挙げられる。なお、ネットワーク監視プログラムは、可搬型記憶媒体150に格納されてもよい。
ネットワーク監視装置1は、情報の入力操作を行うための入力デバイス160、及び、画像を表示するためのディスプレイ170を、さらに備える。入力デバイス160は、キーボード及びマウスなどの入力手段であり、入力された情報は、入力処理部16を介して
CPU10に出力される。ディスプレイ170は、液晶ディスプレイなどの画像表示手段であり、表示される画像データは、CPU10から画像処理部17を介してディスプレイに出力される。なお、入力デバイス160及びディスプレイ170に代えて、これらの機能を備えるタッチパネルなどのデバイスを用いることもできる。
CPU10は、ROM11、またはHDD13などに格納されているプログラム、または可搬型記憶媒体用ドライブ15が可搬型記憶媒体150から読み取ったプログラムを実行する。このプログラムには、OS(Operating System)だけでなく、上記のネットワーク監視プログラムも含まれる。なお、プログラムは、通信処理部14を介してダウンロードされたものであってもよい。
CPU10は、ネットワーク監視プログラムを実行すると、複数の機能が形成される。図7は、ネットワーク監視装置1の機能構成例を示す構成図である。図7には、CPU10に形成される機能及びHDD13の格納情報の一例が示されている。
CPU10は、キャプチャ処理部100と、解析部101と、スレッド起動判断部102と、スレッド起動処理部103と、周期処理スレッド104と、1以上のタイマ処理スレッド105と、タイムアウト通知部106とを有する。このうち、周期処理スレッド104及びタイマ処理スレッド105は、スレッド起動処理部103により生成される。周期処理スレッド104は、ネットワーク監視プログラムの実行開始時に生成され、タイマ処理スレッド105は、必要に応じて生成される。
また、HDD(記憶部)13は、セッション管理テーブル(テーブル)130を記憶する。なお、セッション管理テーブル130の記憶手段は、HDD13に限定されず、ROM11や可搬型記憶媒体150であってもよい。
図8には、セッション管理テーブル130の一例が示されている。セッション管理テーブル130は、セッションSN1〜SN3ごとに、メッセージの検出時刻、制限時間Tout、及び監視種別が登録されている。メッセージの検出時刻及び制限時間Toutは、メッセージが検出されるごとに更新される。制限時間Toutは、当該メッセージに応じて異なる。図8では、セッションSN1〜SN3の各制限時間Toutを、仮にTout1,Tout2,Tout3として記載している。監視種別は、「0」である場合、当該応答メッセージが、タイマ処理スレッド105によるタイマ監視の対象であることを示し、「1」である場合、当該応答メッセージが、周期処理スレッド104による周期的な監視の対象であることを示す。
キャプチャ処理部100は、通信処理部14を介して、TAP2からパケットを取得する。キャプチャ処理部100は、取得したパケットを解析部101に出力する。
解析部(判断処理部)101は、パケットの解析を行い、各セッションSN1〜SN3のメッセージの監視結果に基づいて、通信品質を判断する。例えば、解析部101は、タイムアウト通知部106からセッションSN1〜SN3のタイムアウトが通知された場合、当該セッションを異常と判断する。また、解析部101は、キャプチャ処理部100から入力されたメッセージの種類などの情報に基づいて、セッション管理テーブル130を更新する。
スレッド起動判断部102は、上記の式(1)に基づいて、タイマ処理スレッド105の起動可否を判断する。スレッド起動判断部102は、タイマ処理スレッド105を起動すると判断した場合、スレッド起動処理部103に起動処理を依頼する。
スレッド起動処理部103は、周期処理スレッド104及びタイマ処理スレッド105を生成し、起動する。周期処理スレッド104は、一定の監視周期Twで、各セッションSN1〜SN3のメッセージのタイムアウトを監視する。周期処理スレッド104は、1以上のセッションSN1〜SN3の各々について、メッセージが検出されたか否かを周期的に判定する。このため、周期処理スレッド104による監視処理の負荷は、第1比較例のように、セッションごとの個別のタイマにより応答メッセージを監視する場合より低い。
周期処理スレッド104は、メッセージが検出されていないセッションのうち、メッセージ検出の判定処理が次に行われるときまでに制限時間Toutが経過するセッションについて、制限時間Toutの経過により満了するタイマT10〜T13、T30〜T33を起動する。より具体的には、周期処理スレッド104は、タイマT10〜T13、T30〜T33により、当該セッションのメッセージを監視するタイマ処理スレッド105を起動する。
タイマ処理スレッド105は、タイムアウトまでの残り時間Tr(式(1)参照)が監視周期Twより少ないセッションSN1〜SN3について、タイマT10〜T13、T30〜T33を用いてメッセージのタイムアウトを監視する。
タイムアウト通知部106は、周期処理スレッド104またはタイマ処理スレッド105がタイムアウトを検出した場合、その旨を解析部101に通知する。以下に、ネットワーク監視プログラムの各処理のフローチャートを参照して、各部を説明する。
図9は、監視処理の一例を示すフローチャートである。まず、スレッド起動処理部103は、周期処理スレッド104を生成し、起動する(ステップSt1)。周期処理スレッド104は、ネットワーク監視プログラムの実行中、常時、処理を行う。なお、周期処理スレッド104の処理は、後述する。
次に、キャプチャ処理部100は、通信処理部14を介して、TAP2からパケットを取得する(ステップSt2)。取得されたパケットは、解析部101により解析される(ステップSt3)。解析では、パケットから、セッション番号(SN1〜SN3)やメッセージの種類などの情報が抽出される。
解析の結果、パケットが、セッションを切断するものである場合(ステップSt4のYes)、解析部101は、セッション管理テーブル130から当該セッションの登録を削除する(ステップSt14)。すなわち、解析部101は、メッセージの種類に基づいて、セッションが終了するか否かを判定し、セッションが終了する場合、セッション管理テーブル130からセッションの登録を削除する。その後、ステップSt13の処理(後述)が行われる。
一方、解析の結果、パケットが、セッションを切断するものではない場合(ステップSt4のNo)、解析部101は、パケットが、新規のセッションのものであるか否かを判定する(ステップSt5)。パケットが新規のセッションのものである場合(ステップSt5のYes)、解析部101は、セッション管理テーブル130に当該セッションを登録して、メッセージの検出時刻Td及び制限時間Toutを入力する(ステップSt15)。すなわち、解析部101は、メッセージの種類に基づいて、当該セッションが新規か否かを判定し、新規セッションの場合、セッション管理テーブル130に当該セッションを登録する。その後、ステップSt10の処理(後述)が行われる。
パケットが新規のセッションのものではない場合(ステップSt5のNo)、解析部101は、当該セッションについて、セッション管理テーブル130のメッセージの検出時刻Td及び制限時間Toutを更新する(ステップSt6)。すなわち、解析部101は、メッセージの種類に基づいて、当該セッションが既存か否かを判定し、既存セッションの場合、セッション管理テーブル130の当該セッションの検出時刻Td及び制限時間Toutを更新する。
次に、スレッド起動判断部102は、セッション管理テーブル130を参照し、当該セッションの監視種別が「0」(タイマ監視)である場合(ステップSt7のYes)、スレッド起動処理部103に、当該タイマ処理スレッド105の終了を要求する(ステップSt8)。そして、スレッド起動判断部102は、監視種別を「1」(周期監視)に変更する(ステップSt9)。
次に、スレッド起動判断部102は、上記の式(1)により残り時間Trを算出し、残り時間Tr(=Tout−(Tp−Td))が監視周期Twより小さいか否かを判定する(ステップSt10)。これにより、既存セッションのメッセージが検出された場合、使用中のタイマを停止し、周期処理スレッド104による監視処理が行われる前に、タイマ起動の可否が改めて判定される。また、スレッド起動判断部102は、当該セッションの監視種別が「0」(タイマ監視)ではない場合(ステップSt7のNo)、ステップSt8,St9の処理を行わずに、ステップSt10の処理を行う。
残り時間Trが監視周期Twより小さい場合(ステップSt10のYes)、スレッド起動判断部102は、セッション管理テーブルの当該セッションの監視種別を「0」(タイマ監視)にする(ステップSt11)。そして、スレッド起動判断部102は、スレッド起動処理部103に、当該セッションを監視するタイマ処理スレッド105の起動を依頼する(ステップSt12)。
次に、CPU10は、監視処理を終了しない場合(ステップSt13のNo)、ステップSt2の処理を再び実行し、そうでない場合(ステップSt13のYes)、監視処理を終了する。ステップSt13の処理は、残り時間Trが監視周期Tw以上である場合(ステップSt10のNo)も行われる。このようにして、監視処理は行われる。
次に、周期処理スレッド(周期処理部)104の処理を説明する。図10は、周期処理スレッドの処理の一例を示すフローチャートである。
まず、周期処理スレッド104は、監視周期Twだけ待機する(ステップSt31)。次に、周期処理スレッド104は、セッション管理テーブル130に登録されたセッションSN1〜SN3の有無を判定する(ステップSt32)。
セッションSN1〜SN3が有る場合(ステップSt32のYes)、周期処理スレッド104は、セッションSN1〜SN3の1つを選択して、セッション管理テーブル130から検出時刻Td、制限時間Tout、及び監視種別を取得する(ステップSt33)。セッションSN1〜SN3が無い場合(ステップSt32のNo)、ステップSt41の処理(後述)が行われる。
周期処理スレッド104は、選択したセッションの監視種別が「1」(周期監視)である場合(ステップSt34のYes)、当該セッションの検出時刻Tdが更新済みであるか否かを判定する(ステップSt35)。周期処理スレッド104は、前回の判定における検出時刻Tdを保持し、検出時刻Tdが前回の値と異なる場合、検出時刻Tdが更新済みであると判定する。これにより、周期処理スレッド104は、各セッションSN1〜SN3について、メッセージが検出されたか否かを周期的に判定する。
当該セッションの検出時刻Tdが更新済みである場合(ステップSt35のYes)、ステップSt40の処理(後述)が行われる。つまり、当該セッションのメッセージが検出済みである場合、他のセッションが選択され、同様の処理が行われる。
当該セッションの検出時刻Tdが更新済みではない場合(ステップSt35のNo)、現在時刻Tpと検出時刻Tdの差分が、制限時間Toutより大きいか否かを判定する(ステップSt36)。すなわち、周期処理スレッド104は、監視処理を行う時刻(図5の1(秒)、2(秒)、3(秒)・・・・)において、当該セッションのタイムアウトが発生しているか否かを判定する。これにより、周期処理スレッド104は、複数のセッションSN1〜SN3のうち、メッセージが検出されておらず、制限時間Toutが経過したセッションを判別する。
現在時刻Tpと検出時刻Tdの差分が、制限時間Toutより大きい場合(ステップSt36のYes)、周期処理スレッド104は、タイムアウト通知部106に、タイムアウトの通知を依頼する(ステップSt42)。解析部101は、タイムアウト通知部106からタイムアウトを通知されると、当該セッションを異常と判断する。したがって、周期処理スレッド104は、周期的な監視処理の間に発生したタイムアウトを検出できる。
現在時刻Tpと検出時刻Tdの差分が、制限時間Tout以下である場合(ステップSt36のNo)、周期処理スレッド104は、上記の式(1)により残り時間Trを算出し、残り時間Trが監視周期Twより小さいか否かを判定する(ステップSt37)。すなわち、周期処理スレッド104は、メッセージが検出されていないセッションSN1〜SN3のうち、ステップSt35の判定処理が次に行われるときまでに制限時間Toutが経過するセッションを判別する。このとき、周期処理スレッド104は、セッション管理テーブル130から取得した検出時刻Td及び制限時間Toutと、現在時刻Tpと、監視周期Twとに基づき、上記の判別処理を容易に行うことができる。
残り時間Trが監視周期Twより小さい場合(ステップSt37のYes)、周期処理スレッド104は、セッション管理テーブル130の当該セッションの監視種別を「0」(タイマ監視)に変更する(ステップSt38)。次に、周期処理スレッド104は、スレッド起動処理部103に、タイマ処理スレッド105の起動を依頼する(ステップSt39)。すなわち、周期処理スレッド104は、ステップSt35の判定処理が次に行われるときまでに制限時間Toutが経過するセッションについて、制限時間Toutの経過により満了するタイマT10〜T13、T30〜T33を起動する。
このため、タイマT10〜T13、T30〜T33は、メッセージが未検出である全てのセッションではなく、次の一周期Tw内に制限時間Toutが経過するセッションだけについて起動される。したがって、起動されるタイマ数が少なくて済むので、監視処理の負荷が低減される。
次に、周期処理スレッド104は、セッション管理テーブル130に登録されたセッションSN1〜SN3のうち、未選択のセッションが有るか否かを判定する(ステップSt40)。ステップSt40の処理は、残り時間Trが監視周期Tw以上である場合(ステップSt37のNo)も行われる。
未選択のセッションが有る場合(ステップSt40のYes)、周期処理スレッド104は、ステップSt33の処理を再び実行する。すなわち、周期処理スレッド104は、他のセッションについても、上述した処理を行う。
未選択のセッションが無い場合(ステップSt40のNo)、CPU10は、監視処理を終了するか否かを判定する(ステップSt41)。CPU10は、監視処理を終了しない場合(ステップSt41のNo)、ステップSt31の処理を再び実行し、そうでない場合(ステップSt41のYes)、監視処理を終了する。このようにして、周期処理スレッド104の処理は行われる。
次に、タイマ処理スレッド105の処理を説明する。図11は、タイマ処理スレッドの処理の一例を示すフローチャートである。
まず、タイマ処理スレッド105は、セッション管理テーブル130から、当該セッションの検出時刻Td及び制限時間Toutを取得する(ステップSt21)。次に、タイマ処理スレッド105は、制限時間Toutと検出時刻Tdの差分(Tout−Td)だけ待機する(ステップSt22)。
この待機処理は、タイマT10〜T13、T30〜T33の計時処理により行われる。タイマT10〜T13、T30〜T33の長さ(満了までの計時する時間量)は、タイマ処理スレッド105の起動条件(Tr<Tw)により、監視周期Twより小さい。このため、タイマT10〜T13、T30〜T33による監視処理の負荷は、第1比較例の場合より小さい。
待機処理の終了後、つまり、タイマT10〜T13、T30〜T33の満了後、タイマ処理スレッド105は、当該セッションが終了したか、またはセッション管理テーブル130の検出時刻Tdが更新済みであるか否かを判定する(ステップSt23)。すなわち、タイマ処理スレッド105は、メッセージが検出済みであるか否かを判定する。
当該セッションが終了しておらず、かつセッション管理テーブル130の検出時刻Tdが更新済みではない場合(ステップSt23のNo)、タイマ処理スレッド105は、タイムアウト通知部106に、タイムアウトの通知を依頼する(ステップSt24)。つまり、タイマ処理スレッド105は、タイマT10〜T13、T30〜T33が満了したときに、メッセージが検出されていない場合、当該セッションのタイムアウトを検出する。
解析部101は、タイムアウト通知部106からタイムアウトを通知されると、当該セッションを異常と判断する。つまり、解析部101は、タイマT10〜T13、T30〜T33が満了したときにメッセージが検出されていない場合、当該セッションを異常と判断する。
このように、タイマ処理スレッド105は、タイマT10〜T13、T30〜T33によりセッションSN1〜SN3のタイムアウトを検出するので、メッセージの監視精度が、第2比較例より良好であり、第1比較例と同程度に維持される。
次に、タイマ処理スレッド105は、セッション管理テーブル130の当該セッションの監視種別を「1」(周期監視)に変更する(ステップSt25)。そして、タイマ処理スレッド105は、処理を終了する。つまり、タイマ処理スレッド105のプロセスは、CPU10から削除される。
一方、当該セッションが終了し、またはセッション管理テーブル130の検出時刻Tdが更新済みである場合(ステップSt23のYes)、タイマ処理スレッド105は、ステップSt24の処理を行わずに、ステップSt25の処理を行う。この場合、メッセージが検出済みであるため、タイマ処理スレッド105は、タイムアウトを検出せずに、処理を終了する。このようにして、タイマ処理スレッド105の処理は行われる。
これまで述べたように、実施例に係るネットワーク監視装置1は、監視対象の1以上のセッションSN1〜SN3のうち、要求メッセージに対応する応答メッセージが、要求メッセージの検出時刻Tdから制限時間Tout内に検出されないセッションを異常と判断する。このため、ネットワーク監視装置1は、セッションSN1〜SN3ごとに通信品質を判断できる。
周期処理部(周期処理スレッド)104は、1以上のセッションSN1〜SN3の各々について、応答メッセージが検出されたか否かを周期的に判定する。このため、ネットワーク監視装置1は、セッションごとの個別のタイマにより応答メッセージを監視する場合より、監視処理の負荷が低減される。
周期処理部は、応答メッセージが検出されていないセッションのうち、当該判定処理が次に行われるときまでに制限時間Toutが経過するセッションについて、制限時間の経過により満了するタイマT10〜T13、T30〜T33を起動する。判断処理部(解析部)101は、タイマT10〜T13、T30〜T33が満了したときに応答メッセージが検出されていない場合、当該セッションを異常と判断する。
このため、ネットワーク監視装置1は、応答メッセージが未検出である全てのセッションではなく、次の一周期Tw内に制限時間Toutが経過するセッションだけについてタイマT10〜T13、T30〜T33を起動する。したがって、タイマ数だけでなく、タイマT10〜T13、T30〜T33の計時する時間量も少なく、監視処理の負荷が低減される。さらに、ネットワーク監視装置1は、タイマT10〜T13、T30〜T33を用いることにより、応答メッセージの監視精度を維持することができる。
よって、実施例に係るネットワーク監視装置1によると、監視処理の負荷を効果的に低減することができる。
また、実施例に係るネットワーク監視システムは、2つの通信装置(第1及び第2サーバ)31,32と、ネットワーク監視装置1とを有する。2つの通信装置31,32は、1以上のセッションSN1〜SN3を実行して、要求メッセージ及び応答メッセージを送受信する。ネットワーク監視装置1は、1以上のセッションSN1〜SN3のうち、要求メッセージに対応する応答メッセージが、要求メッセージの検出時刻Tdから制限時間Tout内に検出されないセッションを異常と判断する。
ネットワーク監視装置1は、周期処理部(周期処理スレッド)104と、判断処理部(解析部)101とを有する。周期処理部104は、1以上のセッションSN1〜SN3の各々について、応答メッセージが検出されたか否かを周期的に判定する。周期処理部104は、応答メッセージが検出されていないセッションのうち、当該判定処理が次に行われるときまでに制限時間Toutが経過するセッションについて、制限時間Toutの経過により満了するタイマT10〜T13、T30〜T33を起動する。判断処理部101は、タイマT10〜T13、T30〜T33が満了したときに応答メッセージが検出されていない場合、当該セッションを異常と判断する。
実施例に係るネットワーク監視システムは、上記のネットワーク監視装置1を含むので、上述した内容と同様の作用効果を奏する。
また、実施例に係るネットワーク監視方法は、監視対象の1以上のセッションSN1〜SN3のうち、要求メッセージに対応する応答メッセージが、要求メッセージの検出時刻Tdから制限時間Tout内に検出されないセッションを異常と判断する方法である。実施例に係るネットワーク監視方法では、以下の工程(1),(2)をコンピュータが実行する。
工程(1):1以上のセッションSN1〜SN3の各々について、応答メッセージが検出されたか否かを周期的に判定する。応答メッセージが検出されていないセッションのうち、当該判定処理が次に行われるときまでに制限時間Toutが経過するセッションについて、制限時間Toutの経過により満了するタイマT10〜T13、T30〜T33を起動する。
工程(2):タイマT10〜T13、T30〜T33が満了したときに応答メッセージが検出されていない場合、当該セッションを異常と判断する。
実施例に係るネットワーク監視方法は、上記のネットワーク監視装置1と同様の構成を含むので、上述した内容と同様の作用効果を奏する。
以上、好ましい実施例を参照して本発明の内容を具体的に説明したが、本発明の基本的技術思想及び教示に基づいて、当業者であれば、種々の変形態様を採り得ることは自明である。
なお、以上の説明に関して更に以下の付記を開示する。
(付記1) 監視対象の1以上のセッションのうち、要求メッセージに対応する応答メッセージが、前記要求メッセージの検出時刻から制限時間内に検出されないセッションを異常と判断するネットワーク監視装置において、
前記1以上のセッションの各々について、前記応答メッセージが検出されたか否かを周期的に判定し、前記応答メッセージが検出されていないセッションのうち、当該判定処理が次に行われるときまでに前記制限時間が経過するセッションについて、前記制限時間の経過により満了するタイマを起動する周期処理部と、
前記タイマが満了したときに前記応答メッセージが検出されていない場合、当該セッションを異常と判断する判断処理部とを有することを特徴とするネットワーク監視装置。
(付記2) 前記周期処理部は、前記1以上のセッションのうち、前記応答メッセージが検出されておらず、前記制限時間が経過したセッションを判別し、
前記判断処理部は、当該セッションを異常と判断することを特徴とする付記1に記載のネットワーク監視装置。
(付記3) 前記1以上のセッションの各々について、前記要求メッセージの検出時刻及び前記制限時間が登録されたテーブルを記憶する記憶部を、さらに有し、
前記周期処理部は、前記テーブルから取得した前記要求メッセージの検出時刻及び前記制限時間と、現在時刻と、前記判定処理の周期とに基づき、前記1以上のセッションのうち、前記判定処理が次に行われるときまでに前記制限時間が経過するセッションを判別することを特徴とする付記1または2に記載のネットワーク監視装置。
(付記4) 1以上のセッションを実行して、要求メッセージ及び応答メッセージを送受信する2つの通信装置と、
前記1以上のセッションのうち、前記要求メッセージに対応する前記応答メッセージが、前記要求メッセージの検出時刻から制限時間内に検出されないセッションを異常と判断するネットワーク監視装置とを有し、
前記ネットワーク監視装置は、
前記1以上のセッションの各々について、前記応答メッセージが検出されたか否かを周期的に判定し、前記応答メッセージが検出されていないセッションのうち、当該判定処理が次に行われるときまでに前記制限時間が経過するセッションについて、前記制限時間の経過により満了するタイマを起動する周期処理部と、
前記タイマが満了したときに前記応答メッセージが検出されていない場合、当該セッションを異常と判断する判断処理部とを有することを特徴とするネットワーク監視システム。
(付記5) 前記周期処理部は、前記1以上のセッションのうち、前記応答メッセージが検出されておらず、前記制限時間が経過したセッションを判別し、
前記判断処理部は、当該セッションを異常と判断することを特徴とする付記4に記載のネットワーク監視システム。
(付記6) 前記ネットワーク監視装置は、前記1以上のセッションの各々について、前記要求メッセージの検出時刻及び前記制限時間が登録されたテーブルを記憶する記憶部を、さらに有し、
前記周期処理部は、前記テーブルから取得した前記要求メッセージの検出時刻及び前記制限時間と、現在時刻と、前記判定処理の周期とに基づき、前記1以上のセッションのうち、前記判定処理が次に行われるときまでに前記制限時間が経過するセッションを判別することを特徴とする付記4または5に記載のネットワーク監視システム。
(付記7) 監視対象の1以上のセッションのうち、要求メッセージに対応する応答メッセージが、前記要求メッセージの検出時刻から制限時間内に検出されないセッションを異常と判断するネットワーク監視方法において、
前記1以上のセッションの各々について、前記応答メッセージが検出されたか否かを周期的に判定し、前記応答メッセージが検出されていないセッションのうち、当該判定処理が次に行われるときまでに前記制限時間が経過するセッションについて、前記制限時間の経過により満了するタイマを起動する工程と、
前記タイマが満了したときに前記応答メッセージが検出されていない場合、当該セッションを異常と判断する工程とを、コンピュータが実行することを特徴とするネットワーク監視方法。
(付記8) 前記タイマを起動する工程において、前記1以上のセッションのうち、前記応答メッセージが検出されておらず、前記制限時間が経過したセッションを判別し、
前記セッションの異常を判断する工程において、当該セッションを異常と判断することを特徴とする付記7に記載のネットワーク監視方法。
(付記9) 前記タイマを起動する工程において、前記1以上のセッションの各々について、テーブルから取得した前記要求メッセージの検出時刻及び前記制限時間と、現在時刻と、前記判定処理の周期とに基づき、前記1以上のセッションのうち、前記判定処理が次に行われるときまでに前記制限時間が経過するセッションを判別することを特徴とする付記7または8に記載のネットワーク監視方法。