説明

ストリーミングネットフローデータ解析方法及び装置

【課題】ネットフローデータを効率的にフィルタリングし収集するためのシステム及び方法を提供する。
【解決手段】フローレコードが受け取られ、フィルタパラメータに基づいてフィルタリングされる。フィルタパラメータを満たす各々のフィールド値を有するフローレコードを解析して、どのキー(アドレス、会話、プロトコルなど)が定義されたフィルタパラメータを満たすか見つけ出す。フィルタリングされたフローレコードを表すキー及びフローレコードから関連する値を抽出する。抽出されたキーは、フィルタパラメータに関連する1つ又は複数のフィールドを表すインジケータである。収集されたネットフローデータの効率的な取出しを容易にするために、ネットフローデータが処理され、固定サイズのデータ構造が連続的に維持される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワーク通信及び使用解析に関し、詳細には、ネットフローデータを収集し処理するための方法及び装置に関する。
【背景技術】
【0002】
世界中でデータを移送するパケット式データネットワークが普及している。パケット式データネットワークは、典型的に、あるコンピュータと別のコンピュータの間で伝送するためにデータをパケットにフォーマットする。これらのパケットは、パケットデータ及びルーティングに関する情報を含むヘッダを含む。データネットワークは、ルータを使用して発信元コンピュータから宛先コンピュータにこれらのパケットを送り、このルータは、パケットヘッダ内のルーティング情報を使用して宛先コンピュータにパケットを送る。パケットのフローは、特定の送信元ネットワークアドレス及びポートから宛先ネットワークアドレス及びポートに送られたパケットである。
【0003】
これらのネットワークが拡張されるにつれて、それらを使用する利点が増している。ネットワークがどのように使用されているか、特にどのホスト及びネットワークがネットワークリソースを消費しているかをユーザが効率的に識別することを可能にするシステム及びツールを提供することが望ましい。
【0004】
最も知られているネットフロー解析エンジンは、IPアドレスに関連するデータ量に基づいて、複数の送信元及び/又は宛先IPアドレスを識別する。換言すると、従来の技法は、フローレコードデータを全体的に見て考慮するものではない。これは、特定の情報について問い合わせるユーザの柔軟性が制限されるので不利である。
【発明の概要】
【0005】
本発明の目的は、ネットフローデータを効率的に処理し解析するための方法及び装置を提供することであり、この方法及び装置は、ユーザ定義による問合せの柔軟性の向上を可能にする。
【0006】
本発明の態様については、添付の特許請求の範囲で述べられる。
【0007】
本発明の一態様によれば、フローレコードは、その全体がデータベースに格納されており、ユーザによって場当たり的に(in an ad hoc fashion)問い合わせることができる。ユーザは、フィールドと値の様々な組合せを選択して、キーを定義し、フィールドのいずれかに基づいてフローをフィルタリングすることができる。問合せ可能なフローの数、及びフィールドの組合せは、典型的に、問合せの迅速化のために単にインデックスを使用することが不可能であるほど著しく多い。したがって、本発明の別の態様によれば、この方法及び装置は、各フローレコードを読み出し、各フローレコードをフィルタリングし、フローレコードのフィールドに対応するキー、及びキーの関連する値を抽出し、それぞれの別個のキーの値を増分し、ユーザに結果を提示する。
【0008】
本発明のさらなる態様によれば、ユーザに時系列チャートが提示されてもよく、各タイムスロットが、そのタイムスロットの事前定義された又は所望の数の上位N個のキーを含む。たとえば、Nは10であってよく、上位N個は、定義されたキーに基づいてフィルタリングされたフロー内のオクテットの数に基づいて識別することができる。たとえばオクテットの数、及び/又はパケットの数に対応する各値について、1つ又は複数のチャートが提示されてもよい。
【0009】
典型的な問合せでは、こうした問合せを完了するのに必要な時間とリソースの両方のせいでこの技法を実行不可能なものにする何百万ものキー及び大量のデータが存在し得るので、本発明による方法は、すべてのキーを値でソートして、次いでこれをユーザに提示するとは限らない。こうした問合せはこのように長い時間を要するため、ユーザは、最終的に完了するまで、問合せの進捗についてのフィードバックが与えられない。
【0010】
本発明は、以下の2つの観測を適用することによりこの問題に対処する。1)ユーザは一般に、およそ数百万ではなく、上位10個のキーにしか関心がなく、2)値が発見されている間に、すなわちリアルタイムに上位10個の値を示すことが有用であり、その理由は、これにより、すべてのデータが処理される前にデータのサンプルに基づいてフィードバック及び有用な情報がユーザに提供されるからである。
【0011】
好ましい一実施形態では、この方法及び装置は、最も関連性のある情報だけを決定し、ユーザに提供する。さらに、計算が完了するとすぐに上位N個の値を繰り返し更新することによって、提供される情報が現在のものであることが保証される。それによって、本発明のシステム及び方法は、収集されたネットフローデータの効率的な取出しを容易にするために、連続的に維持される固定サイズのデータ構造を使用してネットフローデータを漸次、効率的にフィルタリングし収集する。
【0012】
本発明を具現化する構成について、例を挙げるため、添付の図面を参照して次に述べられる。
【図面の簡単な説明】
【0013】
【図1】機能コンポーネント、及び問合せを処理してネットフローデータをフィルタリングし、ユーザに解析結果を出力するときに本発明のシステムによって実施される操作を示すブロック図である。
【図2】本発明によるキーの定義で使用できる各フローレコードのフィールドを示すブロック図である。
【図3】本発明の上位N計算器によって使用される主要データ構造を概略的に示す図である。
【図4】本発明の一実施形態によるフローレコードを処理する操作のフローチャートである。
【発明を実施するための形態】
【0014】
図1は、ネットフローデータ解析システムの機能コンポーネント、及び本発明の一実施形態による方法の例示的な実施の操作を示すブロックフローチャートである。フローレコード21が受け取られ、たとえばディスク(図示せず)から取り出され、フィルタパラメータに基づいてフィルタリングされる(23)。フィルタパラメータは、ユーザによって事前定義されてもよいし、ユーザ問合せによって入力として受け取られてもよいし、またネットフローレコード内のフィールドの任意の組合せとすることができる。フィルタリングされたフローレコード、たとえば定義されたフィルタパラメータを満たす各々のフィールド値を有するフローレコードを処理して、フィルタリングされたフローレコードを表すキー、及びフローレコードからの関連する値を抽出する。この実施形態では、抽出されたキーは、フィルタパラメータに関連する1つ又は複数のフィールドを表すインジケータである。たとえば、特定のIPアドレス対について最もアクティブな上位10個のネットフローを探すユーザベースの問合せでは、抽出されたキーは、1つの整数が送信元IPアドレスを表し、もう一方の整数が宛先IPアドレスを表す2つの整数の組合せであってよい。このように、抽出されたキーは、異なるアドレス対に関連する受け取られた各フローレコードに一意である。さらに、この例示的なユーザベースの問合せでは、抽出された値は、ネットフロー内のパケットサイズ及び/またのパケット数であってもよい。
【0015】
一実施形態では、効率的で正確な処理を保証するために、問合せのタイムスパンは、事前定義された複数のタイムスロット、たとえば1秒のタイムスロットに分割されてもよく、各タイムスロットについて上位Nストリーミング計算器24が作成される。それぞれの上位Nストリーミング計算器24は、下記により詳細に述べられるように、フィルタリングされたストリーミングネットフロー使用データをプロセッサ効率のよいやり方で収集し、収集されたデータをメモリ効率のよいやり方で格納して、後に続く効率的なソート及び解析を容易にするために、フローレコードから抽出されたキー及び値を処理する。
【0016】
クライアントソフトウェアは、チャートの現在の状態を規則的な時間間隔で、すなわち毎秒、要求してもよい(25)。その後、ソフトウェアコンポーネント26は、それぞれの上位N計算器に問い合わせ、返された中間状態に基づいて情報を編纂し、チャートを作成する。チャートは、クライアントソフトウェア27に返され、このクライアントソフトウェア27は、ユーザにチャートをレンダリングする。タイムスロットのそれぞれについて進捗率(percent of completion)が返され、それらが完了していない場合、クライアントソフトウェアは、更新を得るために新しい要求を送る。このプロセスは、すべての計算器が終了され、チャートが完了するまで継続する。
【0017】
図2は、関連するネットフロー内のパケットのフローに関する関連情報を含む例示的なネットフローレコードの内容を概略的に示している。一実施形態では、フローレコードのフィールドは以下を含んでよい。
送信元IPアドレス
宛先IPアドレス
送信元IPポート
宛先IPポート
IPプロトコル
フロー内のオクテット数
フロー内のパケット数
サービスタイプ
【0018】
上記に論じられたように、本発明の抽出されたキーについて、フローレコードからのフィールドの任意の組合せを使用してもよい。当業者は、上記にリストされたフィールドの代わりに、又はそれに加えて、別個のホスト又は接続の数、ネットフローの継続時間、並びに逆フローのパケットのサイズ及び/又は数など、フローレコード内で使用可能な他のフィールドを使用してもよいことが当業者には理解されよう。
【0019】
キーのフィルタパラメータは、関連するフィールドの値又は値範囲によって定義することができる。フローレコード内で使用可能な各フィールドについて多くのフィルタパラメータが可能であることが当業者には理解されよう。たとえば、IPアドレス値の範囲は、たとえばネットマスクとして定義することができ、ポート範囲は、開始値から終了値まで定義してもよい。
【0020】
フローレコードは、各フローについて、ルータによって、規則的な時間間隔、たとえば毎分に発行される。たとえば、長く持続したフローは、多くのフローレコードを生成することができる。
【0021】
本発明によるフローレコードを処理する操作について、上位N計算器によって使用される主要データ構造を概略的に示す図である図3、及びこの実施形態によるフローチャートである図4を参照して次に述べられる。
【0022】
図3に示されたように、この実施形態は、ストリーミングネットフローデータの効率的な収集を容易にするためのデータ構造を提供し、データ構造が、キー配列31と値配列35とを含む。キー配列31は、事前定義された数の要素を備え、それぞれの要素が、受け取られたフローレコードの抽出されたキーを格納するためのものである。受け取られたフローレコードからやはり抽出される、キーに関連する値は、別個の長い配列35に格納してもよい。
【0023】
好ましい実施形態では、キー配列31のサイズは、ソートされたキー配列から返される所定の数の上位N個のネットフローに基づいて決定され、したがって、受け取られ処理されたネットフローデータの代表的な数に基づいてソートが行われることを可能にするのに十分な数の一意の抽出されたキーがキー配列に格納される。たとえば、キー配列31内の要素の数は、所望の上位n個の数N×定義されたキー内の値の数M×所定の整数(4など)と計算することができる。
【0024】
フリーリストデータ構造33は、フローレコードリーダ22及びフィルタ23によって受け取られ処理された新しい抽出されたキーの格納に使用可能なキー配列31の要素のリストを格納するために提供される。この実施形態では、フリーリストは、リンクされたリストのデータ構造であり、フリーリスト33の開始は、キー配列31内の第1の空き要素へのポインタとして格納される。最初に、すべてのキー配列要素が、フリーリストのリンクされたリスト内に置かれ、それぞれの要素が、リンクされたリスト33内の次の空き要素へのポインタ32を含む。キー配列31内にキーが埋められるとき、フリーリスト33の開始によって示された位置を使用して、新しいキーに追加するためのキー配列31内の位置が決定される。その位置に要素が追加された後、フリーリストの開始のポインタは、新しく埋められた要素からのポインタで更新される。
【0025】
迅速な探索を可能にするために、キーは、ハッシュされ、ハッシュテーブル34で示されたリスト内に置かれてもよい。
【0026】
次に図4を参照すると、図3に示されたデータ構造にフローレコードを追加するプロセスが、新しいフローレコードがフローレコードリーダ22によって受け取られ、たとえばユーザの問合せで定義されたキーに基づいて処理するためにフィルタ23に渡されることから開始している。ステップ41で、フローレコードのキー及び値(たとえばオクテットの数、及びパケットの数)が、フローレコードから抽出される。ステップ42で、抽出されたキーが、ハッシュテーブルを使用し探索される。ステップ43で、抽出されたキーがデータ構造内に既にあると決定される場合は、ハッシュテーブルは、キー配列31内でそのキーの位置を効率的に識別し、ステップ44で、キーに関連する値が増分される。しかし、ステップ43で、データ構造内にキーが存在しないと決定される場合は、ステップ45で、フリーリストをチェックして、キー配列31に空きエントリが残っているかどうか決定する。この実施形態では、フリーリスト33の開始としてのポインタが存在することは、キー配列31内に少なくとも1つの空きエントリがあることを示す。フリーリスト内に空きエントリがあると決定される場合は、ステップ46で、開始ポインタによって識別された位置で、抽出されたキーが、キー配列31に追加される。ステップ46で、抽出された値は、値配列内の対応する位置にも追加される。
【0027】
しかし、ステップ45で、キー配列31内に空きのエントリがないと決定される場合は、このプロセスはしたがって、新しいフローレコードを追加できるようにするためにエントリを削除する必要がある。これは、この実施形態では、キー配列31内の各キーの特定のフィールドの格納された値を取り出し、ステップ47で、そのフィールドの格納された値の中央値を決定することによって達成される。次いで、ステップ48で、キー配列31内のすべてのエントリが処理され、キーに関連する値が、対応する中央値より小さいと決定される場合にマーキングされる。フローレコードのフィールドに対応する抽出された値のそれぞれについてステップ47及び48を繰り返してもよいことが当業者には理解されよう。次いで、ステップ49で、マーキングされるキーが、キー配列から削除される。
【0028】
その関連する値が中央値などの所定の閾値より小さいキーのエントリを削除することにより、絶対に必要でない限りは、多くのエントリのソートを回避することができる。これによって、さもなければソート手順を実施するのに使用されるリソースの望ましくない浪費が防止される。
【0029】
上位Nストリーミング計算器がデータ構造内の各値位置の上位N個のキーを計算している間、クライアントコード16は、上位N個の値(図1参照)を求めてもよい。これを可能にするために、図3に例証されたデータ構造へのアクセスは、マルチスレッドアクセスを可能にするロックによって保護することができる。
【0030】
上記説明では、ネットフローデータ解析システムは、上述された方法を実施するように操作を制御するソフトウェアを格納し実行するように構成される。当業者には理解されるように、上記方法を実施するよう動作可能になるようにプログラマブルデバイスを構成するためのコンピュータプログラムは、キャリアに格納され、システムのフラッシュメモリなどのメモリにロードされてもよい。プログラムは、信号としてダウンロードされてもよいし、及び/又はシステム上に既に常駐するソフトウェアへのパッチ又は更新として適用されてもよい。本発明の範囲は、プログラム、プログラムを運ぶキャリア、及びブロードキャスト信号を含む。
【0031】
(代替実施形態)
諸実施形態について単に例示するために上記に述べられており、この説明を読むと様々な変形形態が当業者には考えられようが、その変形形態は、特許請求の範囲に定義された本発明の範囲内に含まれるものである。
【0032】
たとえば、上述された実施形態では、上位Nストリーミング計算器は、キー配列に格納されたキーに関連する値の統計的解析を実施し、統計的解析に基づいて、格納されたインジケータの少なくとも1つを削除するように構成される。例示的な実施形態では、統計的解析は、格納されたキーに関連する値の中央値を計算し、計算された中央値より小さい関連する値を有するキーを削除することを伴う。統計的解析に中央値を使用することは、エントリが後にキー配列から削除されることが、全体的なネットワーク使用を表すための情報の大きい損失にはつながらないので特に有利である。しかし、平均、モード又は他の形の統計的平均の計算など、中央値を使用するのではなく、他の形の統計的解析を使用してもよいことが当業者には理解されよう。
【0033】
本発明の実施形態は、ハードウェア、ソフトウェア又はその組合せを使用して実施されてよく、1つ又は複数のコンピューティングシステム又は他の処理システムで実施されてもよい。
【符号の説明】
【0034】
16…クライアントコード、21…フローレコード、22…フローレコードリーダ、23…フィルタ、24…上位Nストリーミング計算器、25…要求、26…ソフトウェアコンポーネント、27…クライアントソフトウェア、31…キー配列/インジケータデータ構造、32…インジケータデータ構造、33…インジケータデータ構造、34…ハッシュテーブル、35…値配列/値データ構造。

【特許請求の範囲】
【請求項1】
ネットフローデータを収集するためのシステムであって、
複数のフローレコードを受け取る手段(22)と、
定義されたフィルタパラメータに基づいて、前記複数のフローレコードに含まれた情報をフィルタリングする手段(23)と、
フィルタリングされたフローレコードに関連するインジケータを抽出する手段(23)と、
所定の数のインジケータを格納するためのインジケータデータ構造(31)と、
前記インジケータデータ構造が追加のインジケータを格納する容量を有するかどうか決定する手段(24)と、
前記インジケータデータ構造が容量を有すると決定される場合は、前記抽出されたインジケータを前記データ構造に追加する手段(24)と、
前記インジケータデータ構造が追加のインジケータを格納する容量を有さないと決定される場合は、前記データ構造内に格納された前記抽出されたインジケータを解析して、前記格納された抽出されたインジケータのうちの少なくとも1つを削除する手段(24)とを備えるシステム。
【請求項2】
前記フィルタリングされたフローレコードから値を抽出する手段(23)と、
前記格納されたインジケータに関連する値を格納する値データ構造(35)と、
前記抽出された値を前記値データ構造に追加する手段(24)と
をさらに備える、請求項1に記載のシステム。
【請求項3】
前記フィルタリング手段(23)が、フローレコードのフィールドからの少なくとも1つの値を、そのフィールドについて定義されたフィルタパラメータと比較するように構成される、請求項1又は2に記載のシステム。
【請求項4】
前記インジケータデータ構造に格納される複数のインジケータを格納するハッシュテーブル(34)と、
前記ハッシュテーブルを使用して前記インジケータの探索を実施することによって、抽出されたインジケータが前記インジケータデータ構造内に格納されているかどうか決定する手段(24)と
をさらに備える、請求項1〜3のいずれか一項に記載のシステム。
【請求項5】
抽出されたインジケータが前記インジケータデータ構造に格納されていると決定される場合は、前記インジケータに関連する前記格納された値を増分する手段(24)をさらに備える、請求項4に記載のシステム。
【請求項6】
前記格納された値が、前記フローレコードからの前記それぞれの抽出された値で増分される、請求項5に記載のシステム。
【請求項7】
前記インジケータデータ構造(31、32、33)がリンクされたリストであり、前記インジケータデータ構造の空の要素が、フリーリストとして互いにリンクされる、請求項1〜6のいずれか一項に記載のシステム。
【請求項8】
前記フリーリストの第1の空の要素へのポインタを備えるフリーリスト開始位置(33)をさらに備える、請求項7に記載のシステム。
【請求項9】
前記解析手段(24)が、前記格納されたインジケータに関連する前記値の統計的解析を実施し、前記統計的解析に基づいて前記格納されたインジケータのうちの少なくとも1つを削除するように構成される、請求項1〜8のいずれか一項に記載のシステム。
【請求項10】
前記統計的解析が、前記格納されたインジケータに関連する各値の中央値の計算、及び前記計算された中央値より小さい関連する値を有する前記格納されたインジケータの削除を含む、請求項9に記載のシステム。
【請求項11】
前記定義されたフィルタパラメータが、送信元IPアドレス、宛先IPアドレス、送信元IPポート、宛先IPポート、IPプロトコルバージョン、フロー内のオクテットの数、フロー内のパケット数、及びサービスタイプのうちの1つ又は複数を備える、請求項1〜10のいずれか一項に記載のシステム。
【請求項12】
前記インジケータデータ構造をソートする手段(24)と、
前記ソートされたインジケータデータ構造からの所定数の格納されたインジケータを識別する手段(24)と
をさらに備える、請求項1〜11のいずれか一項に記載のシステム。
【請求項13】
前記識別された所定数の格納されたインジケータに基づいてチャートを作成する手段(26)と、フローレコードが前記システムによって処理される間、前記値で前記チャートを繰り返し更新する手段(24、26)とをさらに備える、請求項12に記載のシステム
【請求項14】
ネットフローデータを収集するための方法であって、
複数のフローレコードを受け取るステップと、
定義されたフィルタパラメータに基づいて前記複数のフローレコードに含まれた情報をフィルタリングするステップと、
フィルタリングされたフローレコードに関連するインジケータを抽出するステップ(41)と、
所定の数のインジケータを格納するためのインジケータデータ構造を用意するステップと、
それぞれの抽出されたインジケータについて、前記インジケータデータ構造が追加のインジケータを格納する容量を有するかどうか決定するステップ(45)と、
前記インジケータデータ構造が容量を有すると決定される場合は、前記抽出されたインジケータを前記データ構造に追加するステップ(46)と、
前記インジケータデータ構造が追加のインジケータを格納する容量を有さないと決定される場合は、前記抽出されたインジケータを前記データ構造に追加する前に、前記データ構造に格納された前記抽出されたインジケータを解析して、前記格納された抽出されたインジケータのうちの少なくとも1つを削除するステップ(47〜49)とを含む方法。
【請求項15】
請求項1〜13のいずれか一項に記載のシステムとして構成されるように、又は請求項14に記載の方法を実施するようにプログラマブル装置を構成するためのコンピュータ実施可能命令。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2012−253734(P2012−253734A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−186269(P2011−186269)
【出願日】平成23年8月29日(2011.8.29)
【出願人】(509233459)フルークコーポレイション (9)
【氏名又は名称原語表記】Fluke Corporation
【住所又は居所原語表記】6920 Seaway Boulevard, Everett, Washington 98203 U.S.A.
【Fターム(参考)】