"ネットフローデータを収集するための装置であって、複数のフローレコードを受け取る手段42と、前記受け取られたフローレコードからデータを抽出して、ブロックデータ構造にする手段43であって、前記ブロックデータ構造が複数の個別の要素を含み、各要素が、それぞれのフローレコードから抽出されたデータと、前記複数の個別の要素のインデックスとを格納する、手段と、前記ブロックデータ構造内の前記個別の要素を、前記インデックスを並べ替えることによってソートする手段44とを備える装置。前記ブロックデータ構造が固定サイズを有し、前記装置が、いつ前記ブロックデータ構造が一杯になるか決定し、前記ブロックデータ構造を前記ソート手段に渡す手段をさらに備える、請求項1に記載の装置。前記ソート手段44が、前記抽出されたデータのビットパターンに基づいて前記個別の要素をソートするように構成される、請求項3に記載の装置。前記ソート手段が、前記ソートされたブロックデータ構造を出力ブロックファイルに追加するように構成される、請求項4に記載の装置。前記受取り手段42が、所定の時間ウィンドウ内に複数のフローレコードを受け取るように構成される、請求項1~4のいずれか一項に記載の装置。前記抽出手段及びソート手段が、繰り返し前記ブロックデータ構造を満たし、前記満たされたブロックデータ構造をソートし、前記所定の時間ウィンドウ内に前記複数のフローレコードについて、前記ソートされたブロック構造を前記ブロックファイルに追加するように構成される、請求項5に記載の装置。前記ブロックファイル内の前記複数の要素のマージソートを実施し、前記ソートされた要素のデータストリームを出力する手段をさらに備える、請求項6に記載の装置。前記ソートされたブロックデータ構造をデータストリームとして処理して、ネットワーク使用のパターンを識別する手段46、47をさらに備える、請求項7に記載の装置。前記個別の要素がNタプルであり、ただし、Nがフローレコードから抽出されたデータエンティティの数であり、前記ブロックデータ構造がタプルブロックである、請求項1~8のいずれか一項に記載の装置。前記インデックスが、それぞれが前記タブルブロック内の各々の個別のNタプルの位置を識別するインデックスの配列を備える、請求項9に記載の装置。前記処理手段46、47が、前記フローレコードのネットワークアドレス及びネットワークポート間の関連性を識別し、前記識別された関連性に基づいて、分散型サービス妨害攻撃及び/又はポートスキャン攻撃を示す1つ又は複数のフローレコードを識別するようにさらに構成される、請求項10に記載の装置。前記処理手段46、47が、単一の送信元ネットワークアドレスに関連している宛先ネットワークアドレス及びネットワークポートの最大数、及び単一の宛先ネットワークアドレスに関連している送信元ネットワークアドレス及びネットワークポートの最大数に従って、前記決定された結果をランク付けすることによって関連性を識別するように構成される、請求項11に記載の装置。前記ランク付けされた情報を出力する手段をさらに備える、請求項12に記載の装置。ネットフローデータを収集する方法であって、複数のフローレコードを受け取るステップと、前記受け取られたフローレコードからデータを抽出して、ブロックデータ構造にするステップであって、前記ブロックデータ構造が複数の個別の要素を含み、各要素が、それぞれのフローレコードから抽出されたデータと、前記複数の個別の要素のインデックスとを格納する、ステップと、前記ブロックデータ構造内の前記個別の要素を、前記インデックスを並べ替えることによってソートするステップとを含む方法。請求項1~13のいずれか一項に記載のシステムとして構成され、又は請求項14に記載の方法を実施するようにプログラマブル装置を構成するためのコンピュータ実施可能命令。図1は、受け取られたパケットを処理し、ネットワークからフローレコードを収集するためのネットワークルーティングデバイス1の一般的なブロック図を示している。パケット11は、ルーティングデバイス1のパケット処理エンジン12によって受け取られ処理され、受け取られたパケットのフローについての情報は、フローキャッシュ13に格納される。フローキャッシュ13は、固定の時間間隔で、たとえば毎分フラッシュされ、ネットフロー情報は、フローエクスポータ14として具現化されたネットフローエクスポートプロトコルによってエクスポートされ、フローデータエンジン15に送信される。図2は、攻撃者から複数のターゲットホストへのポートスキャン攻撃の一例を示している。攻撃側コンピュータは、典型的に、様々なコンピュータへの多数の接続を開く。これらの接続は、ルーティングデバイス1によって、フローレコードを使用してネットフロー処理エンジン3に報告される。この攻撃についてのフロー情報は一般に、1つの送信元アドレスと、多数の関連する宛先アドレス及びポートをもつ。換言すると、攻撃は、複数の他のホストをターゲットとする単一のアドレスを有する不正コンピュータから開始され、この複数の他のホストは、すべてが単一の送信元アドレスに関連している多くの異なる宛先アドレス及びポートを有する。図3は、複数のコンピュータから、ターゲットとされた単一のホストへと開始されるサービス妨害攻撃の一例を示している。この例では、多数のコンピュータが、典型的に、単一のコンピュータとの接続を開く。これらの接続は、フローレコードを使用して、ルーティングデバイス1によってネットフロー処理エンジン3に報告される。この攻撃についてのフロー情報は、ターゲットとされたホストに対応する1つの宛先アドレスと、複数のコンピュータに対応しており、単一の宛先アドレスに関連する多数の送信元アドレス及びポートをもつ。上記の形のネットワーク攻撃を識別するための効率的な後続の解析を容易にする、本発明によるフローレコードのストリームを処理し収集する操作について、図4を参照して次に述べられる。図4は、フローレコード処理エンジン3の機能コンポーネント及びデータ構造による操作を概略的に示すブロックフローチャートである。このプロセスは、ルーティングデバイス1から複数のフローレコード41を受け取ることから開始し、このフローレコード41は、ネットフロー処理エンジン3のフローレコード受信スレッド42によって処理される。この実施形態では、ネットフロー処理エンジン3は、1時間や数日など、いずれかの時間量であり得る事前定義された時間ウィンドウ内に複数のフローレコードを収集する。図5は、フローに関する関連情報を含む、例示的なフローレコードのコンテンツを示している。図5に示されたように、フィールドは、以下を含む。送信元IPアドレス宛先IPアドレス送信元IPポート宛先IPポートIPプロトコルフロー内のオクテット数フロー内のパケット数サービスタイプ他のフィールドフローレコードは、各フローについて、ルータによって、規則的な時間間隔、たとえば毎分に発行されてもよく、したがって、長く持続した単一のフローは、多くのフローレコードを生成する。特定の問合せのためのフィルタが、各フローに適用されてもよい。こうしたフィルタの例は、ある時間範囲内のフローや、特定のインターフェースに一致するフローなどであってもよい。フィルタは、フローレコード内で使用可能なフィールドの任意の組合せのためのフィルタパラメータから構成されてもよい。フィルタパラメータは、関連するフィールドの値又は値範囲によって定義することができる。たとえば、IPアドレス値の範囲は、たとえばネットマスクとして定義することができ、ポート範囲は、開始値から終了値まで定義してもよい。この実施形態では、ネットフロー処理エンジン3は、上記に言及されたように、分散型サービス妨害攻撃及び/又はポートスキャンネットワーク攻撃を検出するように構成され、したがって、特定の送信元又は宛先IPアドレスへのアクティブなネットフローを効率的に識別するために、所定の時間ウィンドウ内でフローレコードを収集し解析する。この実施形態では、ネットフロー処理エンジン3は、ネットフローを解析するためにフローレコードから上記のフィールドのうちの5つ、すなわち送信元アドレス及びポート、宛先アドレス及びポート、IPプロトコルを抽出するように構成される。これらの5つのフィールドはひとまとめにして、5タプル会話データと呼ばれる。N個のフィールドを有するN個のタプルを、たとえば異なるタスク又は問合せについてフローレコードを解析するように形成するために、フィールドの他の任意の組合せを使用できることが当業者には理解されよう。5タプル会話データのそれぞれのフィールドからの値は、タプルブロックライタ43によって、受け取られた各フローレコードから抽出される。この例示的な実施形態では、抽出された値は、図6Aに示されたように、タプルデータ構造内にまず置かれる。タプルデータ構造内のフィールドの順序は、ネットフロー処理エンジン3の構成に依存する。たとえば、ネットフロー処理エンジン3が同じ宛先IPアドレスへのアクティブなネットフローを識別するように構成される分散型サービス妨害検出では、値は、まず宛先IPアドレス、次に送信元IPアドレス、その後に送信元ポート、宛先ポート及びIPプロトコルの順序61でタプルデータ構造に書き込まれる。もう一方では、ネットフロー処理エンジン3が同じ送信元IPアドレスへのアクティブなネットフローを識別するように構成されるポートスキャン検出では、値は、まず送信元IPアドレス、次に宛先IPアドレス、その後に送信元ポート、宛先ポート及びIPプロトコルの順序62でタプルデータ構造に書き込まれる。5タプルデータ構造は、たとえば処理効率のために4つの32ビット整数要素からなる固定サイズのものであってよい。したがって、図6Aに示されたように、関連する値がデータ構造の固定長より小さい場合、5つのフィールドの後にパディングを設けてもよい。この実施形態では、ネットフロー処理エンジン3は、所定の時間ウィンドウから5タプルのソートされたデータストリームを抽出し、収集し、処理し、出力するように構成される。次いで、このソートされたデータストリームは、効率的な処理のために後続の解析コンポーネントに渡される。この実施形態によるソートは、メモリとプロセッサの両方の効率のために2段階で実施される。第1段階として、タプルブロックライタ43は、固定数の5タプルのデータ構造を格納する所定のサイズを有するインデックス付きタプルブロックデータ構造63に、そのブロックデータ構造が一杯になるまで、生成された5タプルデータ構造を出力する。インデックス付きのタプルブロックは、たとえば、RAMメモリ内に整数配列として格納されてもよいことが当業者には理解されよう。タプルブロック63は、タプルブロック63内の個別の各タプル要素65の相対位置のインデックス64をも含む。図6Bに示された例では、インデックス64は、タプルブロック63内にオフセットとして各タプル要素65の整数インデックスを格納する整数配列である。ネットフロー処理エンジン3が、タプルブロック63が個別のタプル要素65の最大数で埋められていると決定すると、タプルブロック63は、タプルブロックソータ44に送られる。タプルブロックソータ44は、個別のタプル要素65を事前定義された順序でソートし、したがってソートされたデータ構造によって、たとえば、関連するフローレコードから抽出された値からのフロー内のオクテットの数、及び/又はフロー内のパケットの数に基づいて特定の送信元IPアドレス及びポートと宛先IPアドレス及びポートとの間の別個の関連性を、それらの間の伝送量と共に識別するより効率的な解析が促される。ソート順は、ネットフロー処理エンジンの構成に基づいて定義されてもよいことが当業者には理解されよう。たとえば、ネットフロー処理エンジン3が同じ宛先IPアドレスへのアクティブなネットフローを識別するように構成される分散型サービス妨害検出では、タプルは、宛先IPアドレスに基づいてソートされ、この宛先IPアドレスは、タプルデータ構造61内の第1の要素として格納され、したがって、タプルブロックソータ44による処理のために効率的に抽出することができる。もう一方で、ネットフロー処理エンジン3が同じ送信元IPアドレスへのアクティブなネットフローを識別するように構成されるポートスキャン検出では、タプルは、送信元IPアドレスに基づいてソートされ、この送信元IPアドレスは、この構成に従って、やはりタプルデータ構造62内の第1の要素として格納される。この実施形態によれば、タプルブロックソータ44は、タプルデータ自体を抽出し、並べ替え、再書き込みしなければならないのではなく、インデックス64の個別のインデックスを並べ替えることによって個別のタプル要素65の効率的なソートを実施することができる。換言すると、タプル要素65自体は、タプルブロックソートの間、タプルブロック64内で移動されず、インデックス位置だけが移動される。識別されたどんな重複タプルたとえば、タプルが同じ送信元及び宛先のアドレス、ポート及びプロトコルを有するをも、インデックス64から重複タプルのうちの1つの個別のインデックスを取り除くことによって、タプルブロック63から効率的に取り除くことができる。タプルブロック63がタプルブロックソータ44によってソートされた場合、ソートされたタプルブロックは、タプルブロックライタ45に送られ、このタプルブロックライタ45は、ソートされたタプルブロック44を出力タプルブロックファイル66に移動する。図6Cに示されたように、生成されたタプルブロックファイル66は、ヘッダ要素として、ソートされた個別のタプル要素の総数を含んでもよい。したがって、タプルブロックは空であり、所定の時間ウィンドウの間に、第1段階の第1の反復が完了する。タプルブロックライタ45は、攻撃を示す可能性が最も高い別個の送信元又は宛先アドレス及び会話を決定し優先付けするために追加の処理を実施してもよい。5タプルを抽出し、タプルブロックを満たし、満たされたタプルブロックをソートし、ソートされたタプルブロックを出力タプルブロックファイルに追加する上述のプロセスは、所定の時間ウィンドウの継続時間の間、繰り返される。ネットフロー処理エンジン3が、所定の時間ウィンドウが経過したと決定する場合、タプルブロックファイル66は、マージソートコンポーネント46に出力され、このマージソートコンポーネント46は、タプルブロックファイル66からタプルブロックを読み出し、ソートされたタプルのマージソートを実施する。マージコンポーネント46は、タプルブロックファイル内の各タプルブロックへのポインタを保持し、ブロックから最小のタプルを出し、そのポインタを進めることによってマージソートを効率的に実行できることが当業者には理解されよう。次いで、マージソートされたタプル全体が、マージソートコンポーネント46によって、所定時間ウィンドウからの抽出されたタプルのすべてのソートされたデータストリームとして出力され、ソートされたタプルのデータストリームは、アドレス/会話カウンタ47に渡され、このアドレス/会話カウンタ47は、受け取られたデータストリームを処理して、各一意の送信元IPアドレスと宛先IPアドレスの対について、別個の関連するアドレス及び会話の数を計算する。この実施形態では、カウンタの計算は、たとえば以下のアルゴリズムを使用して、ソートされたタプルの受け取られたデータストリームに対して効率的に実施することができる。PerTuple:iftuple0=atuple0:emit,incraddr_count,incr_conv_countElseiftuple1=atuple1:incr_addr_count,incr_conv_countElseiftuple=atupleincr_conv_countatuple=tuple分散型サービス妨害攻撃に対応する宛先IPアドレスは、別個の関連するアドレス及び会話の最大数を有する宛先IPアドレスである。同様に、最大数を有する送信元IPアドレスは、ポートスキャン攻撃側のIPアドレスを示す。アドレス及び会話カウンタ47もまた、たとえば単一の送信元アドレスに関連している宛先アドレス及びポートの最大数、及び単一の宛先アドレスに関連している送信元アドレスの最大数に従って、計算された数をランク付けすることによって、ネットワークアドレス及びネットワークポートの間の関連性を識別するように構成することもできる。上記の特徴によって、本発明は、大量のフロー情報処理の技法を容易にし、それによって、特定のネットワークサービス攻撃のタイプ及び送信元を効率的に正確に識別することが可能になる。次いで、この情報は、チャート又はグラフ形式でユーザに表示されてもよく、ある時間間隔にわたる結果を示すことができる。この情報に基づいて、ユーザ又は自動化されたシステムは、進行中の攻撃を阻止するための措置を講じることができる。たとえば、攻撃源であると識別されたアドレスからの送信をブロックするために、ファイアウォール設定を変更してもよい。上記の記述では、ネットフロー処理エンジン3は、上述された方法を実施するように操作を制御するソフトウェアを格納し実行するように構成される。当業者には理解されるように、上記方法を実施するよう動作可能になるようにプログラマブルデバイスを構成するためのコンピュータプログラムは、キャリアに格納され、システムのフラッシュメモリなどのメモリにロードされてもよい。プログラムは、信号としてダウンロードしてもよいし、及び/又はシステム上に既に常駐するソフトウェアへのパッチ又は更新として適用してもよい。本発明の範囲は、プログラム、プログラムを運ぶキャリア、及びブロードキャスト信号を含む。代替実施形態諸実施形態について単に例示するために上記に述べられており、この説明を読んだ後、様々な変形形態が当業者には考えられようが、その変形形態は、特許請求の範囲に定義された本発明の範囲内に含まれるものである。たとえば、上述された実施形態では、タプルブロックライタによって出力されたタプルブロックファイルは、分散型サービス妨害攻撃に対応する宛先IPアドレス、及び/又はポートスキャン攻撃側の送信元IPアドレスを効率的に識別するために、各一意の送信元IPアドレスと宛先IPアドレスの対について別個の関連するアドレス及び会話の数を計算する処理のためにマージされて、アドレス/会話カウンタに送られる。当業者には理解されるように、ソートされたタプルブロックデータ構造は、効率的な処理のためにソートされたストリームを受け取るように構成された他の形のネットフローデータ解析コンポーネントによって使用することができる。たとえば、ソートされたストリームは、データストリーム内のソートされたデータの特定の構成のために特定の基準を満たす上位N個のネットフローを効率的に識別するために、本出願人の同時係属出願、MethodandApparatusforStreamingNetflowDataAnalysisに記載された上位N計算器によって処理することができる。上述された実施形態では、ネットフロー処理エンジンは、所定の時間ウィンドウ内にフローレコードを収集するように構成される。その代わりに、当業者が理解するように、フローレコードは、事前定義された固定サイズの出力タプルブロックファイルが一杯になるまで、上述された方法に従って収集されてもよい。上述された実施形態では、ネットワークアドレスは、IPアドレスである。本発明の諸実施形態は、他の任意の形のネットワークアドレシングに適用可能であることが当業者には理解されよう。本発明の実施形態は、ハードウェア、ソフトウェア又はその組合せを使用して実施されてもよく、1つ又は複数のコンピューティングシステム又は他の処理システムで実施されてもよい。"