ネットフローデータを収集するためのシステムであって、複数のフローレコードを受け取る手段22と、定義されたフィルタパラメータに基づいて、前記複数のフローレコードに含まれた情報をフィルタリングする手段23と、フィルタリングされたフローレコードに関連するインジケータを抽出する手段23と、所定の数のインジケータを格納するためのインジケータデータ構造31と、前記インジケータデータ構造が追加のインジケータを格納する容量を有するかどうか決定する手段24と、前記インジケータデータ構造が容量を有すると決定される場合は、前記抽出されたインジケータを前記データ構造に追加する手段24と、前記インジケータデータ構造が追加のインジケータを格納する容量を有さないと決定される場合は、前記データ構造内に格納された前記抽出されたインジケータを解析して、前記格納された抽出されたインジケータのうちの少なくとも1つを削除する手段24とを備えるシステム。前記フィルタリングされたフローレコードから値を抽出する手段23と、前記格納されたインジケータに関連する値を格納する値データ構造35と、前記抽出された値を前記値データ構造に追加する手段24とをさらに備える、請求項1に記載のシステム。前記フィルタリング手段23が、フローレコードのフィールドからの少なくとも1つの値を、そのフィールドについて定義されたフィルタパラメータと比較するように構成される、請求項1又は2に記載のシステム。前記インジケータデータ構造に格納される複数のインジケータを格納するハッシュテーブル34と、前記ハッシュテーブルを使用して前記インジケータの探索を実施することによって、抽出されたインジケータが前記インジケータデータ構造内に格納されているかどうか決定する手段24とをさらに備える、請求項1~3のいずれか一項に記載のシステム。抽出されたインジケータが前記インジケータデータ構造に格納されていると決定される場合は、前記インジケータに関連する前記格納された値を増分する手段24をさらに備える、請求項4に記載のシステム。前記格納された値が、前記フローレコードからの前記それぞれの抽出された値で増分される、請求項5に記載のシステム。前記インジケータデータ構造31、32、33がリンクされたリストであり、前記インジケータデータ構造の空の要素が、フリーリストとして互いにリンクされる、請求項1~6のいずれか一項に記載のシステム。前記フリーリストの第1の空の要素へのポインタを備えるフリーリスト開始位置33をさらに備える、請求項7に記載のシステム。前記解析手段24が、前記格納されたインジケータに関連する前記値の統計的解析を実施し、前記統計的解析に基づいて前記格納されたインジケータのうちの少なくとも1つを削除するように構成される、請求項1~8のいずれか一項に記載のシステム。前記統計的解析が、前記格納されたインジケータに関連する各値の中央値の計算、及び前記計算された中央値より小さい関連する値を有する前記格納されたインジケータの削除を含む、請求項9に記載のシステム。前記定義されたフィルタパラメータが、送信元IPアドレス、宛先IPアドレス、送信元IPポート、宛先IPポート、IPプロトコルバージョン、フロー内のオクテットの数、フロー内のパケット数、及びサービスタイプのうちの1つ又は複数を備える、請求項1~10のいずれか一項に記載のシステム。前記インジケータデータ構造をソートする手段24と、前記ソートされたインジケータデータ構造からの所定数の格納されたインジケータを識別する手段24とをさらに備える、請求項1~11のいずれか一項に記載のシステム。前記識別された所定数の格納されたインジケータに基づいてチャートを作成する手段26と、フローレコードが前記システムによって処理される間、前記値で前記チャートを繰り返し更新する手段24、26とをさらに備える、請求項12に記載のシステムネットフローデータを収集するための方法であって、複数のフローレコードを受け取るステップと、定義されたフィルタパラメータに基づいて前記複数のフローレコードに含まれた情報をフィルタリングするステップと、フィルタリングされたフローレコードに関連するインジケータを抽出するステップ41と、所定の数のインジケータを格納するためのインジケータデータ構造を用意するステップと、それぞれの抽出されたインジケータについて、前記インジケータデータ構造が追加のインジケータを格納する容量を有するかどうか決定するステップ45と、前記インジケータデータ構造が容量を有すると決定される場合は、前記抽出されたインジケータを前記データ構造に追加するステップ46と、前記インジケータデータ構造が追加のインジケータを格納する容量を有さないと決定される場合は、前記抽出されたインジケータを前記データ構造に追加する前に、前記データ構造に格納された前記抽出されたインジケータを解析して、前記格納された抽出されたインジケータのうちの少なくとも1つを削除するステップ47~49とを含む方法。請求項1~13のいずれか一項に記載のシステムとして構成されるように、又は請求項14に記載の方法を実施するようにプログラマブル装置を構成するためのコンピュータ実施可能命令。図1は、ネットフローデータ解析システムの機能コンポーネント、及び本発明の一実施形態による方法の例示的な実施の操作を示すブロックフローチャートである。フローレコード21が受け取られ、たとえばディスク図示せずから取り出され、フィルタパラメータに基づいてフィルタリングされる23。フィルタパラメータは、ユーザによって事前定義されてもよいし、ユーザ問合せによって入力として受け取られてもよいし、またネットフローレコード内のフィールドの任意の組合せとすることができる。フィルタリングされたフローレコード、たとえば定義されたフィルタパラメータを満たす各々のフィールド値を有するフローレコードを処理して、フィルタリングされたフローレコードを表すキー、及びフローレコードからの関連する値を抽出する。この実施形態では、抽出されたキーは、フィルタパラメータに関連する1つ又は複数のフィールドを表すインジケータである。たとえば、特定のIPアドレス対について最もアクティブな上位10個のネットフローを探すユーザベースの問合せでは、抽出されたキーは、1つの整数が送信元IPアドレスを表し、もう一方の整数が宛先IPアドレスを表す2つの整数の組合せであってよい。このように、抽出されたキーは、異なるアドレス対に関連する受け取られた各フローレコードに一意である。さらに、この例示的なユーザベースの問合せでは、抽出された値は、ネットフロー内のパケットサイズ及び/またのパケット数であってもよい。一実施形態では、効率的で正確な処理を保証するために、問合せのタイムスパンは、事前定義された複数のタイムスロット、たとえば1秒のタイムスロットに分割されてもよく、各タイムスロットについて上位Nストリーミング計算器24が作成される。それぞれの上位Nストリーミング計算器24は、下記により詳細に述べられるように、フィルタリングされたストリーミングネットフロー使用データをプロセッサ効率のよいやり方で収集し、収集されたデータをメモリ効率のよいやり方で格納して、後に続く効率的なソート及び解析を容易にするために、フローレコードから抽出されたキー及び値を処理する。クライアントソフトウェアは、チャートの現在の状態を規則的な時間間隔で、すなわち毎秒、要求してもよい25。その後、ソフトウェアコンポーネント26は、それぞれの上位N計算器に問い合わせ、返された中間状態に基づいて情報を編纂し、チャートを作成する。チャートは、クライアントソフトウェア27に返され、このクライアントソフトウェア27は、ユーザにチャートをレンダリングする。タイムスロットのそれぞれについて進捗率percentofcompletionが返され、それらが完了していない場合、クライアントソフトウェアは、更新を得るために新しい要求を送る。このプロセスは、すべての計算器が終了され、チャートが完了するまで継続する。図2は、関連するネットフロー内のパケットのフローに関する関連情報を含む例示的なネットフローレコードの内容を概略的に示している。一実施形態では、フローレコードのフィールドは以下を含んでよい。送信元IPアドレス宛先IPアドレス送信元IPポート宛先IPポートIPプロトコルフロー内のオクテット数フロー内のパケット数サービスタイプ上記に論じられたように、本発明の抽出されたキーについて、フローレコードからのフィールドの任意の組合せを使用してもよい。当業者は、上記にリストされたフィールドの代わりに、又はそれに加えて、別個のホスト又は接続の数、ネットフローの継続時間、並びに逆フローのパケットのサイズ及び/又は数など、フローレコード内で使用可能な他のフィールドを使用してもよいことが当業者には理解されよう。キーのフィルタパラメータは、関連するフィールドの値又は値範囲によって定義することができる。フローレコード内で使用可能な各フィールドについて多くのフィルタパラメータが可能であることが当業者には理解されよう。たとえば、IPアドレス値の範囲は、たとえばネットマスクとして定義することができ、ポート範囲は、開始値から終了値まで定義してもよい。フローレコードは、各フローについて、ルータによって、規則的な時間間隔、たとえば毎分に発行される。たとえば、長く持続したフローは、多くのフローレコードを生成することができる。本発明によるフローレコードを処理する操作について、上位N計算器によって使用される主要データ構造を概略的に示す図である図3、及びこの実施形態によるフローチャートである図4を参照して次に述べられる。図3に示されたように、この実施形態は、ストリーミングネットフローデータの効率的な収集を容易にするためのデータ構造を提供し、データ構造が、キー配列31と値配列35とを含む。キー配列31は、事前定義された数の要素を備え、それぞれの要素が、受け取られたフローレコードの抽出されたキーを格納するためのものである。受け取られたフローレコードからやはり抽出される、キーに関連する値は、別個の長い配列35に格納してもよい。好ましい実施形態では、キー配列31のサイズは、ソートされたキー配列から返される所定の数の上位N個のネットフローに基づいて決定され、したがって、受け取られ処理されたネットフローデータの代表的な数に基づいてソートが行われることを可能にするのに十分な数の一意の抽出されたキーがキー配列に格納される。たとえば、キー配列31内の要素の数は、所望の上位n個の数N×定義されたキー内の値の数M×所定の整数4などと計算することができる。フリーリストデータ構造33は、フローレコードリーダ22及びフィルタ23によって受け取られ処理された新しい抽出されたキーの格納に使用可能なキー配列31の要素のリストを格納するために提供される。この実施形態では、フリーリストは、リンクされたリストのデータ構造であり、フリーリスト33の開始は、キー配列31内の第1の空き要素へのポインタとして格納される。最初に、すべてのキー配列要素が、フリーリストのリンクされたリスト内に置かれ、それぞれの要素が、リンクされたリスト33内の次の空き要素へのポインタ32を含む。キー配列31内にキーが埋められるとき、フリーリスト33の開始によって示された位置を使用して、新しいキーに追加するためのキー配列31内の位置が決定される。その位置に要素が追加された後、フリーリストの開始のポインタは、新しく埋められた要素からのポインタで更新される。迅速な探索を可能にするために、キーは、ハッシュされ、ハッシュテーブル34で示されたリスト内に置かれてもよい。次に図4を参照すると、図3に示されたデータ構造にフローレコードを追加するプロセスが、新しいフローレコードがフローレコードリーダ22によって受け取られ、たとえばユーザの問合せで定義されたキーに基づいて処理するためにフィルタ23に渡されることから開始している。ステップ41で、フローレコードのキー及び値たとえばオクテットの数、及びパケットの数が、フローレコードから抽出される。ステップ42で、抽出されたキーが、ハッシュテーブルを使用し探索される。ステップ43で、抽出されたキーがデータ構造内に既にあると決定される場合は、ハッシュテーブルは、キー配列31内でそのキーの位置を効率的に識別し、ステップ44で、キーに関連する値が増分される。しかし、ステップ43で、データ構造内にキーが存在しないと決定される場合は、ステップ45で、フリーリストをチェックして、キー配列31に空きエントリが残っているかどうか決定する。この実施形態では、フリーリスト33の開始としてのポインタが存在することは、キー配列31内に少なくとも1つの空きエントリがあることを示す。フリーリスト内に空きエントリがあると決定される場合は、ステップ46で、開始ポインタによって識別された位置で、抽出されたキーが、キー配列31に追加される。ステップ46で、抽出された値は、値配列内の対応する位置にも追加される。しかし、ステップ45で、キー配列31内に空きのエントリがないと決定される場合は、このプロセスはしたがって、新しいフローレコードを追加できるようにするためにエントリを削除する必要がある。これは、この実施形態では、キー配列31内の各キーの特定のフィールドの格納された値を取り出し、ステップ47で、そのフィールドの格納された値の中央値を決定することによって達成される。次いで、ステップ48で、キー配列31内のすべてのエントリが処理され、キーに関連する値が、対応する中央値より小さいと決定される場合にマーキングされる。フローレコードのフィールドに対応する抽出された値のそれぞれについてステップ47及び48を繰り返してもよいことが当業者には理解されよう。次いで、ステップ49で、マーキングされるキーが、キー配列から削除される。その関連する値が中央値などの所定の閾値より小さいキーのエントリを削除することにより、絶対に必要でない限りは、多くのエントリのソートを回避することができる。これによって、さもなければソート手順を実施するのに使用されるリソースの望ましくない浪費が防止される。上位Nストリーミング計算器がデータ構造内の各値位置の上位N個のキーを計算している間、クライアントコード16は、上位N個の値図1参照を求めてもよい。これを可能にするために、図3に例証されたデータ構造へのアクセスは、マルチスレッドアクセスを可能にするロックによって保護することができる。上記説明では、ネットフローデータ解析システムは、上述された方法を実施するように操作を制御するソフトウェアを格納し実行するように構成される。当業者には理解されるように、上記方法を実施するよう動作可能になるようにプログラマブルデバイスを構成するためのコンピュータプログラムは、キャリアに格納され、システムのフラッシュメモリなどのメモリにロードされてもよい。プログラムは、信号としてダウンロードされてもよいし、及び/又はシステム上に既に常駐するソフトウェアへのパッチ又は更新として適用されてもよい。本発明の範囲は、プログラム、プログラムを運ぶキャリア、及びブロードキャスト信号を含む。代替実施形態諸実施形態について単に例示するために上記に述べられており、この説明を読むと様々な変形形態が当業者には考えられようが、その変形形態は、特許請求の範囲に定義された本発明の範囲内に含まれるものである。たとえば、上述された実施形態では、上位Nストリーミング計算器は、キー配列に格納されたキーに関連する値の統計的解析を実施し、統計的解析に基づいて、格納されたインジケータの少なくとも1つを削除するように構成される。例示的な実施形態では、統計的解析は、格納されたキーに関連する値の中央値を計算し、計算された中央値より小さい関連する値を有するキーを削除することを伴う。統計的解析に中央値を使用することは、エントリが後にキー配列から削除されることが、全体的なネットワーク使用を表すための情報の大きい損失にはつながらないので特に有利である。しかし、平均、モード又は他の形の統計的平均の計算など、中央値を使用するのではなく、他の形の統計的解析を使用してもよいことが当業者には理解されよう。本発明の実施形態は、ハードウェア、ソフトウェア又はその組合せを使用して実施されてよく、1つ又は複数のコンピューティングシステム又は他の処理システムで実施されてもよい。