(57)【要約】  少なくとも１つのネットワーク・インターフェース・カード（ＮＩＣ）上でデータ・ストリームを受信すること、及び各ネットワーク・インターフェース・カードに対する幾つかの第１のスレッドで走る第１のプロセスとそれぞれが第２のスレッドの随意的な群を有する第２の複数のプロセスの少なくとも１つの群とを用いてデータ・ストリームに対して動作を行うことによって、入ってくるデータ・ストリームが管理される。第１のプロセスと第２の複数のプロセスの１つ又は複数の群は独立しており、且つ共有メモリを介して通信する。各ネットワーク・インターフェース・カードに対する第１のスレッドは第２のスレッドの群とは異なる。
2013508880.tif 000002
【特許請求の範囲】
【請求項１】
データ・ストリームを管理するための方法であって、
少なくとも１つのネットワーク・インターフェース・カード上でデータ・ストリームを受信するステップと、
各ネットワーク・インターフェース・カードに対する複数の第１のスレッドで走る第１のプロセスを用いて、前記データ・ストリームに対して、
前記複数の第１のスレッドによる処理のために複数のバッファ間に前記データ・ストリームの一部を分配させること、
前記複数のバッファのそれぞれに格納された前記データ・ストリームの一部のそれぞれを、専用の第１のプロセス・スレッドであり、前記複数の第１のスレッドのうちの１つである専用の第１のプロセス・スレッドにより処理すること、
前記データ・ストリームの処理された一部のそれぞれを複数の専用共有メモリのうちの１つに格納すること、
を含む動作を行うステップと、
それぞれが第２のスレッドの少なくとも１つの群を有する第２の複数のプロセスの少なくとも１つの群を用いて、前記データ・ストリームの処理された一部に対して、
前記共有メモリのそれぞれに格納された前記データ・ストリームの処理された一部のそれぞれを、専用の第２のプロセス・スレッドであり、前記第２のスレッドのうちの１つである専用の第２のプロセス・スレッドにより処理すること、
を含む動作を行うステップと、
を含み、
前記第１のプロセスと前記第２の複数のプロセスの１つ又は複数の群が独立しており、且つ前記共有メモリを介して通信し、
前記各ネットワーク・インターフェース・カードに対する複数の第１のスレッドが前記第２のスレッドの少なくとも１つの群とは異なる、
方法。
【請求項２】
前記第１のプロセスの動作を行うステップが、
別個の複数の専用の第１のプロセス・スレッドを用いて前記複数のバッファのそれぞれからデータの一部を読み出すこと、
前記データ・ストリームの処理された一部を生成するために、別個の複数の専用の第１のプロセス・スレッドを用いて前記複数のバッファのそれぞれからのデータ読み出しをフィルタリングすること、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記第１のプロセスと前記第２のプロセスが非同期である、請求項１に記載のシステム。
【請求項４】
前記複数のバッファのそれぞれが別個の及び異なる第１のプロセス・スレッドによってアクセスされる、請求項１に記載のシステム。
【請求項５】
前記データ・ストリームの一部のそれぞれが前記複数のバッファのうちの別個の１つに格納される、請求項１に記載の方法。
【請求項６】
前記データ・ストリームの処理された一部のそれぞれが別個の共有メモリに格納される、請求項１に記載の方法。
【請求項７】
データ・ストリームを管理するための方法であって、
少なくとも１つのネットワーク・インターフェース・カード上でデータ・ストリームを受信するステップと、
各ネットワーク・インターフェース・カードに対する複数の第１のスレッドで走る第１のプロセスを用いて、前記データ・ストリームに対して、
前記複数の第１のスレッドによる処理のために複数のバッファ間に前記データ・ストリームの一部を分配させること、
前記複数のバッファのそれぞれに格納された前記データ・ストリームの一部のそれぞれを、専用の第１のプロセス・スレッドであり、前記複数の第１のスレッドのうちの１つである専用の第１のプロセス・スレッドにより処理すること、
前記データ・ストリームの処理された一部のそれぞれを複数の専用共有メモリのうちの１つに格納すること、
を含む動作を行うステップと、
第２の複数のプロセスの少なくとも１つの群を用いて、前記データ・ストリームの処理された一部に対して、
前記共有メモリのそれぞれから前記データ・ストリームの格納され処理された一部を読み出すこと、
前記共有メモリから読み出される前記データ・ストリームの処理された一部に対して統計を行い、前記統計をインターバル・ファイルに定期的に保存すること、
を含む動作を行うステップと、
を含み、前記第１のプロセスと前記第２の複数のプロセスの少なくとも１つの群が独立しており、且つ前記共有メモリを介して通信する、
方法。
【請求項８】
前記第１のプロセスの動作を行うステップが、
同じ専用の第１のプロセス・スレッドを用いて前記複数のバッファのそれぞれからデータを読み出すこと、
前記データ・ストリームの処理された一部を生成するために、同じ専用の第１のプロセス・スレッドを用いて前記複数のバッファからのデータ読み出しをフィルタリングすること、
をさらに含む、請求項７に記載の方法。
【請求項９】
前記第１のプロセスと前記第２のプロセスが非同期である、請求項７に記載のシステム。
【請求項１０】
前記複数のバッファが前記第１のプロセスによってのみ用いられる、請求項７に記載のシステム。
【請求項１１】
前記データ・ストリームの分配された一部のそれぞれが前記複数のバッファのうちの別個の１つに格納される、請求項７に記載の方法。
【請求項１２】
前記データ・ストリームの処理された一部のそれぞれが別個の共有メモリに格納される、請求項７に記載の方法。
【請求項１３】
データ・ストリームを管理するための方法であって、
少なくとも１つのネットワーク・インターフェース・カード上でデータ・ストリームを受信するステップと、
各ネットワーク・インターフェース・カードに対する複数のスレッドで走る第１のプロセスによって用いられる複数のバッファ間にデータ・ストリームの一部を分配させるステップであり、前記各スレッドが前記複数のバッファのうちの特定の１つからのデータを処理する、分配させるステップと
前記各バッファに格納された前記データ・ストリームの一部を、前記バッファに専用の特定のスレッドであり、前記複数のスレッドのうちの１つである、特定のスレッドにより処理するステップと、
処理した前記データ・ストリームを指定された共有メモリに格納すること、
を含む、方法。
【請求項１４】
データ・ストリームを管理するための方法であって、
少なくとも１つのネットワーク・インターフェース・カード上でデータ・ストリームを受信するステップと、
前記データ・ストリームの一部を複数のバッファ間に分配させるステップであり、前記複数のバッファが複数の第１のプロセス・スレッドで走る第１のプロセスによってアクセスされ、前記第１のプロセス・スレッドのそれぞれが前記複数のバッファのうちの特定の１つからのデータを処理する、分配させるステップと、
前記データ・ストリームの一部を指定された共有メモリに格納するステップと、
を含む、方法。
【請求項１５】
複数の第２のプロセス・スレッドで走る第２のプロセスによって前記共有メモリからデータを読み出すことをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記複数の第２のプロセス・スレッドがさらに、インメモリ・インターバル統計を行い、前記統計をインターバル・ファイルに定期的に保存する、請求項１５に記載の方法。
【請求項１７】
前記第１のプロセスと前記第２のプロセスが非同期である、請求項１５に記載のシステム。
【請求項１８】
前記複数のバッファのそれぞれからの前記データを処理するのに用いられるのと同じ第１のプロセス・スレッドを用いて、前記複数のバッファのそれぞれからデータを読み出すこと、
前記データ・ストリームの処理された一部を生成するために、同じ第１のプロセス・スレッドを用いて前記複数のバッファからのデータ読み出しをフィルタリングすること、
をさらに含む、請求項１４に記載の方法。
【請求項１９】
前記データ・ストリームの分配された一部のそれぞれが前記複数のバッファのうちの別個の１つに格納される、請求項１４に記載の方法。
【請求項２０】
前記データ・ストリームの分配された一部のそれぞれが別個の共有メモリに格納される、請求項１４に記載の方法。
【請求項２１】
データ・ストリームを管理するための方法であって、
少なくとも１つのネットワーク・インターフェース・カード上でデータ・ストリームを受信するステップと、
各ネットワーク・インターフェース・カードに対する複数の第１のスレッドで走る第１のプロセスを用いて、前記データ・ストリームに対して、
前記データ・ストリームを複数のサブデータ・ストリームにパースすること、
前記複数のサブデータ・ストリームを複数のバッファ間に分配させること、
前記複数のサブデータ・ストリームのそれぞれの一部を共有メモリに格納すること、を含む動作を行うステップと、
第２の複数のプロセスの少なくとも１つの群を用いて、前記複数のサブデータ・ストリームに対して、
前記共有メモリから前記共有メモリに格納された前記サブデータ・ストリームの一部を読み出すこと、
前記共有メモリから読み出した前記サブデータ・ストリームの一部に対して統計を行い、前記統計をインターバル・ファイルに定期的に保存すること、
を含む動作を行うステップと、
を含み、
前記第１のプロセスと前記第２のプロセスが独立しており、且つ前記共有メモリを介して通信する、
方法。
【請求項２２】
データ・ストリームを管理するためのシステムであって、
データ・ストリームを受信する少なくとも１つのネットワーク・インターフェース・カードと、
前記ネットワーク・インターフェース・カードのうちの少なくとも１つに結合され、且つ前記データ・ストリームを複数のバッファ間に分配させる、第１のプロセッサであり、各ネットワーク・インターフェース・カードに対する複数の第１のスレッドを用いる第１のプロセスを走らせるように構成される第１のプロセッサと、
を備え、
前記複数の第１のプロセス・スレッドが、前記複数のバッファに格納されたデータにアクセスし、アクセスした前記データを処理し、処理した前記データを複数の共有メモリに格納する、
システム。
【請求項２３】
前記複数の第１のスレッドが、特定の特徴に関して１つ又は複数の前記バッファからアクセスされる前記データをフィルタし、特定の特徴を有するデータを特定の共有メモリに保存する、請求項２２に記載のシステム。
【請求項２４】
前記第１のプロセッサが、前記ネットワーク・カードによって受信された前記データ・ストリームのコピーを分配させ、前記コピーを前記複数のバッファのうちの１つに格納する、請求項２２に記載のシステム。
【請求項２５】
前記共有メモリからデータを読み出す第２の複数のプロセスの少なくとも１つの群をさらに備え、前記第２の複数のプロセスの少なくとも１つの群のそれぞれが第２のスレッドのうちの少なくとも１つの群を用いる、請求項２２に記載のシステム。
【請求項２６】
前記第２の複数のプロセスの少なくとも１つの群が、データを解析してインメモリ・インターバル統計を生成し、前記統計をインターバル・ファイルに定期的に保存する、請求項２２に記載のシステム。
【請求項２７】
前記共有メモリがキューである、請求項２２に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
ネットワーキングでは、コンピュータは、ネットワーキングの目的のために設計される共有のチャネルを通して情報を送受信することによって互いに通信する。コンピュータ上にインストールされるハードウェア・デバイスであるネットワーク・インターフェース・カード（ＮＩＣ）は、ネットワーキングを可能にするため及びコンピュータのユーザによって維持されるネットワーキングの好みの設定をサポートするために用いられる。例えば、ＮＩＣは、それがインストールされるコンピュータにＭＡＣ（媒体アクセス制御（ｍｅｄｉａ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ））と呼ばれる独自のアドレスを割り当てるのに用いられる。ＮＩＣはまた、ＭＡＣアドレスを用いてコンピュータの間で情報を渡すリレーのように振る舞うハブ又はスイッチを含む。ＮＩＣは、入ってくるデータ・ストリームを受信するためにコンピュータによって用いられる。
【背景技術】
【０００２】
ほとんどのオペレーティング・システムは、ＮＩＣに入ってくるすべてのパケットを読み出すための汎用ユーティリティを含むので、コンピュータは、普通は、この汎用ユーティリティを用いてインストールされたＮＩＣを作動させる。アプリケーションは、典型的に、オペレーティング・システムに提供されている様に汎用ユーティリティを用いること又は同様のユーティリティを用いることのいずれかによって、この汎用ユーティリティを組み込む。これ背景に於いて、入ってくるデータ・ストリームの典型的な処理は、パケットを受信すること、パケットを検査すること、及びパケットに関する情報を有する幾つかのメインメモリ・データ構造（単数又は複数）を維持することを含むであろう。図１は、この処理を例証する。
【０００３】
図１では、複数の中央処理装置を備えたコンピュータ１１０が、３つの異なるプロセス、すなわちプロセスＩ（１４０ａ）、プロセスＩＩ（１４０ｂ）、及びプロセスＩＩＩ（１４０ｃ）を用いて処理される３つのフルパケット・データ・ストリーム１２０ａ、１２０ｂ、及び１２０ｃを受信する。３つのプロセス１４０ａ、１４０ｂ、及び１４０ｃは独立したプロセスである。従来技術のアーキテクチャに関連した幾つかの欠点がある。第１に、一つ以上のフルボア・ネットワーク・インターフェース・パケット取り込みプロセスを走らせることから結果として生じる能率の悪さが存在する。例えば、こうしたストリームを取り扱うのに多大なコンピュータ処理リソースが要求される。各プロセスが別個のものである場合、複数のアプリケーションを走らせるために必要なコンピュータ・リソースが実行可能ではない程に急増する。第２の欠点は、メインメモリ・データ構造をディスク・ファイルにダンプする必要性から生じる。ダンピング・プロセス中に、アプリケーションによってパケットが落とされ、カウントされないことがある。これらの欠点は、コンピュータ上で同時に走る複数の独立したプロセス及びアプリケーションが存在するときにデータを監視するのに要求される大きなリソースに起因して、入ってくるデータが監視されるときに問題を引き起こす。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、落とされるデータ、ハードウェア／ソフトウェア費用、運転費用、及びネットワーク費用を低減させながら、データ監視機能を強化し且つパケットのストリームを効率よく取り込み及び処理する、コンピュータ・アーキテクチャが望まれる。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、ハードウェア／ソフトウェア費用、運転費用、及びネットワーク費用を低減させながらデータ監視機能を強化することによってデータ・ストリームを効率よく管理するための技術を提供する。データ・ストリームは、それぞれが高速パケット取り込み及びフィルタリングを用いる少なくとも２つの異なるアプリケーションを１つのマシンに組み合わせる機構を提供することによって管理される。
【０００６】
本発明の実施形態では、共有メモリを介して通信する２つの別個のプロセスが導入されるようにソフトウェア・プロセス及びスレッドが１つのマシン上で構築される。第１のプロセスは、ネットワークとインターフェースするすべてのパケットを取り扱い、第２のプロセスは、ディスク・ファイルへの統計の保存を取り扱う。したがって、第２のプロセスが統計をディスク・ファイルにダンピングしている間に、第１のプロセスは依然としてパケットを取り込み、これらをその後の検査のためにバッファに入れる。第１のプロセスと第２のプロセスは非同期である。加えて、第１のプロセスは、各アプリケーション用の独立したバッファを有することができる。共有メモリはメッセージ・キューとすることができる。
【０００７】
本発明の実施形態によれば、データ・ストリームを管理するための方法は、少なくとも１つのネットワーク・インターフェース・カード（ＮＩＣ）上でデータ・ストリームを受信すること、及び各ネットワーク・インターフェース・カードに対する幾つかの第１のスレッドで走る第１のプロセスを用いてデータ・ストリームに対して動作を行うことを含む。幾つかの第１のスレッドで走る第１のプロセスを用いて行われる動作は、データ・ストリームの複数のコピーを生成すること、データ・ストリームの複数のコピーを第１のプロセスによって用いられる複数のバッファ間に分配させること、及びデータ・ストリームの複数のコピーのそれぞれの一部を共有メモリに格納することを含む。方法はまた、それぞれが第２のスレッドの随意的な群を有する第２の複数のプロセスの少なくとも１つの群を用いて、データ・ストリームの処理された一部に対して付加的な動作を行うことを含む。付加的な動作は、インメモリ・インターバル解析を行って統計を生成することができる第２のプロセスによって用いられることになる共有メモリからのデータを読み出すこと、及び統計をインターバル・ファイルに定期的に保存することを含む。第１のプロセスと第２の複数のプロセスの１つ又は複数の群は独立しており、且つ共有メモリを介して通信する。各ネットワーク・インターフェース・カードに対する第１のスレッドは、第２のスレッドの随意的な群とは異なるものとすることができる。
【０００８】
データ・ストリームの複数のコピーのそれぞれは、複数のバッファのうちの別個の１つに格納することができる。さらに、データ・ストリームの複数のコピーの各部分は、別個の共有メモリに格納することができる。
【０００９】
本発明の別の実施形態によれば、データ・ストリームを管理するためのシステムは、データ・ストリームを受信する少なくとも１つのネットワーク・インターフェース・カードと、ネットワーク・インターフェース・カードのうちの少なくとも１つに結合され、且つデータ・ストリームを１つ又は複数のバッファ間に分配させる第１のプロセッサとを含む。第１のプロセッサは、各ネットワーク・インターフェース・カードに対する１つ又は複数の第１のスレッドを用いて第１のプロセスを走らせるように構成される。１つ又は複数の第１のスレッドは、１つ又は複数のバッファに格納されたデータにアクセスし、アクセスしたデータを処理し、処理したデータを１つ又は複数の共有メモリに格納する。１つ又は複数の第１のスレッドは、特定の特徴に関して１つ又は複数のバッファからアクセスされるデータをフィルタし、特定の特徴を有するデータを特定の共有メモリに保存することができる。第１のプロセッサは、ネットワーク・カードによって受信されたデータ・ストリームのコピーを分散させ、コピーをバッファのうちの１つに格納することができる。システムは、共有メモリからデータを読み出す第２の複数のプロセスの少なくとも１つの群をさらに含む。第２の複数のプロセスの少なくとも１つの群のそれぞれは、第２のスレッドの随意的な群を用いることができる。第２のスレッドの群は、データを解析してインメモリ・インターバル統計を生成し、統計をインターバル・ファイルに定期的に保存するために用いることができる。共有メモリはキューとすることができる。第１のプロセスと第２の複数のプロセスの１つ又は複数の群は独立しており、且つ共有メモリを介して通信する。
【００１０】
以下に提供される詳細な説明から本開示の適用可能性のさらなる分野が明らかとなるであろう。詳細な説明及び特定の例は、種々の実施形態を示しているが、例証することのみを意図され、必然的に本開示の範囲を限定することを意図されないことを理解されたい。
【００１１】
本発明の性質及び利点のさらなる理解は、以下に提示される明細書の残りの部分と図面を参照することによって実現される場合がある。図面は、本発明の詳細な説明の部分に組み込まれる。
【図面の簡単な説明】
【００１２】
【図１】コンピュータ・システムにおいてパケットを受信し及びルーティングするための従来技術のアーキテクチャを例示するブロック図である。
【図２】本発明の実施形態に係る２つのプロセスを用いてコンピュータ・システムにおいてパケットを受信し及びルーティングするためのアーキテクチャを例示するブロック図である。
【図３】本発明の実施形態に係るデータをソートし／マージし／結合するためのアーキテクチャを例示するブロック図である。
【図４】本発明の実施形態に係るデータ・ストリームを管理する方法を例示するフローチャートである。
【図５】本発明の実施形態に係る図４からの動作４１０のさらなる詳細を例示するフローチャートである。
【図６】本発明の実施形態に係る図４からの動作４１５のさらなる詳細を例示するフローチャートである。
【図７】本発明の実施形態に係るデータ・ストリームを管理する方法を例示するフローチャートである。
【図８】本発明の実施形態に係るデータを管理する方法を例示するフローチャートである。
【発明を実施するための形態】
【００１３】
以下の説明では、解説する目的で、本発明の十分な理解を提供するために具体的な詳細が記載される。しかしながら、本発明はこれらの具体的な詳細なしに実施されてもよいことが明らかとなるであろう。
【００１４】
本発明の実施形態は、ハードウェア／ソフトウェア費用、運転費用、及びネットワーク費用を低減させながらデータ監視機能を強化することによってデータ・ストリームを効率よく管理するためのシステム及び方法を提供する。監視は、高速パケット取り込み及びフィルタリングを用いる少なくとも２つの異なるアプリケーションを１つのマシンに組み合わせることによって強化される。本発明は、ネットワーク・インターフェース・カードを通じてマシンに到着するデータ・ストリームを効率よく管理するシステム及び方法を提供することによって、これらの費用を低減させる。本発明は、他のコアを減速させる又はシャットダウンすることなく１つのコアを通じてデータの効率的な処理を可能にするので、マルチコア（例えば８つのコア）を有するマシンに特に有用である。さらに、本発明はすべての製品の監視機能を強化する。
【００１５】
本発明の実施形態では、メッセージ・キューのような共有メモリを介して通信する２つの別個のプロセスが導入されるように、ソフトウェア・プロセス及びスレッドが１つのマシン上で構築される。第１のプロセスは、ネットワークとインターフェースするすべてのデータ・パケットを取り扱い、第２のプロセスは、データ・パケットを解析し、統計を生成する。ネットワークとインターフェースするすべてのデータ・パケットを取り扱うのに第１のプロセスを用いることは、各アプリケーション用の複数のインターフェースを維持することのオーバーヘッドをなくす。第１のプロセスがデータ・パケットを取り込み、これらをその後の検査のためにバッファに保存する際に、第２のプロセスは、第１のプロセスを減速させることなく、データ・パケットに関する統計をコンパイルし、これらの統計をディスク・ファイルに保存する。第１のプロセスと第２のプロセスは、キューのような共有メモリを介して通信する。加えて、第１のプロセスは、各アプリケーション用の独立したバッファを有することができる。このアーキテクチャは、落とされるパケットがないようにし、又はその数を減らす。
【００１６】
本発明の実施形態は、ハードウェア、ソフトウェア、又はこれらの組合せに実装されてもよい。本発明のコンポーネントは、少なくとも１つのネットワーク・インターフェース・カード（ＮＩＣ）を使用して処理のための情報を取り扱うように構成される独立型システムとして組み込まれてもよい。本発明のコンポーネントはまた、ＮＩＣを使用して処理のためのネットワークから受信される情報をシステム（単数又は複数）が受信し及び取り扱うことを可能にする、１つ又は複数のシステム（分散されていてもよい）に組み込まれてもよい。例えば、本発明の実施形態は、それによってネットワーク・デバイスがＮＩＣを使用してＩＰアドレスを受信及び処理できるようにする、スイッチ又はルータのようなネットワーク・デバイスに組み込まれてもよい。
【００１７】
図２は、２つのプロセスを用いてコンピュータ・システムにおいてパケットを受信し及びルーティングするためのアーキテクチャを例示するブロック図である。アーキテクチャは、共有メモリ２１５ａ、２１５ｂ、及び２１５ｃを通して互いに通信する第１のプロセス２０５と第２のプロセス２１０とを含む。図３は、３つの共有メモリ２１５ａ、２１５ｂ、及び２１５ｃを例証するが、共有メモリの数はＮとすることができ、この場合、Ｎは１以上の有限の値である。第１のプロセス２０５は、フルパケット・データ・ストリーム２２０を受信し、データ・ストリーム２２０をパケット分布モジュール２２５を通して分散させる。データ・ストリーム２２０は、異なるデータ・タイプを格納するなどの特定の目的のために構成することができる１つ又は複数のパケット・バッファ２３０ａ、２３０ｂ、及び２３０ｃに分散される。例えば、図２は、「タイプＡ用のパケット・バッファ」２３０ａ、「タイプＢ用のパケット・バッファ」２３０ｂ、及び「タイプＣ用のパケット・バッファ」２３０ｃとして指定される３つのパケット・バッファを例証する。パケット・バッファ２３０ａ、２３０ｂ、及び２３０ｃのそれぞれは、タイプＡ、タイプＢ、又はタイプＣとして識別されるデータ・ストリーム２２０の一部だけの格納専用とすることができる。パケット分布モジュール２２５は、入ってくるフルパケット・データ・ストリームをタイプＡ、Ｂ、及びＣにパースし、データを適切なパケット・バッファ２３０ａ、２３０ｂ、及び２３０ｃにプッシュする。代替的な実施形態では、タイプＡ用のパケット・バッファ２３０ａ、タイプＢ用のパケット・バッファ２３０ｂ、及びタイプＣ用のパケット・バッファ２３０ｃのそれぞれは、同一の情報を格納するのに用いることができ、この場合、パケット分布モジュール２２５は、パケット・バッファ２３０ａ、２３０ｂ、及び２３０ｃのそれぞれに同じデータをプッシュする。
【００１８】
フィルタ２３５ａ、２３５ｂ、及び２３５ｃのそれぞれは、パケット・バッファ２３０ａ、２３０ｂ、及び２３０ｃのそれぞれからデータをプルするのに用いられる。プルされたデータは、次いで、特定のタイプのデータを通すようにフィルタされる。例えば、タイプＡ用のフィルタ２３５ａは、タイプＡのデータだけがプルされるようにデータをフィルタすることができる。同様に、タイプＢ用のフィルタ２３５ｂは、タイプＢのデータだけがプルされるようにデータをフィルタすることができ、タイプＣ用のフィルタ２３５ｃは、タイプＣのデータだけがプルされるようにデータをフィルタすることができる。フィルタ２３５ａ、２３５ｂ、及び２３５ｃによってデータがプルされ及びフィルタされると、フィルタされたデータが共有メモリ２１５ａ、２１５ｂ、及び２１５ｃにプッシュされる。共有メモリは、別個の共有メモリ２１５ａ、２１５ｂ、及び２１５ｃを含むことができ、これらはそれぞれ、フィルタ２３５ａ、２３５ｂ、及び２３５ｃによってフィルタされたデータを格納するのに用いられる。したがって、共有メモリ２１５ａは、「タイプＡ用のフィルタ」２３５ａによってそれにプッシュされているタイプＡのデータを格納する。同様に、共有メモリ２１５ｂは、「タイプＢ用のフィルタ」２３５ｂによってそれにプッシュされているタイプＢのデータを格納し、共有メモリ２１５ｃは、「タイプＣ用のフィルタ」２３５ｃによってそれにプッシュされているタイプＣのデータを格納する。
【００１９】
第２のプロセス２１０は、共有メモリ２１５ａ、２１５ｂ、及び２１５ｃからデータをプルし、このデータを処理し、処理したデータをファイルに定期的にダンプする。第２のプロセス２１０は、共有メモリ２１５ａからデータをプルする第１のサブ処理モジュール２４０ａと、共有メモリ２１５ｂからデータをプルする第２のサブ処理モジュール２４０ｂと、共有メモリ２１５ｃからデータをプルする第３のサブ処理モジュール２４０ｃとを含む。サブ処理モジュール２４０ａは、タイプＡのデータを収容する共有メモリ２１５ａからプルされるタイプＡのデータを処理するためのタイプＡモジュール２４５ａと、処理されたタイプＡのデータに対して統計的解析を行うためのインメモリ・インターバル統計モジュール２５０ａとを含む。サブ処理モジュール２４０ｂは、タイプＢのデータを収容する共有メモリ２１５ｂからプルされるタイプＢのデータを処理するためのタイプＢモジュール２４５ｂと、処理されたタイプＢのデータに対して統計的解析を行うためのインメモリ・インターバル統計モジュール２５０ｂとを含む。サブ処理モジュール２４０ｃは、タイプＣのデータを収容する共有メモリ２１５ｃからプルされるタイプＣのデータを処理するためのタイプＣモジュール２４５ｃと、処理されたタイプＣのデータに対して統計的解析を行うためのインメモリ・インターバル統計モジュール２５０ｃとを含む。サブ処理モジュール２４０ａ、２４０ｂ、及び２４０ｃによってデータが処理された後で、処理されたデータは、図３を参照して以下でさらに説明されるようにファイルに定期的にダンプされる。
【００２０】
図２で例証されるアーキテクチャは、複数の中央処理装置（ＣＰＵ）を有する１台のコンピュータに対するものとすることができる。第１のプロセス２０５は、タイプＡ、Ｂ、及びＣに対する異なるサブスレッドにより単一のプロセスＩを走らせることができる。第２のプロセス２１０はまた、タイプＡ、Ｂ、及びＣに対する異なるサブスレッドにより単一のプロセスＩＩを走らせることができる。
【００２１】
一実施形態では、第１のプロセス２０５は、各ネットワーク・インターフェース・カードに対する少なくとも１つのサブスレッドで走る第１のプロセスを用いて、１つ又は複数のネットワーク・インターフェース・カード上で受信されるデータ・ストリーム上で動作を行う。受信されるデータの一部は、少なくとも１つ又は複数のサブスレッドによる処理のためにパケット・バッファ２３０ａ、２３０ｂ、及び２３０ｃ間に分散される。パケット・バッファ２３０ａ、２３０ｂ、及び２３０ｃに格納されたデータの一部は、次いで、少なくとも１つ又は複数のサブスレッドのうちの１つである専用の第１のプロセス・サブスレッドにより処理される。データの処理された一部は、次いで、共有メモリ２１５ａ、２１５ｂ、及び２１５ｃに格納される。第２のプロセス２１０は、次いで、それぞれが第２のスレッドの随意的な群を有する第２の複数のサブプロセス２４０ａ、２４０ｂ、及び２４０ｃのうちの少なくとも１つの群を用いてデータ・ストリームの処理された一部に対して動作を行う。第２の複数のサブプロセス２４０ａ、２４０ｂ、及び２４０ｃは、次いで、それぞれの共有メモリ２１５ａ、２１５ｂ、及び２１５ｃからデータをプルし、専用の第２のプロセス・スレッドによりデータの処理された一部のそれぞれを処理する。第１のプロセスと第２の複数のサブプロセスの１つ又は複数の群は独立しており、且つ共有メモリを介して通信する。加えて、各ネットワーク・インターフェース・カードに対するサブスレッドは、第２のスレッドの随意的な群とは異なるものとすることができる。
【００２２】
図２はまた、メッセージ・キューのような共有メモリを介して通信する２つの別個のプロセスが導入されるように、ソフトウェア・プロセス及びスレッドが１つのマシン上でどのように構築されるかの実施形態を例示する。第１のプロセスは、ネットワークとインターフェースするすべてのデータ・パケットを取り扱い、第２のプロセスは、データ・パケットを解析し、統計を生成する。ネットワークとインターフェースするすべてのデータ・パケットを取り扱うのに第１のプロセスを用いることは、各アプリケーション用の複数のインターフェースを維持することの膨大なオーバーヘッドをなくす。第１のプロセスがデータ・パケットを取り込み、これらをその後の検査のためにバッファに保存する際に、第２のプロセスは、第１のプロセスを減速させることなく、データ・パケットに関する統計をコンパイルし、これらの統計をディスク・ファイルに保存する。第１のプロセスと第２のプロセスは、キューのような共有メモリを介して通信する。加えて、第１のプロセスは、各アプリケーション用の独立したバッファを有することができる。このアーキテクチャは、落とされるパケットがないようにし、又はその数を減らす。
【００２３】
図３は、サブ処理モジュール２４０ａ、２４０ｂ、及び２４０ｃによってファイルに定期的にダンプされるデータをソートし／マージし／結合するためのアーキテクチャを例示するブロック図である。図３は、インターバル・ファイル３０５ａ、３０５ｂ、及び３０５ｃにそれぞれ定期的にダンプされるタイプＡ、Ｂ、及びＣのデータを例証する。ソート／マージ／結合処理モジュール３１０ａは、次いで、インターバル・ファイル３０５ａに格納されたデータをプルし、データがソートされ／マージされ／結合されるようにデータを処理し、次いで、ソートされ／マージされ／結合されたデータを、ソートされ／マージされ／結合されたファイル３１５ａにプッシュし、そこにデータが格納される。ソート／マージ／結合処理モジュール３１０ａは、ソート機能、マージ機能、又は結合機能、並びに他の機能のうちのいずれか又はすべてを行うことができる。同様に、ソート／マージ／結合処理モジュール３１０ｂ及び３１０ｃはまた、それぞれインターバル・ファイル３０５ｂ及び３０５ｃに格納されたデータをプルし、データがソートされ／マージされ／結合されるようにデータを処理し、次いで、ソートされ／マージされ／結合されたデータを、ソートされ／マージされ／結合されたファイル３１５ｂ及び３１５ｃにプッシュし、そこにデータが格納される。ソート／マージ／結合処理モジュール３１０ｂ及び３１０ｃはまた、ソート機能、マージ機能、又は結合機能、並びに他の機能のうちのいずれか又はすべてを行うことができる。ファイル転送リング３２０ａは、次いで、ソートされ／マージされ／結合されたファイル３１５ａからデータをプルし、プルしたデータをさらなる処理のために外にプッシュする。同様に、ファイル転送リング３２０ｂ及び３２０Ｃはまた、それぞれソートされ／マージされ／結合されたファイル３１５ｂ及び３１５ｃからデータをプルし、プルしたデータをさらなる処理のために外にプッシュする。
【００２４】
図４は、本発明の実施形態に係るデータ・ストリームを管理する方法を例示するフローチャートである。方法は、少なくとも１つのネットワーク・インターフェース・カードがデータ・ストリームを受信するときに動作４０５で始まる。４１０で、各ネットワーク・インターフェース・カードに対する複数の第１のスレッドで走る第１のプロセスがデータ・ストリームを処理する。動作４１０で行われる処理は、図５を参照して以下で詳細に論じられる。次の動作４１５で、データ・ストリームの処理された一部が、第２の複数のプロセスの少なくとも１つの群を用いて再び処理され、この場合、各プロセスは第２のスレッドの随意的な群を有する。動作４１５で行われる処理は、図６を参照して以下で詳細に論じられる。第１のプロセスと第２の複数のプロセスの１つ又は複数の群は独立しており、且つ共有メモリを介して通信する。加えて、各ネットワーク・インターフェース・カードに対するサブスレッドは、第２のスレッドの群とは異なるものとすることができる。
【００２５】
図５は、本発明の実施形態に係るデータ・ストリームを管理するのに用いられる図４からの動作４１０のさらなる詳細を例示するフローチャートである。動作５０５で、受信されるデータ・ストリームの一部が、第１のスレッドによる処理のために複数のバッファ間に分配され、バッファに格納される。幾つかの実施形態では、データ・ストリームの一部のそれぞれが複数のバッファのうちの別個の１つに格納される。他の実施形態では、同じデータ・ストリームの複製が複数のバッファの各自に格納される。次の動作５１０で、バッファのそれぞれに格納されたデータが専用の第１のプロセス・スレッドを用いて読み出される。専用の第１のプロセス・スレッドは第１のスレッドの群から選定される。動作５１５で、バッファから読み出されたデータが、データ・ストリームの処理された一部を生成するために同じ専用の第１のプロセス・スレッドを用いてフィルタされる。動作５２０で、フィルタされたデータを、プロセス・スレッドの同じ群を用いて再び処理することができる。次の動作５２５で、データ・ストリームの処理された一部のそれぞれが、専用共有メモリのうちの１つに格納される。幾つかの実施形態では、データ・ストリームの処理された一部のそれぞれが別個の共有メモリに格納される。代替的に、異なる専用の第１のプロセス・スレッドを用いてデータを読み出し、フィルタし、及び処理することができる。
【００２６】
図６は、本発明の実施形態に係るデータ・ストリームを管理するのに用いられる図４からの動作４１５のさらなる詳細を例示するフローチャートである。動作６０５で、動作５２５の間に専用共有メモリのうちの１つに格納されたデータ・ストリームの処理された一部が専用の第２のプロセス・スレッドにより読み出される。専用の第２のプロセス・スレッドは、第２のプロセス・スレッドの群からのスレッドのうちの１つである。次の動作６１０で、データ読み出しに対して統計的解析が行われる。統計的解析は、同じ専用の第２のプロセス・スレッドにより又は第２のプロセス・スレッドの群からのスレッドのうちの別の１つにより行うことができる。統計的解析はまた統計データを生成する。動作６１５で、統計データがインターバル・ファイルに定期的に保存される。ファイルへの統計データの定期的な保存は、ユーザが構成することができ、例えば、１日に１回又は１時間に１回とすることができる。別の実施形態では、統計データは、統計データのサイズが或る閾値に達するときにインターバル・ファイルに定期的に保存することができる。
【００２７】
図５〜図６を参照して説明される実施形態では、第１のプロセスと、それぞれが第２のスレッドの随意的な群を有する第２の複数のプロセスの１つ又は複数の群は独立しており、且つ共有メモリを介して互いに通信する。各ネットワーク・インターフェース・カードに対する第１のスレッドの組は、第２のスレッドの随意的な群とは異なるものとすることができる。幾つかの実施形態では、第１のプロセスと第２の複数のサブプロセスの１つ又は複数の群は非同期である。
【００２８】
図７は、本発明の実施形態に係るデータ・ストリームを管理する別の方法を例示するフローチャートである。方法は、少なくとも１つのネットワーク・インターフェース・カードがデータ・ストリームを受信するときに動作７０５で始まる。動作７１０で、受信したデータ・ストリームの複数のコピーが生成される。次の動作７１５で、データ・ストリームの複数のコピーが複数のバッファに分配される。次いで、複数のバッファが読み出され、各ネットワーク・インターフェース・カードに対する複数の第１のスレッドで走る第１のプロセスを用いて、データが処理される。バッファから読み出されたデータは、データ・ストリームの処理された一部を生成するために、同じ第１のスレッドを用いてフィルタされる。幾つかのスレッドが同時に走っている場合、複数のバッファのそれぞれからのデータは、各スレッドによって読み出し、次いで、特定のタイプのデータだけが各スレッドによって通過を許されるように各スレッドによってフィルタすることができる。このフィルタリング・プロセスは、各スレッドが特定のタイプのデータだけを処理するようにデータ・ストリームをパースするのに用いることができる。動作７２０で、データ・ストリームの処理された一部が、次いで、専用共有メモリのうちの１つに格納される。各スレッドは異なるタイプのデータをフィルタで除去するので、複数の共有メモリのそれぞれを、すべて元のデータ・ストリームの一部である特定のタイプのデータを格納するのに用いることができる。特定のタイプのデータを読み出し及びフィルタするのに用いられるスレッドは、特定のタイプのデータに専用とすることができる。例えば、１つのスレッドを、データを読み出す、タイプＡのデータに対するデータをフィルタする、及びタイプＡのデータを共有メモリに格納するために用いることができる。同様に、別のスレッドを、データを読み出す、タイプＢのデータに対するデータをフィルタする、及びタイプＢのデータを共有メモリに格納するために用いることができる。これは、Ｎが１以上の有限の値であるＮ個のスレッドを、データを読み出す、Ｎ個のタイプのデータに対するデータをフィルタする、及びＮ個のタイプのデータをＮ個の異なる共有メモリに格納するために用いることができるように一般化することができる。
【００２９】
動作７２５で、共有メモリに格納されたデータ・ストリームの処理された一部が、それぞれが第２のスレッドの随意的な群を有する第２の複数のサブプロセスのうちの少なくとも１つの群を用いて読み出される。共有メモリのそれぞれは、第２のスレッドとは異なる又は専用のスレッドにより読み出すことができる。次の動作７３０で、共有メモリから読み出されたデータ・ストリームの一部に対して統計的解析が行われる。統計的解析は、共有メモリからデータを読み出すのに用いられるのと同じスレッドにより又は第２のプロセス・スレッドの群からのスレッドのうちの別の１つにより行うことができる。特定の共有メモリに格納されたデータを読み出し及び／又は解析するのに用いられるスレッドは、専用の第２のプロセス・スレッドとすることができる。統計的解析はまた統計データを生成する。動作７３５で、統計データがインターバル・ファイルに定期的に保存される。ファイルへの統計データの定期的な保存は、ユーザが構成することができ、例えば、１日に１回又は１時間に１回とすることができる。別の実施形態では、統計データは、統計データのサイズが或る閾値に達するときにインターバル・ファイルに定期的に保存することができる。
【００３０】
図７を参照して説明される実施形態では、第１のプロセスと、それぞれが第２のスレッドの随意的な群を有する第２の複数のプロセスの１つ又は複数の群は、独立しており、且つ共有メモリを介して互いに通信する。各ネットワーク・インターフェース・カードに対する第１のスレッドの組は、第２のスレッドの随意的な群とは異なるものとすることができる。幾つかの実施形態では、第１のプロセスと第２の複数のプロセスの１つ又は複数の群は非同期である。
【００３１】
図８は、本発明の実施形態に係るデータ・ストリームを管理する別の方法を例示するフローチャートである。方法は、少なくとも１つのネットワーク・インターフェース・カードがデータ・ストリームを受信するときに動作８０５で始まる。動作８１０で、各ネットワーク・インターフェース・カードに対する少なくとも１つの第１のスレッドで走る第１のプロセスが、受信したデータ・ストリームを処理し、処理したデータ・ストリームを編成し、処理したデータ・ストリームをフィルタし、処理したデータ・ストリームを共有メモリに格納する。次の動作８１５で、共有メモリに格納されたデータが、各プロセスが第２のスレッドの随意的な群を有する第２の複数のプロセスの少なくとも１つの群を用いて再び処理される。第２のスレッドの群からの少なくとも１つのスレッドを用いて、共有メモリからデータを読み出し、共有メモリに関する統計を生成する。複数の共有メモリが存在する場合、共有メモリのそれぞれは、第２のスレッドとは異なる又は専用のスレッドにより読み出すことができる。動作８２０で、生成された統計がインターバル・ファイルに定期的に保存される。ファイルへの生成された統計の定期的な保存は、ユーザが構成することができ、例えば、１日に１回又は１時間に１回とすることができる。別の実施形態では、生成された統計は、統計データのサイズが或る閾値に達するときにインターバル・ファイルに定期的に保存することができる。動作８２５で、データがインターバル・ファイルから読み出され、ソートされ、マージされ、結合される。
【００３２】
図８を参照して説明される実施形態では、第１のプロセスと、それぞれが第２のスレッドの随意的な群を有する第２の複数のプロセスの１つ又は複数の群は、独立しており、且つ共有メモリを介して互いに通信する。各ネットワーク・インターフェース・カードに対する第１のスレッドの組は、第２のスレッドの随意的な群とは異なるものとすることができる。幾つかの実施形態では、第１のプロセスと第２の複数のプロセスの１つ又は複数の群は非同期である。
【００３３】
本発明の実施形態によれば、データ・ストリームを管理するための方法は、少なくとも１つのネットワーク・インターフェース・カード上でデータ・ストリームを受信し、各ネットワーク・インターフェース・カードに対する複数の第１のスレッドで走る第１のプロセスを用いて、データ・ストリームに対して動作を行うことを含む。複数の第１のスレッドで走る第１のプロセスを用いて行われる動作は、複数の第１のスレッドによる処理のために複数のバッファ間にデータ・ストリームの一部を分配させること、複数のバッファのそれぞれに格納されたデータ・ストリームの一部のそれぞれを専用の第１のプロセス・スレッドにより処理すること、及びデータ・ストリームの処理された一部のそれぞれを複数の専用共有メモリのうちの１つに格納することを含む。専用の第１のプロセス・スレッドは、複数の第１のスレッドのうちの１つとすることができる。方法はまた、それぞれが第２のスレッドの随意的な群を有する第２の複数のプロセスの少なくとも１つの群を用いて、データ・ストリームの処理された一部に対して、共有メモリのそれぞれに格納されたデータ・ストリームの処理された一部のそれぞれを専用の第２のプロセス・スレッドにより処理することを含む付加的な動作を行うことを含む。専用の第２のプロセス・スレッドは第２のスレッドのうちの１つとすることができる。第１のプロセスと第２の複数のプロセスの１つ又は複数の群は独立しており、且つ共有メモリを介して通信することができる。各ネットワーク・インターフェース・カードに対する複数の第１のスレッドは、第２のスレッドの随意的な群とは異なるものとすることができる。
【００３４】
本発明の別の実施形態によれば、第１のプロセスの動作を行うことは、別個の複数の専用の第１のプロセス・スレッドを用いて、複数のバッファのそれぞれからデータの一部を読み出すこと、及びデータ・ストリームの処理された一部を生成するために、別個の複数の専用の第１のプロセス・スレッドを用いて複数のバッファのそれぞれからのデータ読み出しをフィルタリングすることをさらに含む。
【００３５】
本発明のさらに別の実施形態によれば、第１のプロセスと第２のプロセスは非同期である。
【００３６】
本発明のさらに別の実施形態によれば、複数のバッファのそれぞれが別個の及び異なる第１のプロセス・スレッドによってアクセスされる。
【００３７】
本発明のさらに別の実施形態によれば、データ・ストリームの一部のそれぞれが複数のバッファのうちの別個の１つに格納される。
【００３８】
本発明のさらに別の実施形態によれば、データ・ストリームの処理された一部のそれぞれが別個の共有メモリに格納される。
【００３９】
本発明の別の実施形態によれば、データ・ストリームを管理するための方法は、少なくとも１つのネットワーク・インターフェース・カード上でデータ・ストリームを受信し、各ネットワーク・インターフェース・カードに対する複数の第１のスレッドで走る第１のプロセスを用いて、データ・ストリームに対して動作を行うことを含む。複数の第１のスレッドで走る第１のプロセスを用いて行われる動作は、複数の第１のスレッドによる処理のために複数のバッファ間にデータ・ストリームの一部を分配させること、複数のバッファのそれぞれに格納されたデータ・ストリームの一部のそれぞれを専用の第１のプロセス・スレッドにより処理すること、及びデータ・ストリームの処理された一部のそれぞれを複数の専用共有メモリのうちの１つに格納することを含む。専用の第１のプロセス・スレッドは、複数の第１のスレッドのうちの１つとすることができる。方法はまた、それぞれが第２のスレッドの随意的な群を有する第２の複数のプロセスの少なくとも１つの群を用いて、データ・ストリームの処理された一部に対して、専用の第２のプロセス・スレッドにより共有メモリのそれぞれからデータ・ストリームの格納され処理された一部を読み出すことを含む動作を行うことを含む。専用の第２のプロセス・スレッドは、第２のスレッドの群のうちの１つとすることができる。方法はまた、共有メモリから読み出されたデータ・ストリームの処理された一部に対して専用の第２のプロセス・スレッドにより統計を行い、統計をインターバル・ファイルに定期的に保存することを含む。第１のプロセスと第２の複数のプロセスの少なくとも１つの群は独立しており、且つ共有メモリを介して通信することができる。
【００４０】
本発明のさらに別の実施形態によれば、データ・ストリームを管理するための方法は、少なくとも１つのネットワーク・インターフェース・カード上でデータ・ストリームを受信すること、各ネットワーク・インターフェース・カードに対する複数のスレッドで走る第１のプロセスによって用いられる複数のバッファ間にデータ・ストリームの一部を分配させること、及び各バッファに格納されたデータ・ストリームの一部をバッファに専用の特定のスレッドにより処理することを含む。各スレッドは、複数のバッファのうちの特定の１つからのデータを処理する。特定のスレッドは複数のスレッドのうちの１つとすることができる。方法は、処理したデータ・ストリームを指定された共有メモリに格納することをさらに含むことができる。
【００４１】
本発明のさらに別の実施形態によれば、データ・ストリームを管理するための方法は、少なくとも１つのネットワーク・インターフェース・カード上でデータ・ストリームを受信すること、及びデータ・ストリームの一部を複数のバッファ間に分配させることを含み、複数のバッファが複数の第１のプロセス・スレッドで走る第１のプロセスによってアクセスされ、第１のプロセス・スレッドのそれぞれが複数のバッファのうちの特定の１つからのデータを処理する。方法は、データ・ストリームの一部を指定された共有メモリに格納することをさらに含むことができる。方法は、複数の第２のプロセス・スレッドで走る第２のプロセスによって共有メモリからデータを読み出すことをさらに含むことができる。複数の第２のプロセス・スレッドはさらに、インメモリ・インターバル統計を行い、統計をインターバル・ファイルに定期的に保存することができる。第１のプロセスと第２のプロセスは非同期とすることができる。方法は、複数のバッファのそれぞれからのデータを処理するのに用いられるのと同じ第１のプロセス・スレッドを用いて、複数のバッファのそれぞれからデータを読み出すこと、及びデータ・ストリームの処理された一部を生成するために同じ第１のプロセス・スレッドを用いて複数のバッファからのデータ読み出しをフィルタリングすることをさらに含むことができる。データ・ストリームの分配された一部のそれぞれを複数のバッファのうちの別個の１つに格納することができる。データ・ストリームの分配された一部はまた別個の共有メモリに格納することができる。
【００４２】
本発明のさらに別の実施形態によれば、データ・ストリームを管理するための方法は、少なくとも１つのネットワーク・インターフェース・カード上でデータ・ストリームを受信し、各ネットワーク・インターフェース・カードに対する複数の第１のスレッドで走る第１のプロセスを用いて、データ・ストリームに対して動作を行うことを含む。複数の第１のスレッドで走る第１のプロセスを用いて行われる動作は、データ・ストリームを複数のサブデータ・ストリームにパースすること、複数のサブデータ・ストリームを複数のバッファ間に分配させること、複数のサブデータ・ストリームのそれぞれの一部を共有メモリに格納することを含む。方法は、それぞれが第２のスレッドの随意的な群を有する第２の複数のプロセスの少なくとも１つの群を用いて、複数のサブデータ・ストリームに対して付加的な動作を行うことをさらに含む。付加的な動作は、共有メモリから共有メモリに格納されたサブデータ・ストリームの一部を読み出すこと、共有メモリから読み出したサブデータ・ストリームの一部に対して統計を行うこと、及び統計をインターバル・ファイルに定期的に保存することを含むことができる。第１のプロセスと第２のプロセスは独立しており、且つ共有メモリを介して通信することができる。
【００４３】
本発明のさらに別の実施形態によれば、データ・ストリームを管理するためのシステムは、データ・ストリームを受信する少なくとも１つのネットワーク・インターフェース・カードと、ネットワーク・インターフェース・カードのうちの少なくとも１つに結合され、且つデータ・ストリームを複数のバッファ間に分配させる、第１のプロセッサとを含む。第１のプロセッサは、各ネットワーク・インターフェース・カードに対する複数の第１のスレッドを用いる第１のプロセスを走らせるように構成される。複数の第１のプロセス・スレッドは、複数のバッファに格納されたデータにアクセスし、アクセスしたデータを処理し、処理したデータを複数の共有メモリに格納する。複数の第１のスレッドは、特定の特徴に関して１つ又は複数のバッファからアクセスされるデータをフィルタし、特定の特徴を有するデータを特定の共有メモリに保存することができる。第１のプロセッサは、ネットワーク・カードによって受信されたデータ・ストリームのコピーを分配させ、コピーを複数のバッファのうちの１つに格納することができる。システムは、共有メモリからデータを読み出す第２の複数のプロセスの少なくとも１つの群をさらに含むことができる。第２の複数のプロセスの少なくとも１つの群のそれぞれは、第２のスレッドの随意的な群からの１つ又は複数の第２のスレッドを用いることができる。第２のスレッドの群は、データを解析してインメモリ・インターバル統計を生成し、統計をインターバル・ファイルに定期的に保存するために用いることができる。共有メモリはキューとすることができる。
【００４４】
本発明の特定の実施形態が説明されているが、種々の修正、変更、代替的構成、及び均等物も本発明の範囲内に包含される。説明された発明は、或る特定のデータ処理環境内の動作に制限されるものではなく、複数のデータ処理環境内で自由に動作する。加えて、本発明は、特定の一連のトランザクション及びステップを用いて説明されているが、本発明の範囲は説明された一連のトランザクション及びステップに限定されないことが当業者には明らかであろう。
【００４５】
さらに、本発明は、ハードウェア及びソフトウェアの特定の組合せを用いて説明されているが、ハードウェア及びソフトウェアの他の組合せもまた本発明の範囲内にあることを認識されたい。本発明は、ハードウェアにのみ、又はソフトウェアにのみ、若しくはこれらの組合せを用いて実装されてもよい。
【００４６】
明細書及び図面は、したがって、制限する意味ではなく例証する意味で受けとられるべきである。しかしながら、請求項に記載の本発明のより広い精神及び範囲から逸脱することなく、これらへの追加、差し引くこと、削除、並びに他の修正及び変化がなされてもよいことは明白であろう。
【図１】
2013508880.tif 000003
【図２】
2013508880.tif 000004
【図３】
2013508880.tif 000005
【図４】
2013508880.tif 000006
【図５】
2013508880.tif 000007
【図６】
2013508880.tif 000008
【図７】
2013508880.tif 000009
【図８】
2013508880.tif 000010
【国際調査報告】
2013508880.tif 000011