[実施の形態1]
図1に、ネットワーク構成例を示す。キャプチャサーバ101は、監視対象ネットワークにおいて伝送されているパケットをキャプチャする。キャプチャされたパケットは、監視対象ネットワークに接続されている情報処理装置103同士のセッションにおいて伝送されたものである。
キャプチャサーバ101は、キャプチャしたパケットをまとめて、オブジェクトを生成する。つまり、この例におけるオブジェクトは、パケットのグループである。そして、キャプチャサーバ101は、オブジェクトを伝送ネットワークに接続されている保存サーバ105に分散して蓄積する。
本実施の形態では、2種類のオブジェクトが生成される。キャプチャサーバ101は、同じセッションで伝送されたパケットを集めたセッションオブジェクトを生成すると共に、期間内に伝送されたパケットを無条件に集めた期間オブジェクトを生成する。
尚、本実施の形態で、保存サーバ105は、2つの集合に分けられている。図示するように、X集合は、保存サーバ105a及び保存サーバ105bを含み、Y集合は、保存サーバ105c及び保存サーバ105dを含んでいる。
伝送ネットワーク及び監視対象ネットワークは、例えばLAN(Local Area Network)である。但し、LAN以外のネットワークであってもよい。また、この例では、伝送ネットワークは、監視対象ネットワークと異なるネットワークであるが、伝送ネットワークは、監視対象ネットワークと同じネットワークであってもよい。
図2に、セッションオブジェクト201を蓄積する動作の概要を示す。ここでは、11個のパケットをキャプチャすることを想定する。図2において、取得した順番に従ってパケットに番号を付している。また、同じセッションで伝送されたパケットには、同じ模様を付している。
キャプチャサーバ101は、第1分類処理において、セッション毎にパケットをまとめたセッションオブジェクト201を生成する。この例では4つのセッションオブジェクト201a乃至dが生成される。セッションオブジェクト201aには、セッションID「SS−01」で識別されるセッションで伝送された1番目のパケットと6番目のパケットと10番目のパケットとがまとめられている。セッションオブジェクト201bには、セッションID「SS−02」で識別されるセッションで伝送された2番目のパケットと7番目のパケットとがまとめられている。セッションオブジェクト201cには、セッションID「SS−03」で識別されるセッションで伝送された3番目のパケットと5番目のパケットと11番目のパケットとがまとめられている。セッションオブジェクト201dには、セッションID「SS−04」で識別されるセッションで伝送された4番目のパケットと8番目のパケットと9番目のパケットとがまとめられている。
また、キャプチャサーバ101は、第1割り当て処理において、セッションオブジェクト201a乃至dを、それぞれいずれかの保存サーバ105に割り当てる。割り当て先の保存サーバ105は、セッションIDに基づいて一意に定められる。
この例で、セッションオブジェクト201aは、保存サーバID「SV−A」で識別される保存サーバ105aに割り当てられる。つまり、セッションオブジェクト201aは、保存サーバ105aに送られ、保存サーバ105aにおいて保存される。セッションオブジェクト201bは、保存サーバID「SV−B」で識別される保存サーバ105bに割り当てられる。つまり、セッションオブジェクト201bは、保存サーバ105bに送られ、保存サーバ105bにおいて保存される。セッションオブジェクト201cは、保存サーバID「SV−C」で識別される保存サーバ105cに割り当てられる。つまり、セッションオブジェクト201cは、保存サーバ105cに送られ、保存サーバ105cにおいて保存される。セッションオブジェクト201dは、保存サーバID「SV−D」で識別される保存サーバ105dに割り当てられる。つまり、セッションオブジェクト201dは、保存サーバ105dに送られ、保存サーバ105dにおいて保存される。
ここでは、説明の便宜のために、X集合に属する保存サーバ105a又は保存サーバ105bで保存されるパケットを太線枠で示している。
図3に、期間オブジェクト301を蓄積する動作の概要を示す。つまり、図2に示したパケットを別の形式で保存する。キャプチャサーバ101は、キャプチャした日時を期間によって分ける。この例では、1番目から6番目までのパケットが1番目の期間にキャプチャされたと想定する。同じく、7番目から11番目までのパケットが2番目の期間にキャプチャされたと想定する。便宜的に、5個又は6個のパケットが同一の期間内にキャプチャされたものとしているが、実際にはもっと多くのパケットがキャプチャされる場合もある。
キャプチャサーバ101は、第2分類処理において、1つの期間にキャプチャされたパケットを2つのグループに分ける。つまり、1つの期間について、2つの期間オブジェクト301が生成される。一方の期間オブジェクト301は、X集合に属する保存サーバ105において保存されることを前提として、X集合領域に記憶される。他方の期間オブジェクト301は、Y集合に属する保存サーバ105において保存されることを前提として、Y集合領域に記憶される。
この例で、ID「P−01」で識別される1番目の期間においてキャプチャされた1番目から6番目までのパケットを、X集合領域に記憶される期間オブジェクト301aとY集合領域に記憶される期間オブジェクト301cとに分けている。同様に、ID「P−02」で識別される2番目の期間においてキャプチャされた7番目から11番目までのパケットを、X集合領域に記憶される期間オブジェクト301bとY集合領域に記憶される期間オブジェクト301dとに分けている。
キャプチャサーバ101は、第2割り当て処理において、各期間オブジェクト301a乃至dを、前提としている集合の保存サーバ105に割り当てる。割り当て先の保存サーバ105は、期間ID及び前提とする集合に基づいて一意に定められる。
この例で、X集合領域に記憶された期間オブジェクト301aは、X集合の保存サーバ105aに割り当てられる。つまり、期間オブジェクト301aは、保存サーバ105aに送られ、保存サーバ105aにおいて保存される。X集合領域に記憶された期間オブジェクト301bは、X集合の保存サーバ105bに割り当てられる。つまり、期間オブジェクト301bは、保存サーバ105bに送られ、保存サーバ105bにおいて保存される。Y集合領域に記憶された期間オブジェクト301cは、Y集合の保存サーバ105cに割り当てられる。つまり、期間オブジェクト301cは、保存サーバ105cに送られ、保存サーバ105cにおいて保存される。Y集合領域に記憶された期間オブジェクト301dは、Y集合の保存サーバ105dに割り当てられる。つまり、期間オブジェクト301dは、保存サーバ105dに送られ、保存サーバ105dにおいて保存される。
図2において太線枠で示したパケット、つまりX集合に属する保存サーバ105に保存されたパケットは、図3においてY集合に属する保存サーバ105に保存される。他方、図2においてY集合に属する保存サーバ105に保存されたパケットは、図3においてX集合に属する保存サーバ105に保存される。従って、同一のパケットは、異なる集合に属する保存サーバ105に分散される。
尚、説明の便宜のため、1番目の期間に係る期間オブジェクト301a及び期間オブジェクト301cと共に、2番目の期間に係る期間オブジェクト301b及び期間オブジェクト301dを表しているが、後述する処理では、第2割り当て処理を終えた期間オブジェクト301は消去されるので、2番目の期間に係る期間オブジェクト301b及び期間オブジェクト301dが設けられる段階では、1番目の期間に係る期間オブジェクト301a及び期間オブジェクト301cは存在しない。
次に、保存されているセッションオブジェクト201を抽出する場合について説明する。図4に、セッションオブジェクト201を提供する動作の概要を示す。キャプチャサーバ101は、セッションを指定した抽出条件を受け付ける。そして、キャプチャサーバ101は、提供処理において、当該セッションに係るセッションオブジェクト201を保存サーバ105から取得して、そのまま出力する。
この例では、指定されたセッションがセッションID「SS−01」に該当するものとする。セッションID「SS−01」のセッションオブジェクト201aが、保存サーバ105aから抽出され、キャプチャサーバ101から出力される。
続いて、保存されている期間オブジェクト301を抽出する場合について説明する。図5に、期間オブジェクト301を提供する動作の概要を示す。キャプチャサーバ101は、期間を指定した抽出条件を受け付ける。複数の期間が指定されることもあるが、ここでは1つの期間が指定されたものとして説明する。キャプチャサーバ101は、提供処理において、当該期間に係る期間オブジェクト301をX集合に属する保存サーバ105及びY集合に属する保存サーバ105から取得する。そして、キャプチャサーバ101は、取得した2つの保存サーバ105をマージし、キャプチャした順番にパケットを並び替えて1つの期間オブジェクト301を生成し、出力する。
この例では、指定された期間が期間ID「P−01」に該当するものとする。図示するように、期間ID「P−01」の期間オブジェクト301aが、保存サーバ105aから抽出され、同じく期間ID「P−01」の期間オブジェクト301cが、保存サーバ105cから抽出される。そして、期間オブジェクト301aと期間オブジェクト301cとが1つにまとめられた期間オブジェクト301eが生成される。図示するように、期間オブジェクト301eに含まれるパケットは、1番目から6番目までキャプチャされた順番に並べられる。
次に、いずれかの保存サーバ105dが故障した場合の復旧について説明する。図6に、セッションオブジェクト201及び期間オブジェクト301を復旧する動作の概要を示す。ここでは、保存サーバID「SV−D」の保存サーバ105dが故障し、セッションオブジェクト201dと期間オブジェクト301dとを喪失したものと想定する。そして、保存サーバID「SV−E」で識別される保存サーバ105eを新たに設け、保存サーバ105eにおいてセッションオブジェクト201dと期間オブジェクト301dとを再現するものとする。
このように、Y集合の保存サーバ105dが故障した場合には、X集合の保存サーバ105に格納されているデータに基づいて、喪失したデータを再現する。また、セッションオブジェクト201は、期間オブジェクト301に含まれるパケットに基づいて復旧され、期間オブジェクト301は、セッションオブジェクト201に含まれるパケットに基づいて復旧される。
まず、セッションオブジェクト201を復旧する動作について述べる。保存サーバ105aは、第1選出処理において、セッションオブジェクト201dに含まれていた4番目のパケットを、期間オブジェクト301aから取り出し、保存サーバ105eへ送る。また、保存サーバ105bは、第1選出処理において、セッションオブジェクト201dに含まれていた8番目のパケットと9番目のパケットとを、期間オブジェクト301bから取り出し、保存サーバ105eへ送る。
一方、保存サーバ105eは、4番目のパケット、8番目のパケット及び9番目のパケットを受信すると、第1生成処理において、これらのパケットをまとめたセッションオブジェクト201dを生成する。
次に、期間オブジェクト301を復旧する動作について述べる。保存サーバ105aは、第2選出処理において、期間オブジェクト301dに含まれていた10番目のパケットを、セッションオブジェクト201aから取り出し、保存サーバ105eへ送る。また、保存サーバ105bは、第2選出処理において、期間オブジェクト301dに含まれていた7番目のパケットを、セッションオブジェクト201bから取り出し、保存サーバ105eへ送る。
一方、保存サーバ105eは、7番目のパケット及び10番目のパケットを受信すると、第2生成処理において、これらのパケットをまとめた期間オブジェクト301dを生成する。
ここでは、新たに設けた保存サーバ105においてデータを再現する例を示したが、既存の保存サーバ105においてデータを再現するようにしてもよい。その場合の動作も、上述の通りである。以上で本実施の形態における概要の説明を終える。
以下、キャプチャサーバ101の動作について説明する。図7に、キャプチャサーバ101のモジュール構成例を示す。キャプチャサーバ101は、NIC(Network Interface Card)703、ドライバ705、バッファ707、解析部709、L4解析部711、インデックス記憶部715、定義データ記憶部717、蓄積部719、送信部721、受信部723及び提供部725を有する。
キャプチャサーバ101は、ネットワークタップ701を介して監視対象ネットワークに接続している。上述の通り、キャプチャサーバ101は、監視対象ネットワークを流れているパケットをキャプチャする。この例では、ネットワークタップ701を使用してキャプチャする。但し、監視対象ネットワークのスイッチを通過するパケットをミラーポートに複製してキャプチャするようにしてもよい。尚、パケットは、PDU(Protocol Data Unit)の例である。
NIC703は、ネットワークに接続するためのインターフェースカードである。ドライバ705は、パケットを抽出し、抽出したパケットをバッファ707に格納すると共に、抽出したパケットにIDを割り当て、取得時間を特定する。尚、NIC703が、取得時間を特定するようにしてもよい。バッファ707は、取得時間を付加されたパケットを格納する。
解析部709は、主にパケットを解析すると共に、パケットを収集するためのインデックを生成する。解析部709は、L4解析部711を有している。L4解析部711は、ISO(International Organization for Standardization)のOSI参照モデル(OSI reference model)における第4層(以下、L4という。)に関する解析を行う。
インデックス記憶部715は、インデックステーブルを記憶するための領域を2つ有する。定義データ記憶部717は、セッションを定義するデータ、具体的にはセッションテーブルを記憶する。セッションテーブルについては、図9を用いて後述する。更に、定義データ記憶部717は、期間を定義するデータ、具体的には期間テーブルを記憶する。期間テーブルについては、図10を用いて後述する。
蓄積部719は、収集したパケットをまとめたセッションオブジェクト201及び期間オブジェクト301を生成し、生成したセッションオブジェクト201及び期間オブジェクト301を保存サーバ105に蓄積する。送信部721は、各種データを伝送ネットワークを介して保存サーバ105に送信する。受信部723は、伝送ネットワークを介して保存サーバ105から各種データを受信する。提供部725は、セッションオブジェクト201又は期間オブジェクト301を抽出して、提供する。
上述したドライバ705、解析部709、L4解析部711、蓄積部719、送信部721、受信部723及び提供部725は、ハードウエア資源(例えば、図51)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
上述したバッファ707、インデックス記憶部715及び定義データ記憶部717は、ハードウエア資源(例えば、図51)を用いて実現される。
尚、キャプチャサーバ101以外の装置(例えば、提供サーバ)において、提供処理を行うようにしてもよい。その場合には、当該装置は、送信部721、受信部723及び提供部725を有する。
続いて、インデックス記憶部715に記憶されるインデックステーブルについて説明する。図8に、インデックステーブルの例を示す。この例におけるインデックステーブルは、パケットに対応するレコードを有している。インデックステーブルのレコードは、パケットIDが格納されるフィールドと、セッションIDが格納されるフィールドと、取得日時が格納されるフィールドとを有している。
パケットIDは、パケットを識別するための情報である。この例で、パケットIDとして、キャプチャされたパケットに対してシーケンシャルなコードが付与される。セッションIDは、当該パケットの伝送に係るセッションを特定するための情報である。取得日時は、当該パケットをキャプチャした日付及び時刻である。
この例における第1レコードにおいて、パケットID「PC−001」が割り振られたパケットに係るセッションは、セッションID「SS−01」で内部的に識別されることを示している。また、当該パケットが日時「T−001」にキャプチャされたことを示している。具体的には、いずれのパラメータも実際には数値コードであるが、説明の便宜のため文字コードで示している。
次に、定義データ記憶部717に記憶されるセッションテーブルについて説明する。図9に、セッションテーブルの例を示す。この例におけるセッションテーブルは、セッションに対応するレコードを有している。セッションテーブルのレコードは、セッションIDが格納されるフィールドと、送信元IP(Internet Protocol)アドレスが格納されるフィールドと、送信元ポート番号が格納されるフィールドと、送信先IPアドレスが格納されるフィールドと、送信先ポート番号が格納されるフィールドと、プロトコル番号が格納されるフィールドとを有している。
セッションIDは、セッションを特定するために解析部709が割り振る識別子である。送信元IPアドレスは、当該パケットの送信元である情報処理装置103のIPアドレスである。送信元ポート番号は、当該パケットの送信元である情報処理装置103において当該パケットを送出するポートの番号である。送信先IPアドレスは、当該パケットの送信先に相当する情報処理装置103のIPアドレスである。送信先ポート番号は、当該パケットの送信先に相当する情報処理装置103において当該パケットを受け入れるポートの番号である。プロトコル番号は、ISOのOSI参照モデルにおける第4層のプロトコルを識別する番号である。プロトコル番号「6」は、TCP(Transmission Control Protocol)を示し、プロトコル番号「17」は、UDP(User Datagram Protocol)を示している。
この例における第1レコードは、セッションID「SS−01」が割り振られたセッションについて、IPアドレス「10.20.30.40」の情報処理装置103におけるポート番号「2000」が送信元に相当し、IPアドレス「10.20.30.50」の情報処理装置103におけるポート番号「20」が送信先に相当することを示している。また、第1レコードは、このセッションにおける第4層のプロトコルは、TCPであることも示している。
図10に、期間テーブルの例を示す。この例における期間テーブルは、期間オブジェクト301を特定する期間に対応するレコードを有している。期間テーブルのレコードは、期間IDが格納されるフィールドと、開始日時が格納されるフィールドと、終了日時が格納されるフィールドとを有している。
期間IDは、期間を識別するための情報である。開始日時は、期間の始点を特定する。終了日時は、期間の終点を特定する。
この例における第1レコードは、期間ID「P−01」が割り振られた期間は、日時「Q−01」に始まり、日時「Q−02」に終わることを示している。例えば、期間は周期的に定められる。期間の長さは、例えば0.1秒である。
図11に、ドライバ処理フローを示す。ドライバ705は、待機して、NIC703からパケットを受ける(S1101)。NIC703からパケットを受けると、ドライバ705は受けたパケットにパケットIDを割り当てる(S1103)。そして、ドライバ705は、バッファ707にパケット及び取得日時を格納する(S1105)。つまり、ドライバ705は、格納されるパケットに、当該パケットをキャプチャした日時を付する。ドライバ705は、パケットID、取得日時及びパケットヘッダのアドレスを含む通知を解析部709に渡す(S1107)。図11に示した処理は、ドライバ処理の例である。
図12に、解析部709のモジュール構成例を示す。解析部709は、L4解析部711の他に、受付部1201、生成部1203、第1切り替え部1205及び内部記憶部1207を有する。
受付部1201は、ドライバ705から通知を受け付ける。生成部1203は、セッションテーブルを生成する。第1切り替え部1205は、インデックスを書き込む先となるインデックステーブルの領域を切り替える。内部記憶部1207は、解析部709の内部で用いるデータを記憶する。
上述した受付部1201、生成部1203及び第1切り替え部1205は、ハードウエア資源(例えば、図51)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
上述した内部記憶部1207は、ハードウエア資源(例えば、図51)を用いて実現される。
図13及び図14に、解析処理フローを示す。最初に、送信部721は、各保存サーバ105へ期間テーブルを送信する(S1301)。但し、他の方法によって、キャプチャサーバ101及び各保存サーバ105において期間テーブルを共有するようにしてもよい。
受付部1201がドライバ705から通知を受けると(S1303)、生成部1203は、通知から得られるパケットID及び取得日時を、インデックステーブルの新しいレコードに書く(S1305)。L4解析部711は、通知に含まれるアドレスによってパケットヘッダを特定する(S1307)。L4解析部711は、当該パケットのプロトコルが所定のプロトコルに該当するか否かを判定する(S1309)。所定のプロトコルは、例えばTCP又はUDPである。当該パケットのプロトコルが所定のプロトコルに該当しないと判定した場合には、端子Cを介して図14のS1403の処理に移る。このとき、新しいレコードにおけるセッションIDのフィールドは、未設定のままとなる。
一方、当該パケットのプロトコルが所定のプロトコルに該当すると判定した場合には、L4解析部711は、パケットヘッダからセッションデータを抽出する(S1311)。セッションデータには、送信元IPアドレス、送信元ポート番号、送信先IPアドレス、送信先ポート番号及びプロトコル番号が含まれる。これらの組は、5−tupleと呼ばれることもある。
生成部1203は、セッションデータが既にセッションテーブルに登録されているか否かを判定する(S1313)。セッションデータが既にセッションテーブルに登録されていると判定した場合には、端子Aを介して図14に示したS1401の処理に移る。
一方、セッションデータが未だセッションテーブルに登録されていないと判定した場合には、生成部1203は、セッションテーブルにレコードを追加する(S1315)。新たなレコードには、新たなセッションIDと当該セッションデータとが設定される。具体的には、セッションID、送信元IPアドレス、送信元ポート番号、送信先IPアドレス、送信先ポート番号及びプロトコル番号が設定される。
そして、送信部721は、各保存サーバ105へセッションテーブルを送信する(S1317)。但し、他の方法によって、キャプチャサーバ101及び各保存サーバ105においてセッションテーブルを共有するようにしてもよい。S1317の処理を終えると、端子Aを介して図14に示したS1401の処理に移る。
図14の説明に移る。生成部1203は、S1305の場合と同じ新しいレコードにセッションIDを書く(S1401)。セッションIDは、セッションテーブルに基づいて特定される。
続いて、L4解析部711は、L4解析処理を実行する(S1403)。L4解析処理は、従来の処理と同様であるので、これ以上説明しない。
第1切り替え部1205は、インデックステーブル切り替えのタイミングに至ったか否かを判定する(S1407)。第1切り替え部1205は、例えば、インデックステーブルに格納されているレコードの数が所定基準数に至った場合に、インデックステーブル切り替えのタイミングに至ったと判定する。或いは、第1切り替え部1205は、前回の切り替え時から所定に期間が経過した場合に、インデックステーブル切り替えのタイミングに至ったと判定するようにしてもよい。
インデックステーブル切り替えのタイミングに至ったと判定した場合には、第1切り替え部1205はインデックスを書き込むインデックステーブルの領域を切り替える(S1409)。第1切り替え部1205は、切り替え指示を蓄積部719へ送る(S1411)。これは、蓄積部719においても、同時にインデックスを読み込むインデックステーブルの領域を切り替えさせるためである。
図14に示した処理を終えると、端子Bを介して図13に示したS1303の処理に戻り、上述した処理を繰り返す。
図15に、蓄積部719のモジュール構成例を示す。蓄積部719は、読み込み部1501、レコード記憶部1503、第1分類部1505、第2分類部1506、セッションオブジェクト記憶部1507、期間オブジェクト記憶部1509、第1割り当て部1511、第2割り当て部1512、集合記憶部1513、配置記憶部1515及び第2切り替え部1517を有する。
読み込み部1501は、インデックス記憶部715からインデックステーブルのレコードを読み込む。レコード記憶部1503は、読み込まれたインデックステーブルのレコードを一時的に記憶する。第1分類部1505は、第1分類処理を実行する。第2分類部1506は、第2分類処理を実行する。
セッションオブジェクト記憶部1507は、生成されたセッションオブジェクト201を記憶する。期間オブジェクト記憶部1509は、生成された期間オブジェクト301を記憶する。
第1割り当て部1511は、第1割り当て処理を実行する。第2割り当て部1512は、第2割り当て処理を実行する。
集合記憶部1513は、集合テーブルを記憶する。集合テーブルについては、図24を用いて後述する。配置記憶部1515は、第1配置テーブル及び第2配置テーブルを記憶する。第1配置テーブルについては、図28を用いて後述する。第2配置テーブルについては、図33を用いて後述する。
第2切り替え部1517は、読み込む元となるインデックステーブルの領域を切り替える。
上述した読み込み部1501、第1分類部1505、第2分類部1506、第1割り当て部1511、第2割り当て部1512、及び第2切り替え部1517は、ハードウエア資源(例えば、図51)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
上述したレコード記憶部1503、セッションオブジェクト記憶部1507、期間オブジェクト記憶部1509、集合記憶部1513及び配置記憶部1515は、ハードウエア資源(例えば、図51)を用いて実現される。
図16に、セッションオブジェクト201の例を示す。この例におけるセッションオブジェクト201は、メタデータ1601及び結合データ1603を含んでいる。結合データ1603は、パケットを連結したデータである。メタデータ1601は、セッションに関するデータ及びパケットに関するデータを含んでいる。
図17に、セッションオブジェクト201におけるメタデータ1601の例を示す。メタデータ1601は、ヘッダ部とテーブル部とを有している。ヘッダ部には、セッションIDを格納するためのフィールドと、セッションデータを格納するためのフィールドとが設けられている。セッションデータを格納するためのフィールドには、送信元IPアドレスを格納するためのフィールドと、送信元ポート番号を格納するためのフィールドと、送信先IPアドレスを格納するためのフィールドと、送信先ポート番号を格納するためのフィールドと、プロトコル番号を格納するためのフィールドとが含まれている。
この例のヘッダ部は、このメタデータ1601が、セッションID「SS−01」のセッションに係るパケットの結合データ1603に対応することを示している。また、この例のヘッダ部は、このセッションについて、IPアドレス「10.20.30.40」の情報処理装置103におけるポート番号「2000」が送信元に相当し、IPアドレス「10.20.30.50」の情報処理装置103におけるポート番号「20」が送信先に相当することを示している。また、この例のヘッダ部は、このセッションにおける第4層のプロトコルは、TCPであることも示している。
テーブル部には、結合データ1603に含まれるパケット毎のレコードが設けられている。レコードには、パケットIDを格納するためのフィールドと、オフセットを格納するためのフィールドと、取得日時を格納するためのフィールドとが設けられている。この例のテーブル部は、1番目のパケットが、パケットID「PC−001」で特定され、オフセット「0」を先頭に格納されていることを示している。また、1番目のパケットは、日時「T−001」にキャプチャされている。2番目のパケットは、パケットID「PC−006」で特定され、オフセット「624」を先頭に格納されている。また、2番目のパケットは、日時「T−006」にキャプチャされている。
図18に、セッションオブジェクト201における結合データ1603の例を示す。結合データ1603において、同じセッションで伝送されたパケットが連結されている。図18は、パケットID「PC−001」のパケットにおける先頭オフセットが「0」であり、パケットID「PC−006」のパケットにおける先頭オフセットが「624」であることを表している。
図19に、期間オブジェクト記憶部1509の構成例を示す。期間オブジェクト記憶部1509は、X集合領域及びY集合領域を有している。X集合領域には、X集合に属する保存サーバ105に送られる期間オブジェクト301(例えば、図3に示した期間オブジェクト301a)が格納される。Y集合領域には、Y集合に属する保存サーバ105に送られる期間オブジェクト301(例えば、図3に示した期間オブジェクト301c)が格納される。これらの期間オブジェクト301は、同一の期間に関する。
図20に、期間オブジェクト301の例を示す。この例における期間オブジェクト301は、メタデータ2001及び結合データ2003を含んでいる。結合データ2003は、パケットを連結したデータである。メタデータ2001は、期間に関するデータ及びパケットに関するデータを含んでいる。
図21に、期間オブジェクト301aにおけるメタデータ2001の例を示す。メタデータ2001は、ヘッダ部とテーブル部とを有している。ヘッダ部には、期間IDを格納するためのフィールドと、開始日時を格納するためのフィールドと、終了日時を格納するためのフィールドとが設けられている。
この例のヘッダ部は、このメタデータ2001が、期間ID「P−01」のキャプチャに係るパケットの結合データ2003に対応することを示している。また、この例のヘッダ部は、日時「Q−01」から日時「Q−02」までにキャプチャされたパケットを収集していることを示している。
テーブル部には、結合データ2003に含まれるパケット毎のレコードが設けられている。レコードには、パケットIDを格納するためのフィールドと、オフセットを格納するためのフィールドと、取得日時を格納するためのフィールドと、セッションIDを格納するためのフィールドとが設けられている。
この例のテーブル部は、1番目のパケットがパケットID「PC−003」で特定され、オフセット「0」を先頭に格納されていることを示している。また、1番目のパケットは、ID「SS−03」で識別されるセッションで伝送され、日時「T−003」にキャプチャされている。2番目のパケットは、パケットID「PC−004」で特定され、オフセット「384」を先頭に格納されている。また、2番目のパケットは、ID「SS−04」で識別されるセッションで伝送され、日時「T−004」にキャプチャされている。
図22に、期間オブジェクト301における結合データ2003の例を示す。結合データ2003において、同じ期間にキャプチャされたパケットが連結されている。図22は、パケットID「PC−003」のパケットにおける先頭オフセットが「0」であり、パケットID「PC−004」のパケットにおける先頭オフセットが「384」であることを表している。
図23に、期間オブジェクト301cにおけるメタデータ2001の例を示す。ヘッダ部は、図21の場合と同様である。一方、テーブル部は、図21の場合と異なる。
この例のテーブル部は、1番目のパケットが、パケットID「PC−001」で特定され、オフセット「0」を先頭に格納されていることを示している。また、1番目のパケットは、ID「SS−01」で識別されるセッションで伝送され、日時「T−001」にキャプチャされている。2番目のパケットは、パケットID「PC−002」で特定され、オフセット「624」を先頭に格納されている。また、2番目のパケットは、ID「SS−02」で識別されるセッションで伝送され、日時「T−002」にキャプチャされている。
図24に、集合テーブルの例を示す。この例における集合テーブルは、集合に対応するレコードを有している。集合テーブルのレコードは、保存サーバIDが格納されるフィールドを有している。保存サーバIDは、当該集合に属する保存サーバ105を特定する。集合に属する保存サーバ105の数は、1又は複数である。
この例では、ID「SV−A」の保存サーバ105a及びID「SV−B」の保存サーバ105bがX集合に属することを示している。また、ID「SV−C」の保存サーバ105c及びID「SV−D」の保存サーバ105dがY集合に属することを示している。
次に、蓄積部719による蓄積処理について説明する。本実施の形態では、蓄積処理(A)を実行する。図25に、蓄積処理(A)フローを示す。読み込み部1501は、読み込み元のインデックステーブルに未処理のレコードがあるか否かを判定する(S2501)。未処理のレコードとは、まだ第1分類処理及び第2分類処理が行われていないインデックスに相当する。インデックステーブルに未処理のレコードがあると判定した場合には、読み込み部1501は、未処理のレコード群を読み、レコード記憶部1503に記憶させる(S2503)。
第1分類部1505は、読んだレコードの各々について第1分類処理を行う。第1分類部1505は、レコード記憶部1503に記憶させたレコードのうち、分類処理の対象となっていない未処理のレコードを1つ特定する(S2505)。そして、第1分類部1505は、第1分類処理を実行する(S2507)。第1分類処理では、セッション毎にパケットを収集し、セッションオブジェクト201を生成する
図26に、第1分類処理フローを示す。第1分類部1505は、図25のS2505で特定されたレコードのパケットIDで特定されるパケットをバッファ707から取得する(S2601)。第1分類部1505は、当該レコードのセッションID及び取得日時を読む(S2603)。第1分類部1505は、当該セッションIDに係るセッションオブジェクト201が、既にセッションオブジェクト記憶部1507に設けられているか否かを判定する(S2605)。
当該セッションIDに係るセッションオブジェクト201が未だ設けられていないと判定した場合には、第1分類部1505は、まずセッションオブジェクト記憶部1507に新たな結合データ1603の予約領域を設定し、その領域の先頭に当該パケットを格納する(S2607)。続いて、第1分類部1505は、セッションオブジェクト記憶部1507に当該結合データ1603に対応するメタデータ1601を生成する。メタデータ1601のヘッダ部には、当該セッションIDと、セッションテーブルから取得されたセッションデータとが設定される。また、第1分類部1505は、メタデータ1601のテーブル部に最初のレコードを設定する(S2609)。レコードには、パケットIDと当該パケットの先頭を指すオフセットと取得日時とが設定される。
一方、S2605において、当該セッションIDに係るセッションオブジェクト201が既に設けられていると判定した場合には、第1分類部1505は、既存の結合データ1603の予約領域にパケットを追加する(S2611)。また、第1分類部1505は、既存のメタデータ1601のテーブル部にレコードを追加する(S2613)。レコードには、パケットIDと当該パケットの先頭を指すオフセットと取得日時とが設定される。第1分類処理を終えると、呼び出し元の蓄積処理(A)に復帰する。
図25の説明に戻る。第1割り当て部1511は、セッションオブジェクト201を割り当てるタイミングに至ったか否かを判定する(S2509)。第1割り当て部1511は、前回の割り当てから所定の時間が経過した場合に、セッションオブジェクト201を割り当てるタイミングに至ったと判定する。セッションオブジェクト201を割り当てる周期は、例えば10秒である。
セッションオブジェクト201を割り当てるタイミングに至ったと判定した場合には、蓄積部719は、第1割り当て処理を起動する(S2511)。この例で、第1割り当て処理は、スレッドとして動作する。第1割り当て処理では、セッションオブジェクト201が保存サーバ105に割り当てられる。つまり、第1割り当て部1511は、セッションオブジェクト201毎に保存サーバ105を特定し、当該セッションオブジェクト201を当該保存サーバ105に格納する。
図27に、第1割り当て処理フローを示す。第1割り当て部1511は、セッションオブジェクト記憶部1507に記憶されているセッションオブジェクト201を1つ特定する(S2701)。第1割り当て部1511は、特定したセッションオブジェクト201のメタデータ1601からセッションIDを読み、当該セッションIDのハッシュ値を算出する(S2703)。第1割り当て部1511は、第1配置テーブルに基づいて、当該セッションオブジェクト201を割り当てる保存サーバ105を特定する(S2705)。
図28に、第1配置テーブルの例を示す。第1配置テーブルのレコードは、セッションIDのハッシュ値の範囲が格納されるフィールドと、保存サーバIDが格納されるフィールドとを有している。
セッションIDのハッシュ値の範囲は、セッションオブジェクト201を分類するために用いられる。保存サーバIDは、当該範囲に基づいて特定されるセッションオブジェクト201を割り当てる保存サーバ105を識別する。
図示した1番目のレコードは、或るセッションIDに係るセッションオブジェクト201について、当該セッションIDのハッシュ値が、「0x0000〜0x3fff」の範囲に含まれる場合に、当該セッションオブジェクト201は、ID「SV−A」で識別される保存サーバ105aに保存されることを示している。
図27の説明に戻る。第1割り当て部1511は、当該セッションオブジェクト201の保存要求を、特定された保存サーバ105に送信する(S2707)。このとき、当該セッションオブジェクト201が当該保存サーバ105に送られる。そして、第1割り当て部1511は、当該セッションオブジェクト201を消去する(S2709)。
第1割り当て部1511は、未処理のセッションオブジェクト201があるか否かを判定する(S2711)。未処理のセッションオブジェクト201があると判定した場合には、S2701に示した処理に戻って、上述した処理を繰り返す。一方、未処理のセッションオブジェクト201がないと判定した場合には、第1割り当て処理を終える。
図25の説明に戻る。S2509において、セッションオブジェクト201を割り当てるタイミングに至っていないと判定した場合には、そのままS2513の処理に移る。また、S2511において第1割り当て処理を起動した場合には、第1割り当て処理の終了を待たずに、S2513の処理に移る。
第2分類部1506は、第2分類処理を実行する(S2513)。第2分類処理では、期間毎にパケットを収集し、期間オブジェクト301を生成する
図29に、第2分類処理フロー例を示す。第2分類部1506は、図25のS2505で特定されたレコードのパケットIDで特定されるパケットをバッファ707から取得する(S2901)。第2分類部1506は、当該レコードのセッションID及び取得日時を読む(S2903)。第2分類部1506は、期間テーブルに基づいて、当該取得日時を含む期間のIDを特定する(S2904)。
第2分類部1506は、当該セッションIDのハッシュ値を算出する(S2905)。第2分類部1506は、第1配置テーブルに基づいて、当該パケットを含むセッションオブジェクト201を割り当てる保存サーバ105を特定する(S2907)。そして、第2分類部1506は、当該保存サーバ105はX集合に属するか否かを判定する(S2909)。
S2907で特定した保存サーバ105はX集合に属さないと判定した場合、つまり当該保存サーバ105がY集合に属する場合には、第2分類部1506は、X集合処理を実行する(S2911)。X集合処理では、X集合領域に期間オブジェクト301を生成する。X集合処理については、図30を用いて後述する。
一方、S2907で特定した保存サーバ105はX集合に属すると判定した場合、第2分類部1506は、Y集合処理を実行する(S2913)。Y集合処理では、Y集合領域に期間オブジェクト301を生成する。Y集合処理については、図31を用いて後述する。第2分類処理を終えると、呼び出し元の蓄積処理(A)に復帰する。
図30に、X集合処理フローを示す。第2分類部1506は、X集合領域に、図29のS2904で特定した期間IDに係る期間オブジェクト301が既に期間オブジェクト記憶部1509に設けられているか否かを判定する(S3001)。
当該期間IDに係る期間オブジェクト301が未だ設けられていないと判定した場合には、第2分類部1506は、まずX集合領域に新たな結合データ2003の予約領域を設定し、その領域の先頭に当該パケットを格納する(S3003)。続いて、第2分類部1506は、X集合領域に当該結合データ2003に対応するメタデータ2001を生成する。メタデータ2001のヘッダ部には、当該期間IDと、期間テーブルから取得した開始日時及び終了日時が設定される。また、第2分類部1506は、メタデータ2001のテーブル部に最初のレコードを設定する(S3005)。レコードには、パケットIDと当該パケットの先頭を指すオフセットと取得日時とセッションIDとが設定される。
一方、当該期間IDに係る期間オブジェクト301が既に設けられていると判定した場合には、第2分類部1506は、既存の結合データ2003の予約領域にパケットを追加する(S3007)。また、第2分類部1506は、既存のメタデータ2001のテーブル部にレコードを追加する(S3009)。レコードには、パケットIDと当該パケットの先頭を指すオフセットと取得日時とセッションIDとが設定される。X集合処理を終えると、呼び出し元の第2分類処理に復帰する。
図31に、Y集合処理フローを示す。第2分類部1506は、Y集合領域に、図29のS2904で特定した期間IDに係る期間オブジェクト301が既に期間オブジェクト記憶部1509に設けられているか否かを判定する(S3101)。
当該期間IDに係る期間オブジェクト301が未だ設けられていないと判定した場合には、第2分類部1506は、まずY集合領域に新たな結合データ2003の予約領域を設定し、その領域の先頭に当該パケットを格納する(S3103)。続いて、第2分類部1506は、Y集合領域に当該結合データ2003に対応するメタデータ2001を生成する。メタデータ2001のヘッダ部には、当該期間IDと、期間テーブルから取得した開始日時及び終了日時が設定される。また、第2分類部1506は、メタデータ2001のテーブル部に最初のレコードを設定する(S3105)。レコードには、パケットIDと当該パケットの先頭を指すオフセットと取得日時とセッションIDとが設定される。
一方、当該期間IDに係る期間オブジェクト301が既に設けられていると判定した場合には、第2分類部1506は、既存の結合データ2003の予約領域にパケットを追加する(S3107)。また、第2分類部1506は、既存のメタデータ2001のテーブル部にレコードを追加する(S3109)。レコードには、パケットIDと当該パケットの先頭を指すオフセットと取得日時とセッションIDとが設定される。Y集合処理を終えると、呼び出し元の第2分類処理に復帰する。
図25の説明に戻る。S2513の第2分類処理を終えると、第2割り当て部1512は、期間オブジェクト301を割り当てるタイミングに至ったか否かを判定する(S2515)。第2割り当て部1512は、現在の期間の終了日時に至った場合に、期間オブジェクト301を割り当てるタイミングに至ったと判定する。
期間オブジェクト301を割り当てるタイミングに至ったと判定した場合には、蓄積部719は、第2割り当て処理を起動する(S2517)。この例で、第2割り当て処理は、スレッドとして動作する。第2割り当て処理では、期間オブジェクト301が保存サーバ105に割り当てられる。つまり、第2割り当て部1512は、期間オブジェクト301に対応する保存サーバ105を特定し、当該期間オブジェクト301を当該保存サーバ105に格納する。
図32に、第2割り当て処理フローを示す。第2割り当て部1512は、図25のS2515において終了したと判定した期間のIDのハッシュ値を算出する(S3201)。第2割り当て部1512は、第2配置テーブルに基づいて、期間IDのハッシュ値が含まれる範囲に対応するX集合の保存サーバIDを特定する。つまり、X集合領域の期間オブジェクト301が割り当てられる保存サーバ105が特定される(S3203)。
図33に、第2配置テーブルの例を示す。第2配置テーブルのレコードは、期間IDのハッシュ値の範囲が格納されるフィールドと、X集合の保存サーバIDが格納されるフィールドと、Y集合の保存サーバIDが格納されるフィールドとを有している。
期間IDのハッシュ値の範囲は、期間オブジェクト301を分類するために用いられる。X集合の保存サーバIDは、当該範囲に基づいて特定される期間オブジェクト301を保存するX集合の保存サーバ105を識別する。Y集合の保存サーバIDは、当該範囲に基づいて特定される期間オブジェクト301を保存するY集合の保存サーバ105を識別する。
図示した1番目のレコードは、或る期間IDに係る2つの期間オブジェクト301について、当該期間IDのハッシュ値が、「0x0000〜0x3fff」の範囲に含まれる場合に、X集合領域の期間オブジェクト301はID「SV−A」で識別される保存サーバ105aに保存され、Y集合領域の期間オブジェクト301はID「SV−C」で識別される保存サーバ105cに保存されることを示している。
図32の説明に戻る。第2割り当て部1512は、X集合領域の期間オブジェクト301の保存要求をS3203で特定した保存サーバ105に送信する(S3205)。その後、第2割り当て部1512は、X集合領域の期間オブジェクト301を消去する(S3207)。
次に、第2割り当て部1512は、第2配置テーブルに基づいて、期間IDのハッシュ値が含まれる範囲に対応するY集合の保存サーバIDを特定する。つまり、Y集合領域の期間オブジェクト301が割り当てられる保存サーバ105が特定される(S3209)。
第2割り当て部1512は、Y集合領域の期間オブジェクト301の保存要求をS3209で特定した保存サーバ105に送信する(S3211)。その後、第2割り当て部1512は、Y集合領域の期間オブジェクト301を消去する(S3213)。そして、第2割り当て処理を終える。
図25の説明に戻る。S2515において、期間オブジェクト301を割り当てるタイミングに至っていないと判定した場合には、そのままS2519の処理に移る。また、S2517において第2割り当て処理を起動した場合には、第2割り当て処理の終了を待たずに、S2519の処理に移る。
第1分類部1505は、S2503で読み込んだレコード群のうち、未処理のレコードがあるか否かを判定する(S2519)。未処理のレコードがあると判定した場合には、S2505に示した処理に戻って、上述した処理を繰り返す。
一方、未処理のレコードがないと判定した場合には、S2501に示した処理に戻って、上述した処理を繰り返す。
S2501の説明に戻る。S2501において、インデックステーブルに未処理のレコードがないと判定した場合には、第2切り替え部1517は、解析部709の第1切り替え部1205から切り替え指示を受けたか否かを判定する(S2521)。切り替え指示を受けたと判定した場合には、第2切り替え部1517は、第1分類部1505及び第2分類部1506がインデックスを読み取る元となるインデックステーブルの領域を切り替える(S2523)。そして、S2501に示した処理に戻って、上述した処理を繰り返す。
続いて、提供部725による提供処理について説明する。図34に、提供処理フローを示す。提供部725は、例えば受信部723を介して、抽出条件を受け付ける(S3401)。提供部725は、セッションオブジェクト201の抽出条件であるか否かを判定する(S3403)。セッションオブジェクト201の抽出条件である場合には、抽出条件にセッションデータが含まれているものとする。
セッションオブジェクト201の抽出条件であると判定した場合に、提供部725は、セッションテーブルに基づいて、抽出条件に含まれるセッションデータに対応するセッションIDを特定する(S3405)。提供部725は、当該セッションIDのハッシュ値を算出する(S3407)。提供部725は、第1配置テーブルに基づいて、当該ハッシュ値に対応する保存サーバIDを読む。つまり、当該セッションIDのオブジェクトを保存している保存サーバ105が特定される(S3409)。
提供部725は、送信部721を介して、当該保存サーバ105にセッションオブジェクト201の取得要求を送信する(S3411)。セッションオブジェクト201の取得要求には、セッションIDが含まれる。提供部725は、受信部723を介して、セッションオブジェクト201を受信する(S3413)。そして、提供部725は、例えば送信部721を介して、当該セッションオブジェクト201を出力して(S3415)、提供処理を終える。
S3403の説明に戻る。S3403において、セッションオブジェクト201の抽出条件ではないと判定した場合、つまり期間オブジェクト301の抽出条件である場合には、端子Dを介して、図35に示したS3501の処理に移る。尚、期間オブジェクト301の抽出条件である場合には、抽出条件において期間が指定されているものとする。
図35の説明に移る。提供部725は、期間テーブルに基づいて、指定された期間に対応する期間IDを抽出する(S3501)。複数の期間IDが抽出される場合があるものとする。
提供部725は、期間IDを1つ特定する(S3503)。提供部725は、当該期間IDのハッシュ値を算出する(S3505)。提供部725は、第2配置テーブルに基づいて、当該ハッシュ値に対応するX集合の保存サーバIDを読む。つまり、当該期間IDのオブジェクトを保存しているX集合の保存サーバ105が特定される(S3507)。
提供部725は、送信部721を介して、当該X集合の保存サーバ105に期間オブジェクト301の取得要求を送信する(S3509)。期間オブジェクト301の取得要求には、期間IDが含まれる。提供部725は、受信部723を介して、期間オブジェクト301を受信する(S3511)。そして、端子Eを介して、図36に示したS3601の処理に移る。
図36の説明に移る。提供部725は、第2配置テーブルに基づいて、当該期間IDのハッシュ値に対応するY集合の保存サーバIDを読む。つまり、当該期間IDのオブジェクトを保存しているY集合の保存サーバ105が特定される(S3601)。
提供部725は、送信部721を介して、Y集合の保存サーバ105に期間オブジェクト301の取得要求を送信する(S3603)。提供部725は、受信部723を介して、期間オブジェクト301を受信する(S3605)。提供部725は、図35のS3511で受信した期間オブジェクト301とS3605で受信した期間オブジェクト301とをマージし、パケットを取得日時の昇順にソートする(S3607)。
提供部725は、例えば送信部721を介して、ソートされた期間オブジェクト301を出力する(S3611)。
提供部725は、S3503において未特定の期間IDがあるか否かを判定する(S3613)。未特定の期間IDがあると判定した場合には、端子Fを介して、図35に示したS3503の処理に戻って、上述した処理を繰り返す。一方、未特定の期間IDがないと判定した場合には、提供処理を終える。
尚、図34乃至図36に示した処理は、提供処理の例である。提供部725は、抽出条件を各保存サーバ105に送信するようにしてもよい。各保存サーバ105は、抽出条件に従って自ら保持するセッションオブジェクト及び期間オブジェクトを特定するようにしてもよい。以上で、キャプチャサーバ101の動作についての説明を終える。
続いて、保存サーバ105の動作について説明する。図37に、保存サーバ105のモジュール構成例を示す。保存サーバ105は、送信部3701、受信部3703、書き込み部3705、定義データ記憶部3707、セッションオブジェクト記憶部3709、期間オブジェクト記憶部3711、返還部3713及び復旧部3715を有する。
送信部3701は、伝送ネットワークを介して各種データを送信する。受信部3703は、伝送ネットワークを介して各種データを受信する。書き込み部3705は、各種データを書き込む。定義データ記憶部3707は、キャプチャサーバ101の定義データ記憶部717と同様のデータ(セッションテーブル及び期間テーブル)を記憶する。セッションオブジェクト記憶部3709は、セッションオブジェクト201を記憶する。期間オブジェクト記憶部3711は、期間オブジェクト301を記憶する。返還部3713は、キャプチャサーバ101から取得要求に応じてセッションオブジェクト201又は期間オブジェクト301を返還する。
復旧部3715は、喪失したセッションオブジェクト201及び期間オブジェクト301を復旧するための処理を行う。復旧部3715は、選出部3717及び第1生成部3719を有する。選出部3717は、第1選出処理及び第2選出処理を実行する。第1生成部3719は、第1生成処理及び第2生成処理を実行する。
上述した送信部3701、受信部3703、書き込み部3705、返還部3713、復旧部3715、選出部3717及び第1生成部3719は、ハードウエア資源(例えば、図51)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
上述した定義データ記憶部3707、セッションオブジェクト記憶部3709及び期間オブジェクト記憶部3711は、ハードウエア資源(例えば、図51)を用いて実現される。
続いて、書き込み部3705による書き込み処理について説明する。本実施の形態では、書き込み処理(A)を実行する。図38に、書き込み処理(A)フローを示す。受信部3703に於いて期間テーブルを受信すると(S3801)、書き込み部3705は、受信した期間テーブルを定義データ記憶部3707に記憶する(S3803)。
書き込み部3705は、受信部3703に於いてセッションテーブルを受信したか否かを判定する(S3805)。一方、セッションテーブルを受信したと判定した場合には、書き込み部3705は、受信したセッションテーブルを定義データ記憶部3707に記憶する(S3807)。セッションテーブルを受信していないと判定した場合には、そのままS3809の処理に移る。
書き込み部3705は、受信部3703に於いてセッションオブジェクト201の保存要求を受信したか否かを判定する(S3809)。セッションオブジェクト201の保存要求を受信したと判定した場合には、書き込み部3705は、セッションオブジェクト201をセッションオブジェクト記憶部3709に記憶する(S3811)。一方、セッションオブジェクト201の保存要求を受信していないと判定した場合には、そのままS3813の処理に移る。
書き込み部3705は、受信部3703に於いて期間オブジェクト301の保存要求を受信したか否かを判定する(S3813)。期間オブジェクト301の保存要求を受信したと判定した場合には、書き込み部3705は、期間オブジェクト301を期間オブジェクト記憶部3711に記憶する(S3815)。そして、S3805に示した処理に戻って、上述した処理を繰り返す。また、期間オブジェクト301の保存要求を受信していないと判定した場合にも、そのままS3805に示した処理に戻って、上述した処理を繰り返す。
図38に示した処理は、書き込み処理の例である。保存サーバ105において、自ら保持するセッションオブジェクト201に関するセッションテーブルを生成するようにしてもよい。その場合には、S3805及びS3807の処理を省くようにしてもよい。または、保存サーバ105において、自ら保持する期間オブジェクト301に関する期間テーブルを生成するようにしてもよい。その場合には、S3801及びS3803の処理を省くようにしてもよい。
次に、返還部3713による返還処理について説明する。図39に、返還処理フローを示す。返還部3713は、受信部3703に於いてセッションオブジェクト201の取得要求を受信したか否かを判定する(S3901)。セッションオブジェクト201の取得要求を受信したと判定した場合には、返還部3713は、セッションオブジェクト201の取得要求に含まれるセッションIDで特定されるセッションオブジェクト201を読む(S3903)。そして、返還部3713は、送信部3701を介して、当該セッションオブジェクト201を要求元へ送信する(S3905)。セッションオブジェクト201の取得要求を受信していないと判定した場合には、そのままS3907の処理に移る。
返還部3713は、受信部3703に於いて期間オブジェクト301の取得要求を受信したか否かを判定する(S3907)。期間オブジェクト301の取得要求を受信したと判定した場合には、返還部3713は、期間オブジェクト301の取得要求に含まれる期間IDで特定される期間オブジェクト301を読む(S3909)。そして、返還部3713は、送信部3701を介して、当該期間オブジェクト301を要求元へ送信する(S3911)。期間オブジェクト301の取得要求を受信していないと判定した場合には、S3901の処理に戻る。
図39に示した処理は、返還処理の例である。返還部3713は、受信部3703に於いて受信した抽出条件に従って、自ら保持するセッションオブジェクト201及び期間オブジェクト301を特定するようにしてもよい。
最後に、復旧部3715による復旧処理について説明する。図40に、復旧処理フローを示す。受信部3703に於いて復旧指示を受信すると(S4001)、復旧部3715は、集合テーブルに基づいて、故障した保存サーバ105が保存サーバ105自身と同じ集合に属するか否かを判定する(S4003)。尚、復旧指示には、故障した保存サーバ105のID及び新たな保存先となる保存サーバ105のIDが含まれているものとする。故障した保存サーバ105が保存サーバ105自身と同じ集合に属すると判定した場合には、S4001に示した処理に戻って、上述した処理を繰り返す。
故障した保存サーバ105が保存サーバ105自身と異なる集合に属すると判定した場合には、選出部3717は、第1選出処理を実行する(S4005)。第1選出処理では、喪失したセッションオブジェクト201の再現に用いられるパケットを期間オブジェクト301から選び出す。
図41に、第1選出処理フローを示す。選出部3717は、期間オブジェクト記憶部3711に記憶している期間オブジェクト301を1つ特定する(S4101)。
選出部3717は、当該期間オブジェクト301に含まれるパケットを1つ特定する(S4103)。選出部3717は、当該パケットのセッションIDを特定する(S4105)。選出部3717は、セッションIDのハッシュ値を算出する(S4107)。選出部3717は、第1配置テーブルに基づいて、セッションIDのハッシュ値に対応する保存サーバIDを特定する(S4109)。
選出部3717は、特定した保存サーバIDが故障した保存サーバ105のIDであるか否かを判定する(S4111)。特定した保存サーバIDが故障した保存サーバ105のIDであると判定した場合には、選出部3717は、送信部3701を介して、新たな保存先である保存サーバ105にパケット及び第1付加データを送信する(S4113)。第1付加データは、パケットID、セッションID及び取得時間を含む。特定した保存サーバIDが故障した保存サーバ105のIDでないと判定した場合には、そのままS4115の処理に移る。
選出部3717は、未処理のパケットがあるか否かを判定する(S4115)。未処理のパケットがあると判定した場合には、S4103に示した処理に戻って、上述した処理を繰り返す。
一方、未処理のパケットがないと判定した場合には、選出部3717は、未処理の期間オブジェクト301があるか否かを判定する(S4117)。未処理の期間オブジェクト301があると判定した場合には、S4101に示した処理に戻って、上述した処理を繰り返す。
一方、未処理の期間オブジェクト301がないと判定した場合には、第1選出処理を終え、呼び出し元の復旧処理に復帰する。
図40の説明に戻る。続いて、選出部3717は、第2選出処理を実行する(S4007)。第2選出処理では、喪失した期間オブジェクト301の再現に用いられるパケットをセッションオブジェクト201から選び出す。
図42に、第2選出処理フローを示す。選出部3717は、セッションオブジェクト記憶部3709に記憶しているセッションオブジェクト201を1つ特定する(S4201)。
選出部3717は、当該セッションオブジェクト201に含まれるパケットを1つ特定する(S4203)。選出部3717は、当該パケットの取得時間が該当する期間のIDを特定する(S4205)。選出部3717は、期間IDのハッシュ値を算出する(S4207)。選出部3717は、第2配置テーブルに基づいて、保存サーバIDを特定する(S4209)。このとき、選出部3717は、保存サーバ105自身と異なる集合に属する保存サーバ105のIDを特定する。
選出部3717は、特定した保存サーバIDが故障した保存サーバ105のIDであるか否かを判定する(S4211)。特定した保存サーバIDが故障した保存サーバ105のIDであると判定した場合には、選出部3717は、送信部3701を介して、新たな保存先である保存サーバ105にパケット及び第2付加データを送信する(S4213)。第2付加データは、パケットID、セッションID、取得時間及び期間IDを含む。特定した保存サーバIDが故障した保存サーバ105のIDでないと判定した場合には、そのままS4215の処理に移る。
選出部3717は、未処理のパケットがあるか否かを判定する(S4215)。未処理のパケットがあると判定した場合には、S4203に示した処理に戻って、上述した処理を繰り返す。
一方、未処理のパケットがないと判定した場合には、選出部3717は、未処理のセッションオブジェクト201があるか否かを判定する(S4217)。未処理のセッションオブジェクト201があると判定した場合には、S4201に示した処理に戻って、上述した処理を繰り返す。
一方、未処理のセッションオブジェクト201がないと判定した場合には、第2選出処理を終え、呼び出し元の復旧処理に復帰する。
図40の説明に戻る。第2選出処理を終えると、S4001に示した処理に戻って、上述した処理を繰り返す。
一方のオブジェクトを再現する側の処理の説明に移る。図43に、第1生成処理フローを示す。受信部3703に於いてパケット及び第1付加データを受信すると(S4301)、第1生成部3719は、第1付加データに含まれるセッションIDのセッションオブジェクト201が、既にセッションオブジェクト記憶部3709に設けられているか否かを判定する(S4303)。
当該セッションIDのセッションオブジェクト201が、未だセッションオブジェクト記憶部3709に設けられていないと判定した場合には、第1生成部3719は、まずセッションオブジェクト記憶部3709に新たな結合データ1603の予約領域を設定し、その領域の先頭に当該パケットを格納する(S4305)。続いて、第1生成部3719は、セッションオブジェクト記憶部3709に当該結合データ1603に対応するメタデータ1601を生成する。メタデータ1601のヘッダ部には、当該セッションIDと当該セッションIDに対応するセッションデータとが設定される。また、第1生成部3719は、メタデータ1601のテーブル部に最初のレコードを設定する(S4307)。レコードには、パケットIDと当該パケットの先頭を指すオフセットと取得日時とが設定される。
一方、当該セッションIDに係るセッションオブジェクト記憶部3709が既に設けられていると判定した場合には、第1生成部3719は、既存の結合データ1603の予約領域にパケットを追加する(S4309)。また、第1生成部3719は、既存のメタデータ1601のテーブル部にレコードを追加する(S4311)。レコードには、パケットIDと当該パケットの先頭を指すオフセットと取得日時とが設定される。そして、S4301に示した処理に戻って、上述した処理を繰り返す。
図44に、第2生成処理フローを示す。受信部3703に於いてパケット及び第2付加データを受信すると(S4401)、第1生成部3719は、第2付加データに含まれる期間IDの期間オブジェクト301が、既に期間オブジェクト記憶部3711に設けられているか否かを判定する(S4403)。
当該期間IDの期間オブジェクト301が、未だ期間オブジェクト記憶部3711に設けられていないと判定した場合には、第1生成部3719は、まず期間オブジェクト記憶部3711に新たな結合データ2003の予約領域を設定し、その領域の先頭に当該パケットを格納する(S4405)。続いて、第1生成部3719は、期間オブジェクト記憶部3711に当該結合データ2003に対応するメタデータ2001を生成する。メタデータ2001のヘッダ部には、当該期間IDと、当該期間IDに対応する開始日時及び終了日時が設定される。また、第1生成部3719は、メタデータ2001のテーブル部に最初のレコードを設定する(S4407)。レコードには、パケットIDと当該パケットの先頭を指すオフセットと取得日時とセッションIDとが設定される。
一方、当該期間IDに係る期間オブジェクト記憶部3711が既に設けられていると判定した場合には、第1生成部3719は、既存の結合データ2003の予約領域にパケットを追加する(S4409)。また、第1生成部3719は、既存のメタデータ2001のテーブル部にレコードを追加する(S4411)。レコードには、パケットIDと当該パケットの先頭を指すオフセットと取得日時とセッションIDとが設定される。そして、S4401に示した処理に戻って、上述した処理を繰り返す。
本実施の形態によれば、キャプチャされた各パケットを、抽出し易い形式で冗長化することができる。
更に、キャプチャされた各パケットを、異なる格納場所で保存できる。
更にセッションオブジェクトの取り出しが容易である。また、2以上の期間オブジェクトの取り出しも比較的容易であるという面がある。
[実施の形態2]
上述した実施の形態では、キャプチャサーバ101においてセッションオブジェクト201及び期間オブジェクト301を振り分けるフォーク方式の例について説明したが、本実施の形態では、セッションオブジェクト201を受けた保存サーバ105において期間オブジェクト301の元となるパケットを配信するチェーン方式の例について説明する。
セッションオブジェクト201を蓄積する動作は、実施の形態1の場合(図2)と同様である。
図45に、実施の形態2において期間オブジェクト301を蓄積する動作の概要を示す。X集合に属する保存サーバ105は、転送処理において、保存サーバ105自身が保持するセッションオブジェクト201に含まれる各パケットをY集合に属する保存サーバ105に転送する。転送先の保存サーバ105は、転送されるパケットの取得時間を含む期間のIDに基づいて一意に定められる。
この例で、保存サーバ105aは、転送処理において、セッションオブジェクト201aに含まれている1番目のパケット及び6番目のパケットを保存サーバ105cに送る。更に、保存サーバ105aは、同様にセッションオブジェクト201aに含まれている10番目のパケットを保存サーバ105dに送る。
また、保存サーバ105bは、転送処理において、セッションオブジェクト201bに含まれている2番目のパケットを保存サーバ105cに送る。更に、保存サーバ105bは、同様にセッションオブジェクト201bに含まれている7番目のパケットを保存サーバ105dに送る。
一方、Y集合に属する保存サーバ105は、受信したパケットをまとめて期間オブジェクト301を生成する。
この例で、保存サーバ105cは、1番目のパケット、2番目のパケット及び6番目のパケットを受信すると、第1生成処理において、これらのパケットをまとめた期間オブジェクト301cを生成する。
更に、保存サーバ105dは、7番目のパケット及び10番目のパケットを受信すると、第1生成処理において、これらのパケットをまとめた期間オブジェクト301dを生成する。尚、第1生成処理の動作は、実施の形態1における復旧の場合と同様である。
図46に、実施の形態2において期間オブジェクト301を蓄積する動作の概要を示す。Y集合に属する保存サーバ105は、転送処理において、保存サーバ105自身が保持するセッションオブジェクト201に含まれる各パケットをX集合に属する保存サーバ105に転送する。上述の通り、転送先の保存サーバ105は、転送されるパケットの取得時間を含む期間のIDに基づいて一意に定められる。
この例で、保存サーバ105cは、転送処理において、セッションオブジェクト201cに含まれている3番目のパケット及び5番目のパケットを保存サーバ105aに送る。更に、保存サーバ105cは、同様にセッションオブジェクト201cに含まれている11番目のパケットを保存サーバ105bに送る。
また、保存サーバ105dは、転送処理において、セッションオブジェクト201dに含まれている4番目のパケットを保存サーバ105aに送る。更に、保存サーバ105dは、同様にセッションオブジェクト201dに含まれている8番目のパケット及び9番目のパケットを保存サーバ105bに送る。
一方、X集合に属する保存サーバ105は、受信したパケットをまとめて期間オブジェクト301を生成する。
この例で、保存サーバ105aは、3番目のパケット、4番目のパケット及び5番目のパケットを受信すると、第1生成処理において、これらのパケットをまとめた期間オブジェクト301aを生成する。
更に、保存サーバ105bは、8番目のパケット、9番目のパケット及び11番目のパケットを受信すると、第1生成処理において、これらのパケットをまとめた期間オブジェクト301bを生成する。以上で本実施の形態における概要の説明を終える。
キャプチャサーバ101では、蓄積処理(A)に代えて、蓄積処理(B)を実行する。図47に、蓄積処理(B)フローを示す。図25に示した処理のうち、S2513乃至S2517の処理が省かれる。
続いて、保存サーバ105の動作について説明する。図48に、実施の形態2における保存サーバ105のモジュール構成例を示す。実施の形態2における保存サーバ105は、図37に示したモジュールの他に、転送部4801及び第2生成部4803を有する。
転送部4801は、転送処理を実行する。第2生成部4803は、第1生成部3719と同様の第1生成処理を実行する。
上述した転送部4801及び第2生成部4803は、ハードウエア資源(例えば、図51)と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
本実施の形態では、書き込み処理(A)に代えて、書き込み処理(B)を実行する。図49に、書き込み処理(B)フローを示す。S3801乃至S3811の処理は、図38の場合と同様である。S3811の処理に続いて、転送部4801は、転送処理を実行する(S4901)。
図50に、転送処理フローを示す。転送部4801は、S3811で記憶したセッションオブジェクト201に含まれるパケットを1つ特定する(S5001)。
転送部4801は、当該パケットの取得時間が該当する期間のIDを特定する(S5003)。転送部4801は、特定した期間IDのハッシュ値を算出する(S5005)。転送部4801は、第2配置テーブルに基づいて、保存サーバ105自身と異なる集合に属する保存サーバIDを特定する(S5007)。転送部4801は、送信部3701を介して、特定した保存サーバ105にパケット及び第2付加データを送信する(S5009)。
転送部4801は、未処理のパケットがあるか否かを判定する(S5011)。未処理のパケットがあると判定した場合には、S5001に示した処理に戻って、上述した処理を繰り返す。一方、未処理のパケットがないと判定した場合には、転送処理を終え、呼び出し元の書き込み処理(B)に復帰する。
図49の説明に戻る。S3809において、セッションオブジェクト201の保存要求を受信していないと判定した場合には、S3805に示した処理に戻って、上述した処理を繰り返す。転送処理を終えた場合にも、S3805に示した処理に戻って、上述した処理を繰り返す。
第2生成部4803は、第1生成処理を実行する。第2生成部4803における第1生成処理は、実施の形態1の場合(図43)と同様である。
本実施の形態によれば、トラフィックを分散できる。
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
尚、上で述べたキャプチャサーバ101は、コンピュータ装置であって、図51に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515と監視対象ネットワークに接続するための通信制御部2517a及び伝送ネットワークに接続するための通信制御部2517bとがバス2519で接続されている場合もある。なお、場合によっては、表示制御部2507、表示装置2509、ドライブ装置2513、入力装置2515は含まれない場合もある。オペレーティング・システム(OS:Operating System)及び本実施の形態における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517a、通信制御部2517b、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。監視対象ネットワークと通信制御部2517aを経由して、或いは伝送ネットワークと通信制御部2517bを経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
また、上で述べた保存サーバ105も、コンピュータ装置であって、図51に示す構成を有することがある。但し、保存サーバ105は、監視対象ネットワークに接続するための通信制御部2517aを含まない場合もある。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態に係るパケット制御方法は、(A)ネットワークからキャプチャされた複数のパケットを第1方式によって分類した複数の第1グループの各々を複数の格納場所のいずれかに割り当て、(B)上記複数のパケットを第2方式によって分類した複数の第2グループの各々を上記複数の格納場所のいずれかに割り当てる処理を含む。
このようにすれば、キャプチャされた各パケットを、抽出し易い形式で冗長化することができる。
更に、複数のパケットの各々を、第2方式によって複数の第2グループのいずれかに分類する際に、当該パケットが属する第1グループが割り当てられる格納場所以外の格納場所に割り当てられる第2グループを選択するようにしてもよい。
このようにすれば、キャプチャされた各パケットを、異なる格納場所で保存できる。
また、第1方式は、セッション毎に第1グループを設けるものであってもよい。第2方式は、キャプチャ期間毎に2以上の第2グループを設けるものであってもよい。そして、共通のキャプチャ期間に係る第2グループの各々は、互いに異なる格納場所に割り当てられるようにしてもよい。
このようにすれば、第1グループの取り出しが容易である。また、2以上の第2グループの取り出しも比較的容易であるという面がある。
本実施の形態に係るパケット制御方法は、(C)ネットワークからキャプチャされた複数のパケットを第1方式によって分類した第1グループのパケット群を受信し、(D)第1グループに含まれる複数のパケットの各々を、当該パケットが第2方式によって分類される第2グループに割り当てられる宛先に送信する処理を含む。
このようにすれば、トラフィックを分散できる。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
ネットワークからキャプチャされた複数のパケットを第1方式によって分類した複数の第1グループの各々を複数の格納場所のいずれかに割り当て、
前記複数のパケットを第2方式によって分類した複数の第2グループの各々を前記複数の格納場所のいずれかに割り当てる
処理をコンピュータに実行させるパケット制御プログラム。
(付記2)
更に、
前記複数のパケットの各々を、前記第2方式によって前記複数の第2グループのいずれかに分類する際に、当該パケットが属する前記第1グループが割り当てられる格納場所以外の格納場所に割り当てられる前記第2グループを選択する
処理をコンピュータに実行させる付記1記載のパケット制御プログラム。
(付記3)
前記第1方式は、セッション毎に前記第1グループを設け、
前記第2方式は、キャプチャ期間毎に2以上の第2グループを設け、
共通のキャプチャ期間に係る前記第2グループの各々は、互いに異なる格納場所に割り当てられる
付記2記載のパケット制御プログラム。
(付記4)
ネットワークからキャプチャされた複数のパケットを第1方式によって分類した複数の第1グループの各々を複数の格納場所のいずれかに割り当てる第1割り当て部と
前記複数のパケットを第2方式によって分類した複数の第2グループの各々を前記複数の格納場所のいずれかに割り当てる第2割り当て部と
を有するパケット制御装置。
(付記5)
パケット制御システムは、キャプチャ装置と、複数の保存装置とを含み、
前記キャプチャ装置は、
ネットワークからキャプチャされた複数のパケットを第1方式によって分類した複数の第1グループの各々を複数の格納場所のいずれかに割り当てる第1割り当て部と、
前記複数のパケットを第2方式によって分類した複数の第2グループの各々を前記複数の格納場所のいずれかに割り当てる第2割り当て部と
を有し、
前記複数の保存装置の各々は、前記複数の格納場所のいずれかに該当する記憶部を有する
パケット制御システム。
(付記6)
前記複数の保存装置の各々は、更に、
自らの格納場所に割り当てられた前記第2グループのパケットのうち、当該自らの格納場所以外の或る格納場所に割り当てられた前記第1グループのパケットと同じパケットを選出する選出部と、
選出した前記パケットを、前記或る格納場所に割り当てられた前記第1グループの新たな保存先に送信する送信部と
を有する付記5記載のパケット制御システム。
(付記7)
ネットワークからキャプチャされた複数のパケットを第1方式によって分類した第1グループのパケット群を受信し、
前記第1グループに含まれる複数のパケットの各々を、当該パケットが第2方式によって分類される第2グループに割り当てられる宛先に送信する
処理をコンピュータに実行させるパケット制御プログラム。
(付記8)
ネットワークからキャプチャされた複数のパケットを第1方式によって分類した第1グループを受信する受信部と、
前記第1グループに含まれる複数のパケットの各々を、第2方式によって分類される第2グループに割り当てられる宛先に送信する送信部と
を有するパケット制御装置。
(付記9)
パケット制御システムは、キャプチャ装置と、複数の保存装置とを含み、
前記キャプチャ装置は、
ネットワークからキャプチャされた複数のパケットを第1方式によって分類した複数の第1グループの各々について、当該第1グループを複数の格納場所のいずれかに割り当てる第1割り当て部
を有し、
前記複数の保存装置の各々は、
前記複数の格納場所のいずれかに該当する記憶部と、
割り当てられた前記第1グループを受信する受信部と、
前記第1グループに含まれる複数のパケットの各々を、第2方式によって分類される第2グループに割り当てられる格納場所の保存装置に送信する送信部と
を有するパケット制御システム。
(付記10)
前記複数の保存装置の各々は、更に、
自らの格納場所に割り当てられた前記第2グループのパケットのうち、当該自らの格納場所以外の或る格納場所に割り当てられた前記第1グループのパケットと同じパケットを選出する選出部
を有し、
前記送信部は、選出した前記パケットを、前記或る格納場所に割り当てられた前記第1グループの新たな保存先に送信する
付記9記載のパケット制御システム。
(付記11)
前記複数の保存装置の各々は、更に、
自らの格納場所に割り当てられた前記第1グループのパケットのうち、当該自らの格納場所以外の或る格納場所に割り当てられた前記第2グループのパケットと同じパケットを選出する選出部
を有し、
前記送信部は、選出した前記パケットを、前記或る格納場所に割り当てられた前記第2グループの新たな保存先に送信する
付記9記載のパケット制御システム。