(58)【調査した分野】(Int.Cl.,DB名)
次元名とメンバ情報からなるユーザクエリが入力されると、該ユーザクエリを解析し、データベースにアクセスするためのデータベースアクセスクエリを生成するクエリ解析手段と、
前記データベースアクセスクエリを前記ウェーブレット木インデックス変換テーブルを参照して、ウェーブウレット木ルート列内のインデックスの組に変換し、前記検索用ウェーブレット木DBを参照し、共通部分集合を求める処理を行うデータベースアクセス手段と、
を更に有する請求項1または2記載のフロー集約装置。
【背景技術】
【0002】
ネットワーク上のトラヒックを監視することは、ネットワーク資源の適切な設計や、異常なトラヒックの検出・制御を実現する上で欠かせない技術である。このためには細粒度でのトラヒック監視技術が必要となる。
【0003】
NetFlow技術では、フローの属性情報として、送信元アドレス(SrcIP)、宛先アドレス(DstIP)、送信元ポート(SrcPort)、宛先ポート(DstPort)、プロトコル(Proto)の5-tupleに加えて、送信元AS(Autonomous System)番号、宛先AS番号、転送に用いられるルータインタフェースの入出力番号、ToS(Type of Service)値、TCP(Transmission Control Protocol)_flag値等のフロー属性情報が含まれている。
【0004】
また、転送されるトラヒック量は日々増大しており、観測されるNetFlowデータのフロー数も爆発的に増加している。このため、従来手法でのNetFlowデータへの自在なアクセスが困難となりつつある。
【0005】
多次元フローデータを保持するためのデータ構造として、FlowID(5-toupleのフロー情報)をキーとして保持する1次元ハッシュテーブルや、Tupleごとにハッシュテーブルを作成し、ハッシュテーブルのキーをLinked Listを用いて繋げたデータ構造を有する多次元ハッシュテーブルがある(例えば、非特許文献1)。
【0006】
しかしながら、1次元ハッシュテーブルは、5-tuple情報をそのまま保持するため、Tupleを自在に組み合わせての問合せができない。また、多次元ハッシュテーブルは、特定のtupleをワイルドカード指定して集約フローを探索する際に、探索時間が大きいという問題がある。
【0007】
また、多次元論理データ空間ビットマップによる多次元データベースがある(例えば特許文献1参照)。これは、次元の特定の組み合わせにおいて、データが多次元論理データ空間内の座標を示すビットマップを作成しておくものである。
【0008】
多次元フローデータベースにおいて、特定次元の組み合わせを指定したフロー検索(スライス検索)を実施することで、異常トラヒック等の特徴的なフローを抽出することができる。例えば、ワーム感染の疑いのあるホストの送信元IPアドレスとワーム感染拡大に利用される宛先ポート番号の組を指定して多次元データベース内を検索することで、ワーム感染拡大に伴って発信されるフローと、その感染先ホストのIPアドレス情報を得ることができる。
【発明の概要】
【発明が解決しようとする課題】
【0011】
上記の多次元データベースでは、高速にアクセスできるが、ビットマップ保持に必要な記憶容量が次元メンバ数、次元数、データ数に応じて増大するため、多次元大規模データにおいては、データベースに必要となるメモリ量が膨大となる。また、アクセス可能な次元の組み合わせパターンが限定されており、任意の次元の組み合わせでのアクセスが困難である。On-the-fly方式で問合せがある度に上記データベースを任意の組み合わせで構築する場合には、データベース構築時間及びデータベースに必要となるメモリ量が膨大となり、アクセスにかかるオーバヘッドが大きい。
【0012】
分析対象となる異常トラヒックの特徴が予めわかっている場合で、かつ、一定以下の次元数・規模のデータであれば、特許文献1のように多次元論理データ空間ビットマップを作成することで高速なアクセスが可能である。しかし、分析対象となる異常トラヒックの特徴が未知である場合には、多次元データベースに対して任意の次元組み合わせでの複数パターンのスライス検索を実施しつつ、異常トラヒックの特徴を探る等の作業が必要となる。従来技術では、多次元データベースに対する、自在な次元組み合わせのスライス検索が困難である。
【0013】
上記のように、1次元ハッシュテーブル、多次元ハッシュテーブルでは、フロー属性情報を自在に組み合わせた集約フローへのアクセスが困難である。また、多次元フローデータベースの多次元論理データ空間ビットマップでは、短時間でのアクセスが可能となる一方で、多次元の全ての組み合わせを考えると組み合わせ数が爆発するため、データベースに必要となる空間が膨大となり実施できない。
【0014】
本発明は、上記の点に鑑みなされたもので、大規模多次元データの任意の次元組み合わせの検索機能(スライス機能)を高速化可能なフロー集約装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
一態様によれば、高次元かつ大規模なフローデータを対象として、多次元データを組み合わせた集約フローを検索するためのデータベースを構築するフロー集約装置であって、
読み込まれた多次元データの多次元属性を格納する多次元属性テーブルと、
前記多次元データに対するインデックス番号を格納するデータインデックステーブルと、
前記多次元データのフロー情報を格納するデータテーブルと、
前記検索するためのデータベースを構築するデータベース構築手段と、
を有し、
前記データベース構築手段は、
前記多次元属性テーブル内の次元毎に一意なメンバを次元ごとに次元メンバテーブルに格納する手段と、
前記次元メンバテーブルの前記メンバに対してインデックス番号を付与し、次元をまたがるメンバに対しては一意なインデックス番号を付与し、多次元メンバ情報を一元化し、メンバインデックス変換テーブルに格納する手段と、
前記多次元属性テーブルの属性をメンバインデックスに変換し、前記メンバインデックス変換テーブルを参照して、メンバに対するメンバインデックスを取得し、前記データテーブルのデータインデックスと取得した該メンバインデックスからメンバインデックス・データインデックス変換テーブルを作成する手段と、
前記メンバインデックス・データインデックス変換テーブルの前記メンバインデックスをウェーブレット木のルート列内インデックスに変換し、ウェーブレット木インデックス変換テーブルを作成する手段と、
前記メンバインデックス・データインデックス変換テーブルから前記メンバインデックスと前記データインデックスを取得し、該データインデックスから単一のデータ列に変換し、該データ列からウェーブレット木を作成し、該メンバインデックスと該データインデックス及び該ウェーブレット木の組み合わせからなる検索用ウェーブレット木DBを作成する手段と、を有するフロー集約装置が提供される。
【発明の効果】
【0016】
一態様によれば、大規模高次元フローデータを現実的なメモリ空間量で管理することができ、さらに、目的のフローを検索する際には、フロー数に対数比例する時間計算量での高速な探索が可能となる。
【発明を実施するための形態】
【0018】
以下、図面と共に本発明の実施の形態を説明する。
【0019】
本発明は、高次元かつ大規模なフローデータを対象として、自在な組み合わせの集約フローに対して高速なアクセスを可能にするフロー集約装置(多次元データベース構成装置)を提供するものである。
【0020】
図1は、本発明の一実施の形態における多次元データベース構成装置の構成例である。
【0021】
同図に示す多次元データベース構成装置100は、NetFlowデータ読み込み部110、テーブル作成部120、DB構築部130、ユーザクエリ解析部140、データベースアクセス部150、データ出力部160、中間DB170、DB180、データテーブル101、多次元属性テーブル102、データインデックステーブル103を有する。
【0022】
中間DB170は、メモリ上に設定され、次元メンバテーブル171と、メンバインデックス・データインデックス変換テーブル172を有する。DB180が構築されると当該中間DB170のメモリは解放される。
【0023】
DB180は、検索用ウェーブレット木DB181、ウェーブレット木インデックス変換テーブル182、メンバインデックス変換テーブル183、Patricia木DB184を有する。
【0024】
多次元データ読み込み部110は、フローデータ等の多次元データを読み込み、テーブル作成部120、DB構築部130に渡す。本例では、5次元のIPフロー情報の時系列トラヒック情報を読み込むものとする。
【0025】
テーブル作成部120は、読み込まれた多次元データを、
図2に示すように、メモリ上のテーブル101,102,103に格納する。データインデックステーブル101は、読み込まれた各5次元情報に対して付与されたインデックス番号を保持する。多次元属性テーブル102は、各インデックス番号に対応するSrcIP、DstIP、SrcPort、DstPort、Protoを格納する。データテーブル103は、インデックス番号に対応するフローの情報(トラヒック量、パケット数等)を時系列に従って保持する。データテーブル103はフローごとに行が分かれており、多次元属性テーブル102は、データテーブル103の各行のポインタを返すため、当該多次元属性テーブル102を介してポインタを取得することで、データテーブル103内の該当するフローの情報を得ることができる。
【0026】
DB構築部130は、以下のように中間DB170、DB180を構築する。
【0027】
まず、DB構築部130は、多次元データを読み込む際に、
図3に示すように次元ごとに、読み込みデータに出現した一意なメンバを次元メンバテーブル171に格納する。但し、SrcPort、DstPort、Protoについては昇順にメンバを格納する。SrcIP、DstIPについては、構築済みのPatricia木DB184を利用してIPアドレスの昇順にメンバを格納する。
【0028】
DB構築部130は、メンバインデックス・データインデックス変換テーブル172を生成する。
【0029】
メンバインデックス・データインデックス変換テーブル172は、
図4に示すように、次元メンバテーブル171のメンバインデックスとデータテーブル103から得られたデータインデックスから構成される。
【0030】
DB構築部130は、以下の手順でメンバインデックス・データインデックス変換テーブル172を生成する。
【0031】
(1)多次元属性テーブル102と
図5に示すメンバインデックス変換テーブル183を用いて、多次元属性テーブル102の属性をメンバインデックスに変換する。例えば、
図2の多次元テーブル102の1行目の
"SrcIP:10.0.01,DstIP:20.0.0.1,SrcPort:10,DstPort:20,Proto:6"
については、
図5のメンバインデックス変換テーブル183を用いて
"SrcIP:0,DstIP:1000,SrcPort:2000,DstPort:3000,Proto:4000"
となる(これを仮に、多次元属性テーブル-2とする)。
【0032】
(2)データインデックステーブル101内の適当なData Indexから上記の多次元属性テーブル-2内の特定の行を得ることができる。例えば、Data Index1にアクセスすると、上記の
"SrcIP:0,DstIP:1000,SrcPort:2000,DstPort:3000,Proto:4000"
が得られ、下記のように、メンバインデックス・データインデックス変換テーブル172を作成する。
【0033】
メンバインデックス:0に対して、Data Index 1であるので、0→1;
メンバインデックス:1000に対して、Data Index 1であるので、1000→1;
メンバインデックス:2000に対して、Data Index 1であるので、2000→1;
メンバインデックス:3000に対して、Data Index 1であるので、3000→1;
メンバインデックス:4000に対して、Data Index 1であるので、4000→1;
上記の処理を全てのData Indexにアクセスして繰り返すことでメンバインデックス・データインデックス変換テーブル172を作成する。
【0034】
Patricia木DB184は、SrcIP、DstIP次元に関して、多次元データを読み込む際に、読み込みデータに出現したメンバを用いて構築されたPatricia木を保持する。パトリシア木DB184は、後述する
図13に示すように、SrcIP、DstIPそれぞれについて構成され、読み込まれる多次元データに存在する全てのSrcIPアドレス、DstIPアドレスが格納されている。
【0035】
メンバインデックス変換テーブル183は、メンバ情報に対応するメンバインデックスを保持する。DB構築部130は、次元メンバテーブル171を参照してメンバに対してインデックス番号を付与する。同時に、
図5に示すように、メンバ情報からインデックス番号に変換するテーブルを作成する。この際、次元をまたがるメンバに対して一意なインデックス番号を付与することで、多次元メンバ情報の一次元化を行う(ウェーブレット木を1次元リストで構築しなければならないため)。
【0036】
検索用ウェーブレット木DB181は、メンバインデックス・データインデックス変換テーブル172のメンバインデックス(
図4のMember index)とデータインデックス(
図4のData Index)を用いて、多次元データの一次元マッピングを行い、ウェーブレット木インデックス変換テーブル182を参照して、
図6に示すようにマルチインデックス構造(ウェーブレット木)へと変換することにより生成される。
【0037】
具体的には、メンバインデックス・データインデックス変換テーブル172を先頭から順に参照して、Data Index(
図4)を単一のデータ列に変換する。
図4の例では、1,3,2,4,6,5,…,1,2,3,5,4,6…となる。当該データ列からウェーブレット木を作成する。なお、データ列からウェーブレット列の生成については既存技術(例えば、非特許文献2:http://www.slideshare.net/pfi/ss-15916040)を用いることが可能である。
図7にウェーブレット木の例を示す。ウェーブレット木は、完全二分木であり、各節点にはビット列が付随する。葉は各値に対応し、内部節点は子孫の葉の範囲に対応する。
【0038】
このウェーブレット木を用いることで、共通のメンバインデックスを含むデータインデックスの部分集合を得られる。このために例えば、Rank辞書という省メモリで構築可能な簡潔辞書を構築しておき、高速に(データ数に対して対数比例する時間計算量O(log n,但し、nはフロー数)で)共通部分集合を求めることが可能である(例えば、非特許文献3:T. Gagie, G. Navarro, S.J. Puglisi, New algorithms on wavelet trees and applications to information retrieval, Theoretical Computer Science 426-427 (2012) pp. 25-41.参照)。Rank辞書は索引構造を持ち、ビット列B[0…n]に対し、以下の操作を備えた辞書を完備辞書(FID)と呼ぶ。
【0039】
・rankb(B,pos):B[0…pos]中のbの出現回数を返す;
・selectb(B,ind):(ind+1)番目のbの出現位置を返す;
例えば、
図7の例では、rank1(6)=2であるとき、B[0,6)中に"1"は2回出現することを返し、select0(4)=8であるとき、(4+1)番目の"0"は8で出現することを返す。
【0040】
ウェーブレット木インデックス変換テーブル182は、データ検索時に使用され、検索対象データがウェーブレット木のどの位置に存在するかを示すテーブルである。メンバインデックス変換テーブル183のメンバインデックス(Member index)をウェーブレット木のルート列内インデックスに変換するテーブルであり、メンバインデックス変換テーブル183の作成と同時に作成される。DB構築部130は、メンバインデックス・データインデックス変換テーブル172から当該ウェーブレット木インデックス変換テーブル182を作成する。具体的には、
図6の例では、メンバインデックス"0"は、データ列において0〜1番目に存在し、メンバインデックス"3"は、データ列において4〜6番目に存在するという情報を、
図8に示すように、メンバインデックスごとのウェーブレット開始インデックス(Wavelet_start_Index)と終了インデックス(Wavelet_last_Index)を設定する。
【0041】
クエリ解析部140は、入力された各次元名とそのメンバ情報からなるユーザクエリを解析し、データベース180にアクセスするためのデータベースアクセスクエリを生成する。
【0042】
データベースアクセス部150は、データベースアクセスクエリを以下の手順でデータインデックスへと変換する。
【0043】
(1)データベースアクセスクエリをウェーブレット木インデックス変換テーブル182を参照して、ウェーブレット木ルート列内インデックスの組へと変換する。
【0044】
(2)検索用ウェーブレット木DB181に対して、共通部分集合を求める処理を実施する。
【0045】
本例では、5次元データであるので、最大5つの共通部分集合を求める関数を準備する。具体的には、非特許文献3の3章(3. New algorithms)に記載されている、2つの共通部分集合を得るためのアルゴリズムを用いる。当該非特許文献3の3.3節(3.3 Range intersection)において、3つ以上の共通部分集合を得るための関数拡張が可能である旨が記載されている。
【0046】
以下にデータベースアクセス部150の具体的な動作を説明する。
【0047】
まず、ユーザクエリXとして、SrcIP,DstIP,SrcPort,DstPort,Protoの全てが指定されている場合について説明する。
【0048】
図9は、本発明の一実施の形態におけるデータベースアクセス部の処理のフローチャート(その1)である。
【0049】
本例では、ユーザクエリXとして、
"SrcIP=10.0.0.1,DstIP=20.0.0.5,SrcPort=10,DstPort=20,Proto=6"
が入力されると(ステップ101)、当該ユーザクエリXでメンバインデックステーブル変換テーブル183(
図5)を参照し、ユーザクエリXに対応するメンバインデックスX
"0,1001,2000,3000,4001"
を取得する(ステップ102)。
【0050】
次に、上記のメンバインデックスXに基づいて、ウェーブレット木インデックス変換テーブル182(
図8)を参照し、メンバインデックスXに対するウェーブレット木インデックスX
"[0,1],[40,46],[60,72],[89,94],[130,132])"
を取得する(ステップ103)。
【0051】
上記で取得したウェーブレット木インデックスXに対して、非特許文献3の技術を適用して共通部分集合演算を行い、データインデックス(1)を取得し、データ出力部160に出力する(ステップ104)。
【0052】
ステップ104のウェーブレット木を用いた共通部分集合演算は、
図10の『0721436725047263』について共通部分集合を求める場合、二つの集合[(214)と(250)]の共通部分集合をウェーブレット木で求めるものとする。Rank0操作で左の節に移動(実線)し、Rank1操作で右の節に移動(破線)できる。Rank操作は集合の始点と終点でそれぞれ実施される(集合の長さに無関係)。Rank操作は定数時間とする。2つの集合が同じ値のポインタをさす場合、それが共通部分集合の値となる。
【0053】
次に、ユーザクエリYとして、DstIP,Protoのみが指定されている場合について説明する。
【0054】
図11は、本発明の一実施の形態におけるデータベースアクセス部の処理のフローチャート(その2)である。
【0055】
本例では、ユーザクエリYとして、
"SrcIP=*,DstIP=20.0.0.1,SrcPort=*,DstPort=*,Proto=6"
が入力されると(ステップ201)、当該ユーザクエリYでメンバインデックステーブル変換テーブル183(
図5)を参照し、ユーザクエリYに対応するメンバインデックスY
"1000,4000"
を取得する(ステップ202)。
【0056】
次に、上記のメンバインデックスYに基づいて、ウェーブレット木インデックス変換テーブル182(
図8)を参照し、メンバインデックスYに対するウェーブレット木インデックスY
" [30,40],[120,130])"
を取得する(ステップ203)。
【0057】
上記で取得したウェーブレット木インデックスYに対して、非特許文献3の技術を適用して共通部分集合演算を行い、データインデックス(1,2,5)を取得し、データ出力部160に出力する(ステップ204)。共通部分集合演算は、上記と同様である。
【0058】
次に、ユーザクエリZとして、SrcIPとDstIPのみが指定されている場合について説明する。
【0059】
図12は、本発明の一実施の形態におけるデータベースアクセス部の処理のフローチャート(その3)である。
【0060】
本例では、ユーザクエリZとして、
"SrcIP=*,DstIP=10.0.0.4/30, DstIP=20.0.0.1"
が入力されると(ステップ301)、当該ユーザクエリZにSrcIPについて、DstIP[10.0.0.4/30]の範囲でメンバインデックス変換テーブル183に含まれるアドレスが10.0.0.1〜10.0.0.6であるため[10.0.0.1,10.0.0.6]とし、
図13に示すようなPatricia木DB184を参照する。(ステップ302)。
【0061】
ユーザクエリZのSrcIP=[10.0.0.1]とSrcIP= [10.0.0.6]に基づいてメンバインデックス変換テーブル183を参照し、メンバインデックス[0,3]を取得し、DstIP=20.0.0.1に基づいてメンンバインデックス"1000"を取得する。ここで、SrcIP_firstのメンバインデックスの先頭と末尾の組をクエリとする(ステップ303)。
【0062】
ステップ303で得られたユーザクエリZ([0,3],1000)に基づいて、ウェーブレット木インデックス変換テーブル182(
図8)を参照し、ウェーブレット木インデックスZ([0,6],[40,46])を取得する(ステップ304)。
図8のウェーブレット木インデックス変換テーブル182の例では、1つ目の集合内の先頭であるメンバインデックス"0"のWevelet_start_Indexは"0"であり、集合内の末尾であるメンバインデックス"3"のWavelet_last_Indexは"6"である。
【0063】
上記で取得したウェーブレット木インデックスZに対して、非特許文献3の技術を適用して共通部分集合演算を行い、データインデックス(1,2,3,5)を取得し、データ出力部160に出力する(ステップ305)。共通部分集合演算は、上記と同様である。
【0064】
上記のように、本発明では、マルチインデックス構造とすることにより、任意のtupleの組み合わせに対して均一時間でのアクセスが可能となる。また、ウェーブレット木構造を組み合わせることで、アクセス時間の時間計算量をO(n)からO(log n)へ削減することが可能となる。
【0065】
上記の実施の形態に示した多次元データベース構成装置の各構成要素の動作をプログラムとして構築し、多次元データベース構成装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【0066】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。