高パケットレートフロー検出装置及び高パケットレートフロー検出方法
【課題】パケットサンプリング技術を用いることで、パケットレートが所定値以上のトラヒックのフローを検出することを目的とする。
【解決手段】パケットレートが所定値以上のトラヒックのフローを検出する高パケットレートフロー検出装置は、パケットを無作為に抽出するパケット無作為抽出部と、所定の測定期間を部分区間に分割し、部分区間内に抽出されたパケット数をフロー毎に集計するパケット数測定部と、部分区間においてパケット数が閾値以上のフローを、パケットレートが所定値以上のトラヒックフローであるとして検出する高パケットレートフロー検出部とを有する。
【解決手段】パケットレートが所定値以上のトラヒックのフローを検出する高パケットレートフロー検出装置は、パケットを無作為に抽出するパケット無作為抽出部と、所定の測定期間を部分区間に分割し、部分区間内に抽出されたパケット数をフロー毎に集計するパケット数測定部と、部分区間においてパケット数が閾値以上のフローを、パケットレートが所定値以上のトラヒックフローであるとして検出する高パケットレートフロー検出部とを有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、高パケットレートフロー検出装置及び高パケットレートフロー検出方法に関する。
【背景技術】
【0002】
近年、インターネット上では公的機関や企業のサーバなどを狙った、Denial of Service(DoS)攻撃が深刻な問題となっている。DoS攻撃とは、サーバがクライアントに対して供給するサービスを、不正なパケットを送りつけることによって妨害するという、ネットワークを利用した攻撃のことである。DoS攻撃の代表的なものとしてSYN Flood攻撃とsmurf攻撃がある。
【0003】
SYN Flood攻撃とは、攻撃者が攻撃対象のサーバに対してTCPの接続要求であるSYNパケットを、ヘッダを改竄した後に大量に送りつけるというものである。SYNパケットを受け取ったサーバは送信元に対してSYN/ACKを返す。しかしSYNパケットのヘッダに書かれている送信元のIPアドレスが実際には存在しないアドレスに書き換えられているため、サーバからのSYN/ACKに対してACKを返すクライアントは存在せず、サーバは返ってこないACKをタイムアウトになるまで待ち続けなければならない。この状態はhalf−openと呼ばれ、half−open状態のコネクション情報はサーバ内のbacklog queueに蓄積される。backlog queueのサイズはサーバ毎に決められており、このbacklog queueが一杯のときは、サーバはクライアントからの接続要求に応えることができない。すなわち、送信元IPアドレスを改竄したSYNパケットが大量に送られてくると、サーバのbacklog queueは常に一杯の状態になってしまい、正常なクライアントに対してTCP接続を確立することができず、サービスを供給できなくなる。
【0004】
一方、smurf攻撃とは、ICMP echo requestを用いたDoS攻撃であり、攻撃者はICMP echo requestパケットの送信元IPアドレスを攻撃対象のホストのIPアドレスに偽装し、そのパケットをネットワークのブロードキャストアドレスに送る。すると、パケットを受け取ったネットワーク内の全てのホストから攻撃対象のホストに向けてICMP echo replyパケットが一斉に返される。この大量のICMPパケットによって攻撃対象のホストやネットワークに過重負荷がかかるため、サーバなどではサービスの提供が困難になる。
【0005】
どのようなDoS攻撃であっても、単一のホストからの攻撃であれば攻撃の規模には限度があるが、複数のホストから一斉にDoS攻撃を行うDistributed DoS(DDoS)攻撃は、攻撃の規模と攻撃元の分散性から攻撃を受けたサーバでの対処が難しいため、ネットワーク、とりわけバックボーンネットワークの管理者の立場において検出することが、その後の対応を行う上で重要となる。
【0006】
直接の攻撃とは別に、SYN Flood攻撃が起こった際にその副産物としてバックスキャッタと呼ばれるトラヒックが観測される。これは攻撃を受けたサーバから偽装されたIPアドレスに向けて送られるSYN/ACKパケット群であり、その多くは実際には使われていないIPアドレスが指定されているため、ヘッダのTTLがゼロなるまでネットワーク内を流れつづけることになる。実際には使われていないIPアドレスに向けて送られるパケットを観測するシステムとしてNetwork telescopeがある。Network telescopeはIPv4の全アドレス空間のうちのほとんど正常なIPアドレスが存在しない部分空間を観測するためのシステムである。その性質から、バックスキャッタのトラヒックやワームによるランダムスキャンのなどの観察に適している。
【0007】
また、DoS攻撃の検出に関連する研究としては以下のようなものがある。V. A. Sirisらはトラヒックに含まれるSYNパケットの数を計測し、2種類のアルゴリズムを用いて動的に閾値を定め、閾値を超えるSYNパケットが計測された場合にSYN Flood攻撃の発生を検出するという手法を提案している(非特許文献1参照)。大下らもSYN Flood攻撃を検出する手法を提案している。彼らの手法はbacklog queueのサイズとタイムアウトになる時間を考慮し、サーバがサービス停止状態になる前に検出を行う。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】V. A. Siris and F. Papagalou, "Application of anomaly detection algorithms for detecting syn flooding attacks," Computer Communications, vol.29, no.9, pp.1433−1442, 2006.
【発明の概要】
【発明が解決しようとする課題】
【0009】
V. A. Sirisらはトラヒックに含まれるSYNパケットの数を計測し、2種類のアルゴリズムを用いて動的に閾値を定め、閾値を超えるSYNパケットが計測された場合にSYN Flood攻撃の発生を検出するという手法を提案しているが、彼らの手法は、SYN Flood攻撃が発生していることは検知できても、SYN Flood攻撃のフローを特定することができないという問題がある。また大下らもSYN Flood攻撃を検出する手法を提案しているが、トラヒックを観測するポイントが、サーバ側のネットワークへのインターフェース部分を想定しており、バックボーンNWを対象としたものではない。さらにトラヒックの全パケットを観測しているため、高速な回線を測定対象とした場合のスケール性に問題がある。
【0010】
本発明は、バックボーンNWの任意のルータポートを観測対象とし、パケットサンプリング技術を用いることで、回線レートが高速である場合にも対応可能な、持続的な高パケットレートフロー(パケットレートが所定値以上のトラヒックのフロー)を検出することを目的とする。
【課題を解決するための手段】
【0011】
本発明の高パケットレートフロー検出装置は、
パケットレートが所定値以上のトラヒックのフローを検出する高パケットレートフロー検出装置であって、
パケットを無作為に抽出するパケット無作為抽出部と、
所定の測定期間を部分区間に分割し、部分区間内に抽出されたパケット数をフロー毎に集計するパケット数測定部と、
部分区間においてパケット数が閾値以上のフローを、パケットレートが所定値以上のトラヒックフローであるとして検出する高パケットレートフロー検出部と、
を有することを特徴とする。
【0012】
本発明の高パケットレートフロー検出方法は、
パケットレートが所定値以上のトラヒックのフローを検出する高パケットレートフロー検出装置における高パケットレートフロー検出方法であって、
パケットを無作為に抽出するステップと、
所定の測定期間を部分区間に分割し、部分区間内に抽出されたパケット数をフロー毎に集計するステップと、
部分区間においてパケット数が閾値以上のフローを、パケットレートが所定値以上のトラヒックフローであるとして検出するステップと、
を有することを特徴とする。
【発明の効果】
【0013】
本発明によれば、パケットサンプリング技術を用いることで、パケットレートが所定値以上のトラヒックのフローを検出することが可能になる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施例に係る高パケットレートフロー検出装置の構成図
【図2】本発明の実施例に係る高パケットレートフロー検出装置のパケット無作為抽出部で実行される処理プロセスのフローチャート
【図3】本発明の実施例に係る高パケットレートフロー検出装置のIW情報の更新部で実行される処理プロセスのフローチャート
【図4】本発明の実施例に係る高パケットレートフロー検出装置の高パケットレートフロー検出部で実行される処理プロセスのフローチャート
【図5】スライディングウィンドウの概要を示す図
【図6】制御パラメータfが制約条件を満たす領域を示す図
【図7】制御パラメータfが制約条件を満たす領域を示す図
【図8】スライディングウィンドウの母集団におけるパケット数の説明図
【図9】スライディングウィンドウのサンプルにおけるパケット数の説明図
【図10】実験に用いたトラヒックデータの概要を示す表
【図11】実験に用いた規定パラメータを示す表
【図12】実験で得られた制御パラメータ(f,m)を示す表
【図13】閾値の候補と検出率の関係を示す図(Backscatter)
【図14】閾値の候補と検出率の関係を示す図(CESCA−I(R=800))
【図15】閾値の候補と検出率の関係を示す図(CESCA−I(R=1000))
【図16】サンプルにおける閾値を示す表
【図17】実験結果の平均と95%信頼区間を示す表
【発明を実施するための形態】
【0015】
以下、図面を参照して本発明の実施例について説明する。
【0016】
本発明の実施例では、長さT秒の測定期間に含まれる長さt秒の任意の部分区間において、パケットレートがR[packets/sec]以上のフローを、ランダムパケットサンプリングによって得られた情報からオンラインで検出することを特徴とする持続的な高パケットレートフローのオンライン検出法について説明する。
【0017】
より具体的には、長さTSW=Tの測定期間(スライディングウィンドウSW)を自然数kとmに対してkm個のベーシックウィンドウ(BW)に分割し、さらにh≦kかつkとは互いに素な自然数hを用いて、連続するhm個のBWで構成される検査ウィンドウ(IW)をSW内に(k−h)m+1個作成し、SW内の全てのIWにおいてパケットレートがR[packets/sec]以上であるフローを検出する。なお、検査ウィンドウの大きさTIW=tはkとhとにより決まり、TIW=(h/k)TSW[sec]となることに注意する。
【0018】
<高パケットレートフロー検出装置の構成>
図1は、持続的な高パケットレートフローのオンライン検出法を実現するための、本発明の実施例に係る高パケットレートフロー検出装置の構成図である。
【0019】
本実施例に係る高パケットレートフロー検出装置は、パラメータfとmの設計部101と、パラメータw*の設計部102と、パケット無作為抽出部103と、BW情報保存部104と、IW情報の更新部105と、IW情報保存部106と、高パケットレートフロー検出部107とを有する。
【0020】
パラメータfとmの設計部101は、パケットサンプリング確率fとBWの大きさを定めるパラメータmとを設計する。パラメータfとmの設計部101は、目標時間TD_max内に検出すること、BWの幅が最大許容値TBW_max以下であること、を制約条件とし、検出対象外のフローの誤検出率を最小化するfとmとを設計する。
【0021】
具体的には以下に説明するように、パラメータfとmの設計部101は、入力パラメータである、SWの長さTSW[sec]、1サンプルパケットあたりの処理時間Δ1[sec]、SWの解析に必要なパケット数とは独立な処理時間Δ2[sec]、検出目標時間TD_max[sec]、観測する回線の最大パケットレートCmax[packets/sec]、BWの幅の最大許容値TBW_max[sec]、に対して、
【0022】
【数1】
と定義するとき、
【0023】
【数2】
の場合には、mを
【0024】
【数3】
に設定し、fをf*=max{f1(m+),f2(m−)}に設定する。一方、
【0025】
【数4】
の場合には、m*=m+、f*=f1(m+)に設定する。
【0026】
パラメータw*の設計部102は、高パケットレートフローを検出する際のサンプルパケット数に関する閾値w*を設計する。具体的には、fとmが最適設計された後で、与えられた高レートフローの見逃し許容誤差εに対して、検出対象フローの検出見逃し確率を許容値ε以下に抑えるよう、IW内のサンプルパケット数の閾値w*を設計する。
【0027】
パラメータw*の設計部102は、検出確率が最低となる閾値フローの分布X*(各BWにおけるパケット数の確率分布)に対して、このようなフローが全てのIWにおいてw個以上のパケットがサンプルされる確率をP(w|X*)、高レートフローの見逃し許容誤差をεとするとき、w*を、
【0028】
【数5】
により設計する。ただしP(w|X*)はモンテカルトシミュレーションを用いた数値実験により求める。
【0029】
パケット無作為抽出部103は、測定対象となるルータポートを流れる各パケットに対して各々独立に確率fでパケットをサンプリングする。
【0030】
図2に、パケット無作為抽出部103で実行される処理プロセスのフローチャートを示す。測定対象のルータポートにパケットが到着するごとに、0から1の値をとる一様乱数xを発生させ(S101)、その値がfより小さい場合には(S102:Y)、到着パケットをサンプリングし(S103)、BW情報保存部104の該当フローのサンプルパケット数を全て1だけ増加させる。
【0031】
BW情報保存部104は、BW内でサンプルされたパケット数を各フローに対して保存する。
【0032】
IW情報の更新部105は、BWの境界時点において、BW情報保存部104のサンプルパケット数情報を、現在のBWを含む全てのIWに対して、フローごとに足しこむ。また最古のBWを含むIWを破棄し、連続する最近のkm個のBWを用いて新しいIWを作成する。このように、IW情報の更新部は、測定期間SWを任意の部分区間IWに分割し、部分区間内に抽出されたパケット数をフロー毎に集計する。
【0033】
図3に、IW情報の更新部105で実行される処理プロセスのフローチャートを示す。BWの境界時点において、BW情報保存部104のサンプルパケット数情報を、現在のBWを含む全てのIWに対して、フローごとに足しこみ(S201)、BW情報保存装置104の全エントリをゼロに初期化する(S202)。またIW情報保存部106において、最古のBWを含むIWを破棄し、連続する最近のkm個のBWを用いて新しいIWを作成する(S203)。
【0034】
IW情報保存部106は、IWの情報((k−h)m+1の各IWにおける各フローのサンプルパケット数)を保存する。
【0035】
高パケットレートフロー検出部107は、SWに含まれる(k−h)m+1個の全IWにおいてw*個以上のパケットがサンプルされたフローを高レートフローとして検出する。
【0036】
図4に、高パケットレートフロー検出部107で実行される処理プロセスのフローチャートを示す。BWの境界時点において、SWに含まれる(k−h)m+1個の全IWにおいてw*個以上のパケットがサンプルされたフローを高レートフローとして検出する(S301)。
【0037】
<検出の枠組み>
次に、本発明の実施例に係る持続的な高パケットレートフローのオンライン検出法の枠組みを説明する。
【0038】
DoS攻撃等の異常トラヒックが発生した際、ネットワークのバックボーンにおいて迅速に検出することは、ネットワーク全体を保守管理する上で非常に重要である。本実施例ではDDoS攻撃等、高パケットレートが長時間持続するような異常トラヒックに注目し、パケットレートが予め定められた閾値を一定時間以上超え続けているフローを検出することを試みる。
【0039】
ネットワークを流れるIPトラヒックにおいて、フローとは、共通のIPアドレス、ポート番号、SYNフラグなどの組み合わせをもつパケット群として定義される。例えばDoS攻撃に用いられているパケット群を一つのフローと見なそうとする場合、一般に攻撃パケットのヘッダに記載されている送信元IPアドレスは改竄されており、確実に共通するのは宛先のIPアドレスだけとなる。そのため共通の宛先IPアドレスを持つパケット群をフローと定義するとDoS攻撃の攻撃フローの検出が可能となる。また、バックスキャッタのトラヒックを観測する場合、DoS攻撃を受けたサーバから不特定多数の宛先に向けて送信されるパケットを一つのフローとして見なしたい。この場合は共通の送信元IPアドレスを持つパケット群をフローとして定義するのが適している。このようにフローの定義は検出したい対象や観測地点によって適宜定義を行うと都合が良いため、本実施例ではフローの定義は任意とする。
【0040】
ここで、検出対象フローの定義を行う。上記のように、本実施例ではパケットレートが予め与えられる閾値を一定時間以上超え続けているフローを検出対象とする。この検出対象をより明確にするために、本実施例では以下のように定義する。
【0041】
検出対象フローの定義:予め与えられた定数R[packets/sec]、T[sec]、t[sec](t≦T)に対して、T秒間の測定期間に含まれるt秒間の任意の区間全てについて、パケットレートがR[packets/sec]以上であるフローを検出対象とする。
【0042】
この検出対象の定義には、瞬間的に大量のパケットが発生したが、その後すぐに消えてしまうようなバースト的なフローを検出対象から外すという意図がある。バースト的なフローは捉え方によれば高パケットレートフローであるが、検出した時点ですでに消えてしまっているのであれば対応することが出来ない。検出されたフローは管理者が対応するかどうかを判断しなければならないため、バースト的なフローを検出することは管理者のオーバヘッドが増えることになる。
【0043】
しかし、上記で定義される検出対象フローをネットワークのバックボーンにおいて常時トラヒックを観測しながら検出を行うには大きく三つの問題がある。まず一つ目は、T秒間の測定期間に含まれる長さt秒をもつあらゆる部分区間全てについてパケットレートを調査することは極めて困難である。二つ目は、トラヒックを観測し続ける一方で検出対象のフローをオンラインで検出するためには、観測した解析対象データを更新する仕組みが必要となる。三つ目は、ネットワークのバックボーンのような高速な回線では、回線を流れる全てのパケットを対象に解析することは非現実的でありスケーラビリティを欠く。
【0044】
そこで本実施例では、スライディングウィンドウ方式を用いて最初の二つの問題の解決を図る。スライディングウィンドウ方式とは、解析対象のデータを保持するスライディングウィンドウをベーシックウィンドウと呼ばれる単位に分割し、ベーシックウィンドウ単位で解析データを更新する、オンラインパケット処理アルゴリズムである。本実施例ではこのスライディングウィンドウ方式に、検査ウィンドウと呼ばれる部分ウィンドウの概念を導入し、上記で定義された検出対象フローを含む新たな検出対象フローの集合を定義することで、一つ目の問題を解決する。
【0045】
三つ目の問題に関しては、パケットサンプリングを用いることで解決を図る。すなわち、パケットの標本抽出を行い、得られた情報を基にサンプリングの対象となった母集団の統計量を推定することで、処理サイクルやメモリ使用量を抑える。本実施例では、各パケットに対してフローの情報を用いず、独立に一定の確率fで無作為標本抽出を行うランダムパケットサンプリングを用いる。これにより、処理サイクルを大幅に抑えることができ、バックボーンなどの高速な回線に対しても適用可能となる。しかし、パケットサンプリングはその性質上、情報の欠如をもたらすため、特にサンプリングをする頻度が少ない場合はサンプリングの対象である母集団の統計量を推定することが困難になる。例えば、パケットが一つもサンプリングされないフローについては、母集団における統計量を推定することは不可能である。しかし、検出対象である高パケットレートのフローであれば、適切なサンプリングレートを用いることによって、母集団を推定できるだけの十分な標本を抽出できると考えられる。
【0046】
<スライディングウィンドウ方式による検出とデータ更新>
バックボーンネットワークを流れているトラヒックを常時、測定管理し、高パケットレートをもつフローの検出を行うにはオンラインアルゴリズムが必要である。すなわち、データの取得、解析、破棄を継続的に行う必要がある。本実施例では、この解析対象データを更新するための手段としてスライディングウィンドウ方式を採用する。スライディングウィンドウ方式とは、解析対象となるデータを保持するスライディングウィンドウをベーシックウィンドウと呼ばれる複数の単位に分割し、解析終了後に最も古いベーシックウィンドウのデータを破棄し、新たに取得された1ベーシックウィンドウ分のデータを加えることによって解析対象のデータを更新する方式である。
【0047】
スライディングウィンドウ方式には、スライディングウィンドウの大きさをパケット数で規定する方法と測定時間で規定する方法の2種類が存在する。前者は一定数のパケットが回線を通過したとき、あるいは一定数のパケットがサンプリングされたときにベーシックウィンドウを生成し、スライディングウィンドウを更新する。母集団におけるパケット数を一定にすると、トラヒックのフロー毎のパケット数分布などを求めることが容易になり、サンプル数を一定にすると、メモリの使用を一定にすることができるなどの利点がある。一方、後者は一定時間毎にベーシックウィンドウを生成し、スライディングウィンドウを更新する。母集団におけるパケット数およびサンプリングされるパケット数はスライディングウィンドウが更新される度に変わるが、測定時間を一定にすることができる。
【0048】
本実施例では、パケットレート、すなわち、単位時間当たりに各フローに含まれるパケット数を対象としている。そこで、スライディングウィンドウが保持する解析対象データの測定時間が一定時間TSW[sec]になるようにスライディングウィンドウの大きさを定める。さらに自然数kとmを用いて、スライディングウィンドウをTSW/(km)[sec]刻みでkm個のベーシックウィンドウに分割する。すなわち、TSW/(km)秒毎に取得されるデータで新たなベーシックウィンドウを作成し、スライディングウィンドウに加えると共に、スライディングウィンドウ内の最も古いベーシックウィンドウのデータを破棄することによって解析対象となるデータの更新を行う。
【0049】
また本実施例では、kとは互いに素な自然数h(h≦k)を用いて、連続するhm個のベーシックウィンドウで構成される検査ウィンドウをスライディングウィンドウ内に(k−h)m+1個作成する。このとき、検査ウィンドウの大きさTIWは(h/k)TSW[sec]となることに注意する。図5にk=3、m=2、h=2としたときのスライディングウィンドウの概要を示す。
【0050】
このスライディングウィンドウ方式において検出対象となるフローは下記の通りである。
【0051】
スライディングウィンドウ方式における検出対象フローの定義:予め与えられた定数R[packets/sec]、TSW[sec]、自然数k、m、ならびにkと互いに素な自然数h(h≦k)に対して、ベーシックウィンドウの大きさをTBW=TSW/(km)[sec]とし、連続するkm個のベーシックウィンドウから構成されるスライディングウィンドウを考え、このスライディングウィンドウ内の大きさTIW=(h/k)TSW[sec]をもつ(k−h)m+1個全ての検査ウィンドウにおいて、パケットレートがR[packets/sec]以上であるフローを検出対象とする。
【0052】
ここで、上記の「検出対象フローの定義」で用いたTおよびtに対して、TSW=TかつTIW=(h/k)TSW=tを満たす互いに素な自然数kおよびh(h≦k)が存在すると仮定している。この仮定より、上記の「検出対象フローの定義」を満たす検出対象フローの集合は、スライディングウィンドウ方式で検出対象となっているフローの集合の部分集合になっている。すなわち、「スライディングウィンドウ方式における検出対象フローの定義」の条件を満たすフローを全て検出すれば、「検出対象フローの定義」で定められた検出対象フローは全て検出される。以後、検出対象フローはスライディングウィンドウ方式における「検出対象フローの定義」に基づくものとする。
【0053】
<ランダムパケットサンプリングを用いた検出>
高速回線に対してスケーラビリティを確保するために、本発明の実施例ではランダムパケットサンプリングを用いる。TSW秒間に回線を通過したパケット全体を母集団し、そこから確率fで無作為標本抽出されたパケットの情報のみを用いて母集団における検出対象フローを検出することを試みる。母集団における検出対象フローは、(k−h)m+1個の検査ウィンドウ全てにおいてパケットレートが予め与えられる閾値R[packets/sec]以上のフローである。検査ウィンドウのパケットレートがR以上であることと、検査ウィンドウ内のパケット数が
【0054】
【数6】
以上であることは等価である。よって、以下では
【0055】
【数7】
をパケット数の閾値と呼ぶ。すなわち、検出対象フローは母集団の全ての検査ウィンドウにおいて、パケット数がz*個以上のフローである。
【0056】
もし全てのパケットを対象に解析が行えるのであれば、各検査ウィンドウにおいて、それぞれのフローを構成するパケットがz*個以上あるかどうかを調べれば良いが、本実施例ではパケットサンプリング用いるため、新たに各検査ウィンドウにおけるサンプリングされたパケット数の閾値w*を設け、スライディングウィンドウ内の全ての検査ウィンドウでw*個以上のパケットがサンプリングされたフローを検出することにする。ここで w*は、検出対象のフローのうち最低のパケットレート、すなわち母集団の全ての検査ウィンドウにおいてパケット数がz*個であるフロー(これを閾値フローと呼ぶことにする)を十分高い確率で検出できるように定める。これは異常な高パケットレートフローが発生した際には見逃さないようにするためである。しかしサンプリングによって情報が欠如するため、閾値w*を0にしない限り検出対象を確実に検出することはできない。そこで本実施例では、検出対象フローを見逃してしまう確率が十分小さい値ε以下となるようにw*を定める。具体的なパラメータ設定方法は後述する。
【0057】
以下に検出の手順をまとめる。ただし、スライディングウィンドウはSW、検査ウィンドウはIW、ベーシックウィンドウはBWとそれぞれ略記する。
【0058】
まず、測定期間TSW秒の間に確率fで無作為標本抽出されたパケットのデータを保持するSWにおいて、SWに含まれる(k−h)m+1個全てのIWにおいてw*個以上サンプリングされているフローがあれば、そのフローを検出する。
【0059】
次に、SWの解析終了後、最も古いBW、ならびに、このBWを含むIWを破棄する。
【0060】
一方、新たにTBW秒間に転送されたパケットのサンプリング終了後、新しいBWを作成し、それをSWに加えると共に、連続する最近のhm個のBWを用いて新しいIWを作成する。
【0061】
次に、新たに作成されたIWを検査し、w*個以上含まれるフローがあった場合には過去のIWの検査結果と照らし合わせ、(k−h)m+1個のIW全てにおいてサンプルされたパケット数が閾値w*を超えていれば、そのフローを検出する。
【0062】
スライディングウィンドウ方式によるデータ更新とランダムパケットサンプリングを用いた本実施例の手法は上記の手順を常時繰り返すものである。
【0063】
本実施例の手法では、予め与えられるパラメータである、パケットレートの閾値R[packets/sec]、測定時間であるスライディングウィンドウの大きさTSW[sec]、検査ウィンドウの大きさを定める互いに素な自然数kおよびhの他に、制御可能なパラメータとして、サンプリングレートf、データ更新単位であるベーシックウィンドウの大きさを定める自然数m、ならびに、サンプリングされたパケット数の閾値w*がある。よって、制御可能なこれら三つのパラメータ(以後制御パラメータと呼ぶ)の値を適切に決定する必要がある。その際、前述の検出対象のフローを見逃してしまう確率をε以下とするという条件を満たすと同時に、スライディングウィンドウ方式がオンラインアルゴリズムとして正常に機能するために、新しいベーシックウィンドウが生成される前に現在のスライディングウィンドウの解析が終了できるようにしなければならない。
【0064】
この二つの制約条件下で三つの制御パラメータを設定しようとする場合には自由度が大きく、制御パラメータは一意に決定されない。そこで、以下では、検出対象フローの発生から検出までに要する時間に関する制約条件と、スライディングウィンドウ方式における検出対象フローの集合が、本来の検出対象フローの集合に近いものとなるように検査ウィンドウのスライド幅TBW=TSW/(km)に関する最大許容値を導入し、各制御パラメータを一意に定める手法を説明する。
【0065】
そして、サンプリングレートf、ベーシックウィンドウの大きさを定める自然数m、並びに、サンプルにおけるパケット数の閾値w*の三つの制御パラメータを、複数の制約条件を導入することにより、一意に決定する手法を説明する。
【0066】
<制御パラメータと制約条件>
検出対象のフローを定義するパラメータは次の四つである。
【0067】
・パケットレートの閾値R[packets/sec]
・スライディングウィンドウの大きさTSW[sec]
・検査ウィンドウの大きさを定める互いに素な自然数k及びh
一方、制御パラメータは以下の三つである。
【0068】
・サンプリングレートf
・ベーシックウィンドウの大きさを定める自然数m
・サンプルにおけるパケット数の閾値w*[packets]
以上七つのパラメータが決定されると、上記の「検出の枠組」みで説明した検出手法を用いることができる。
【0069】
制御パラメータを設定する際にまず注意しなければならないことは、スライディングウィンドウ方式を用いた本提案手法をオンラインアルゴリズムとして正常に機能させることである。オンラインで検出を行うということは、解析対象のデータが更新される前に、現在のデータの解析処理が完了しなければならないということである。すなわち、スライディングウィンドウの解析を、新たな1ベーシックウィンドウ分のデータを取得する前に終わらせなければならない。よって、スライディングウィンドウの解析時間τ[sec]は
【0070】
【数8】
を満たさなければならない。
【0071】
そこで、スライディングウィンドウの解析時間τ[sec]について評価を行う。パケットの情報はサンプリングされた時点でフロー毎に仕分けられ、パケット数はカウントされているものとする。すなわち、ベーシックウィンドウはフロー毎の情報を保持しており、保持するフロー数の上限はサンプリングされるパケット数となる。以下に新しいベーシックウィンドウが生成された直後からのスライディングウィンドウの処理を列挙する。なお、解析を行う際はスライディングウィンドウ内の(k−h)m+1個の検査ウィンドウのみを対象とするが、データ処理の都合上、まだhm個揃っていない先のスライディングウィンドウで用いる検査ウィンドウも、関係するベーシックウィンドウが到着し次第順次加えながら作成していく。以下に手順を示す。
【0072】
(1)新しいベーシックウィンドウをスライディングウィンドウ内の関係する全ての検査ウィンドウ(まだhm個そろっていないものも含む)に加える。
【0073】
(2)最近のhm個のベーシックウィンドウで構成される検査ウィンドウを調査し、閾値w*を超えるフローを検知する。
【0074】
(3)以前の検査ウィンドウの検知結果を用いて、全ての検査ウィンドウで検知されたフローを検出する。
【0075】
(4)最も古い検査ウィンドウおよびベーシックウィンドウを破棄する。
【0076】
上記手順のうち、(1)はベーシックウィンドウに含まれる各フローについてフロー情報の比較や情報の集約などの複雑な処理を行うため、その処理時間はベーシックウィンドウ内のフロー数に依存する。(2)以降の各手順は、予め確保された空間に渡って単純な比較やデータの廃棄のみを行うため、一定時間内に処理できると考えて良い。そこで、本実施例ではスライディングウィンドウの処理時間τを、ベーシックウィンドウにサンプリングされるパケット数に依存する処理時間と、パケット数とは独立な一定の処理時間の和として考え、次式で処理時間の上界を見積もることにする。
【0077】
【数9】
ここで、Cmax、Δ1およびΔ2は、それぞれ、観測する回線の最大パケットレート、スライディングウィンドウの解析における1サンプルパケット当りの処理時間、および、サンプルパケット数とは独立な処理時間を表している。
【0078】
DoS攻撃のような異常フローは発生から検出するまでに時間がかかりすぎると、攻撃を受けているサーバが機能を停止してしまう。そこで本実施例では、検出対象のフローが発生してから目標時間TD_max[sec]以内に検出できるようにパラメータを定める。検出対象のフローを検出するために必要な時間は、対象フローの測定にかかる時間TSWとスライディングウィンドウの解析時間τの和で与えられる。しかし、検出対象のフローは多くの場合、ベーシックウィンドウの途中から発生すると考えられ、検出した時点では直前に破棄したベーシックウィンドウの途中から始まっていた可能性が高い。すなわち、最大で1ベーシックウィンドウ分の検出遅れが生じることになる。したがって、検出対象フローを目標時間以内に検出するための条件は次式で与えられる。
【0079】
【数10】
上記の「検出対象フローの定義」では、T(=TSW)秒の測定期間内の任意のt(=TIW)秒の区間全てにおいてパケットレートがR以上となっているため、検査ウィンドウのスライド幅が大きすぎると、上記の「検出対象フローの定義」を満足しないフローを多数検出することになる。そこで、検査ウィンドウのスライド幅に関する最大許容値TBW_max[sec]を設ける。本実施例において、検査ウィンドウのスライド幅はベーシックウィンドウのサイズTBWとなるため、TBWは次の条件を満たす必要がある。
【0080】
【数11】
上記の「検出の枠組み」で説明した検出手法では、ランダムパケットサンプリングを行い、サンプリングされたパケットの情報のみを用いて検出を行うため、検出対象フローの検出見逃しや検出対象外フローの誤検出が発生する。三つの制御パラメータのうち二つを固定し、残りの一つを変化させた場合、サンプリングレートfに関しては、fを小さくするほど検出見逃しおよび誤検出は発生しやすくなる。ベーシックウィンドウのサイズを規定するmに関しては、mを大きくするほど検査ウィンドウの数が増え、全ての検査ウィンドウでw*以上となる確率が減少するため、検出見逃しは増加するが誤検出は減少する。検査ウィンドウにおけるパケット数の閾値w*に関しては、w*が小さいほど検出見逃しは減少するが誤検出は増加する。このようにmとw*に関してはトレードオフの関係が存在することに注意する。異常フローを見逃してしまうと、その後のネットワークに大きな障害をもたらしかねないため、本実施例では検出対象のフローを見逃してしまう確率を十分小さなε以下に抑えるようにパラメータを設定する。その上で、検出対象外フローを誤検出してしまう確率もなるべく小さくなるように制御パラメータを設定する。
【0081】
上記のシステムを規定するパラメータを以下にまとめておく。
【0082】
・見逃し許容誤差ε(検出対象フローを1−ε以上の確率で検出)
・検出目標時間TD_max[sec]
・スライド幅の最大許容値TBW_max[sec]
・観測する回線の最大パケットレートCmax[packets/sec]
・1サンプルパケットあたりの処理時間Δ1[sec]
・スライディングウィンドウの解析に必要なパケット数とは独立な処理時間Δ2[sec]
<誤検出確率の最小化問題>
上記の制約条件の下、検出対象外の低パケットレートフローを誤検出する確率を最小化するように制御パラメータを設定する問題を考える。すなわち、この問題は次のように定式化される。
【0083】
目的関数:検出対象外フローの誤検出確率→最小
制約条件:サンプリングレートf>0
ベーシックウィンドウの大きさを定める自然数m
サンプルにおけるパケット数の閾値w*(自然数)
オンラインのアルゴリズムとして機能すること
目標時間TD_max内に検出可能なこと
検査ウィンドウのスライド幅≦最大許容値TBW_max
検出対象フローの検出見逃し確率≦ε以下
なお、対象フローの検出見逃し確率に関する制約条件は、サンプリングレートfとベーシックウィンドウの大きさを定めるmが決定した後に、w*を調整することによって満たすことができるため、上記の問題とは独立な問題として考える。
【0084】
まず、目的関数について説明する。サンプリングによって得られたパケットの情報を用いて母集団の統計量を推定する場合、サンプリングされたパケット数が多ければ多いほどその統計的精度は高くなる。そのため検出対象外のフローを誤検出してしまう確率を下げるためにはなるべくたくさんのパケットをサンプリングすればよい。スライディングウィンドウのサイズはTSW秒で固定されているため、サンプリングされるパケット数を多くするにはサンプリングレートfを大きくする、すなわち、上記の制約条件下でfを最大化することが検出対象外フローの誤検出確率を最小化することと等価となる。したがって、上記の問題は次のようなサンプリングレートfの最大化問題となる。
【0085】
目的関数:サンプリングレートf→最大
制約条件:サンプリングレートf>0
ベーシックウィンドウの大きさを定める自然数m
オンラインのアルゴリズムとして機能すること
目標時間TD_max内に検出可能なこと
検査ウィンドウのスライド幅≦最大許容値TBW_max
次に、制約条件について説明する。スライディングウィンドウの解析時間τは式(2)に従うと仮定する。さらに上記より、オンラインのアルゴリズムとして機能するための条件は式(1)で、目標時間内の検出の条件は式(3)で、検査ウィンドウのスライド幅に関する条件は式(4)で与えられる。制約条件をこれらで置き換え、mに関してkm=TSW/TBWを加えると、上記の問題は次のように書き換えられる。
【0086】
目的関数:サンプリングレートf→最大
制約条件:f>0
mは自然数
τ≦TBW
TSW+TBW+τ≦TD_max
TBW≦TBW_max
τ=fCmaxTBWΔ1+Δ2
km=TSW/TBW
この制約条件下で、サンプリングレートfを最大にする自然数mを求めることが目的となる。τ≦TBWにτ=fCmaxTBWΔ1+Δ2を代入し、TSW=kmTBWを用いて変形すると、
【0087】
【数12】
となる。同様に、TSW+TBW+τ≦TD_maxは、
【0088】
【数13】
となる。また、TBW≦TBW_maxより、
【0089】
【数14】
となる。
【0090】
このとき、本実施例の手法が動作可能であるためには、サンプリングレートfが正となるようなmが存在する必要がある。式(5)の右辺が正であるためには、
【0091】
【数15】
でなければならない。また、式(6)の右辺が正であるための条件は、
【0092】
【数16】
で与えられる。さらに、式(7)より
【0093】
【数17】
を得る。すなわち、式(8)、(9)、(10)より、本実施例の手法が動作可能となるためには、次式が成立する必要がある。
【0094】
【数18】
よって、式(11)が成立しているという条件の下で、以下の最適化問題を考える。
【0095】
制御パラメータ:f,m
与条件:定数TSW,k,h,Cmax,TD_max,TBW_max,Δ1,Δ2
TSW−kΔ2>0
kTD_max−(k+1)TSW−kΔ2>0
TSW≦kTBW_max
目的関数:f→最大
制約条件:f>0
mは自然数
【0096】
【数19】
この混合線形計画問題は以下のようにして解くことができる。まず、自然数mを実数rで置き換えた以下の緩和問題を考える。
【0097】
目的関数:f→最大
制約条件:f>0
【0098】
【数20】
2番目と3番目の制約条件で表される領域の境界はそれぞれ次式で与えられる。
【0099】
【数21】
【0100】
【数22】
ここで、式(12)がrに関する減少一次関数に、式(13)がrに関する増加一次関数になっていることに注意する。この2直線の交点の座標を
【0101】
【数23】
とおくと、
【0102】
【数24】
である。与条件より、
【0103】
【数25】
は正であることに注意する。一方、最後の制約条件で表される領域の境界を
【0104】
【数26】
とおく。
【0105】
【数27】
以上の準備の下でfを最大にするようなr*およびm*を、
【0106】
【数28】
に場合分けして求める。
【0107】
【数29】
図6より、
【0108】
【数30】
でfは最大となる。このとき、
【0109】
【数31】
を求め、
【0110】
【数32】
であればm−とm+のうちfを大きくする方、すなわち
【0111】
【数33】
を採用する。このときのf*はf*=max{f1(m+),f2(m−)}となる。また、
【0112】
【数34】
のときはm*=m+であり、f*はf*=f1(m+)となる。
【0113】
【数35】
図7より、
【0114】
【数36】
でfは最大となる。このときm*は
【0115】
【数37】
となり、f*はf*=f1(m+)である。
【0116】
以上のようにして求めたm*とf*を制御パラメータの値として用いる。
【0117】
<サンプルにおける閾値の導出>
予め与えられるシステムを規定するパラメータと上記のように設定したサンプリングレートfおよびベーシックウィンドウの大きさを定めるmを用いて、検出対象フローを見逃してしまう確率をε以下となるように、検査ウィンドウ内のサンプルパケット数の閾値w*を設定する。
【0118】
ある測定期間において任意のフローに注目する。XおよびYをそれぞれフローを構成するパケット数およびサンプリングされたパケット数を表す確率変数とする。X=xという条件下で、y個のパケットがサンプリングされる確率q(y|x)=Pr[Y=y|X=x]は以下の二項分布で与えられる。
【0119】
【数38】
閾値フローを用いた閾値の導出
スライディングウィンドウ内の全ての検査ウィンドウ内のパケット数が
【0120】
【数39】
である閾値フローを1−ε以上の確率で検出できるようにw*を設定すると、全ての検出対象のフローを1−ε以上の確率で検出できることに注意する。
【0121】
図8に示すように、スライディングウィンドウ内のi番目のベーシックウィンドウの母集団におけるパケット数を確率変数Xiで、i番目の検査ウィンドウの母集団におけるパケット数を確率変数Ziで表すと、ZiはXiを用いて次のように表される。
【0122】
【数40】
さらに、図9のように、スライディングウィンドウ内のi番目のベーシックウィンドウにサンプリングされたパケット数を確率変数Yiで、i番目の検査ウィンドウにサンプリングされたパケット数を確率変数Wiで表すと、WiはYiを用いて次のように表される。
【0123】
【数41】
ここで、閾値フローのベーシックウィンドウ毎の母集団におけるパケット数を考える。各検査ウィンドウは母集団においてz*個のパケットで構成されているため、ベーシックウィンドウのパケット数Xiは次の式を満たす。
【0124】
【数42】
上式より、閾値フローの母集団におけるパケット数の分布は1サイクルがhmの周期的な分布となることがわかる。そのため、一つ目の検査ウィンドウにおけるパケット数の分布が決定すると、スライディングウィンドウ全体の分布が決定する。
【0125】
ベクトルXをi番目の要素がXiである、母集団のパケット数を表すkm次元ベクトルとし、閾値フローの母集団におけるパケット数を
【0126】
【数43】
で表すことにする。また、閾値フローがサンプルパケット数の閾値wをもって検出される確率、すなわち全ての検査ウィンドウにおいてw個以上のパケットがサンプリングされる確率は、
【0127】
【数44】
である。ここで、式(15)の周辺確率を考える。任意の一つの検査ウィンドウにおいて
【0128】
【数45】
となる確率p(w|z*)は、式(14)の二項分布を用いて次のように求まる。
【0129】
【数46】
このとき、
【0130】
【数47】
となる確率は閾値フローの分布
【0131】
【数48】
とは独立であることに注意する。
【0132】
議論を式(15)の結合確率に戻す。確率変数XiおよびYiはiに関して独立であるが、ZiおよびWiは前後hm−1番目まで共通のXiおよびYiを有し、従属関係にあるため、式(15)の確率を数値計算によって求めることは困難である。そこで、式(16)で与えられる周辺確率を用いて、結合確率の上下界値を導く。
【0133】
閾値フロー検出確率の上下界値
問題を簡単にするためにh=1の場合、すなわち、スライディングウィンドウの大きさが検査ウィンドウのk倍になっている場合を考える。このとき式(15)で与えられる閾値フローの検出確率は、スライディングウィンドウ内の独立なk個の検査ウィンドウにおいてWi≧wとなる確率(式(16))と、その事象が起こったという条件の下で他の検査ウィンドウでもWi≧wとなる条件付き確率の積として、
【0134】
【数49】
と変形される。ここで後半部分の条件付き確率は1で上から押さえることができるため、閾値フローの検出確率は、
【0135】
【数50】
として上から押さえられる。ここでh≠1の場合にも成り立つように拡張すると、スライディングウィンドウ内の独立な検査ウィンドウの数は
【0136】
【数51】
であるため、
【0137】
【数52】
として閾値フローの検出確率の上界値が得られる。
【0138】
次に、下界値について述べる。以下では、サンプリングされたパケット数を表す確率ベクトルをY=(Y1,Y2,...,Ykm)とする。このとき、
【0139】
【数53】
が与えられたという条件下では、
【0140】
【数54】
となるため、ベクトルY=(Y1,Y2,...,Ykm)は互いに独立な確率変数Yi(i=1,2,...,km)から構成される確率ベクトルであることに注意する。ただし、
【0141】
【数55】
は
【0142】
【数56】
のi番目の要素を表す。よって、確率ベクトルYは正の関連(positively associated)をもつ。ここで正の関連をもつとは、任意の増加関数
【0143】
【数57】
に対して
【0144】
【数58】
すなわち、
【0145】
【数59】
が成立することをいう。
【0146】
次に、以下の指示関数を定義する。
【0147】
【数60】
この指示関数は、wおよび
【0148】
【数61】
が与えられたとき、あるY≧Y'なるベクトルYとベクトルY'に対して、
【0149】
【数62】
を満たす。ただし、Y≧Y'は各ベクトルの成分YjおよびYj'に対して、
【0150】
【数63】
が成り立つこと意味する。式(18)より、
【0151】
【数64】
は非負の増加関数となっている。以上より、
【0152】
【数65】
が成立する。
【0153】
さらに、非負の増加関数の積は非負の増加関数となるので
【0154】
【数66】
とすると、ベクトルYが正の関連をもつため、
【0155】
【数67】
が成立する。この式の右辺に式(20)を代入し、式(19)を適用すると、
【0156】
【数68】
を得る。よって、数学的帰納法により
【0157】
【数69】
を得る。
【0158】
式(21)の左辺はWj=Yj+Yj+1+...+Yj+hm−1と式(15)を用いると、
【0159】
【数70】
となる。同様に式(21)の右辺は、式(16)を用いると、
【0160】
【数71】
となる。式(23)と式(24)を式(21)に代入することにより、
【0161】
【数72】
の下界を得る。
【0162】
【数73】
閾値フローの分布による検出確率の変化
上記の式(17)と式(25)より、閾値フローの検出確率
【0163】
【数74】
が次のように上下界値で押さえられることがわかった。
【0164】
【数75】
しかし、上界値および下界値はkやmが大きい場合、あるいはp(w|z*)が小さな値をとる場合等は両者の差が大きくなり、上下界値を用いて検出確率を推定することは困難になる。
【0165】
そこで、閾値フローの母集団におけるパケット数の分布
【0166】
【数76】
に注目する。閾値フローの中でも検出確率が最低になるようなパケット数の分布がわかれば、その分布を基に全ての検出対象フローを検出できるようなパケット数の閾値w*を決定することができる。ここで、閾値フローのパケット数の分布は一つ目の検査ウィンドウ分の分布が決まると周期性から全ての分布が決定することに注意する。
【0167】
複数の条件下での数値計算の結果、h=1の場合は、一つ目の検査ウィンドウにおいてz*個のパケットをまず
【0168】
【数77】
個ずつ均等にベーシックウィンドウに配置し、余剰が出た場合はそのパケットを検査ウィンドウの中央のベーシックウィンドウから一つずつ前後のベーシックウィンドウに外側に向けて交互に配置したときに、検出確率が最低となることが分かった。このときウィンドウ全体の対称性から、前後のウィンドウのどちらに先に配置するかは問題とならない。反対に、検査ウィンドウ内の一つのベーシックウィンドウにz*個のパケットを全て配置した場合には最も検出確率は高く、その検出確率は上界値と等しくなるため、パケットを均等に配置するときに検出確率が最低になることは直感的な理解とも一致する。
【0169】
しかし、h≧2の場合は、一つ目の検査ウィンドウを用いて配置されたベーシックウィンドウ毎のパケット数の、スライディングウィンドウ全体において配置される回数が異なってくるため、h=1と同じ議論は適用できず、検出確率が最低となる分布は見出すことができない。以降、h≧2の場合は検出確率が最低となる分布が見出されているものと仮定して説明する。
【0170】
検出確率が最低となる閾値フローの分布をX*とおく。このとき、先の上下界値を含め、次の式が成り立っていることに注意する。
【0171】
【数78】
分布X*が得られた後、検出対象のフローを1−ε以上の確率で検出するためにサンプルにおけるパケット数の閾値w*を次のように設定する。
【0172】
【数79】
なお、P(w|X*)はモンテカルロシミュレーションを用いた数値実験によって求める。
【0173】
以上で制御パラメータの設定は完了し、上記の「検出の枠組み」で説明した検出手法で用いるパラメータは全て決定した。
【0174】
多段階閾値の導入
上記のように、本実施例の検出手法を用いるためのパラメータの決定は完了した。しかし、実験結果が全ての検査ウィンドウでw*以上サンプリングされたかどうかの2通りでの評価では、閾値よりもかなり大きいパケットレートの検出対象フローも、たまたま誤検出された検出対象外フローも全く区別がつかない。そこで、検出されたパケット数の情報をより有効活用することを考え、閾値w*以外の複数の基準値ω(φ)(ω(φ)>w*)を設ける。そして、検出されたフローの中で、全ての検査ウィンドウにおいてω(φ)個以上のパケットがサンプリングされているフローは区別することにする。ここで基準値ω(φ)は次のようにして定める。
【0175】
【数80】
ただし、φは1−ε未満の値を用いる。この基準値の定め方には、パケットレートが閾値フローから僅かに低いだけの検出対象外のフローを誤って検出してしまう確率をφ以下にするという意図がある。複数のφに対するω(φ)を求め、検出されたフローの中でのフローの差別化を図る。
【0176】
<性能評価>
次に、実際にネットワークで測定された2種類の異なるトレースデータに対して適当な規定パラメータの下でシミュレーション実験を行い、本実施例の検出手法の性能評価を行う。まず実験に用いるトレースデータについて述べる。続いて性能を評価するための指標について述べ、最後に実験の結果を示し、その考察を行う。
【0177】
性能評価を行うトレースデータとして、CAIDAによって2008年2月20日の8:00から9:00の間に測定されたバックスキャッタのトラヒックを含むBackscatterトレースデータと、NLANRのPassive Measurement and Analysis (PMA) Projectによって2004年2月19日の10:00から10:05の間にバックボーンネットワークで測定され、現在はCAIDAによって管理されているCESCA−Iトレースデータを用いた。図10にトレースデータの概要を示す。
【0178】
性能評価指標
本実施例の検出手法の性能を評価するため、検出率、誤検出率、最低誤検出パケット数の三つの指標について検証する。ここで次のような二つの指示関数を用意する。
【0179】
【数81】
ここで、iはスライディングウィンドウの解析回数のカウンタ値を、flow_idはフローの識別子をそれぞれ表す。a(i,flow_id)=1は母集団において、i回目の解析時点でのflow_idのフローが、全ての検査ウィンドウで
【0180】
【数82】
個以上パケットが存在する検出対象のフローであることを意味し、b(i,flow_id)=1はサンプリング実験において、i回目の解析時点でのflow_idのフローが、全ての検査ウィンドウでw*個以上パケットがサンプリングされ、検出されたフローであることを意味する。
【0181】
トレースデータの観測時間をTM[sec]とおくと、iのとる値は、i=1,2,...,imaxとなる。ただし、
【0182】
【数83】
である。また、i回目の解析時点における全てのflow_idの集合を
【0183】
【数84】
とする。トラヒックに含まれるフローの集合は解析を行う度に異なるため、iの関数になっていることに注意する。
【0184】
このとき、検出率を次式で定義する。
【0185】
【数85】
a(i,flow_id)=1となるiとflow_idの組み合わせを検出対象点としたとき、式(26)は全ての検出対象点のうち本実施例の検出手法により検出できた点の割合を表す。
【0186】
一方、誤検出率は次式で定義される。
【0187】
【数86】
a(i,flow_id)=0となるiとflow_idの組み合わせを、検出対象外点としたとき、式(27)は全ての検出対象外点のうち本実施例の検出手法により誤検出された点の割合を表す。
【0188】
最後に、最低誤検出パケット数については、誤検出された全てのフローの母集団における検査ウィンドウ内のパケット数を全て調査し、それらの中で最少パケット数で構成される検査ウィンドウを特定し、そのパケット数を評価する。
【0189】
実験結果
予め与えられるパラメータである、R[packets/sec]、TSW[sec]、k、h、TD_max[sec]、TBW_max}[sec]、Δ1[sec]、Δ2[sec]、Cmax[packets/sec]、εはそれぞれ図11のように与えた。また、実験ではフローを、Backscatterトレースデータに対しては送信元IPアドレスが共通のパケット群と定義し、CESCA−Iトレースデータに対しては送信元IPアドレスが共通のパケット群と宛先IPアドレスが共通のパケット群の2種類で定義した。これは、Backscatterトレースデータには、DoS攻撃を受けたサーバから偽装された様々な宛先へ送られるトラヒックが含まれていることが分かっているため、そのトラヒックを検出することを目的としている。一方、CESCA−Iトレースデータには異常フローは含まれていないように思われる。そのため2種類の定義により純粋に高パケットレートフローの検出を試みた。
【0190】
図11のパラメータを基に、上記の「制御パラメータと制約条件」で説明した制御パラメータ設定法を用いた。まず、上記の「誤検出確率の最小化問題」を解き、サンプリングレートfとベーシックウィンドウの大きさを定めるmが図12のように得られた。
【0191】
図11のパラメータ群と図12のfおよびmを用いて、上記の「サンプルにおける閾値の導出」の手法を用いたモンテカルロシミュレーションによる数値実験により、検査ウィンドウにおけるパケット数の閾値w*を決定した。なお数値実験では、各ベーシックウィンドウにパケットを均等に配置した閾値フローを母集団とし、複数の閾値の候補wに対して106回のサンプリング実験を行い、検出された回数を106で割ることによって得られた検出率が1−ε以上となるwの中で最大のものをw*として採用した。Backscatterトレースデータに対する数値実験の結果を図13に、R=800のときのCESCA−Iトレースデータに対する数値実験の結果を図14に、R=1000のときのCESCA−Iトレースデータに対する数値実験の結果を図15にそれぞれ示した。それぞれのグラフから、閾値フローの検出率が下界値と上界値でそれぞれ押さえられていることもわかる。また、数値計算によって求まる下界値と上界値を参考にすることによって、数値実験で試行するwの範囲を絞ることができる。さらに、w*と同様に数値実験においてω(φ)の値を、φ=0.5,10−1,10−2,10−3,10−4,10−5,10−6について求めた結果をw*と共に図16に示す。
【0192】
以上の手順により得られた制御パラメータと予め与えられるパラメータ群を用いてサンプリング実験を行った。ここで検出対象のフローは、サンプリングレートをf=1、サンプルにおけるパケット数の閾値を
【0193】
【数87】
とし、その他のパラメータは実験に用いたものと同じとした場合の検出結果を用いた。
【0194】
100回のサンプリング実験における、三つの評価指標の平均値を95%信頼区間と共に図17に示す。図17より、検出対象はいずれの場合においても1−ε以上の割合で検出されていることがわかる。また、検出対象外フローのうち誤検出されたフローの割合も十分小さく抑えられている。さらに、誤検出されたフローの中で検査ウィンドウに含まれるパケット数が最少のものでも検出対象の半分程度であるため、本実施例の検出手法が誤検出するフローのパケットレートの範囲はそれほど広くないことがわかる。
【0195】
<実施例の効果>
以上説明したように、本発明の実施例によれば、長さT秒の測定期間に含まれる長さt秒の任意の部分区間において、パケットレートがR[packets/sec]以上のフローを、ランダムパケットサンプリングによって得られた情報からオンラインで検出できる。
【0196】
説明の便宜上、本発明の実施例に係る高パケットレートフロー検出装置は機能的なブロック図を用いて説明しているが、本発明の高パケットレートフロー検出装置は、ハードウェア、ソフトウェア又はそれらの組み合わせで実現されてもよい。例えば、高パケットレートフロー検出装置の各機能部がソフトウェアで実現され、コンピュータ内に実現されてもよい。また、2以上の実施例及び実施例の各構成要素が必要に応じて組み合わせて使用されてもよい。
【0197】
以上、本発明の実施例について説明したが、本発明は、上記の実施例に限定されることなく、特許請求の範囲内において、種々の変更・応用が可能である。
【符号の説明】
【0198】
101 パラメータfとmの設計部
102 パラメータw*の設計部
103 パケット無作為抽出部
104 BW情報保存部
105 IW情報の更新部
106 IW情報保存部
107 高パケットレートフロー検出部
【技術分野】
【0001】
本発明は、高パケットレートフロー検出装置及び高パケットレートフロー検出方法に関する。
【背景技術】
【0002】
近年、インターネット上では公的機関や企業のサーバなどを狙った、Denial of Service(DoS)攻撃が深刻な問題となっている。DoS攻撃とは、サーバがクライアントに対して供給するサービスを、不正なパケットを送りつけることによって妨害するという、ネットワークを利用した攻撃のことである。DoS攻撃の代表的なものとしてSYN Flood攻撃とsmurf攻撃がある。
【0003】
SYN Flood攻撃とは、攻撃者が攻撃対象のサーバに対してTCPの接続要求であるSYNパケットを、ヘッダを改竄した後に大量に送りつけるというものである。SYNパケットを受け取ったサーバは送信元に対してSYN/ACKを返す。しかしSYNパケットのヘッダに書かれている送信元のIPアドレスが実際には存在しないアドレスに書き換えられているため、サーバからのSYN/ACKに対してACKを返すクライアントは存在せず、サーバは返ってこないACKをタイムアウトになるまで待ち続けなければならない。この状態はhalf−openと呼ばれ、half−open状態のコネクション情報はサーバ内のbacklog queueに蓄積される。backlog queueのサイズはサーバ毎に決められており、このbacklog queueが一杯のときは、サーバはクライアントからの接続要求に応えることができない。すなわち、送信元IPアドレスを改竄したSYNパケットが大量に送られてくると、サーバのbacklog queueは常に一杯の状態になってしまい、正常なクライアントに対してTCP接続を確立することができず、サービスを供給できなくなる。
【0004】
一方、smurf攻撃とは、ICMP echo requestを用いたDoS攻撃であり、攻撃者はICMP echo requestパケットの送信元IPアドレスを攻撃対象のホストのIPアドレスに偽装し、そのパケットをネットワークのブロードキャストアドレスに送る。すると、パケットを受け取ったネットワーク内の全てのホストから攻撃対象のホストに向けてICMP echo replyパケットが一斉に返される。この大量のICMPパケットによって攻撃対象のホストやネットワークに過重負荷がかかるため、サーバなどではサービスの提供が困難になる。
【0005】
どのようなDoS攻撃であっても、単一のホストからの攻撃であれば攻撃の規模には限度があるが、複数のホストから一斉にDoS攻撃を行うDistributed DoS(DDoS)攻撃は、攻撃の規模と攻撃元の分散性から攻撃を受けたサーバでの対処が難しいため、ネットワーク、とりわけバックボーンネットワークの管理者の立場において検出することが、その後の対応を行う上で重要となる。
【0006】
直接の攻撃とは別に、SYN Flood攻撃が起こった際にその副産物としてバックスキャッタと呼ばれるトラヒックが観測される。これは攻撃を受けたサーバから偽装されたIPアドレスに向けて送られるSYN/ACKパケット群であり、その多くは実際には使われていないIPアドレスが指定されているため、ヘッダのTTLがゼロなるまでネットワーク内を流れつづけることになる。実際には使われていないIPアドレスに向けて送られるパケットを観測するシステムとしてNetwork telescopeがある。Network telescopeはIPv4の全アドレス空間のうちのほとんど正常なIPアドレスが存在しない部分空間を観測するためのシステムである。その性質から、バックスキャッタのトラヒックやワームによるランダムスキャンのなどの観察に適している。
【0007】
また、DoS攻撃の検出に関連する研究としては以下のようなものがある。V. A. Sirisらはトラヒックに含まれるSYNパケットの数を計測し、2種類のアルゴリズムを用いて動的に閾値を定め、閾値を超えるSYNパケットが計測された場合にSYN Flood攻撃の発生を検出するという手法を提案している(非特許文献1参照)。大下らもSYN Flood攻撃を検出する手法を提案している。彼らの手法はbacklog queueのサイズとタイムアウトになる時間を考慮し、サーバがサービス停止状態になる前に検出を行う。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】V. A. Siris and F. Papagalou, "Application of anomaly detection algorithms for detecting syn flooding attacks," Computer Communications, vol.29, no.9, pp.1433−1442, 2006.
【発明の概要】
【発明が解決しようとする課題】
【0009】
V. A. Sirisらはトラヒックに含まれるSYNパケットの数を計測し、2種類のアルゴリズムを用いて動的に閾値を定め、閾値を超えるSYNパケットが計測された場合にSYN Flood攻撃の発生を検出するという手法を提案しているが、彼らの手法は、SYN Flood攻撃が発生していることは検知できても、SYN Flood攻撃のフローを特定することができないという問題がある。また大下らもSYN Flood攻撃を検出する手法を提案しているが、トラヒックを観測するポイントが、サーバ側のネットワークへのインターフェース部分を想定しており、バックボーンNWを対象としたものではない。さらにトラヒックの全パケットを観測しているため、高速な回線を測定対象とした場合のスケール性に問題がある。
【0010】
本発明は、バックボーンNWの任意のルータポートを観測対象とし、パケットサンプリング技術を用いることで、回線レートが高速である場合にも対応可能な、持続的な高パケットレートフロー(パケットレートが所定値以上のトラヒックのフロー)を検出することを目的とする。
【課題を解決するための手段】
【0011】
本発明の高パケットレートフロー検出装置は、
パケットレートが所定値以上のトラヒックのフローを検出する高パケットレートフロー検出装置であって、
パケットを無作為に抽出するパケット無作為抽出部と、
所定の測定期間を部分区間に分割し、部分区間内に抽出されたパケット数をフロー毎に集計するパケット数測定部と、
部分区間においてパケット数が閾値以上のフローを、パケットレートが所定値以上のトラヒックフローであるとして検出する高パケットレートフロー検出部と、
を有することを特徴とする。
【0012】
本発明の高パケットレートフロー検出方法は、
パケットレートが所定値以上のトラヒックのフローを検出する高パケットレートフロー検出装置における高パケットレートフロー検出方法であって、
パケットを無作為に抽出するステップと、
所定の測定期間を部分区間に分割し、部分区間内に抽出されたパケット数をフロー毎に集計するステップと、
部分区間においてパケット数が閾値以上のフローを、パケットレートが所定値以上のトラヒックフローであるとして検出するステップと、
を有することを特徴とする。
【発明の効果】
【0013】
本発明によれば、パケットサンプリング技術を用いることで、パケットレートが所定値以上のトラヒックのフローを検出することが可能になる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施例に係る高パケットレートフロー検出装置の構成図
【図2】本発明の実施例に係る高パケットレートフロー検出装置のパケット無作為抽出部で実行される処理プロセスのフローチャート
【図3】本発明の実施例に係る高パケットレートフロー検出装置のIW情報の更新部で実行される処理プロセスのフローチャート
【図4】本発明の実施例に係る高パケットレートフロー検出装置の高パケットレートフロー検出部で実行される処理プロセスのフローチャート
【図5】スライディングウィンドウの概要を示す図
【図6】制御パラメータfが制約条件を満たす領域を示す図
【図7】制御パラメータfが制約条件を満たす領域を示す図
【図8】スライディングウィンドウの母集団におけるパケット数の説明図
【図9】スライディングウィンドウのサンプルにおけるパケット数の説明図
【図10】実験に用いたトラヒックデータの概要を示す表
【図11】実験に用いた規定パラメータを示す表
【図12】実験で得られた制御パラメータ(f,m)を示す表
【図13】閾値の候補と検出率の関係を示す図(Backscatter)
【図14】閾値の候補と検出率の関係を示す図(CESCA−I(R=800))
【図15】閾値の候補と検出率の関係を示す図(CESCA−I(R=1000))
【図16】サンプルにおける閾値を示す表
【図17】実験結果の平均と95%信頼区間を示す表
【発明を実施するための形態】
【0015】
以下、図面を参照して本発明の実施例について説明する。
【0016】
本発明の実施例では、長さT秒の測定期間に含まれる長さt秒の任意の部分区間において、パケットレートがR[packets/sec]以上のフローを、ランダムパケットサンプリングによって得られた情報からオンラインで検出することを特徴とする持続的な高パケットレートフローのオンライン検出法について説明する。
【0017】
より具体的には、長さTSW=Tの測定期間(スライディングウィンドウSW)を自然数kとmに対してkm個のベーシックウィンドウ(BW)に分割し、さらにh≦kかつkとは互いに素な自然数hを用いて、連続するhm個のBWで構成される検査ウィンドウ(IW)をSW内に(k−h)m+1個作成し、SW内の全てのIWにおいてパケットレートがR[packets/sec]以上であるフローを検出する。なお、検査ウィンドウの大きさTIW=tはkとhとにより決まり、TIW=(h/k)TSW[sec]となることに注意する。
【0018】
<高パケットレートフロー検出装置の構成>
図1は、持続的な高パケットレートフローのオンライン検出法を実現するための、本発明の実施例に係る高パケットレートフロー検出装置の構成図である。
【0019】
本実施例に係る高パケットレートフロー検出装置は、パラメータfとmの設計部101と、パラメータw*の設計部102と、パケット無作為抽出部103と、BW情報保存部104と、IW情報の更新部105と、IW情報保存部106と、高パケットレートフロー検出部107とを有する。
【0020】
パラメータfとmの設計部101は、パケットサンプリング確率fとBWの大きさを定めるパラメータmとを設計する。パラメータfとmの設計部101は、目標時間TD_max内に検出すること、BWの幅が最大許容値TBW_max以下であること、を制約条件とし、検出対象外のフローの誤検出率を最小化するfとmとを設計する。
【0021】
具体的には以下に説明するように、パラメータfとmの設計部101は、入力パラメータである、SWの長さTSW[sec]、1サンプルパケットあたりの処理時間Δ1[sec]、SWの解析に必要なパケット数とは独立な処理時間Δ2[sec]、検出目標時間TD_max[sec]、観測する回線の最大パケットレートCmax[packets/sec]、BWの幅の最大許容値TBW_max[sec]、に対して、
【0022】
【数1】
と定義するとき、
【0023】
【数2】
の場合には、mを
【0024】
【数3】
に設定し、fをf*=max{f1(m+),f2(m−)}に設定する。一方、
【0025】
【数4】
の場合には、m*=m+、f*=f1(m+)に設定する。
【0026】
パラメータw*の設計部102は、高パケットレートフローを検出する際のサンプルパケット数に関する閾値w*を設計する。具体的には、fとmが最適設計された後で、与えられた高レートフローの見逃し許容誤差εに対して、検出対象フローの検出見逃し確率を許容値ε以下に抑えるよう、IW内のサンプルパケット数の閾値w*を設計する。
【0027】
パラメータw*の設計部102は、検出確率が最低となる閾値フローの分布X*(各BWにおけるパケット数の確率分布)に対して、このようなフローが全てのIWにおいてw個以上のパケットがサンプルされる確率をP(w|X*)、高レートフローの見逃し許容誤差をεとするとき、w*を、
【0028】
【数5】
により設計する。ただしP(w|X*)はモンテカルトシミュレーションを用いた数値実験により求める。
【0029】
パケット無作為抽出部103は、測定対象となるルータポートを流れる各パケットに対して各々独立に確率fでパケットをサンプリングする。
【0030】
図2に、パケット無作為抽出部103で実行される処理プロセスのフローチャートを示す。測定対象のルータポートにパケットが到着するごとに、0から1の値をとる一様乱数xを発生させ(S101)、その値がfより小さい場合には(S102:Y)、到着パケットをサンプリングし(S103)、BW情報保存部104の該当フローのサンプルパケット数を全て1だけ増加させる。
【0031】
BW情報保存部104は、BW内でサンプルされたパケット数を各フローに対して保存する。
【0032】
IW情報の更新部105は、BWの境界時点において、BW情報保存部104のサンプルパケット数情報を、現在のBWを含む全てのIWに対して、フローごとに足しこむ。また最古のBWを含むIWを破棄し、連続する最近のkm個のBWを用いて新しいIWを作成する。このように、IW情報の更新部は、測定期間SWを任意の部分区間IWに分割し、部分区間内に抽出されたパケット数をフロー毎に集計する。
【0033】
図3に、IW情報の更新部105で実行される処理プロセスのフローチャートを示す。BWの境界時点において、BW情報保存部104のサンプルパケット数情報を、現在のBWを含む全てのIWに対して、フローごとに足しこみ(S201)、BW情報保存装置104の全エントリをゼロに初期化する(S202)。またIW情報保存部106において、最古のBWを含むIWを破棄し、連続する最近のkm個のBWを用いて新しいIWを作成する(S203)。
【0034】
IW情報保存部106は、IWの情報((k−h)m+1の各IWにおける各フローのサンプルパケット数)を保存する。
【0035】
高パケットレートフロー検出部107は、SWに含まれる(k−h)m+1個の全IWにおいてw*個以上のパケットがサンプルされたフローを高レートフローとして検出する。
【0036】
図4に、高パケットレートフロー検出部107で実行される処理プロセスのフローチャートを示す。BWの境界時点において、SWに含まれる(k−h)m+1個の全IWにおいてw*個以上のパケットがサンプルされたフローを高レートフローとして検出する(S301)。
【0037】
<検出の枠組み>
次に、本発明の実施例に係る持続的な高パケットレートフローのオンライン検出法の枠組みを説明する。
【0038】
DoS攻撃等の異常トラヒックが発生した際、ネットワークのバックボーンにおいて迅速に検出することは、ネットワーク全体を保守管理する上で非常に重要である。本実施例ではDDoS攻撃等、高パケットレートが長時間持続するような異常トラヒックに注目し、パケットレートが予め定められた閾値を一定時間以上超え続けているフローを検出することを試みる。
【0039】
ネットワークを流れるIPトラヒックにおいて、フローとは、共通のIPアドレス、ポート番号、SYNフラグなどの組み合わせをもつパケット群として定義される。例えばDoS攻撃に用いられているパケット群を一つのフローと見なそうとする場合、一般に攻撃パケットのヘッダに記載されている送信元IPアドレスは改竄されており、確実に共通するのは宛先のIPアドレスだけとなる。そのため共通の宛先IPアドレスを持つパケット群をフローと定義するとDoS攻撃の攻撃フローの検出が可能となる。また、バックスキャッタのトラヒックを観測する場合、DoS攻撃を受けたサーバから不特定多数の宛先に向けて送信されるパケットを一つのフローとして見なしたい。この場合は共通の送信元IPアドレスを持つパケット群をフローとして定義するのが適している。このようにフローの定義は検出したい対象や観測地点によって適宜定義を行うと都合が良いため、本実施例ではフローの定義は任意とする。
【0040】
ここで、検出対象フローの定義を行う。上記のように、本実施例ではパケットレートが予め与えられる閾値を一定時間以上超え続けているフローを検出対象とする。この検出対象をより明確にするために、本実施例では以下のように定義する。
【0041】
検出対象フローの定義:予め与えられた定数R[packets/sec]、T[sec]、t[sec](t≦T)に対して、T秒間の測定期間に含まれるt秒間の任意の区間全てについて、パケットレートがR[packets/sec]以上であるフローを検出対象とする。
【0042】
この検出対象の定義には、瞬間的に大量のパケットが発生したが、その後すぐに消えてしまうようなバースト的なフローを検出対象から外すという意図がある。バースト的なフローは捉え方によれば高パケットレートフローであるが、検出した時点ですでに消えてしまっているのであれば対応することが出来ない。検出されたフローは管理者が対応するかどうかを判断しなければならないため、バースト的なフローを検出することは管理者のオーバヘッドが増えることになる。
【0043】
しかし、上記で定義される検出対象フローをネットワークのバックボーンにおいて常時トラヒックを観測しながら検出を行うには大きく三つの問題がある。まず一つ目は、T秒間の測定期間に含まれる長さt秒をもつあらゆる部分区間全てについてパケットレートを調査することは極めて困難である。二つ目は、トラヒックを観測し続ける一方で検出対象のフローをオンラインで検出するためには、観測した解析対象データを更新する仕組みが必要となる。三つ目は、ネットワークのバックボーンのような高速な回線では、回線を流れる全てのパケットを対象に解析することは非現実的でありスケーラビリティを欠く。
【0044】
そこで本実施例では、スライディングウィンドウ方式を用いて最初の二つの問題の解決を図る。スライディングウィンドウ方式とは、解析対象のデータを保持するスライディングウィンドウをベーシックウィンドウと呼ばれる単位に分割し、ベーシックウィンドウ単位で解析データを更新する、オンラインパケット処理アルゴリズムである。本実施例ではこのスライディングウィンドウ方式に、検査ウィンドウと呼ばれる部分ウィンドウの概念を導入し、上記で定義された検出対象フローを含む新たな検出対象フローの集合を定義することで、一つ目の問題を解決する。
【0045】
三つ目の問題に関しては、パケットサンプリングを用いることで解決を図る。すなわち、パケットの標本抽出を行い、得られた情報を基にサンプリングの対象となった母集団の統計量を推定することで、処理サイクルやメモリ使用量を抑える。本実施例では、各パケットに対してフローの情報を用いず、独立に一定の確率fで無作為標本抽出を行うランダムパケットサンプリングを用いる。これにより、処理サイクルを大幅に抑えることができ、バックボーンなどの高速な回線に対しても適用可能となる。しかし、パケットサンプリングはその性質上、情報の欠如をもたらすため、特にサンプリングをする頻度が少ない場合はサンプリングの対象である母集団の統計量を推定することが困難になる。例えば、パケットが一つもサンプリングされないフローについては、母集団における統計量を推定することは不可能である。しかし、検出対象である高パケットレートのフローであれば、適切なサンプリングレートを用いることによって、母集団を推定できるだけの十分な標本を抽出できると考えられる。
【0046】
<スライディングウィンドウ方式による検出とデータ更新>
バックボーンネットワークを流れているトラヒックを常時、測定管理し、高パケットレートをもつフローの検出を行うにはオンラインアルゴリズムが必要である。すなわち、データの取得、解析、破棄を継続的に行う必要がある。本実施例では、この解析対象データを更新するための手段としてスライディングウィンドウ方式を採用する。スライディングウィンドウ方式とは、解析対象となるデータを保持するスライディングウィンドウをベーシックウィンドウと呼ばれる複数の単位に分割し、解析終了後に最も古いベーシックウィンドウのデータを破棄し、新たに取得された1ベーシックウィンドウ分のデータを加えることによって解析対象のデータを更新する方式である。
【0047】
スライディングウィンドウ方式には、スライディングウィンドウの大きさをパケット数で規定する方法と測定時間で規定する方法の2種類が存在する。前者は一定数のパケットが回線を通過したとき、あるいは一定数のパケットがサンプリングされたときにベーシックウィンドウを生成し、スライディングウィンドウを更新する。母集団におけるパケット数を一定にすると、トラヒックのフロー毎のパケット数分布などを求めることが容易になり、サンプル数を一定にすると、メモリの使用を一定にすることができるなどの利点がある。一方、後者は一定時間毎にベーシックウィンドウを生成し、スライディングウィンドウを更新する。母集団におけるパケット数およびサンプリングされるパケット数はスライディングウィンドウが更新される度に変わるが、測定時間を一定にすることができる。
【0048】
本実施例では、パケットレート、すなわち、単位時間当たりに各フローに含まれるパケット数を対象としている。そこで、スライディングウィンドウが保持する解析対象データの測定時間が一定時間TSW[sec]になるようにスライディングウィンドウの大きさを定める。さらに自然数kとmを用いて、スライディングウィンドウをTSW/(km)[sec]刻みでkm個のベーシックウィンドウに分割する。すなわち、TSW/(km)秒毎に取得されるデータで新たなベーシックウィンドウを作成し、スライディングウィンドウに加えると共に、スライディングウィンドウ内の最も古いベーシックウィンドウのデータを破棄することによって解析対象となるデータの更新を行う。
【0049】
また本実施例では、kとは互いに素な自然数h(h≦k)を用いて、連続するhm個のベーシックウィンドウで構成される検査ウィンドウをスライディングウィンドウ内に(k−h)m+1個作成する。このとき、検査ウィンドウの大きさTIWは(h/k)TSW[sec]となることに注意する。図5にk=3、m=2、h=2としたときのスライディングウィンドウの概要を示す。
【0050】
このスライディングウィンドウ方式において検出対象となるフローは下記の通りである。
【0051】
スライディングウィンドウ方式における検出対象フローの定義:予め与えられた定数R[packets/sec]、TSW[sec]、自然数k、m、ならびにkと互いに素な自然数h(h≦k)に対して、ベーシックウィンドウの大きさをTBW=TSW/(km)[sec]とし、連続するkm個のベーシックウィンドウから構成されるスライディングウィンドウを考え、このスライディングウィンドウ内の大きさTIW=(h/k)TSW[sec]をもつ(k−h)m+1個全ての検査ウィンドウにおいて、パケットレートがR[packets/sec]以上であるフローを検出対象とする。
【0052】
ここで、上記の「検出対象フローの定義」で用いたTおよびtに対して、TSW=TかつTIW=(h/k)TSW=tを満たす互いに素な自然数kおよびh(h≦k)が存在すると仮定している。この仮定より、上記の「検出対象フローの定義」を満たす検出対象フローの集合は、スライディングウィンドウ方式で検出対象となっているフローの集合の部分集合になっている。すなわち、「スライディングウィンドウ方式における検出対象フローの定義」の条件を満たすフローを全て検出すれば、「検出対象フローの定義」で定められた検出対象フローは全て検出される。以後、検出対象フローはスライディングウィンドウ方式における「検出対象フローの定義」に基づくものとする。
【0053】
<ランダムパケットサンプリングを用いた検出>
高速回線に対してスケーラビリティを確保するために、本発明の実施例ではランダムパケットサンプリングを用いる。TSW秒間に回線を通過したパケット全体を母集団し、そこから確率fで無作為標本抽出されたパケットの情報のみを用いて母集団における検出対象フローを検出することを試みる。母集団における検出対象フローは、(k−h)m+1個の検査ウィンドウ全てにおいてパケットレートが予め与えられる閾値R[packets/sec]以上のフローである。検査ウィンドウのパケットレートがR以上であることと、検査ウィンドウ内のパケット数が
【0054】
【数6】
以上であることは等価である。よって、以下では
【0055】
【数7】
をパケット数の閾値と呼ぶ。すなわち、検出対象フローは母集団の全ての検査ウィンドウにおいて、パケット数がz*個以上のフローである。
【0056】
もし全てのパケットを対象に解析が行えるのであれば、各検査ウィンドウにおいて、それぞれのフローを構成するパケットがz*個以上あるかどうかを調べれば良いが、本実施例ではパケットサンプリング用いるため、新たに各検査ウィンドウにおけるサンプリングされたパケット数の閾値w*を設け、スライディングウィンドウ内の全ての検査ウィンドウでw*個以上のパケットがサンプリングされたフローを検出することにする。ここで w*は、検出対象のフローのうち最低のパケットレート、すなわち母集団の全ての検査ウィンドウにおいてパケット数がz*個であるフロー(これを閾値フローと呼ぶことにする)を十分高い確率で検出できるように定める。これは異常な高パケットレートフローが発生した際には見逃さないようにするためである。しかしサンプリングによって情報が欠如するため、閾値w*を0にしない限り検出対象を確実に検出することはできない。そこで本実施例では、検出対象フローを見逃してしまう確率が十分小さい値ε以下となるようにw*を定める。具体的なパラメータ設定方法は後述する。
【0057】
以下に検出の手順をまとめる。ただし、スライディングウィンドウはSW、検査ウィンドウはIW、ベーシックウィンドウはBWとそれぞれ略記する。
【0058】
まず、測定期間TSW秒の間に確率fで無作為標本抽出されたパケットのデータを保持するSWにおいて、SWに含まれる(k−h)m+1個全てのIWにおいてw*個以上サンプリングされているフローがあれば、そのフローを検出する。
【0059】
次に、SWの解析終了後、最も古いBW、ならびに、このBWを含むIWを破棄する。
【0060】
一方、新たにTBW秒間に転送されたパケットのサンプリング終了後、新しいBWを作成し、それをSWに加えると共に、連続する最近のhm個のBWを用いて新しいIWを作成する。
【0061】
次に、新たに作成されたIWを検査し、w*個以上含まれるフローがあった場合には過去のIWの検査結果と照らし合わせ、(k−h)m+1個のIW全てにおいてサンプルされたパケット数が閾値w*を超えていれば、そのフローを検出する。
【0062】
スライディングウィンドウ方式によるデータ更新とランダムパケットサンプリングを用いた本実施例の手法は上記の手順を常時繰り返すものである。
【0063】
本実施例の手法では、予め与えられるパラメータである、パケットレートの閾値R[packets/sec]、測定時間であるスライディングウィンドウの大きさTSW[sec]、検査ウィンドウの大きさを定める互いに素な自然数kおよびhの他に、制御可能なパラメータとして、サンプリングレートf、データ更新単位であるベーシックウィンドウの大きさを定める自然数m、ならびに、サンプリングされたパケット数の閾値w*がある。よって、制御可能なこれら三つのパラメータ(以後制御パラメータと呼ぶ)の値を適切に決定する必要がある。その際、前述の検出対象のフローを見逃してしまう確率をε以下とするという条件を満たすと同時に、スライディングウィンドウ方式がオンラインアルゴリズムとして正常に機能するために、新しいベーシックウィンドウが生成される前に現在のスライディングウィンドウの解析が終了できるようにしなければならない。
【0064】
この二つの制約条件下で三つの制御パラメータを設定しようとする場合には自由度が大きく、制御パラメータは一意に決定されない。そこで、以下では、検出対象フローの発生から検出までに要する時間に関する制約条件と、スライディングウィンドウ方式における検出対象フローの集合が、本来の検出対象フローの集合に近いものとなるように検査ウィンドウのスライド幅TBW=TSW/(km)に関する最大許容値を導入し、各制御パラメータを一意に定める手法を説明する。
【0065】
そして、サンプリングレートf、ベーシックウィンドウの大きさを定める自然数m、並びに、サンプルにおけるパケット数の閾値w*の三つの制御パラメータを、複数の制約条件を導入することにより、一意に決定する手法を説明する。
【0066】
<制御パラメータと制約条件>
検出対象のフローを定義するパラメータは次の四つである。
【0067】
・パケットレートの閾値R[packets/sec]
・スライディングウィンドウの大きさTSW[sec]
・検査ウィンドウの大きさを定める互いに素な自然数k及びh
一方、制御パラメータは以下の三つである。
【0068】
・サンプリングレートf
・ベーシックウィンドウの大きさを定める自然数m
・サンプルにおけるパケット数の閾値w*[packets]
以上七つのパラメータが決定されると、上記の「検出の枠組」みで説明した検出手法を用いることができる。
【0069】
制御パラメータを設定する際にまず注意しなければならないことは、スライディングウィンドウ方式を用いた本提案手法をオンラインアルゴリズムとして正常に機能させることである。オンラインで検出を行うということは、解析対象のデータが更新される前に、現在のデータの解析処理が完了しなければならないということである。すなわち、スライディングウィンドウの解析を、新たな1ベーシックウィンドウ分のデータを取得する前に終わらせなければならない。よって、スライディングウィンドウの解析時間τ[sec]は
【0070】
【数8】
を満たさなければならない。
【0071】
そこで、スライディングウィンドウの解析時間τ[sec]について評価を行う。パケットの情報はサンプリングされた時点でフロー毎に仕分けられ、パケット数はカウントされているものとする。すなわち、ベーシックウィンドウはフロー毎の情報を保持しており、保持するフロー数の上限はサンプリングされるパケット数となる。以下に新しいベーシックウィンドウが生成された直後からのスライディングウィンドウの処理を列挙する。なお、解析を行う際はスライディングウィンドウ内の(k−h)m+1個の検査ウィンドウのみを対象とするが、データ処理の都合上、まだhm個揃っていない先のスライディングウィンドウで用いる検査ウィンドウも、関係するベーシックウィンドウが到着し次第順次加えながら作成していく。以下に手順を示す。
【0072】
(1)新しいベーシックウィンドウをスライディングウィンドウ内の関係する全ての検査ウィンドウ(まだhm個そろっていないものも含む)に加える。
【0073】
(2)最近のhm個のベーシックウィンドウで構成される検査ウィンドウを調査し、閾値w*を超えるフローを検知する。
【0074】
(3)以前の検査ウィンドウの検知結果を用いて、全ての検査ウィンドウで検知されたフローを検出する。
【0075】
(4)最も古い検査ウィンドウおよびベーシックウィンドウを破棄する。
【0076】
上記手順のうち、(1)はベーシックウィンドウに含まれる各フローについてフロー情報の比較や情報の集約などの複雑な処理を行うため、その処理時間はベーシックウィンドウ内のフロー数に依存する。(2)以降の各手順は、予め確保された空間に渡って単純な比較やデータの廃棄のみを行うため、一定時間内に処理できると考えて良い。そこで、本実施例ではスライディングウィンドウの処理時間τを、ベーシックウィンドウにサンプリングされるパケット数に依存する処理時間と、パケット数とは独立な一定の処理時間の和として考え、次式で処理時間の上界を見積もることにする。
【0077】
【数9】
ここで、Cmax、Δ1およびΔ2は、それぞれ、観測する回線の最大パケットレート、スライディングウィンドウの解析における1サンプルパケット当りの処理時間、および、サンプルパケット数とは独立な処理時間を表している。
【0078】
DoS攻撃のような異常フローは発生から検出するまでに時間がかかりすぎると、攻撃を受けているサーバが機能を停止してしまう。そこで本実施例では、検出対象のフローが発生してから目標時間TD_max[sec]以内に検出できるようにパラメータを定める。検出対象のフローを検出するために必要な時間は、対象フローの測定にかかる時間TSWとスライディングウィンドウの解析時間τの和で与えられる。しかし、検出対象のフローは多くの場合、ベーシックウィンドウの途中から発生すると考えられ、検出した時点では直前に破棄したベーシックウィンドウの途中から始まっていた可能性が高い。すなわち、最大で1ベーシックウィンドウ分の検出遅れが生じることになる。したがって、検出対象フローを目標時間以内に検出するための条件は次式で与えられる。
【0079】
【数10】
上記の「検出対象フローの定義」では、T(=TSW)秒の測定期間内の任意のt(=TIW)秒の区間全てにおいてパケットレートがR以上となっているため、検査ウィンドウのスライド幅が大きすぎると、上記の「検出対象フローの定義」を満足しないフローを多数検出することになる。そこで、検査ウィンドウのスライド幅に関する最大許容値TBW_max[sec]を設ける。本実施例において、検査ウィンドウのスライド幅はベーシックウィンドウのサイズTBWとなるため、TBWは次の条件を満たす必要がある。
【0080】
【数11】
上記の「検出の枠組み」で説明した検出手法では、ランダムパケットサンプリングを行い、サンプリングされたパケットの情報のみを用いて検出を行うため、検出対象フローの検出見逃しや検出対象外フローの誤検出が発生する。三つの制御パラメータのうち二つを固定し、残りの一つを変化させた場合、サンプリングレートfに関しては、fを小さくするほど検出見逃しおよび誤検出は発生しやすくなる。ベーシックウィンドウのサイズを規定するmに関しては、mを大きくするほど検査ウィンドウの数が増え、全ての検査ウィンドウでw*以上となる確率が減少するため、検出見逃しは増加するが誤検出は減少する。検査ウィンドウにおけるパケット数の閾値w*に関しては、w*が小さいほど検出見逃しは減少するが誤検出は増加する。このようにmとw*に関してはトレードオフの関係が存在することに注意する。異常フローを見逃してしまうと、その後のネットワークに大きな障害をもたらしかねないため、本実施例では検出対象のフローを見逃してしまう確率を十分小さなε以下に抑えるようにパラメータを設定する。その上で、検出対象外フローを誤検出してしまう確率もなるべく小さくなるように制御パラメータを設定する。
【0081】
上記のシステムを規定するパラメータを以下にまとめておく。
【0082】
・見逃し許容誤差ε(検出対象フローを1−ε以上の確率で検出)
・検出目標時間TD_max[sec]
・スライド幅の最大許容値TBW_max[sec]
・観測する回線の最大パケットレートCmax[packets/sec]
・1サンプルパケットあたりの処理時間Δ1[sec]
・スライディングウィンドウの解析に必要なパケット数とは独立な処理時間Δ2[sec]
<誤検出確率の最小化問題>
上記の制約条件の下、検出対象外の低パケットレートフローを誤検出する確率を最小化するように制御パラメータを設定する問題を考える。すなわち、この問題は次のように定式化される。
【0083】
目的関数:検出対象外フローの誤検出確率→最小
制約条件:サンプリングレートf>0
ベーシックウィンドウの大きさを定める自然数m
サンプルにおけるパケット数の閾値w*(自然数)
オンラインのアルゴリズムとして機能すること
目標時間TD_max内に検出可能なこと
検査ウィンドウのスライド幅≦最大許容値TBW_max
検出対象フローの検出見逃し確率≦ε以下
なお、対象フローの検出見逃し確率に関する制約条件は、サンプリングレートfとベーシックウィンドウの大きさを定めるmが決定した後に、w*を調整することによって満たすことができるため、上記の問題とは独立な問題として考える。
【0084】
まず、目的関数について説明する。サンプリングによって得られたパケットの情報を用いて母集団の統計量を推定する場合、サンプリングされたパケット数が多ければ多いほどその統計的精度は高くなる。そのため検出対象外のフローを誤検出してしまう確率を下げるためにはなるべくたくさんのパケットをサンプリングすればよい。スライディングウィンドウのサイズはTSW秒で固定されているため、サンプリングされるパケット数を多くするにはサンプリングレートfを大きくする、すなわち、上記の制約条件下でfを最大化することが検出対象外フローの誤検出確率を最小化することと等価となる。したがって、上記の問題は次のようなサンプリングレートfの最大化問題となる。
【0085】
目的関数:サンプリングレートf→最大
制約条件:サンプリングレートf>0
ベーシックウィンドウの大きさを定める自然数m
オンラインのアルゴリズムとして機能すること
目標時間TD_max内に検出可能なこと
検査ウィンドウのスライド幅≦最大許容値TBW_max
次に、制約条件について説明する。スライディングウィンドウの解析時間τは式(2)に従うと仮定する。さらに上記より、オンラインのアルゴリズムとして機能するための条件は式(1)で、目標時間内の検出の条件は式(3)で、検査ウィンドウのスライド幅に関する条件は式(4)で与えられる。制約条件をこれらで置き換え、mに関してkm=TSW/TBWを加えると、上記の問題は次のように書き換えられる。
【0086】
目的関数:サンプリングレートf→最大
制約条件:f>0
mは自然数
τ≦TBW
TSW+TBW+τ≦TD_max
TBW≦TBW_max
τ=fCmaxTBWΔ1+Δ2
km=TSW/TBW
この制約条件下で、サンプリングレートfを最大にする自然数mを求めることが目的となる。τ≦TBWにτ=fCmaxTBWΔ1+Δ2を代入し、TSW=kmTBWを用いて変形すると、
【0087】
【数12】
となる。同様に、TSW+TBW+τ≦TD_maxは、
【0088】
【数13】
となる。また、TBW≦TBW_maxより、
【0089】
【数14】
となる。
【0090】
このとき、本実施例の手法が動作可能であるためには、サンプリングレートfが正となるようなmが存在する必要がある。式(5)の右辺が正であるためには、
【0091】
【数15】
でなければならない。また、式(6)の右辺が正であるための条件は、
【0092】
【数16】
で与えられる。さらに、式(7)より
【0093】
【数17】
を得る。すなわち、式(8)、(9)、(10)より、本実施例の手法が動作可能となるためには、次式が成立する必要がある。
【0094】
【数18】
よって、式(11)が成立しているという条件の下で、以下の最適化問題を考える。
【0095】
制御パラメータ:f,m
与条件:定数TSW,k,h,Cmax,TD_max,TBW_max,Δ1,Δ2
TSW−kΔ2>0
kTD_max−(k+1)TSW−kΔ2>0
TSW≦kTBW_max
目的関数:f→最大
制約条件:f>0
mは自然数
【0096】
【数19】
この混合線形計画問題は以下のようにして解くことができる。まず、自然数mを実数rで置き換えた以下の緩和問題を考える。
【0097】
目的関数:f→最大
制約条件:f>0
【0098】
【数20】
2番目と3番目の制約条件で表される領域の境界はそれぞれ次式で与えられる。
【0099】
【数21】
【0100】
【数22】
ここで、式(12)がrに関する減少一次関数に、式(13)がrに関する増加一次関数になっていることに注意する。この2直線の交点の座標を
【0101】
【数23】
とおくと、
【0102】
【数24】
である。与条件より、
【0103】
【数25】
は正であることに注意する。一方、最後の制約条件で表される領域の境界を
【0104】
【数26】
とおく。
【0105】
【数27】
以上の準備の下でfを最大にするようなr*およびm*を、
【0106】
【数28】
に場合分けして求める。
【0107】
【数29】
図6より、
【0108】
【数30】
でfは最大となる。このとき、
【0109】
【数31】
を求め、
【0110】
【数32】
であればm−とm+のうちfを大きくする方、すなわち
【0111】
【数33】
を採用する。このときのf*はf*=max{f1(m+),f2(m−)}となる。また、
【0112】
【数34】
のときはm*=m+であり、f*はf*=f1(m+)となる。
【0113】
【数35】
図7より、
【0114】
【数36】
でfは最大となる。このときm*は
【0115】
【数37】
となり、f*はf*=f1(m+)である。
【0116】
以上のようにして求めたm*とf*を制御パラメータの値として用いる。
【0117】
<サンプルにおける閾値の導出>
予め与えられるシステムを規定するパラメータと上記のように設定したサンプリングレートfおよびベーシックウィンドウの大きさを定めるmを用いて、検出対象フローを見逃してしまう確率をε以下となるように、検査ウィンドウ内のサンプルパケット数の閾値w*を設定する。
【0118】
ある測定期間において任意のフローに注目する。XおよびYをそれぞれフローを構成するパケット数およびサンプリングされたパケット数を表す確率変数とする。X=xという条件下で、y個のパケットがサンプリングされる確率q(y|x)=Pr[Y=y|X=x]は以下の二項分布で与えられる。
【0119】
【数38】
閾値フローを用いた閾値の導出
スライディングウィンドウ内の全ての検査ウィンドウ内のパケット数が
【0120】
【数39】
である閾値フローを1−ε以上の確率で検出できるようにw*を設定すると、全ての検出対象のフローを1−ε以上の確率で検出できることに注意する。
【0121】
図8に示すように、スライディングウィンドウ内のi番目のベーシックウィンドウの母集団におけるパケット数を確率変数Xiで、i番目の検査ウィンドウの母集団におけるパケット数を確率変数Ziで表すと、ZiはXiを用いて次のように表される。
【0122】
【数40】
さらに、図9のように、スライディングウィンドウ内のi番目のベーシックウィンドウにサンプリングされたパケット数を確率変数Yiで、i番目の検査ウィンドウにサンプリングされたパケット数を確率変数Wiで表すと、WiはYiを用いて次のように表される。
【0123】
【数41】
ここで、閾値フローのベーシックウィンドウ毎の母集団におけるパケット数を考える。各検査ウィンドウは母集団においてz*個のパケットで構成されているため、ベーシックウィンドウのパケット数Xiは次の式を満たす。
【0124】
【数42】
上式より、閾値フローの母集団におけるパケット数の分布は1サイクルがhmの周期的な分布となることがわかる。そのため、一つ目の検査ウィンドウにおけるパケット数の分布が決定すると、スライディングウィンドウ全体の分布が決定する。
【0125】
ベクトルXをi番目の要素がXiである、母集団のパケット数を表すkm次元ベクトルとし、閾値フローの母集団におけるパケット数を
【0126】
【数43】
で表すことにする。また、閾値フローがサンプルパケット数の閾値wをもって検出される確率、すなわち全ての検査ウィンドウにおいてw個以上のパケットがサンプリングされる確率は、
【0127】
【数44】
である。ここで、式(15)の周辺確率を考える。任意の一つの検査ウィンドウにおいて
【0128】
【数45】
となる確率p(w|z*)は、式(14)の二項分布を用いて次のように求まる。
【0129】
【数46】
このとき、
【0130】
【数47】
となる確率は閾値フローの分布
【0131】
【数48】
とは独立であることに注意する。
【0132】
議論を式(15)の結合確率に戻す。確率変数XiおよびYiはiに関して独立であるが、ZiおよびWiは前後hm−1番目まで共通のXiおよびYiを有し、従属関係にあるため、式(15)の確率を数値計算によって求めることは困難である。そこで、式(16)で与えられる周辺確率を用いて、結合確率の上下界値を導く。
【0133】
閾値フロー検出確率の上下界値
問題を簡単にするためにh=1の場合、すなわち、スライディングウィンドウの大きさが検査ウィンドウのk倍になっている場合を考える。このとき式(15)で与えられる閾値フローの検出確率は、スライディングウィンドウ内の独立なk個の検査ウィンドウにおいてWi≧wとなる確率(式(16))と、その事象が起こったという条件の下で他の検査ウィンドウでもWi≧wとなる条件付き確率の積として、
【0134】
【数49】
と変形される。ここで後半部分の条件付き確率は1で上から押さえることができるため、閾値フローの検出確率は、
【0135】
【数50】
として上から押さえられる。ここでh≠1の場合にも成り立つように拡張すると、スライディングウィンドウ内の独立な検査ウィンドウの数は
【0136】
【数51】
であるため、
【0137】
【数52】
として閾値フローの検出確率の上界値が得られる。
【0138】
次に、下界値について述べる。以下では、サンプリングされたパケット数を表す確率ベクトルをY=(Y1,Y2,...,Ykm)とする。このとき、
【0139】
【数53】
が与えられたという条件下では、
【0140】
【数54】
となるため、ベクトルY=(Y1,Y2,...,Ykm)は互いに独立な確率変数Yi(i=1,2,...,km)から構成される確率ベクトルであることに注意する。ただし、
【0141】
【数55】
は
【0142】
【数56】
のi番目の要素を表す。よって、確率ベクトルYは正の関連(positively associated)をもつ。ここで正の関連をもつとは、任意の増加関数
【0143】
【数57】
に対して
【0144】
【数58】
すなわち、
【0145】
【数59】
が成立することをいう。
【0146】
次に、以下の指示関数を定義する。
【0147】
【数60】
この指示関数は、wおよび
【0148】
【数61】
が与えられたとき、あるY≧Y'なるベクトルYとベクトルY'に対して、
【0149】
【数62】
を満たす。ただし、Y≧Y'は各ベクトルの成分YjおよびYj'に対して、
【0150】
【数63】
が成り立つこと意味する。式(18)より、
【0151】
【数64】
は非負の増加関数となっている。以上より、
【0152】
【数65】
が成立する。
【0153】
さらに、非負の増加関数の積は非負の増加関数となるので
【0154】
【数66】
とすると、ベクトルYが正の関連をもつため、
【0155】
【数67】
が成立する。この式の右辺に式(20)を代入し、式(19)を適用すると、
【0156】
【数68】
を得る。よって、数学的帰納法により
【0157】
【数69】
を得る。
【0158】
式(21)の左辺はWj=Yj+Yj+1+...+Yj+hm−1と式(15)を用いると、
【0159】
【数70】
となる。同様に式(21)の右辺は、式(16)を用いると、
【0160】
【数71】
となる。式(23)と式(24)を式(21)に代入することにより、
【0161】
【数72】
の下界を得る。
【0162】
【数73】
閾値フローの分布による検出確率の変化
上記の式(17)と式(25)より、閾値フローの検出確率
【0163】
【数74】
が次のように上下界値で押さえられることがわかった。
【0164】
【数75】
しかし、上界値および下界値はkやmが大きい場合、あるいはp(w|z*)が小さな値をとる場合等は両者の差が大きくなり、上下界値を用いて検出確率を推定することは困難になる。
【0165】
そこで、閾値フローの母集団におけるパケット数の分布
【0166】
【数76】
に注目する。閾値フローの中でも検出確率が最低になるようなパケット数の分布がわかれば、その分布を基に全ての検出対象フローを検出できるようなパケット数の閾値w*を決定することができる。ここで、閾値フローのパケット数の分布は一つ目の検査ウィンドウ分の分布が決まると周期性から全ての分布が決定することに注意する。
【0167】
複数の条件下での数値計算の結果、h=1の場合は、一つ目の検査ウィンドウにおいてz*個のパケットをまず
【0168】
【数77】
個ずつ均等にベーシックウィンドウに配置し、余剰が出た場合はそのパケットを検査ウィンドウの中央のベーシックウィンドウから一つずつ前後のベーシックウィンドウに外側に向けて交互に配置したときに、検出確率が最低となることが分かった。このときウィンドウ全体の対称性から、前後のウィンドウのどちらに先に配置するかは問題とならない。反対に、検査ウィンドウ内の一つのベーシックウィンドウにz*個のパケットを全て配置した場合には最も検出確率は高く、その検出確率は上界値と等しくなるため、パケットを均等に配置するときに検出確率が最低になることは直感的な理解とも一致する。
【0169】
しかし、h≧2の場合は、一つ目の検査ウィンドウを用いて配置されたベーシックウィンドウ毎のパケット数の、スライディングウィンドウ全体において配置される回数が異なってくるため、h=1と同じ議論は適用できず、検出確率が最低となる分布は見出すことができない。以降、h≧2の場合は検出確率が最低となる分布が見出されているものと仮定して説明する。
【0170】
検出確率が最低となる閾値フローの分布をX*とおく。このとき、先の上下界値を含め、次の式が成り立っていることに注意する。
【0171】
【数78】
分布X*が得られた後、検出対象のフローを1−ε以上の確率で検出するためにサンプルにおけるパケット数の閾値w*を次のように設定する。
【0172】
【数79】
なお、P(w|X*)はモンテカルロシミュレーションを用いた数値実験によって求める。
【0173】
以上で制御パラメータの設定は完了し、上記の「検出の枠組み」で説明した検出手法で用いるパラメータは全て決定した。
【0174】
多段階閾値の導入
上記のように、本実施例の検出手法を用いるためのパラメータの決定は完了した。しかし、実験結果が全ての検査ウィンドウでw*以上サンプリングされたかどうかの2通りでの評価では、閾値よりもかなり大きいパケットレートの検出対象フローも、たまたま誤検出された検出対象外フローも全く区別がつかない。そこで、検出されたパケット数の情報をより有効活用することを考え、閾値w*以外の複数の基準値ω(φ)(ω(φ)>w*)を設ける。そして、検出されたフローの中で、全ての検査ウィンドウにおいてω(φ)個以上のパケットがサンプリングされているフローは区別することにする。ここで基準値ω(φ)は次のようにして定める。
【0175】
【数80】
ただし、φは1−ε未満の値を用いる。この基準値の定め方には、パケットレートが閾値フローから僅かに低いだけの検出対象外のフローを誤って検出してしまう確率をφ以下にするという意図がある。複数のφに対するω(φ)を求め、検出されたフローの中でのフローの差別化を図る。
【0176】
<性能評価>
次に、実際にネットワークで測定された2種類の異なるトレースデータに対して適当な規定パラメータの下でシミュレーション実験を行い、本実施例の検出手法の性能評価を行う。まず実験に用いるトレースデータについて述べる。続いて性能を評価するための指標について述べ、最後に実験の結果を示し、その考察を行う。
【0177】
性能評価を行うトレースデータとして、CAIDAによって2008年2月20日の8:00から9:00の間に測定されたバックスキャッタのトラヒックを含むBackscatterトレースデータと、NLANRのPassive Measurement and Analysis (PMA) Projectによって2004年2月19日の10:00から10:05の間にバックボーンネットワークで測定され、現在はCAIDAによって管理されているCESCA−Iトレースデータを用いた。図10にトレースデータの概要を示す。
【0178】
性能評価指標
本実施例の検出手法の性能を評価するため、検出率、誤検出率、最低誤検出パケット数の三つの指標について検証する。ここで次のような二つの指示関数を用意する。
【0179】
【数81】
ここで、iはスライディングウィンドウの解析回数のカウンタ値を、flow_idはフローの識別子をそれぞれ表す。a(i,flow_id)=1は母集団において、i回目の解析時点でのflow_idのフローが、全ての検査ウィンドウで
【0180】
【数82】
個以上パケットが存在する検出対象のフローであることを意味し、b(i,flow_id)=1はサンプリング実験において、i回目の解析時点でのflow_idのフローが、全ての検査ウィンドウでw*個以上パケットがサンプリングされ、検出されたフローであることを意味する。
【0181】
トレースデータの観測時間をTM[sec]とおくと、iのとる値は、i=1,2,...,imaxとなる。ただし、
【0182】
【数83】
である。また、i回目の解析時点における全てのflow_idの集合を
【0183】
【数84】
とする。トラヒックに含まれるフローの集合は解析を行う度に異なるため、iの関数になっていることに注意する。
【0184】
このとき、検出率を次式で定義する。
【0185】
【数85】
a(i,flow_id)=1となるiとflow_idの組み合わせを検出対象点としたとき、式(26)は全ての検出対象点のうち本実施例の検出手法により検出できた点の割合を表す。
【0186】
一方、誤検出率は次式で定義される。
【0187】
【数86】
a(i,flow_id)=0となるiとflow_idの組み合わせを、検出対象外点としたとき、式(27)は全ての検出対象外点のうち本実施例の検出手法により誤検出された点の割合を表す。
【0188】
最後に、最低誤検出パケット数については、誤検出された全てのフローの母集団における検査ウィンドウ内のパケット数を全て調査し、それらの中で最少パケット数で構成される検査ウィンドウを特定し、そのパケット数を評価する。
【0189】
実験結果
予め与えられるパラメータである、R[packets/sec]、TSW[sec]、k、h、TD_max[sec]、TBW_max}[sec]、Δ1[sec]、Δ2[sec]、Cmax[packets/sec]、εはそれぞれ図11のように与えた。また、実験ではフローを、Backscatterトレースデータに対しては送信元IPアドレスが共通のパケット群と定義し、CESCA−Iトレースデータに対しては送信元IPアドレスが共通のパケット群と宛先IPアドレスが共通のパケット群の2種類で定義した。これは、Backscatterトレースデータには、DoS攻撃を受けたサーバから偽装された様々な宛先へ送られるトラヒックが含まれていることが分かっているため、そのトラヒックを検出することを目的としている。一方、CESCA−Iトレースデータには異常フローは含まれていないように思われる。そのため2種類の定義により純粋に高パケットレートフローの検出を試みた。
【0190】
図11のパラメータを基に、上記の「制御パラメータと制約条件」で説明した制御パラメータ設定法を用いた。まず、上記の「誤検出確率の最小化問題」を解き、サンプリングレートfとベーシックウィンドウの大きさを定めるmが図12のように得られた。
【0191】
図11のパラメータ群と図12のfおよびmを用いて、上記の「サンプルにおける閾値の導出」の手法を用いたモンテカルロシミュレーションによる数値実験により、検査ウィンドウにおけるパケット数の閾値w*を決定した。なお数値実験では、各ベーシックウィンドウにパケットを均等に配置した閾値フローを母集団とし、複数の閾値の候補wに対して106回のサンプリング実験を行い、検出された回数を106で割ることによって得られた検出率が1−ε以上となるwの中で最大のものをw*として採用した。Backscatterトレースデータに対する数値実験の結果を図13に、R=800のときのCESCA−Iトレースデータに対する数値実験の結果を図14に、R=1000のときのCESCA−Iトレースデータに対する数値実験の結果を図15にそれぞれ示した。それぞれのグラフから、閾値フローの検出率が下界値と上界値でそれぞれ押さえられていることもわかる。また、数値計算によって求まる下界値と上界値を参考にすることによって、数値実験で試行するwの範囲を絞ることができる。さらに、w*と同様に数値実験においてω(φ)の値を、φ=0.5,10−1,10−2,10−3,10−4,10−5,10−6について求めた結果をw*と共に図16に示す。
【0192】
以上の手順により得られた制御パラメータと予め与えられるパラメータ群を用いてサンプリング実験を行った。ここで検出対象のフローは、サンプリングレートをf=1、サンプルにおけるパケット数の閾値を
【0193】
【数87】
とし、その他のパラメータは実験に用いたものと同じとした場合の検出結果を用いた。
【0194】
100回のサンプリング実験における、三つの評価指標の平均値を95%信頼区間と共に図17に示す。図17より、検出対象はいずれの場合においても1−ε以上の割合で検出されていることがわかる。また、検出対象外フローのうち誤検出されたフローの割合も十分小さく抑えられている。さらに、誤検出されたフローの中で検査ウィンドウに含まれるパケット数が最少のものでも検出対象の半分程度であるため、本実施例の検出手法が誤検出するフローのパケットレートの範囲はそれほど広くないことがわかる。
【0195】
<実施例の効果>
以上説明したように、本発明の実施例によれば、長さT秒の測定期間に含まれる長さt秒の任意の部分区間において、パケットレートがR[packets/sec]以上のフローを、ランダムパケットサンプリングによって得られた情報からオンラインで検出できる。
【0196】
説明の便宜上、本発明の実施例に係る高パケットレートフロー検出装置は機能的なブロック図を用いて説明しているが、本発明の高パケットレートフロー検出装置は、ハードウェア、ソフトウェア又はそれらの組み合わせで実現されてもよい。例えば、高パケットレートフロー検出装置の各機能部がソフトウェアで実現され、コンピュータ内に実現されてもよい。また、2以上の実施例及び実施例の各構成要素が必要に応じて組み合わせて使用されてもよい。
【0197】
以上、本発明の実施例について説明したが、本発明は、上記の実施例に限定されることなく、特許請求の範囲内において、種々の変更・応用が可能である。
【符号の説明】
【0198】
101 パラメータfとmの設計部
102 パラメータw*の設計部
103 パケット無作為抽出部
104 BW情報保存部
105 IW情報の更新部
106 IW情報保存部
107 高パケットレートフロー検出部
【特許請求の範囲】
【請求項1】
パケットレートが所定値以上のトラヒックのフローを検出する高パケットレートフロー検出装置であって、
パケットを無作為に抽出するパケット無作為抽出部と、
所定の測定期間を部分区間に分割し、部分区間内に抽出されたパケット数をフロー毎に集計するパケット数測定部と、
部分区間においてパケット数が閾値以上のフローを、パケットレートが所定値以上のトラヒックフローであるとして検出する高パケットレートフロー検出部と、
を有する高パケットレートフロー検出装置。
【請求項2】
前記パケット数測定部は、前記所定の測定期間TSWのスライディングウィンドウを自然数k及びmを用いてkm個のベーシックウィンドウに分割し、更にh≦k且つkとは互いに素な自然数hを用いて、連続するhm個のベーシックウィンドウで構成される検査ウィンドウをスライディングウィンドウ内に(k−h)m+1個作成し、検査ウィンドウ内に抽出されたパケット数をフロー毎に集計する、請求項1に記載の高パケットレートフロー検出装置。
【請求項3】
前記高パケットレートフロー検出部は、スライディングウィンドウ内の全ての検査ウィンドウにおいてパケット数が閾値w*以上のフローを検出する、請求項2に記載の高パケットレートフロー検出装置。
【請求項4】
前記高パケットレートフロー検出部は、閾値w*より大きい複数の基準値ω(φ)を設け、検出されたフローから、全ての検査ウィンドウにおいてパケット数がω(φ)以上のフローを区別する、請求項3に記載の高パケットレートフロー検出装置。
【請求項5】
測定対象の回線のパケットを抽出するサンプリングレートをfとし、
スライディングウィンドウの大きさをTSWとし、
ベーシックウィンドウの大きさをTBWとし、
検出目標時間をTD_maxとし、
測定対象の回線の最大パケットレートをCmaxとし、
1サンプルパケットあたりの処理時間をΔ1とし、
スライディングウィンドウの解析に必要なパケット数とは独立な処理時間をΔ2とし、
ベーシックウィンドウの幅の最大許容値をTBW_maxとし、
スライディングウィンドウの処理時間をτ=fCmaxTBWΔ1+Δ2としたときに、
TSW+TBW+τ≦TD_max且つTBW≦TBW_maxを制約条件として、検出対象外のフローの誤検出率を最小化するfとmとを設計する第1のパラメータ設計部を更に有する、請求項2乃至4のうちいずれか1項に記載の高パケットレートフロー検出装置。
【請求項6】
パケットレートが所定値以上のトラヒックのフローを見逃す許容誤差をεとしたときに、
設計されたfとmとに基づいて、検出対象のフローの検出を見逃す確立をε以下に抑えるよう、検査ウィンドウにおけるパケット数の閾値w*を設計する第2のパラメータ設計部を更に有する、請求項5に記載の高パケットレートフロー検出装置。
【請求項7】
パケットレートが所定値以上のトラヒックのフローを検出する高パケットレートフロー検出装置における高パケットレートフロー検出方法であって、
パケットを無作為に抽出するステップと、
所定の測定期間を部分区間に分割し、部分区間内に抽出されたパケット数をフロー毎に集計するステップと、
部分区間においてパケット数が閾値以上のフローを、パケットレートが所定値以上のトラヒックフローであるとして検出するステップと、
を有する高パケットレートフロー検出方法。
【請求項1】
パケットレートが所定値以上のトラヒックのフローを検出する高パケットレートフロー検出装置であって、
パケットを無作為に抽出するパケット無作為抽出部と、
所定の測定期間を部分区間に分割し、部分区間内に抽出されたパケット数をフロー毎に集計するパケット数測定部と、
部分区間においてパケット数が閾値以上のフローを、パケットレートが所定値以上のトラヒックフローであるとして検出する高パケットレートフロー検出部と、
を有する高パケットレートフロー検出装置。
【請求項2】
前記パケット数測定部は、前記所定の測定期間TSWのスライディングウィンドウを自然数k及びmを用いてkm個のベーシックウィンドウに分割し、更にh≦k且つkとは互いに素な自然数hを用いて、連続するhm個のベーシックウィンドウで構成される検査ウィンドウをスライディングウィンドウ内に(k−h)m+1個作成し、検査ウィンドウ内に抽出されたパケット数をフロー毎に集計する、請求項1に記載の高パケットレートフロー検出装置。
【請求項3】
前記高パケットレートフロー検出部は、スライディングウィンドウ内の全ての検査ウィンドウにおいてパケット数が閾値w*以上のフローを検出する、請求項2に記載の高パケットレートフロー検出装置。
【請求項4】
前記高パケットレートフロー検出部は、閾値w*より大きい複数の基準値ω(φ)を設け、検出されたフローから、全ての検査ウィンドウにおいてパケット数がω(φ)以上のフローを区別する、請求項3に記載の高パケットレートフロー検出装置。
【請求項5】
測定対象の回線のパケットを抽出するサンプリングレートをfとし、
スライディングウィンドウの大きさをTSWとし、
ベーシックウィンドウの大きさをTBWとし、
検出目標時間をTD_maxとし、
測定対象の回線の最大パケットレートをCmaxとし、
1サンプルパケットあたりの処理時間をΔ1とし、
スライディングウィンドウの解析に必要なパケット数とは独立な処理時間をΔ2とし、
ベーシックウィンドウの幅の最大許容値をTBW_maxとし、
スライディングウィンドウの処理時間をτ=fCmaxTBWΔ1+Δ2としたときに、
TSW+TBW+τ≦TD_max且つTBW≦TBW_maxを制約条件として、検出対象外のフローの誤検出率を最小化するfとmとを設計する第1のパラメータ設計部を更に有する、請求項2乃至4のうちいずれか1項に記載の高パケットレートフロー検出装置。
【請求項6】
パケットレートが所定値以上のトラヒックのフローを見逃す許容誤差をεとしたときに、
設計されたfとmとに基づいて、検出対象のフローの検出を見逃す確立をε以下に抑えるよう、検査ウィンドウにおけるパケット数の閾値w*を設計する第2のパラメータ設計部を更に有する、請求項5に記載の高パケットレートフロー検出装置。
【請求項7】
パケットレートが所定値以上のトラヒックのフローを検出する高パケットレートフロー検出装置における高パケットレートフロー検出方法であって、
パケットを無作為に抽出するステップと、
所定の測定期間を部分区間に分割し、部分区間内に抽出されたパケット数をフロー毎に集計するステップと、
部分区間においてパケット数が閾値以上のフローを、パケットレートが所定値以上のトラヒックフローであるとして検出するステップと、
を有する高パケットレートフロー検出方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2012−23629(P2012−23629A)
【公開日】平成24年2月2日(2012.2.2)
【国際特許分類】
【出願番号】特願2010−160924(P2010−160924)
【出願日】平成22年7月15日(2010.7.15)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【出願人】(504176911)国立大学法人大阪大学 (1,536)
【Fターム(参考)】
【公開日】平成24年2月2日(2012.2.2)
【国際特許分類】
【出願日】平成22年7月15日(2010.7.15)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【出願人】(504176911)国立大学法人大阪大学 (1,536)
【Fターム(参考)】
[ Back to top ]