説明

メッセージ判別プログラム、メッセージ判別装置及びメッセージ判別方法

【課題】メッセージの判別可能性を上げる。
【解決手段】メッセージ組立手段1bには、対象パケット抽出手段1aより対象のパケットが順次送られてくる。メッセージ組立手段1bは、入力したパケット群を所定の規則で区切って仮メッセージを組み立て、仮メッセージ記憶手段1eに格納する。メッセージ分割手段1cは、仮メッセージ記憶手段1eから仮メッセージを読み出してリクエストメッセージとレスポンスメッセージに分類し、それぞれの出現数を算出する。そして、出現数が一致しないときは、少ない方に分類された仮メッセージを分割し、出現数が一致した時点で仮メッセージを本メッセージとし、本メッセージ記憶手段1fに格納する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、ネットワークを介して受け渡されるパケットからメッセージを判別するメッセージ判別プログラム、メッセージ判別装置及びメッセージ判別方法に関する。
【背景技術】
【0002】
近年、IT(Information Technology)システムの複雑化が進んでおり、例えば、Webサーバ、アプリケーションサーバ、DB(DataBase)サーバがメッセージを交換しながら連携してクライアントからの要求を処理するWeb3階層システムがある。このように、複数のサーバが連携して処理を行うシステムでは、個々のサーバの挙動だけでなく、システム全体として稼働状況を分析する必要がある。そこで、このようなシステムの稼働状況を把握するため、送受信されるメッセージからトランザクション処理を分析するシステム分析方法がある。
【0003】
システム分析では、複数サーバ間で送受信される通信データを傍受し、傍受した内容を適切に分割してメッセージ(リクエストとレスポンス)を再構築する。そして、再構築したメッセージからトランザクションを組み立て、組み立てたトランザクションを基にシステムの挙動を分析する。メッセージの再構築に際しては、パケット単位で入力する通信データの内容を解析してメッセージの切れ目を検出し、切れ目ごとにまとめたパケット群からメッセージを再構築する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−11683号公報
【特許文献2】特開2007−304647号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来のメッセージを再構築する技術は、傍受するパケットに欠損がなく、かつメッセージ再構築処理を行う処理部がメッセージを識別するためのプロトコルに対応している場合にのみ有用である。実際の運用では、パケットを欠損なく傍受することは不可能であり、すべてのメッセージのプロトコルに対応するメッセージ判別手順を予め用意しておくことも困難である。そのため、傍受したパケットに欠損がある場合や、メッセージのプロトコルに対応していない場合には、傍受したパケット群を適切なメッセージ単位に分割することができず、メッセージの判別が困難であった。言い換えると、このような場合には、判別されたメッセージが正しいメッセージである可能性(以下、これをメッセージの判別可能性とする)が低下していた。さらに、メッセージの判別可能性の低下が起きると、これを用いたシステム分析の精度も下がってしまう。
【0006】
このような点に鑑み、傍受したパケット群を適切に分割してメッセージを組み立て、メッセージの判別可能性を向上させるメッセージ判別プログラム、メッセージ判別装置及びメッセージ判別方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、ネットワークを介して受け渡されるパケット群からメッセージを判別するメッセージ判別プログラムおいて、コンピュータに、メッセージ組立手順及びメッセージ分割手順を実行させるメッセージ判別プログラムが提供される。メッセージ組立手順では、パケット群を取得し、このパケット群を所定の規則に基づいてメッセージ単位に区切る。そして、メッセージ単位に区切ったパケット群から仮メッセージを組み立て、仮メッセージ記憶手段に記憶する。メッセージ分割手順では、所定の期間に受け渡された仮メッセージ群を仮メッセージ記憶手段から読み出し、仮メッセージ群をリクエストメッセージとレスポンスメッセージに分類して所定の期間におけるそれぞれの出現数を算出して比較する。そして、リクエストメッセージとレスポンスメッセージの出現数が一致しないときは、出現数が少ない方に分類した仮メッセージを分割する処理を出現数が一致するまで繰り返す。
【0008】
また、上記課題を解決するために、コンピュータが上記のメッセージ判別プログラムを実行するメッセージ判別装置と、同様の処理手順を実行するメッセージ判別方法と、が提供される。
【発明の効果】
【0009】
開示のメッセージ判別プログラム、メッセージ判別装置及びメッセージ判別方法によれば、所定の期間に受け渡されるリクエストメッセージとレスポンスメッセージの出現数が同じとなるようにパケットを区切り、メッセージを再構築することができる。これにより、パケット群から判別したメッセージが適切なメッセージである可能性が高くなり、メッセージの判別可能性を向上させることができる。
【図面の簡単な説明】
【0010】
【図1】第1の実施の形態のメッセージ判別装置の構成例を示した図である。
【図2】第2の実施の形態のシステム構成を示す図である。
【図3】パケットに含まれる情報を示した図である。
【図4】キャプチャサーバのハードウェア構成例を示すブロック図である。
【図5】キャプチャサーバの機能ブロックを示す図である。
【図6】分割対象範囲の選択処理を説明する図である。
【図7】パケットバッファ、仮メッセージバッファ及び本メッセージバッファが記憶するデータの一例を示した図である。
【図8】キャプチャサーバへ入力するパケットの一例を示した図である。
【図9】パケットの通信方向が反転した場合の処理を示している。
【図10】パケットの通信方向が反転し、かつ直前のレスポンスパケットのサイズがMSSに満たない場合の処理を示している。
【図11】直前のリクエストパケットのサイズがMSSに満たない場合の処理を示している。
【図12】パケットの通信方向が反転し、かつ直前のリクエストパケットのサイズがMSSに満たない場合の処理を示している。
【図13】直前のレスポンスパケットのサイズがMSSに満たない場合の処理を示している。
【図14】分割対象範囲の選択処理を示した図である。
【図15】分割対象範囲の仮メッセージの分割処理を示した図である。
【図16】メッセージ判別処理におけるメッセージ組立処理の手順を示したフローチャートである。
【図17】メッセージ判別処理におけるメッセージ分離処理の手順を示したフローチャートである。
【図18】メッセージ分割処理における分割対象選択処理の手順を示したフローチャートである。
【図19】メッセージ分割処理における分割対象の分割処理の手順を示したフローチャートである。
【発明を実施するための形態】
【0011】
以下、実施の形態を、図面を参照して説明する。
図1は、第1の実施の形態のメッセージ判別装置の構成例を示した図である。
メッセージ判別装置1は、ネットワーク3を介して、サーバ2a,2b,・・・及びクライアント(装置)4a,4b,・・・に接続されている。サーバ2a,2b,・・・は、クライアント4a,4b,・・・からのサービス要求に応じて、サービスを提供する。サーバ2a,2b、・・・は、互いに連携してサービス処理を実行する。パケット5は、装置間でデータを受け渡される際のデータのまとまりで、通信の単位である。また、パケット5は、最大サイズが決められている。メッセージは、装置間で受け渡されるデータのまとまりで、データが大きい場合には、複数のパケットに分割して送受信される。また、メッセージには、最初に何らかの処理の要求元から送信されるリクエストメッセージと、リクエストメッセージに対し、要求先から送信されるレスポンスメッセージとがある。1つのリクエストメッセージに対し、1つのレスポンスメッセージが受け渡される1対1の対応関係を有するとする。
【0012】
メッセージ判別装置1は、ネットワーク3を介してサーバ−クライアント間、あるいはサーバ−サーバ間で受け渡されるパケット5を取得し、メッセージを判別し、再構築する。そのため、メッセージ判別装置1は、対象パケット抽出手段1a、メッセージ組立手段1b、メッセージ分割手段1c、パケット記憶手段1d、仮メッセージ記憶手段1e及び本メッセージ記憶手段1fを有する。なお、対象パケット抽出手段1a、メッセージ組立手段1b及びメッセージ分割手段1cの各処理手段は、コンピュータがメッセージ判別プログラムを実行することにより、その処理機能が実現される。
【0013】
メッセージ判別装置1は、ネットワーク3を介してサーバ−サーバ間あるいはサーバ−クライアント間で受け渡されるパケット5をリアルタイムで取得する。また、観測装置が観測したパケットの到着時刻及びパケットデータなどを記録したパケット通信ログを入力するとしてもよい。
【0014】
対象パケット抽出手段1aは、パケット5を取得し、予め規定されているメッセージ判別の対象となるパケットを抽出してメッセージ組立手段1bに送る。対象パケット抽出手段1aは、規定に基づいて入力したパケットが対象パケットであるか否かを判定する。例えば、メッセージが複数のアプリケーションに対応するような場合、特定のアプリケーションに対応するパケットを対象、あるいは対象外として規定しておく。
【0015】
メッセージ組立手段1bは、対象パケット抽出手段1aが対象であると判定したパケットを順次入力する。そして、入力したパケット群を所定の規則に基づいてメッセージ単位に区切り、仮メッセージを組み立てる。所定の規則は、メッセージ組立手段1bにおいて解析が可能なパケットの特徴に基づき、パケット群からメッセージ単位の区切りを検出するための規則である。例えば、パケットの最大サイズが決まっており、リクエストメッセージとレスポンスメッセージは1対1に対応付けられるという想定環境において、入力したパケットのサイズが最大サイズであれば続きが送信されると判断する。一方、最大サイズより小さければそのパケットがメッセージの最後のパケットであると判定して、メッセージ単位の区切りとする。区切りの検出は、送信元や宛先、直前のパケットの通信時刻からの経過時間などを用いることもできる。そして、直前に組み立てたメッセージの次のパケットから、今回検出したメッセージの最後のパケットまでのパケットをまとめ、仮メッセージを組み立てる。仮メッセージは、仮メッセージ記憶手段1eに記憶する。このとき、例えば、先頭のパケットの通信時刻を仮メッセージの通信時刻として仮メッセージとともに記憶しておく。直前のメッセージの組み立てに用いたパケットの次のパケットから今回検出した区切りまでのパケットは、仮メッセージ生成までパケット記憶手段1dに一時的に保存しておく。なお、仮メッセージとは、パケットサイズなどによって判断される1つのメッセージである。パケットサイズのみによる判断では、メッセージの区切りを誤認識する可能性があるため、メッセージ分割手段1cによる確定まで、仮のメッセージとして取り扱う。
【0016】
メッセージ分割手段1cは、仮メッセージ記憶手段1eに格納されている所定の期間の仮メッセージを読み出し、リクエストメッセージとレスポンスメッセージに分類して、その数を一致させるように、仮メッセージを分割する。メッセージ組立手段1bによるメッセージ組立では、偶然に最大サイズのパケットの整数倍と同じ長さのメッセージがあり、かつ、同方向のメッセージが続いた場合に、複数のメッセージを1つのメッセージとして判定してしまうことがある。また、メッセージの最後のパケットが欠損した場合も同様である。このような誤判定を防ぐため、複数のメッセージを1つのメッセージと判定してしまった可能性がある仮メッセージを検出して分割する。所定の期間は、例えば、一連のサービス処理が実行される期間など、ひとまとまりのメッセージ群が受け渡しされる期間とする。そして、仮メッセージをリクエストメッセージとレスポンスメッセージに分類し、所定の期間にそれぞれが出現した出現数を算出する。想定環境であれば、リクエストメッセージとレスポンスメッセージとは等しくなる。そこで、所定の期間のリクエストメッセージとレスポンスメッセージの出現数を比較して一致しているときは、仮メッセージは正しいと判定し、本メッセージとして本メッセージ記憶手段1fに格納する。一致していないときは、少ない方のメッセージのどれかが、複数のメッセージを1つのメッセージとして誤認されていることになる。そこで、少ない方に分類されている仮メッセージのうち、サイズが最大のものを選択して分割する。分割後、再度リクエストメッセージとレスポンスメッセージの出現数を算出し、同様の手順で出現数が一致するまで分割を繰り返す。リクエストメッセージとレスポンスメッセージの出現数が一致したときは、この状態の仮メッセージを本メッセージとして本メッセージ記憶手段1fに格納する。
【0017】
パケット記憶手段1dは、メッセージ組立手段1bが、入力したパケット5と、パケット5に関する情報とを、仮メッセージが組み立てられるまで一時的に記憶する。パケットに関する情報とは、例えば、パケットが送信された通信時刻や、通信方向などである。
【0018】
仮メッセージ記憶手段1eは、メッセージ組立手段1bが仮メッセージであると判定した仮メッセージと、仮メッセージに関する情報と、を記憶する。仮メッセージに関する情報とは、例えば、仮メッセージが送信された通信時刻、仮メッセージがリクエストメッセージであるか、レスポンスメッセージであるかを示す通信方向などである。
【0019】
本メッセージ記憶手段1fは、メッセージ分割手段1cがメッセージであると判定した本メッセージと、本メッセージに関する情報と、を格納する。本メッセージに関する情報とは、例えば、通信時刻や通信方向などである。
【0020】
このような構成のメッセージ判別装置1の動作について説明する。メッセージ判別装置1には、ネットワーク3を介してサーバ2a,2b,・・・、クライアント4a,4b,・・・間で受け渡されるパケット5の情報が入力される。ここでは、スイッチなどでミラーリングされたパケット5が、リアルタイムでメッセージ判別装置1に入力されるとする。
【0021】
対象パケット抽出手段1aは、順次入力するパケット5から、対象パケットを抽出し、メッセージ組立手段1bへ送る。メッセージ組立手段1bは、所定の規則に基づいて対象パケットを調べ、メッセージの最後のパケットを判別する。例えば、直前のパケットの到着から一定時間経過している、送信元及び宛先が直前のパケットの送信元及び宛先と異なる、などであれば、直前のパケットが最後のパケットであると判定する。さらに、パケット最大サイズと比較して小さければ、このパケットが最後のパケットと判定する。最後でなければ、パケットをパケット記憶手段1dに保存する。最後が判定したときは、今回の最後のパケットの直前に最後のパケットと判定した次のパケットから、今回の最後のパケットまでを組み立て、仮メッセージとして仮メッセージ記憶手段1eに格納する。仮メッセージに組み込んだパケットは、パケット記憶手段1dから削除する。
【0022】
こうして、仮メッセージ記憶手段1eに順次仮メッセージが格納される。一連のサービス処理が行われる所定の期間の仮メッセージが取得できたら、メッセージ分割手段1cは、所定の期間の仮メッセージをリクエストメッセージとレスポンスメッセージに分類し、それぞれの出現数を算出して比較する。リクエストメッセージとレスポンスメッセージとが対応付けられるという想定環境を満たしていれば、出現数は一致する。そこで、所定の期間におけるリクエストメッセージとレスポンスメッセージの出現数が一致していれば、仮メッセージを本メッセージとして本メッセージ記憶手段1fに格納する。一致していないときは、少ない方に分類された仮メッセージのうち、最大のサイズの仮メッセージを分割する。分割後、再度リクエストメッセージとレスポンスメッセージの出現数を比較し、一致するまで分割と出現数の比較を繰り返す。そして、一致した時点の仮メッセージを本メッセージとして本メッセージ記憶手段1fに格納する。なお、パケットの通信ログを入力した場合も、通信ログに記載された通信時刻と、パケットデータとを用いて同様の処理を行うことができる。
【0023】
以上の処理手順が実行されることにより、所定の期間に受け渡されるリクエストメッセージとレスポンスメッセージの数が同数になるように傍受したパケットが区切られ、メッセージが再構築される。このため、再構築したメッセージが適切なメッセージである可能性を向上させることができる。また、メッセージ判別装置1では、メッセージの内容を解析することなく、メッセージの判別を行うことができる。パケットの解析に必要なレベルのプロトコルを備えていれば十分であり、メッセージを解析するために上位レベルのアプリケーションプロトコルを搭載する必要がない。したがって、パケット通信レベルのプロトコルが同じであれば、アプリケーションレベルのプロトコルが異なる複数のシステム分析において、パケット群を適切に分割してメッセージを再構築することが可能となり、メッセージの判別可能性を向上させることができる。
【0024】
次に、第2の実施の形態として、インターネットを介してサービスを提供するWeb3階層システムにおいて、クライアントとサーバ、及びサーバ間で受け渡されるパケットからメッセージを判別する場合について説明する。
【0025】
図2は、第2の実施の形態のシステム構成を示す図である。図2の例では、スイッチ24を介して、外部のインターネット30、Webサーバ21、アプリケーションサーバ(以下、APサーバとする)22、DBサーバ23及びキャプチャサーバ10が接続されている。インターネット30には、サービスを要求するクライアント41,42,43が接続される。
【0026】
Webサーバ21、APサーバ22及びDBサーバ23は、連携してサービスを提供するサービス提供システム20に属する。例えば、サービス提供システム20は、インターネット30経由でクライアント41,42,43からHTTP(HyperText Transfer Protocol)によるアクセス要求を取得すると、Webサーバ21が受け付け処理を行う。Webサーバ21からAPサーバ22にアプリケーション処理が要求され、APサーバ22が処理を行う。APサーバ22のアプリケーション処理では、データを管理するDBサーバ23と連携して処理を行う。処理終了後、Webサーバ21からクライアント41,42,43に応答を返す。このように、Webサーバ21、APサーバ22及びDBサーバ23は、メッセージを交換しながら連携して処理を行う。このサーバ間で受け渡されるメッセージを分析することにより、サービス提供システム20の挙動を可視化することができる。
【0027】
キャプチャサーバ10は、スイッチ24を介してパケットを傍受し、傍受したパケットからメッセージを再構築する。そして、再構築したメッセージからトランザクションを組み立て、トランザクションを解析してシステムの挙動を分析する。
【0028】
スイッチ24は、自身を通過する通信データをミラーリングする機能を有している。ミラーリングとは、あるポートに出力されるデータと同じデータを、他のポートからも出力する機能である。図2の例では、Webサーバ21が接続されたポート、APサーバが接続されたポート及びDBサーバ23が接続されたポートのミラーリング先として、キャプチャサーバ10が接続されたポートが指定されている。これにより、Webサーバ21、APサーバ22及びDBサーバ23に受け渡されるパケットは、宛先に入力されるとともに、キャプチャサーバ10にも入力される。
【0029】
また、サービス提供システム20は、次の通信環境を満たすとする。
(1)サーバ間の通信には、TCP(Transmission Control Protocol)が使用されている。TCPの規格では、長いメッセージを送受信する際には、ある一定の長さ(MSS: Maximum Segment Size)に区切って送信することが定められている。
【0030】
(2)対象となるサーバから送信される1つのリクエストメッセージに対しては、1つのレスポンスが組として通信が行われる。すなわち、リクエストメッセージを1つ受け取ったサーバは、必ずレスポンスメッセージを1つ返す。ただし、リクエストメッセージと、それに対応するレスポンスメッセージが交互に発行される必要はない。
【0031】
(3)サーバ上で通信しているアプリケーションで送受信されるメッセージは、リクエスト・レスポンス共に分割して送受信されない。
図3は、パケットに含まれる情報を示した図である。
【0032】
パケット5は、イーサネット(登録商標)ヘッダ(Etherヘッダ)51、IPヘッダ52、TCPヘッダ53及びTCPデータ54を有する。なお、TCP層から見て、上位層のヘッダ等はすべてTCPデータとして認識される。さらに、IPヘッダ52及びTCPヘッダ53に関し、メッセージ判別処理で参照する部分について説明する。
【0033】
IPヘッダ52には、送信元IPアドレス52aと、宛先IPアドレス52bとが含まれる。送信元IPアドレス52aによって、パケット5を送信したサーバまたはクライアントを特定することができる。同様に、宛先IPアドレス52bによって、パケット5を受信するサーバまたはクライアントを特定することができる。TCPヘッダ53には、送信元ポート53a、宛先ポート53b及びflag53cが含まれる。送信元ポート53aと、宛先ポート53bとによって、どのサービスに関するものかがわかる。例えば、パケット5のIPヘッダ52の宛先IPアドレス52bがサーバのIPアドレスであれば、TCPヘッダ53の宛先ポート53bを読み取る。同様に、送信元IPアドレス52aがサーバのIPアドレスであれば、送信元ポート53aを読み取る。そして、そのポート番号を識別子とすることで、どのサービスに関するセッションであるかを調べることができる。例えば、サーバのポート番号が80番である場合、上位のプロトコルがHTTPであると判定することができる。また、flag53cには、送信側で送るデータが終了したことを示す“FIN(flag)”が含まれている。これにより、送信データの通信終了を認識できる。
【0034】
図4は、キャプチャサーバのハードウェア構成例を示すブロック図である。キャプチャサーバ10は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、及び通信インタフェース106が接続されている。
【0035】
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションのプログラムが格納される。グラフィック処理装置104には、モニタ108が接続されており、CPU101からの命令に従って画像をモニタ108の画面に表示させる。入力インタフェース105には、キーボード109aやマウス109bが接続されており、キーボード109aやマウス109bから送られてくる信号を、バス107を介してCPU101に送信する。通信インタフェース106は、スイッチ24に接続されており、スイッチ24を介して他装置との間でデータの送受信を行うとともに、他装置間で受け渡されるデータを傍受する。
【0036】
このようなハードウェア構成によって、情報装置の処理機能を実現することができる。なお、図4には、キャプチャサーバ10のハードウェア構成を示したが、Webサーバ21、APサーバ22、DBサーバ23及びクライアント41,42,42のハードウェア構成も同様である。
【0037】
図5は、キャプチャサーバの機能ブロックを示す図である。キャプチャサーバ10は、パケット振分部110、メッセージ組立部120、メッセージ分割部130及びトランザクション解析部140の各処理部と、パケットバッファ151、仮メッセージバッファ152及び本メッセージバッファ153の記憶部と、を有する。各処理部は、コンピュータがメッセージ判別プログラムを実行することにより、その処理機能を実現する。
【0038】
パケット振分部110は、スイッチ24から入力するパケット5a,5b,5cを解析し、対象のパケットであるかどうかを判定する。ここでは、上位層のプロトコルがHTTP以外のものを対象パケットとしてメッセージ組立部120へ送る。HTTPパケットであれば、トランザクション解析部140へパケットを送る。HTTPについては、アプリケーションレベルでメッセージの解析方法が一般的に知られており、このような手法を用いてトランザクション解析部140で解析する。HTTPを除くパケットを対象パケットとし、メッセージ組立部120へ送る。
【0039】
メッセージ組立部120は、パケット区切り部121と、仮メッセージ生成部122とを有する。パケット区切り部121は、到着順に入力してパケット振分部110で対象と判定されたパケット5a,5b,5c,・・・を入力し、メッセージの区切りを決定する。パケット区切り部121では、直前のパケットが到着してから一定時間以上経過しているとき、直前のパケットをメッセージの最後のパケットと判定し、直前のパケットまでをメッセージの区切りとする。また、パケットの送信先と宛先が直前のパケットと同じでないときは、直前のパケットをメッセージの最後のパケットと判定し、同様に直前のパケットまでをメッセージの区切りとする。さらに、入力したパケットのサイズと、MSSとを比較し、入力したパケットのサイズがMSSよりも小さいときは、このパケットをメッセージの最後と判定し、取得したパケットまでをメッセージの区切りとする。メッセージの区切りが検出されないときは、パケットをパケットバッファ151に一時的に記憶し、メッセージの区切りが検出されるまで保持する。なお、パケットは、送受信しているサーバのIPアドレスとポート番号とによってセッションが同じ組み合わせで分類する。仮メッセージを組み立てている最中は、分類されているグループごとにパケットバッファ151の別領域に保管する。仮メッセージ生成部122は、パケット区切り部121が検出したメッセージの区切りに基づき、仮メッセージを組み立てる。パケットバッファ151に格納されている直前のメッセージ区切りの次のパケットから、今回検出したメッセージの区切りまでのパケットを仮メッセージとする。仮メッセージを仮メッセージバッファ152へ格納し、パケットバッファ151のデータを削除する。
【0040】
メッセージ分割部130は、メッセージ数計数部131と、メッセージ分割処理部132とを有する。メッセージ数計数部131は、一連のメッセージが受け渡される期間の仮メッセージを仮メッセージバッファ152から読み出す。そして、リクエストメッセージとレスポンスメッセージに分類し、リクエストメッセージとレスポンスメッセージの所定の期間における。出現数を算出する。例えば、最初のメッセージが送信されてから一定時間が経過するか、“FIN(flag)”を検出したとき、一連のメッセージの終了と判断する。そして、この間に生成された仮メッセージについて、リクエストメッセージの数と、レスポンスメッセージの数を集計する。メッセージ分割処理部132は、メッセージ数計数部131が算出したリクエストメッセージとレスポンスメッセージの出現数を比較し、一致していないときは、少ない方のメッセージのうち、最大のサイズのものを分割する。そして、分割後の仮メッセージを対象として、メッセージ数計数部131における出現数算出からの処理を繰り返す。この繰り返しにより各メッセージの出現数が等しくなるようにする。一致したときは、その状態の仮メッセージを本メッセージとして本メッセージバッファ153に格納する。
【0041】
また、分割対象として、複数のメッセージが1つのメッセージとして誤判定された仮メッセージである可能性が高いものを選択するため、分割対象範囲を限定する処理を行うとしてもよい。図6は、分割対象範囲の選択処理を説明する図である。図は、リクエストメッセージの数がレスポンスメッセージの数より多いケースを示している。
【0042】
想定環境では、仮メッセージに誤判定がなければ、所定の期間におけるリクエストメッセージの数と、レスポンスメッセージの数は同じになる。リクエストメッセージの数がレスポンスメッセージの数よりも多いというケースには、3つのパターンが考えられる。(a)パターン1は、リクエスト1、リクエスト2のメッセージが送信された後に、送信されたレスポンス1とレスポンス2を1つのメッセージとして検出した場合である。(b)パターン2は、リクエスト1とリクエスト2との間に送信されたレスポンス1とレスポンス2を1つのメッセージとして検出した場合である。(c)パターン3は、レスポンス1とレスポンス2を1つのメッセージとして検出した後に、リクエスト1とリクエスト2とが送信される場合である。しかし、想定環境では、(a)以外のパターンが発生することはない。(a)では、リクエストメッセージとレスポンスメッセージの数を通信時刻の早い順に数えていくと、複数のレスポンスメッセージを1つのメッセージと誤認した以降は、必ずリクエストメッセージの数が多い状態になる。言い換えれば、リクエストメッセージとレスポンスメッセージが交互に発生することは規定していないため、途中で一致しない区間が生じることがある。しかし所定の期間終了前に、結果としてリクエストメッセージの数とレスポンスメッセージの数とが一致すれば、その時点までは複数のレスポンスメッセージを1つのメッセージと誤認していないということになる。そこで、所定の期間におけるリクエストメッセージとレスポンスメッセージの出現数が異なる場合、リクエストメッセージとレスポンスメッセージの数を通信時刻の早い順に数えて比較し、同数となった箇所までは誤認していないとして扱う。そして、それ以降に出現するレスポンスメッセージを分割対象とする。このように、リクエストメッセージの数が多い場合には、リクエストメッセージを基準として対応するレスポンスメッセージの有無で分割対象範囲を検索する。
【0043】
一方、レスポンスメッセージの数が多い場合には、上記とは逆に、レスポンスメッセージを基準として対応するリクエストメッセージの有無で分割対象範囲を検索する。このため、リクエストメッセージの数が多い場合とは逆に、通信時刻の遅い順に、レスポンスメッセージの数と、リクエストメッセージの数を比較していく。
【0044】
トランザクション解析部140は、本メッセージバッファ153に格納される本メッセージと、パケット振分部110が振り分けたHTTPパケットから再構築したメッセージと、に基づいてトランザクションを組み立てる。
【0045】
パケットバッファ151は、メッセージ組立部120がパケットを一時的に保存するためのパケット記憶手段である。仮メッセージバッファ152は、メッセージ組立部120が組み立てた仮メッセージを一時的に記憶する仮メッセージ記憶手段として機能する。本メッセージバッファ153は、メッセージ分割部130が、生成した本メッセージを記憶する本メッセージ記憶手段として機能する。
【0046】
図7は、パケットバッファ、仮メッセージバッファ及び本メッセージバッファが記憶するデータの一例を示した図である。
パケットバッファ151には、「ID」、「通信時刻」、「通信方向」、「パケットサイズ」、「パケット」の各項目を有するパケット情報1510が格納される。「ID」は、パケットを一意に識別する識別番号である。「通信時刻」は、パケットが到着した時刻である。「通信方向」は、パケットがリクエストパケット(Request)であるか、レスポンスパケット(Response)であるかを示す。「パケットサイズ」は、取得したパケットのパケットサイズである。「パケット」は、取得したパケットデータである。
【0047】
仮メッセージバッファ152には、「ID」、「通信時刻」、「通信方向」、「仮メッセージサイズ」、「仮メッセージ」の各項目を有する仮メッセージ情報1520が格納される。「ID」は、仮メッセージを一意に識別する識別番号である。「通信時刻」は、仮メッセージが到着した時刻である。例えば、仮メッセージの先頭のパケットの通信時刻になる。「通信方向」は、仮メッセージがリクエストメッセージ(Request)であるか、レスポンスメッセージ(Response)であるかを示す。「仮メッセージサイズ」は、組み立てた仮メッセージのサイズである。「仮メッセージ」は、組み立てた仮メッセージデータである。
【0048】
本メッセージバッファ153には、「ID」、「通信時刻」、「通信方向」、「メッセージサイズ」、「メッセージ」の各項目を有する本メッセージ情報1530が格納される。「ID」は、本メッセージを一意に識別する識別番号である。「通信時刻」は、本メッセージが到着した時刻である。例えば、本メッセージの先頭のパケットの通信時刻になる。「通信方向」は、本メッセージがリクエストメッセージ(Request)であるか、レスポンスメッセージ(Response)であるかを示す。「メッセージサイズ」は、メッセージ分割部130が確定した本メッセージのサイズである。「メッセージ」は、確定した本メッセージデータである。
【0049】
このような構成のキャプチャサーバ10の動作及びメッセージ判別方法について具体例を用いて説明する。
図8は、キャプチャサーバへ入力するパケットの一例を示した図である。パケット501,502,・・・,514は、あるサービス処理が行われたときにキャプチャサーバ10へ入力する一連のパケットである。なお、このパケット群は、HTTPによるパケットではないとする。パケットは、キャプチャサーバ10に右側から左側に向かって順次入力する。すなわち、キャプチャサーバ10には、最右側のパケット501が最初に入力し、最左側のパケット514が最後に入力する。パケットの「rq」は、パケットがリクエストパケットであることを示し、「rs」はレスポンスパケットであることを示している。例えば、Webサービスにおいて、装置間におけるリクエストとレスポンスの方向は決まっており、パケットの送信元または宛先のIPアドレスに基づいてリクエストパケットであるかレスポンスパケットであるか識別することができる。図8の例では、パケット501,502は、リクエストパケットである。また、パケットのうち、MSSサイズに満たないものは、鎖線でしめしたMSSサイズとともに示している。例えば、パケット503,504はレスポンスパケットであり、パケット504のサイズはMSSより小さい。矢印601は、届いたパケットを示している。図8では、キャプチャサーバ10には、パケット501が届いている。また、メッセージ1(710)、メッセージ2(720)、メッセージ3(730)、メッセージ4(740)、メッセージ5(750)、メッセージ6(760)、・・・は、それぞれ仮メッセージを示している。
【0050】
図9は、パケットの通信方向が反転した場合の処理を示している。キャプチャサーバ10には、矢印602で示したレスポンスパケット503が届いている。パケット区切り部121は、レスポンスパケット503の通信方向がレスポンスであり、直前のリクエストパケット502のリクエストから通信方向が変わったことを検出する。そこで、直前のリクエストパケット502までをメッセージの区切りとする。仮メッセージ生成部122は、直前のリクエストパケット502までのリクエストパケット501,502を1つのメッセージとし、メッセージ1(710)として登録する。仮メッセージバッファ152には、ID=1に対応付けて、通信時刻、通信方向(=リクエスト)、仮メッセージサイズ、組み立てたメッセージを登録する。
【0051】
図10は、パケットの通信方向が反転し、かつ直前のレスポンスパケットのサイズがMSSに満たない場合の処理を示している。キャプチャサーバ10には、矢印603で示したリクエストパケット505が届いている。パケット区切り部121は、直前のレスポンスパケット504のサイズがMSSより小さいことを検出している。さらに、リクエストパケット505の通信方向がリクエストであり、直前のレスポンスパケット504のレスポンスから通信方向が変わったことを検出する。そこで、直前のレスポンスパケット504までをメッセージの区切りとする。仮メッセージ生成部122は、直前のパケット504までのレスポンスパケット503,504を1つのメッセージとし、メッセージ2(720)として登録する。仮メッセージバッファ152には、ID=2に対応付けて、通信時刻、通信方向(=レスポンス)、仮メッセージサイズ、組み立てたメッセージを登録する。
【0052】
図11は、直前のリクエストパケットのサイズがMSSに満たない場合の処理を示している。キャプチャサーバ10には、矢印604で示したリクエストパケット508が届いている。パケット区切り部121は、直前のリクエストパケット507のサイズがMSSより小さいことを検出している。通信方向は同じであるが、直前のリクエストパケット507のサイズはMSSより小さいので、直前のリクエストパケット507までをメッセージの区切りとする。仮メッセージ生成部122は、直前のリクエストパケット507までのパケット505,506,507を1つのメッセージとし、メッセージ3(730)として登録する。仮メッセージバッファ152には、ID=3に対応付けて、通信時刻、通信方向(=リクエスト)、仮メッセージサイズ、組み立てたメッセージを登録する。
【0053】
図12は、パケットの通信方向が反転し、かつ直前のリクエストパケットのサイズがMSSに満たない場合の処理を示している。キャプチャサーバ10には、矢印605で示したレスポンスパケット511が届いている。パケット区切り部121は、直前のリクエストパケット510のサイズがMSSより小さいことを検出している。さらに、レスポンスパケット511の通信方向がレスポンスであり、直前のリクエストパケット510のリクエストから通信方向が変わったことを検出する。そこで、直前のリクエストパケット510までをメッセージの区切りとする。仮メッセージ生成部122は、直前のリクエストパケット510までのリクエストパケット508,509,510を1つのメッセージとし、メッセージ4(740)として登録する。仮メッセージバッファ152には、ID=4に対応付けて、通信時刻、通信方向(=リクエスト)、仮メッセージサイズ、組み立てたメッセージを登録する。
【0054】
図13は、直前のレスポンスパケットのサイズがMSSに満たない場合の処理を示している。キャプチャサーバ10には、矢印606で示したように、最初のパケットの到着から一定時間が経過したというタイムアウトが発生する。パケット区切り部121は、直前のレスポンスパケット514のサイズがMSSより小さいことを検出する。そこで、直前のレスポンスパケット514までをメッセージの区切りとする。仮メッセージ生成部122は、直前のレスポンスパケット514までのレスポンスパケット511,512,513,514を1つのメッセージとし、メッセージ5(750)として登録する。仮メッセージバッファ152には、ID=5に対応付けて、通信時刻、通信方向(=レスポンス)、仮メッセージサイズ、組み立てたメッセージを登録する。なお、最後のパケット514に、“FIN(flag)”を検出した場合も同様の処理が行われる。
【0055】
こうして、キャプチャサーバ10は、メッセージ組立部120によって、パケット501,・・・、514から、仮メッセージとして、メッセージ1(710),・・・メッセージ5(750)を生成する。
【0056】
続いて、メッセージ分割部130が分割処理を行う。
図14は、分割対象範囲の選択処理を示した図である。メッセージ数計数部131は、メッセージ組立部120が生成した仮メッセージのリクエストメッセージの数と、レスポンスメッセージの数を算出し、比較する。図14では、メッセージ1(710)、メッセージ3(730)及びメッセージ4(740)がリクエストメッセージであり、総数は「3」になる。また、メッセージ2(720)及びメッセージ5(750)がレスポンスメッセージであり、総数は「2」である。したがって、リクエストメッセージの数が、レスポンスメッセージの数よりも多く、同じ数にするため、レスポンスメッセージの分割を行う。
【0057】
メッセージ分割処理部132は、リクエストメッセージの数がレスポンスメッセージの数よりも多いので、メッセージの通信時刻の早い順に、リクエストメッセージを基準としてレスポンスメッセージを対応付けていく。図14では、リクエストメッセージを「+1」、レスポンスメッセージを「−1」として、出現順に合計値を算出する。最初のメッセージ1(710)は、リクエストメッセージであるので、合計値は「+1」になる。次のメッセージ2(720)はレスポンスメッセージであるので、「−1」され、合計値は「0」になる。次のメッセージ3(730)はリクエストメッセージであるので、「+1」され、合計値は「+1」になる。次のメッセージ4(740)もリクエストメッセージであるので、「+1」され、合計値は「+2」になる。次のメッセージ5(750)はレスポンスメッセージであるので、「−1」され、合計値は「+1」になる。ここで、合計値「0」は、その時点までのリクエストメッセージの数とレスポンスメッセージの数とは同じであることを示す。したがって、最後に合計値が「0」になった時点までの、メッセージ1(710)と、メッセージ2(720)とは、正しいと判定する。そして、最後に合計値が「0」となった以降を分割対象範囲として選択する。
【0058】
図15は、分割対象範囲の仮メッセージの分割処理を示した図である。リクエストメッセージの数が、レスポンスメッセージの数よりも多いので、複数のレスポンスメッセージを1つと誤認識した可能性が高い。そこで、図14までの処理で確定した分割対象範囲のうち、最大サイズのレスポンスメッセージを分割対象とする。図15の例では、レスポンスメッセージは、メッセージ5(750)のみであるので、メッセージ5(750)のレスポンスパケット511,512,513,514を分割する。ここでは、2分割し、前半のレスポンスパケット511,512をメッセージ5(750)とする。そして、後半のレスポンスパケット513,514をメッセージ6(760)とする。
【0059】
続いて、分割後のリクエストメッセージの数と、レスポンスメッセージの数とを算出して比較する。図15の例では、ともに「3」となるので、分割処理を終了する。一致しない場合は、同様の手順で分割対象範囲を選択し、分割対象範囲内のレスポンスメッセージを分割する。
【0060】
こうして生成されたメッセージ1(710)、メッセージ2(720)、メッセージ3(730)、メッセージ4(740)、メッセージ5(750)及びメッセージ6(760)を本メッセージバッファ153に格納し、処理を終了する。
【0061】
なお、レスポンスメッセージの数がリクエストメッセージの数よりも多い場合には、通信時刻の遅い順(図14の例であれば、メッセージ5(750)からメッセージ1(710へ向かう順)に、合計値を算出して分割対象範囲を決定する。合計値が最後に「0」となった時点より通信時刻が前の仮メッセージを分割対象範囲とし、分割対象範囲内で最大サイズのリクエストメッセージを分割する。
【0062】
以上のように、キャプチャサーバ10によれば、順次入力するパケットに関する到着間隔、通信方向の反転、パケットサイズなどの情報によってメッセージを区切って仮メッセージを生成する。そして、仮メッセージのリクエストメッセージ数と、レスポンスメッセージの数とが同じになるように、少ない方のメッセージを分割する。このため、途中でパケットの欠損が生じても、メッセージを適切に区切ることができる。例えば、メッセージの途中でパケットが欠損した場合であっても、通信方向の反転やパケットサイズによって区切りを検出してメッセージに区切ることができる。最後のパケットが欠損し、かつ同方向の通信が続いた場合であっても、リクエストメッセージ数とレスポンスメッセージ数との差に基づく分割処理が行われる。また、パケットの解析はTCPプロトコルレベルで行うため、上位のアプリケーションはすべてデータとして取り扱われる。このため、想定環境が満たされれば、上位のアプリケーションによらず、メッセージを適切に生成することができる。このように、メッセージの判別可能性を向上させることができる。
【0063】
次に、メッセージ判別処理の処理手順を、フローチャートを用いて説明する。メッセージ判別処理は、任意のサービス処理の開始から終了までの所定の期間に受け渡される一連のメッセージごとに、メッセージ組立処理とメッセージ分離処理とを行う。
【0064】
図16は、メッセージ判別処理におけるメッセージ組立処理の手順を示したフローチャートである。
[ステップS01] メッセージ組立部120は、パケットの到着または、直前のパケットの到着から一定時間経過したかどうかの通知を待つ。スイッチ24のミラーリング処理によって、キャプチャサーバ10に傍受したパケットが入力し、このパケットが対象パケットであったとき、パケット振分部110からメッセージ組立部120にパケットの到着が通知される。また、パケットの到着とともに計時を開始するタイマが一定時間の経過を検出したときは、一定時間の経過がメッセージ組立部120に通知される。
【0065】
[ステップS02] メッセージ組立部120は、ステップS01で受けた通知が、一定時間経過の通知であるかどうか、すなわち、直前のパケットが到着してからの無通信時間が規定値より大きいかどうかを判定する。一定時間経過の通知でなく、パケット到着の通知であるときは、処理をステップS03に進める。一定時間経過の通知であれば、直前のパケットでメッセージが終了したと判定し、処理をステップS06に進める。
【0066】
[ステップS03] メッセージ組立部120は、パケット到着の通知を受けたときは、到着したパケットの通信方向と、パケットバッファ151に格納されている直前のパケットの通信方向と、が同じであるかどうかを判定する。同じであれば、処理をステップS04に進める。同じでなければ、直前のパケットでメッセージが終了したと判定し、処理をステップS06に進める。なお、到着したパケットが仮メッセージ生成後の最初のパケットでパケットバッファ151に直前のパケットがないときは、処理をステップS04に進める。また、パケットが到着したので、無通信時間を検出するためのタイマを初期化しておく。
【0067】
[ステップS04] メッセージ組立部120は、到着したパケットの通信方向と直前のパケットの通信方向とが同じであったとき、または最初のパケットのときは、到着したパケットのサイズとMSSとを比較する。到着したパケットのサイズがMSSより小さくないときは、処理をステップS05に進める。到着したパケットのサイズがMSSより小さいときは、処理をステップS06に進める。到着したパケットが仮メッセージ生成後の最初のパケットで、パケットサイズがMSS以下のときも、このパケットから1つの仮メッセージを生成することができる。
【0068】
[ステップS05] メッセージ組立部120は、到着したパケットの通信方向と直前のパケットの通信方向とが同じであり、かつ、到着したパケットのサイズがMSSより小さくないときは、後続するパケットがあると判定する。そして、到着したパケットをパケットバッファ151に格納する。その後、ステップS01に戻って、次のパケットの到着または、一定時間の経過を待つ。
【0069】
[ステップS06] メッセージ組立部120は、無通信時間が規定値より大きいとき、パケットの通信方向が反転したとき、または到着したパケットのパケットサイズがMSSより小さいとき、パケットバッファ151に格納されるパケットから仮メッセージを生成する。無通信時間が規定値より大きいときは、パケットバッファ151に格納されるパケットから仮メッセージを組み立て、パケットバッファ151のパケットを削除する。パケットの通信方向が反転したときは、パケットバッファ151に格納される直前のパケットまでのパケットから仮メッセージを組み立て、パケットバッファ151のパケットを削除する。そして、到着したパケットをパケットバッファ151に格納する。到着したパケットのパケットサイズがMSSより小さいときは、パケットバッファ151に格納されるパケットと到着パケットから仮メッセージを組み立て、パケットバッファ151のパケットを削除する。また、仮メッセージが最初のリクエストメッセージであれば、最初のリクエストからの経過時間を計時するタイマを開始させる。
【0070】
[ステップS07] メッセージ組立部120は、ステップS06で生成した仮メッセージがレスポンスメッセージであるかどうかを判定する。レスポンスメッセージであれば、処理をステップS08に進める。レスポンスメッセージでなければ、処理をステップS11に進め、次のメッセージのパケットを待つ。
【0071】
[ステップS08] メッセージ組立部120は、仮メッセージがレスポンスメッセージであったときは、このメッセージに通信終了“FIN(flag)”が設定されているかどうかを判定する。通信終了が設定されて入れば、この仮メッセージが一連の処理の最後のメッセージであると判定し、処理をステップS09に進める。最後のメッセージでなければ、処理をステップS10に進める。
【0072】
[ステップS09] メッセージ組立部120は、仮メッセージが最後のメッセージであれば、この仮メッセージを仮メッセージバッファに格納し、図17の結合子Bに続くステップへ処理を進める。
【0073】
[ステップS10] メッセージ組立部120は、仮メッセージが最後のメッセージでないときは、最初のリクエストメッセージが到着してからの経過時間が規定値よりも大きいかどうかを判定する。規定値より大きいときは、一連のメッセージは終了したと判定し、処理をステップS09に進める。規定値より小さいときは、一連のメッセージは終了していないと判定し、処理をステップS11に進める。
【0074】
[ステップS11] メッセージ組立部120は、仮メッセージが最後のメッセージでないときは、この仮メッセージを仮メッセージバッファに格納し、ステップS01に戻って次のパケットの到着または、一定時間の経過を待つ。
【0075】
図17は、メッセージ判別処理におけるメッセージ分離処理の手順を示したフローチャートである。結合子A及び結合子Bは、図16の同じ名称の結合子と同じものである。
メッセージ分割部130は、図16の結合子Bまでの処理を引き継ぎ、メッセージ分割処理を開始する。結合子Bまでの処理で、仮メッセージバッファ152には、メッセージ組立部120が生成した一連の仮メッセージが格納されている。
【0076】
[ステップS12] メッセージ分割部130は、仮メッセージバッファ152の仮メッセージ情報1520に基づき、作成した仮メッセージに対応する通信方向を取得する。
[ステップS13] メッセージ分割部130は、取得した仮メッセージに対応する通信方向を方向ごとカウントする。そして、所定の期間におけるリクエストメッセージの出現数(リクエスト数)と、レスポンスメッセージの出現数(レスポンス数)とを算出する。
【0077】
[ステップS14] メッセージ分割部130は、ステップS13で算出したリクエスト数とレスポンス数とが一致しているかどうかを判定する。一致しているときは、仮メッセージは適切であると判定し、処理をステップS16に進める。一致していないときは、処理をステップS15に進める。
【0078】
[ステップS15] メッセージ分割部130は、リクエスト数とレスポンス数とが一致していないときは、リクエスト数とレスポンス数とを同じにする分割処理を行う。分割処理の詳細は後述する。
【0079】
[ステップS16] メッセージ分割部130は、リクエスト数とレスポンス数とが一致している仮メッセージを本メッセージとして、本メッセージバッファ153に格納する。仮メッセージバッファ152をクリアし、処理を図16のステップS01に続く結合子Aに進める。そして、次の一連のメッセージのパケットの到着を待つ。
【0080】
以上の処理手順が実行されることにより、到着したパケットが順次解析され、適切なメッセージ単位に区切られ、リクエスト数とレスポンス数が同じになるように再編成された後、本メッセージとしてトランザクション解析部140に送られる。
【0081】
次に、分割処理について説明する。なお、以下の説明では、「前」とは、通信時刻の早い方向を指し、「後」とは通信時刻の遅い方向を指す。また、仮メッセージバッファ152では、通信時刻の最も早い仮メッセージに最も若い番号のアドレスの領域が割り当てられ、通信時刻が遅くなるほど後の領域が割り当てられているとする。
【0082】
図18は、メッセージ分割処理における分割対象選択処理の手順を示したフローチャートである。
[ステップS1501] メッセージ分割部130は、何番目のメッセージを処理するかを示すnと、リクエスト数とレスポンス数とを順次比較していったとき、最後に一致したメッセージ番号を示すindexと、を0に初期化する。
【0083】
[ステップS1502] メッセージ分割部130は、レスポンス数とリクエスト数とを比較し、レスポンス数がリクエスト数よりも多いかどうかを判定する。レスポンス数がリクエスト数よりも多いときは、処理をステップS1503に進める。リクエスト数がレスポンス数よりも多いときは、処理をステップS1504に進める。
【0084】
[ステップS1503] メッセージ分割部130は、レスポンス数がリクエスト数よりも多いときは、レスポンスメッセージを基準として、対応するリクエストメッセージを探す。仮メッセージ情報1520の最後(通信時刻が最も遅い仮メッセージ)から検索を開始する。最後からn番目の仮メッセージ情報を、仮メッセージバッファ152より取得し、処理をステップS1505に進める。
【0085】
[ステップS1504] メッセージ分割部130は、リクエスト数がレスポンス数よりも多いときは、リクエストメッセージを基準として、対応するレスポンスメッセージを探す。仮メッセージ情報1520の最初(通信時刻が最も早い仮メッセージ)から検索を開始する。最初からn番目の仮メッセージ情報を、仮メッセージバッファ152より取得する。
【0086】
[ステップS1505] メッセージ分割部130は、仮メッセージバッファ152より読み出した仮メッセージ情報の通信方向がリクエストメッセージであるかどうかを判定する。リクエストメッセージであれば、処理をステップS1506に進める。リクエストメッセージでないときは、処理をステップS1507に進める。
【0087】
[ステップS1506] メッセージ分割部130は、対象の仮メッセージがリクエストメッセージであれば、合計値(total)に「+1」を加算し、「total=total+1」とし、処理をステップS1508に進める。
【0088】
[ステップS1507] メッセージ分割部130は、対象の仮メッセージがリクエストメッセージでなく、レスポンスメッセージであるときは、合計値(total)に「―1」を加算し、「total=total―1」とする。
【0089】
[ステップS1508] メッセージ分割部130は、ステップS1506またはステップS1507で算出された合計値「total」が「0」であるかどうかを判定する。「0」であれば、処理をステップS1509に進める。「0」でなければ、処理をステップS1510に進める。
【0090】
[ステップS1509] メッセージ分割部130は、合計値が「0」であるので、このときの「n」の値を「index」に設定する。合計値が「0」であるので、この時点までのリクエストメッセージとレスポンスメッセージの数は同じである。indexは、合計値が「0」となるごとに更新され、最終的に最後に検出された合計値が「0」のメッセージを指す「n」の値が設定される。
【0091】
[ステップS1510] メッセージ分割部130は、全仮メッセージの処理が終了したかどうかを判定する。全仮メッセージの処理が終了していれば、図19の結合子Dに続くステップへ処理を進める。全仮メッセージが終了していなければ、処理をステップS1511に進める。
【0092】
[ステップS1511] メッセージ分割部130は、全仮メッセージの処理が終了していないときは、n=n+1として「n」を1つ進め、ステップS1502へ処理を戻す。そして、次の仮メッセージに対する処理を行う。
【0093】
図19は、メッセージ分割処理における分割対象の分割処理の手順を示したフローチャートである。結合子C及び結合子Dは、図18の同じ名称の結合子と同じものである。
メッセージ分割部130は、図18の結合子Dまでの処理を引き継ぎ、メッセージ分割処理を開始する。結合子Dまでの処理で、indexには、最後に合計値「total」が一致した仮メッセージに対応する「n」の値が設定されている。
【0094】
[ステップS1512] メッセージ分割部130は、レスポンス数とリクエスト数とを比較し、レスポンス数がリクエスト数よりも多いかどうかを判定する。レスポンス数がリクエスト数よりも多いときは、処理をステップS1513に進める。リクエスト数がレスポンス数よりも多いときは、処理をステップS1514に進める。
【0095】
[ステップS1513] メッセージ分割部130は、レスポンス数がリクエスト数よりも多いときは、indexが示す「n」より前に出現するリクエストメッセージを分割対象とし、処理をステップS1515に進める。レスポンス数がリクエスト数よりも多い場合には、後から順に検索して「total=0」となったときのメッセージのうち、最も通信時刻の早いメッセージを指す「n」が設定されている。このとき、「n」より後では、リクエストメッセージとレスポンスメッセージの数は一致している。したがって、「n」より前のリクエストメッセージに誤認識があると判定する。
【0096】
[ステップS1514] メッセージ分割部130は、リクエスト数がレスポンス数よりも多いときは、indexが示す「n」より後に出現するレスポンスメッセージを分割対象とする。リクエスト数がレスポンス数よりも多い場合には、前から順に検索して「total=0」となったときのメッセージのうち、最も通信時刻の遅いメッセージを指す「n」が設定されている。このとき、「n」より前では、リクエストメッセージとレスポンスメッセージの数は一致している。したがって、「n」より後のレスポンスメッセージに誤認識があると判定する。
【0097】
[ステップS1515] メッセージ分割部130は、ステップS1513またはステップS1514で決定した分割対象メッセージのうち、最大のサイズのものを分割する。
[ステップS1516] メッセージ分割部130は、ステップS1515のメッセージ分割後のレスポンス数とリクエスト数とを比較する。一致しているときは、分割処理を終了する。一致していないときは、図18に示した結合子Cに戻って、再度分割対象範囲の決定からの処理を行う。
【0098】
以上の処理手順が実行されることにより、複数のメッセージを1つのメッセージとして認識した可能性の高い分割対象範囲が決定され、分割処理が行われる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、メッセージ判別装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【0099】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD−ROM(Compact Disc Read Only Memory)などの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0100】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0101】
以上の実施の形態に関し、さらに以下の付記を開示する。
(付記1) ネットワークを介して受け渡されるパケット群からメッセージを判別するメッセージ判別プログラムおいて、
コンピュータに、
前記パケット群を取得し、前記パケット群を所定の規則に基づいてメッセージ単位に区切り、前記メッセージ単位に区切ったパケット群から仮メッセージを組み立て、仮メッセージ記憶手段に記憶するメッセージ組立手順、
所定の期間に受け渡された仮メッセージ群を前記仮メッセージ記憶手段から読み出し、前記仮メッセージ群をリクエストメッセージとレスポンスメッセージに分類して前記所定の期間におけるそれぞれの出現数を算出して比較し、前記リクエストメッセージと前記レスポンスメッセージの出現数が一致しないときは、出現数が少ない方に分類した仮メッセージを分割する処理を前記出現数が一致するまで繰り返すメッセージ分割手順、
を実行させることを特徴とするメッセージ判別プログラム。
【0102】
(付記2) 前記メッセージ組立手順は、
前記パケット群の各パケットのサイズを、該パケットの通信時刻が早い順に、予め決められたパケット最大サイズと比較し、該パケットのサイズが前記パケット最大サイズより小さいときは、該パケットが前記メッセージ単位の最後のパケットと判定して前記メッセージ単位の区切りとする、
ことを特徴とする付記1記載のメッセージ判別プログラム。
【0103】
(付記3) 前記メッセージ組立手順は、
前記パケット群の各パケットが受け渡された通信時刻を、該パケットの通信時刻が早い順に順次解析し、直前のパケットの通信時刻からの経過時間が所定の閾値を超えていないときは、前記直前のパケットの送信元及び宛先と、該パケットの送信元及び宛先とを照合し、同じであるとき該パケットのサイズを前記パケット最大サイズと比較する、
ことを特徴とする付記2記載のメッセージ判別プログラム。
【0104】
(付記4) 前記メッセージ分割手順は、
前記リクエストメッセージと前記レスポンスメッセージの出現数が一致しないときは、出現数が少ない方に分類した仮メッセージ群の各仮メッセージのサイズを比較し、サイズが最も大きい仮メッセージを分割する、
ことを特徴とする付記1記載のメッセージ判別プログラム。
【0105】
(付記5) 前記メッセージ分割手順は、
前記リクエストメッセージと前記レスポンスメッセージの出現数とが一致せず、前記リクエストメッセージの出現数が前記レスポンスメッセージの出現数よりも多いときは、前記所定の期間の仮メッセージ群について、前記仮メッセージの通信時刻の早い方から順に、それぞれの仮メッセージの通信時刻までの前記リクエストメッセージの出現数と前記レスポンスメッセージの出現数とを算出して比較し、前記リクエストメッセージの出現数と前記レスポンスメッセージの出現数とが最後に一致した時点よりも通信時刻の遅いレスポンスメッセージを分割対象とする、
ことを特徴とする付記1記載のメッセージ判別プログラム。
【0106】
(付記6) 前記メッセージ分割手順は、
前記リクエストメッセージと前記レスポンスメッセージの出現数とが一致せず、前記レスポンスメッセージの出現数が前記リクエストメッセージの出現数よりも多いときは、前記所定の期間の仮メッセージ群について、前記仮メッセージの通信時刻の遅い方から順に、それぞれの仮メッセージの通信時刻までの前記リクエストメッセージの出現数と前記レスポンスメッセージの出現数とを算出して比較し、前記リクエストメッセージの出現数と前記レスポンスメッセージの出現数とが一致した最も早い通信時刻よりも通信時刻が早いリクエストメッセージを分割対象とする、
ことを特徴とする付記1記載のメッセージ判別プログラム。
【0107】
(付記7) 前記メッセージ分割手順は、
前記所定の期間を一連の処理に対応するメッセージが受け渡されている期間とし、直前の前記所定の期間の終了後に前記パケットを取得した時刻を起点とし、予め決められた一定時間が経過したとき、または入力したパケットを解析し、該パケットに一連の処理の終了を示す終了情報が設定されていたときを前記所定の期間の終了とする、
ことを特徴とする付記1記載のメッセージ判別プログラム。
【0108】
(付記8) 前記コンピュータに、さらに、
前記パケット群を取得し、前記パケット群の各パケットが予め決められたメッセージ判別対象のパケットであるかどうかを判定し、対象パケットと判定したパケットのみを抽出して前記メッセージ組立手順へ出力する対象パケット抽出手順を実行させる、
ことを特徴とする付記1記載のメッセージ判別プログラム。
【0109】
(付記9) ネットワークを介して受け渡されるパケット群からメッセージを判別するメッセージ判別装置おいて、
前記パケット群を取得し、前記パケット群を所定の規則に基づいてメッセージ単位に区切り、前記メッセージ単位に区切ったパケット群から仮メッセージを組み立て、仮メッセージ記憶手段に記憶するメッセージ組立手段と、
所定の期間に受け渡された仮メッセージ群を前記仮メッセージ記憶手段から読み出し、前記仮メッセージ群をリクエストメッセージとレスポンスメッセージに分類して前記所定の期間におけるそれぞれの出現数を算出して比較し、前記リクエストメッセージと前記レスポンスメッセージの出現数が一致しないときは、出現数が少ない方に分類した仮メッセージを分割する処理を前記出現数が一致するまで繰り返すメッセージ分割手段と、
を有することを特徴とするメッセージ判別装置。
【0110】
(付記10) ネットワークを介して受け渡されるパケット群からメッセージを判別するメッセージ判別方法おいて、
コンピュータが、
前記パケット群を取得し、前記パケット群を所定の規則に基づいてメッセージ単位に区切り、前記メッセージ単位に区切ったパケット群から仮メッセージを組み立て、仮メッセージ記憶手段に記憶し、
所定の期間に受け渡された仮メッセージ群を前記仮メッセージ記憶手段から読み出し、
前記仮メッセージ群をリクエストメッセージとレスポンスメッセージに分類して前記所定の期間におけるそれぞれの出現数を算出して比較し、
前記リクエストメッセージと前記レスポンスメッセージの出現数が一致しないときは、出現数が少ない方に分類した仮メッセージを分割する処理を前記出現数が一致するまで繰り返す、
手順を有することを特徴とするメッセージ判別方法。
【符号の説明】
【0111】
1 メッセージ判別装置
1a 対象パケット抽出手段
1b メッセージ組立手段
1c メッセージ分割手段
1d パケット記憶手段
1e 仮メッセージ記憶手段
1f 本メッセージ記憶手段
2a,2b サーバ
3 ネットワーク
4a,4b クライアント
5 パケット

【特許請求の範囲】
【請求項1】
ネットワークを介して受け渡されるパケット群からメッセージを判別するメッセージ判別プログラムおいて、
コンピュータに、
前記パケット群を取得し、前記パケット群を所定の規則に基づいてメッセージ単位に区切り、前記メッセージ単位に区切ったパケット群から仮メッセージを組み立て、仮メッセージ記憶手段に記憶するメッセージ組立手順、
所定の期間に受け渡された仮メッセージ群を前記仮メッセージ記憶手段から読み出し、前記仮メッセージ群をリクエストメッセージとレスポンスメッセージに分類して前記所定の期間におけるそれぞれの出現数を算出して比較し、前記リクエストメッセージと前記レスポンスメッセージの出現数が一致しないときは、出現数が少ない方に分類した仮メッセージを分割する処理を前記出現数が一致するまで繰り返すメッセージ分割手順、
を実行させることを特徴とするメッセージ判別プログラム。
【請求項2】
前記メッセージ組立手順は、
前記パケット群の各パケットのサイズを、該パケットの通信時刻が早い順に、予め決められたパケット最大サイズと比較し、該パケットのサイズが前記パケット最大サイズより小さいときは、該パケットが前記メッセージ単位の最後のパケットと判定して前記メッセージ単位の区切りとする、
ことを特徴とする請求項1記載のメッセージ判別プログラム。
【請求項3】
前記メッセージ分割手順は、
前記リクエストメッセージと前記レスポンスメッセージの出現数が一致しないときは、出現数が少ない方に分類した仮メッセージ群の各仮メッセージのサイズを比較し、サイズが最も大きい仮メッセージを分割する、
ことを特徴とする請求項1記載のメッセージ判別プログラム。
【請求項4】
前記メッセージ分割手順は、
前記リクエストメッセージと前記レスポンスメッセージの出現数とが一致せず、前記リクエストメッセージの出現数が前記レスポンスメッセージの出現数よりも多いときは、前記所定の期間の仮メッセージ群について、前記仮メッセージの通信時刻の早い方から順に、それぞれの仮メッセージの通信時刻までの前記リクエストメッセージの出現数と前記レスポンスメッセージの出現数とを算出して比較し、前記リクエストメッセージの出現数と前記レスポンスメッセージの出現数とが最後に一致した時点よりも通信時刻の遅いレスポンスメッセージを分割対象とする、
ことを特徴とする請求項1記載のメッセージ判別プログラム。
【請求項5】
前記メッセージ分割手順は、
前記リクエストメッセージと前記レスポンスメッセージの出現数とが一致せず、前記レスポンスメッセージの出現数が前記リクエストメッセージの出現数よりも多いときは、前記所定の期間の仮メッセージ群について、前記仮メッセージの通信時刻の遅い方から順に、それぞれの仮メッセージの通信時刻までの前記リクエストメッセージの出現数と前記レスポンスメッセージの出現数とを算出して比較し、前記リクエストメッセージの出現数と前記レスポンスメッセージの出現数とが一致した最も早い通信時刻よりも通信時刻が早いリクエストメッセージを分割対象とする、
ことを特徴とする請求項1記載のメッセージ判別プログラム。
【請求項6】
ネットワークを介して受け渡されるパケット群からメッセージを判別するメッセージ判別装置おいて、
前記パケット群を取得し、前記パケット群を所定の規則に基づいてメッセージ単位に区切り、前記メッセージ単位に区切ったパケット群から仮メッセージを組み立て、仮メッセージ記憶手段に記憶するメッセージ組立手段と、
所定の期間に受け渡された仮メッセージ群を前記仮メッセージ記憶手段から読み出し、前記仮メッセージ群をリクエストメッセージとレスポンスメッセージに分類して前記所定の期間におけるそれぞれの出現数を算出して比較し、前記リクエストメッセージと前記レスポンスメッセージの出現数が一致しないときは、出現数が少ない方に分類した仮メッセージを分割する処理を前記出現数が一致するまで繰り返すメッセージ分割手段と、
を有することを特徴とするメッセージ判別装置。
【請求項7】
ネットワークを介して受け渡されるパケット群からメッセージを判別するメッセージ判別方法おいて、
コンピュータが、
前記パケット群を取得し、前記パケット群を所定の規則に基づいてメッセージ単位に区切り、前記メッセージ単位に区切ったパケット群から仮メッセージを組み立て、仮メッセージ記憶手段に記憶し、
所定の期間に受け渡された仮メッセージ群を前記仮メッセージ記憶手段から読み出し、
前記仮メッセージ群をリクエストメッセージとレスポンスメッセージに分類して前記所定の期間におけるそれぞれの出現数を算出して比較し、
前記リクエストメッセージと前記レスポンスメッセージの出現数が一致しないときは、出現数が少ない方に分類した仮メッセージを分割する処理を前記出現数が一致するまで繰り返す、
手順を有することを特徴とするメッセージ判別方法。

【図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

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2011−134213(P2011−134213A)
【公開日】平成23年7月7日(2011.7.7)
【国際特許分類】
【出願番号】特願2009−294627(P2009−294627)
【出願日】平成21年12月25日(2009.12.25)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】