(57)【要約】【課題】ネットワーク・フローを解析する装置および方法を提供する。【解決手段】本発明は、ネットワーク・フローを解析する装置に関し、本装置には、ネットワーク・フローからフロー識別情報を抽出する構文解析器と、ネットワーク・フローを計測するフロー計測ユニットと、フロー計測ユニットおよび構文解析器を制御するプログラマブル・コントローラと、が含まれる。【選択図】図１
2010514313.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク・フローを解析する装置であって、前記装置は、
前記ネットワーク・フローからフロー識別情報を抽出する構文解析器と、
前記ネットワーク・フローを計測するフロー計測ユニットと、
前記フロー計測ユニットおよび前記構文解析器を制御するプログラマブル・コントローラと、
を含む、装置。
【請求項２】
前記フロー計測ユニットは、前記プログラマブル・コントローラへフロー状態情報を送信するように設けられ、前記プログラマブル・コントローラは、前記フロー状態情報に基づいて前記フロー計測ユニットへフロー計測命令を送信するように設けられる、請求項１に記載の装置。
【請求項３】
前記構文解析器は、前記プログラマブル・コントローラへ構文解析情報を送信するように設けられ、前記プログラマブル・コントローラは、前記構文解析情報に基づいて前記構文解析器へ構文解析命令を送信するように設けられる、請求項１または２に記載の装置。
【請求項４】
前記プログラマブル・コントローラが、
前記フロー計測ユニットの２つ以上のフロー状態情報値を並列に評価することと、
前記フロー計測ユニットへ２つ以上のフロー計測命令を並列に送信することと、
に向けて設けられる、請求項１乃至３のいずれか１項に記載の装置。
【請求項５】
前記プログラマブル・コントローラが、２つ以上のフロー計測プログラムを含んだプログラム・メモリを含む、請求項１乃至４のいずれか１項に記載の装置。
【請求項６】
前記プログラマブル・コントローラが、状態マシンとして実装される、請求項１乃至５のいずれか１項に記載の装置。
【請求項７】
前記状態マシンが、遷移規則メモリと、規則セレクタと、状態レジスタとを含み、前記規則セレクタは、外部入力信号と、前記現在の状態を示す、前記状態レジスタからの内部入力信号とを受信するように設けられ、さらに前記規則セレクタは、前記遷移規則メモリを用いて、遷移規則に関して前記内部および外部入力信号を観察し、遷移規則が適用されると、前記状態レジスタの前記状態を変え、構文解析命令またはフロー計測命令あるいはその両方を含んだ出力信号を生成するように設けられる、請求項６に記載の装置。
【請求項８】
前記フロー計測ユニットが、
フロー・テーブル・ユニットと
フロー・テーブル管理ユニットと、
フロー情報エクスポート・ユニットと、
を含む、請求項１乃至７のいずれか１項に記載の装置。
【請求項９】
前記フロー・テーブル管理ユニットが、前記フロー識別情報をハッシュ・インデックスにマップする選択可能な２つ以上のハッシュ関数を備えたプログラマブル・ハッシュ関数ユニットを含み、前記プログラマブル・コントローラは、前記選択可能なハッシュ関数のうちの１つを選択するように設けられる、請求項８に記載の装置。
【請求項１０】
前記プログラマブル・コントローラが、前記テーブル管理ユニットへテーブル管理コマンドを送信するように設けられる、請求項８または９に記載の装置。
【請求項１１】
前記装置が、ハードウェア支援デバイスとして実装される、請求項１乃至１０のいずれか１項に記載の装置。
【請求項１２】
中央処理装置と、メモリと、コンピュータ・ネットワーキング・デバイスとを含むコンピュータ・システムであって、前記コンピュータ・システムは、前記コンピュータ・ネットワーキング・デバイスにおける前記ネットワーク・フローを解析する、請求項１乃至１１のいずれか１項に記載の装置を含む、コンピュータ・システム。
【請求項１３】
前記装置は、前記中央処理装置に対するハードウェア支援装置としてハードウェアにより実現される、請求項１２に記載のコンピュータ・システム。
【請求項１４】
２つ以上の仮想コンピューティング・システムを含むコンピュータ・システムであって、前記コンピュータ・システムは、請求項１乃至１１のいずれか１項に記載の装置をさらに含み、前記装置は、前記仮想コンピューティング・システム相互間、または前記仮想コンピューティング・システムと外部デバイスとの間、あるいはその両方における前記ネットワーク・フローを解析するように設けられる、コンピュータ・システム。
【請求項１５】
前記コンピュータ・システムは、
前記仮想コンピューティング・システム相互間の内部通信用のソフトウェア・ネットワーキング・デバイスと、
前記仮想コンピューティング・システムと外部デバイスとの間の外部通信用のハードウェア・ネットワーキング・デバイスと、
を含み、
前記ソフトウェア・ネットワーキング・デバイスおよび前記ハードウェア・ネットワーキング・デバイスは、前記仮想コンピューティング・システム相互間、または前記仮想コンピューティング・システムと外部デバイスとの間、あるいはその両方における前記ネットワーク・フローを、解析に向けて前記装置へ転送するように設けられる、請求項１４に記載のコンピュータ・システム。
【請求項１６】
前記装置は、前記ハードウェア・ネットワーキング・デバイス内に配置される、請求項１５に記載のコンピュータ・システム。
【請求項１７】
ネットワーク・フローを解析する方法であって、前記方法は、
構文解析器を用いて前記ネットワーク・フローからフロー識別情報を抽出するステップと、
フロー計測ユニットを用いて前記ネットワーク・フローを計測するステップと、
プログラマブル・コントローラを用いて前記フロー計測ユニットおよび前記構文解析器を制御するステップと、
を含む、方法。
【請求項１８】
プログラマブル・コントローラ上のフロー計測プログラムを実行するための命令を含むフロー計測コンピュータ・プログラムであって、前記フロー計測コンピュータ・プログラムは、請求項１乃至１１のいずれか１項に記載の装置の前記フロー計測ユニットおよび前記構文解析器を制御するように備えられる、フロー計測コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク・フローを解析する装置、方法およびコンピュータ・プログラムに関する。
【背景技術】
【０００２】
例えばインターネット・プロトコル（ＩＰ：Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）によるネットワークなどの通信ネットワークは、複雑であり、ネットワーク・フローとも表されるエンド・ツー・エンド・ネットワーク・トラフィック・フローに関して解析および監視することは難しい。ネットワーク・フローを解析する既知のプロトコルは、現在インターネット技術標準化委員会（ＩＥＴＦ：Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）によって標準化されている、ＮｅｔＦｌｏｗプロトコルである。詳細は、http://www.ietf.org/html.charters/ipfix-charter.htmlにて、ＩＥＴＦのＩＰフロー情報エクスポート（ＩＰＦＩＸ：ＩＰ  Ｆｌｏｗ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｅｘｐｏｒｔ）で提供されている。
【０００３】
ＮｅｔＦｌｏｗプロトコルは、ネットワーク・アカウンティング、帯域幅使用分析、ネットワーク異常検出、トラフィック・エンジニアリング、および容量管理に関する技術を提供する。
【０００４】
ＮｅｔＦｌｏｗは、ルータ、スイッチ、計測機器、およびソフトウェア・ベースのトラフィック・メータにてサポートされる。一部のハイエンドのルータおよびスイッチは、専用のハードウェア拡張機能を用いてＮｅｔＦｌｏｗをサポートする。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＮｅｔＦｌｏｗまたはその他のネットワーク解析プロトコル用に、ルータまたはスイッチにおいて拡張機能を実現することは、そのルータまたはスイッチ固有の転送およびルーティング・アーキテクチャへ拡張機能を十分に統合させる必要があるため、一般に費用がかさむ。
【０００６】
本発明の目的は、ネットワーク・フロー解析のための、改善されたソリューションを提供することである。本発明のさらなる目的は、ネットワーク・フローを解析する改善された装置、改善された方法、改善されたコンピュータ・システム、ならびに改善されたコンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【０００７】
本発明は、独立請求項にて定義される装置、コンピュータ・システム、コンピュータ・プログラム、および方法を対象としている。本発明のさらなる実施形態は、追記される従属請求項にて提示する。
【０００８】
本発明の第１態様によれば、ネットワーク・フローを解析する装置が提供され、本装置は以下を含む。
−ネットワーク・フローからフロー識別情報を抽出する構文解析器
−ネットワーク・フローを計測するフロー計測ユニット
−フロー計測ユニットおよび構文解析器を制御するプログラマブル・コントローラ
【０００９】
本発明の本態様による装置のアーキテクチャは、数々の設定オプションをサポート可能なフロー計測機能の効率的でフレキシブルかつ迅速な実装を可能にする。上述の設定オプションは、現在の標準または将来的な標準の様々なバージョンを対象として含むと考えられる。本アーキテクチャは、単一の標準のみをサポートする固定的な測定機能およびインターフェースの不利点を伴わずに、高性能の利点を提供する。
【００１０】
本アーキテクチャのモジュール的アプローチは、ネットワーク・フローを受信しこのネットワーク・フローからフロー識別情報を抽出するように設けられる構文解析器を含む。構文解析器は、ネットワーク・フローから、フロー識別情報の任意の望ましい組み合わせを抽出するようにプログラムすることができる。フロー識別情報は、例えば、ネットワーク・フローのパケット・ヘッダのフィールドに含まれていると考えられる。一例として、個別のプロトコル標準に適切な対応するヘッダ・フィールドを抽出するように、構文解析器をプログラムすることができる。フロー識別情報は、例えば、発信元および宛先ＩＰアドレス、発信元および宛先ポート、ならびに解析されるネットワーク・フローのＩＰプロトコルなどを含むと考えられる。
【００１１】
フロー識別情報によって特定されるネットワーク・フローは、フロー計測ユニットによって計測される。フロー識別情報の計測には、例えば、各々のネットワーク・フローの開始および終了時のタイムスタンプ、各々のネットワーク・フローにて観察されたバイトおよびパケットの数、ならびに観察されたネットワーク・フローのその他各種の特性が含まれると考えられる。
【００１２】
フロー計測ユニットおよび構文解析器の双方は、プログラマブル・コントローラによって並列に制御される。プログラマブル・コントローラは、各々のアプリケーション環境、ネットワーク・フローの使用プロトコル標準（例えば、ＮｅｔＦｌｏｗ  ｖ５、ｖ７、ｖ９、ＩＰＦＩＸなど）、サポート対象となるフローの数、および各々のネットワークの速度に対して、個別にプログラムすることができる。従って、構文解析器およびフロー計測ユニットは、一般的なユニットである。こうした一般的なユニットの具体的な機能は、プログラマブル・コントローラによって指定される。
【００１３】
本発明の本態様の一実施形態によれば、フロー計測ユニットが、プログラマブル・コントローラへフロー状態情報を送信するように設けられ、さらに、プログラマブル・コントローラが、上記のフロー状態情報に基づいてフロー計測ユニットへフロー計測命令を送信するように設けられる。
【００１４】
フロー計測ユニットとプログラマブル・コントローラとの間の上述のような制御ループは、効率的で迅速かつフレキシブルなフロー計測のプロセスおよび処理を容易にする。
【００１５】
本発明の本態様の別の実施形態によれば、構文解析器が、プログラマブル・コントローラへ構文解析情報を送信するように設けられ、さらに、プログラマブル・コントローラが、上記の構文解析情報に基づいて構文解析器へ構文解析命令を送信するように設けられる。
【００１６】
構文解析器とプログラマブル・コントローラとの間の上述のような制御ループは、効率的で迅速かつフレキシブルな構文解析のプロセスおよび処理を容易にする。
【００１７】
本発明の本態様の別の実施形態によれば、プログラマブル・コントローラが以下のことを行うように設けられる。
−フロー計測ユニットの２つ以上のフロー状態情報値を並列に評価すること
−フロー計測ユニットへ２つ以上のフロー計測命令を並列に送信すること
【００１８】
上述のような並列処理構造は、効率的で迅速かつフレキシブルなフロー計測のプロセスおよび処理をさらに容易にする。
【００１９】
本発明の本態様の別の実施形態によれば、プログラマブル・コントローラが、２つ以上のフロー計測プログラムを含んだプログラム・メモリを含む。
【００２０】
２つ以上のフロー計測プログラムは、例えば、ネットワーク解析プロトコルの様々なバーション、様々なアプリケーション環境、サポート対象となるフローの様々な数、およびネットワークの様々な速度に対して、プログラムすることができる。
【００２１】
このことは、装置の設定およびアプリケーションを極めて速く簡単に変更することを可能にする。その上、これはフレキシブルでありかつ費用対効果の大きいソリューションである。
【００２２】
本発明の本態様の別の実施形態によれば、プログラマブル・コントローラが、プログラマブル状態マシンとして実装される。
【００２３】
プログラマブル・コントローラをプログラマブル状態マシンとして実装することは、フレキシブルでありかつ費用対効果の大きいソリューションである。
【００２４】
本発明の本態様の別の実施形態によれば、プログラマブル状態マシンが、遷移規則メモリと、規則セレクタと、状態レジスタとを含む。規則セレクタは、外部入力信号と、現在の状態を示す、状態レジスタからの内部入力信号とを受信するように設けられる。加えて規則セレクタは、遷移規則メモリを用いて、遷移規則に関して内部および外部入力信号を観察し、遷移規則が適用されると、状態レジスタの状態を変え、構文解析命令またはフロー計測命令あるいはその両方を含んだ出力信号を生成するように設けられる。
【００２５】
本実施形態は、プログラマブル状態マシンを実装する効率的な方法である。遷移規則メモリは、遷移規則のセットを保存するように設けられる。遷移規則のセットは、フロー計測プログラムを構築するとよい。ネットワーク解析プロトコルの様々なバージョン、様々なアプリケーション環境、サポート対象となるフローの様々な数、およびネットワークの様々な速度に対して、遷移規則の複数個のセットが遷移規則メモリの中へロードされると考えられる。
【００２６】
規則セレクタは、外部入力信号と、状態レジスタからの内部入力信号とを受信するように設けられる。状態レジスタからの内部入力信号は、プログラマブル状態マシンの現在の状態を示す。単数または複数の外部入力信号は、フロー計測ユニットまたは構文解析器あるいはその両方から受信される。状態マシンの外部入力信号は、フロー状態情報、構文解析情報、およびその他各種の情報を含むとよい。
【００２７】
規則セレクタは、遷移規則メモリを用いて、遷移規則に関して内部および外部の入力信号を観察する。所定の遷移規則が適用されたら、プログラマブル状態マシンは、状態レジスタの状態を変え、構文解析命令またはフロー計測命令あるいはその両方を含んだ出力信号を生成する。
【００２８】
言い換えれば、プログラマブル状態マシンは、所定の状態に関してフロー状態情報または構文解析情報あるいはその両方を観察する。上述の所定の状態が検出されると、状態マシンはその状態を変える。そのとき、状態マシンの変化している状態が、構文解析器またはフロー計測ユニットあるいはその両方に対する制御動作をトリガする。
【００２９】
本発明の本態様の別の実施形態によれば、フロー計測ユニットは以下を含む。
−フロー・テーブル・ユニット
−フロー・テーブル管理ユニット
−フロー情報エクスポート・ユニット
【００３０】
フロー・テーブル・ユニットは、本装置によって解析されるネットワーク・フローについての情報を保存するメモリを含む。フロー・テーブルは、例えば、５タプルの定義を使って、個別のネットワーク・フローを特徴付けると考えられる。言い換えれば、フロー・テーブルは、５タプルの定義によって特徴付けられる個別のネットワーク・フローそれぞれのエントリを提供すればよい。５タプルの定義の本例によれば、ネットワーク・フローは、同じ発信元および宛先ＩＰアドレス、同じ発信元および宛先ポート、ならびに同じＩＰプロトコルを有する、一連の単方向パケットとして定義される。
【００３１】
上述のようなエントリ各々に関し、フロー・テーブルは、例えば各々のネットワーク・フローの開始および終了時のタイムスタンプ、各々のネットワーク・フローにて観察されるバイトおよびパケットの数、ならびに観察されるネットワーク・フローのその他各種の特性などといった、フロー計測情報を保存するとよい。
【００３２】
フロー・テーブル管理ユニットは、フロー・テーブルのエントリを管理するように設けられる。フロー・テーブル管理ユニットは、プログラマブル・コントローラによって制御される。フロー・テーブル管理ユニットは、プログラマブル・コントローラから受信された様々なフロー計測命令を実行するように設けられるとよい。そのようなフロー計測命令には、フロー・テーブル・ユニットの更新、フロー・テーブル・ユニットの新たなエントリの作成、およびフロー・テーブル・ユニットの状態または個別エントリの確認を行うための命令が含まれるとよい。フロー・テーブル管理ユニットは、従来のハードワイヤードの状態マシンを用いて実現すればよい。
【００３３】
一例として、フロー・テーブル管理ユニットは、プログラマブル・コントローラから確認コマンドを受信し次第、特定された或るネットワーク・フローのエントリがフロー・テーブルに既に含まれているかどうかを確認するとよい。その結果、フロー・テーブル管理ユニットは、この特定されたネットワーク・フローのエントリは既存であるということ、あるいはこの特定されたネットワーク・フローは新しいフローであってフロー・テーブル・ユニットのフロー・テーブルには存在しないということを示す表示（１ビットのフラグとして実現される）を、プログラマブル・コントローラへ送り返すことができると考えられる。
【００３４】
ネットワーク・フローが存在するか否かの表示の受信に応えて、プログラマブル・コントローラは、テーブル管理ユニットへさらなるフロー計測命令を発信するとよく、それにより、既存のフロー・テーブル・エントリの更新、新しいフロー・テーブル・エントリの作成、または新しいフロー・テーブル一式の作成のいずれかが、対応する「更新」コマンド、「新しいフロー・テーブル・エントリを作成」コマンド、または「新しいフロー・テーブルを作成」コマンドを用いて行われる。
【００３５】
フロー情報エクスポート・ユニットは、フロー情報を別の位置またはエンティティへエクスポートするように設けられる。フロー情報エクスポート・ユニットも、同様にプログラマブル・コントローラによって制御される。プログラマブル・コントローラは、フロー情報エクスポート・ユニットへエクスポート・コマンドを発信することによって、フロー計測情報のエクスポートをトリガすればよい。
【００３６】
本発明の本態様の別の実施形態によれば、フロー・テーブル管理ユニットに、フロー識別情報をハッシュ・インデックスにマップするための２つ以上の選択可能なハッシュ関数を備えたプログラマブル・ハッシュ関数ユニットが含まれ、プログラマブル・コントローラは、選択可能なハッシュ関数のうちの１つを選択するように設けられる。
【００３７】
ハッシュ関数は、ネットワーク・フロー解析およびネットワーク・フロー計測の効率を高めるのに広く用いられる。しかし、複数のフロー計測標準の別々の標準および別々のプロトコル・バーションは、別々のハッシュ関数を用いる。本発明の本実施形態による装置は、プログラマブル・ハッシュ関数ユニットを備えることによって、上記の各種標準およびプロトコル・バーションをサポートすることができる。
【００３８】
本発明の本態様の別の実施形態によれば、プログラマブル・コントローラが、テーブル管理ユニットへテーブル管理コマンドを送信するように設けられる。
【００３９】
このようなテーブル管理コマンドは、例えば、更新コマンド、作成コマンド、または確認コマンドとすればよい。
【００４０】
本発明の本態様の別の実施形態によれば、本装置が、ハードウェア支援デバイスとして実装される。
【００４１】
ハードウェア支援デバイスとして本装置を実装することは、装置を、或るシステム内に、プロセッサまたはこのシステムの処理負荷を必要とせずに実装できるという利点を有する。
【００４２】
本発明の第２態様は、中央処理装置、メモリ、およびコンピュータ・ネットワーキング・デバイスを含むコンピュータ・システムに関し、該コンピュータ・システムには、コンピュータ・ネットワーキング・デバイスにおけるネットワーク・フローを解析する、本発明の第１態様による装置が含まれる。
【００４３】
コンピュータ・ネットワーキング・デバイスは、例えば、スイッチまたはルータとすればよい。装置は、本コンピュータ・システムの中央処理装置に対するハードウェア支援デバイスとして機能する。これにより、中央プロセッサに負荷をかけることなく、ネットワーク・フローの解析が可能になる。
【００４４】
本発明の第３態様は、２つ以上の仮想コンピューティング・システムを含み、さらに本発明の第１態様による装置を含むコンピュータ・システムに関し、装置は、仮想コンピューティング・システム相互間、または仮想コンピューティング・システムと外部デバイスとの間、あるいはその両方におけるネットワーク・フローを解析するように設けられる。
【００４５】
これにより、コンピュータ・システム上および仮想コンピューティング・システム上に何らかの付加的なソフトウェアを用意することなく、仮想コンピューティング・システム間のネットワーク・フローをスケーラブルな方法で監視および解析できるようになる。
【００４６】
本発明の本態様のさらなる実施形態によれば、コンピュータ・システムは以下を含む。
−仮想コンピューティング・システム相互間の内部通信用のソフトウェア・ネットワーキング・デバイス
−仮想コンピューティング・システムと外部デバイスとの間の外部通信用のハードウェア・ネットワーキング・デバイス
ソフトウェア・ネットワーキング・デバイスおよびハードウェア・ネットワーキング・デバイスは、仮想コンピューティング・システム相互間、または仮想コンピューティング・システムと外部デバイスとの間、あるいはその両方におけるネットワーク・フローを、解析に向けて本発明の第１態様による装置へと転送するように設けられる。
【００４７】
本アーキテクチャは、仮想化された環境内でネットワーク・フロー機能を効率的に実装することを可能にする。
【００４８】
ソフトウェア・ネットワーキング・デバイスは、例えば、ソフトウェア・スイッチ、すなわちソフトウェアにより実現されたスイッチとすればよい。ハードウェア・ネットワーキング・デバイスは、例えば、ハードウェア・スイッチ、すなわちハードウェアにより実現されたスイッチとすればよい。
【００４９】
外部デバイスは、例えば、別のコンピュータ・システム、ネットワーク、インターネット、またはその他の任意の宛先とすることができる。
【００５０】
本発明の本態様のさらなる実施形態によれば、装置が、ハードウェア・ネットワーキング・デバイス内に配置される。
【００５１】
本発明の第４態様はネットワーク・フローを解析する方法に関し、本方法は以下のステップ群を含む。
−構文解析器を用いてネットワーク・フローから識別情報を抽出するステップ
−フロー計測ユニットを用いてネットワーク・フローを計測するステップ
−プログラマブル・コントローラを用いてフロー計測ユニットおよび構文解析器を制御するステップ
【００５２】
本発明の第５態様は、プログラマブル・コントローラ上のフロー計測プログラムを実行するための命令を含むフロー計測コンピュータ・プログラムに関し、該フロー計測コンピュータ・プログラムは、本発明の第１態様による装置のフロー計測ユニットおよび構文解析器を制御するように備えられている。
【００５３】
本発明の好適な実施形態を、ほんの一例として、添付の概略的な図面に関連して以下に詳細に記載する。
【図面の簡単な説明】
【００５４】
【図１】本発明の一実施形態による、プログラマブル・コントローラと、構文解析器と、フロー計測ユニットとを含む、ネットワーク・フローを解析する装置の概略図である。
【図２】コンピュータ・ネットワーキング・デバイスと、コンピュータ・ネットワーキング・デバイスにおけるネットワーク・フローを解析する装置とを含む、概略的なコンピュータ・システムを示す図である。
【図３】状態マシンとして実装されたプログラマブル・コントローラの概略図である。
【図４】図１の装置をより詳細に示す概略図である。
【図５】フロー計測ユニットのフロー・テーブル更新機能を説明するフロー・チャートを示す図である。
【図６】フロー・テーブル・ユニットの期限切れテーブル・エントリの判定を説明するフロー・チャートを示す図である。
【図７】フロー・テーブル・ユニットの期限切れテーブル・エントリのエクスポートを説明するフロー・チャートを示す図である。
【図８】仮想コンピューティング・システムと、仮想コンピューティング・システム間のネットワーク・フローを解析する装置とを含む、コンピュータ・システムの概略図である。
【発明を実施するための形態】
【００５５】
図面は説明のみを目的として提供されており、必ずしも本発明の実際的な例を原寸に比例して表すものではない。図では、同一または同様の部分を表すのに、同一の参照符号を使用する。
【００５６】
図１は、本発明の例示的な一実施形態による、ネットワーク・フロー１０５を解析する装置１００を示す。装置１００は、ネットワーク・フロー１０５からフロー識別情報を抽出する構文解析器１１０を含む。ネットワーク・フロー１０５は、ネットワークにおける任意の種類の通信トラフィックとすればよく、特に、エンド・ツー・エンドのネットワーク・トラフィックとすればよい。ネットワーク・フロー１０５には、一連のデータ・パケットが含まれるとよく、各データ・パケットは、２つの別個のネットワーク・アドレス間における通信の一部である。装置１００は、ネットワーク・フロー１０５を計測するフロー計測ユニット１３０と、フロー計測ユニット１３０および構文解析器１１０を制御するプログラマブル・コントローラ１４０とを含む。
【００５７】
フロー計測ユニット１３０は、プログラマブル・コントローラ１４０へフロー状態情報を送信するように設けられ、プログラマブル・コントローラ１４０は、フロー状態情報に基づいてフロー計測ユニット１３０へフロー計測命令を送信するように設けられる。さらに、構文解析器１１０は、プログラマブル・コントローラ１４０へ構文解析情報を送信するように設けられ、プログラマブル・コントローラ１４０は、構文解析情報に基づいて構文解析器１１０へ構文解析命令を送信するように設けられる。
【００５８】
プログラマブル・コントローラ１４０は、中央処理装置１５０およびプログラム・メモリ１６０を含む。プログラム・メモリ１６０には、１つ以上のフロー計測プログラム１７０を保存することができる。
【００５９】
装置１００は、ハードウェアにより実現されることが好ましく、ハードウェア支援デバイスとして使用されるとよい。このことを、図２を参照してさらに説明する。
【００６０】
図２は、中央処理装置２１０と、メモリ２２０と、コンピュータ・ネットワーキング・デバイス２３０とを含むコンピュータ・システム２００を示す。さらに、該コンピュータ・システムは、ネットワーク・フローを解析する装置１００を含む。装置１００は、中央処理装置２１０に対するハードウェア支援デバイスとしてハードウェアにより実現される。中央処理装置２１０、メモリ２２０、コンピュータ・ネットワーキング・デバイス２３０および装置１００は、内部バス・システム２４０を介して接続されている。
【００６１】
コンピュータ・ネットワーキング・デバイス２３０は、例えばルータまたはスイッチなど、任意の種類の入力／出力デバイスとすればよい。図２の例では、コンピュータ・ネットワーキング・デバイス２３０は、第１ローカル・エリア・ネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）２５０と第２ＬＡＮ２６０とインターネット２７０との間のルータとして機能する。従って、コンピュータ・ネットワーキング・デバイス２３０は、第１ＬＡＮ２５０と第２ＬＡＮ２６０とインターネット２７０との間に、ネットワーク・フロー２８０をルーティングするように設けられる。装置１００は、コンピュータ・ネットワーキング・デバイス２３０におけるネットワーク・フローを解析し計測するように設けられる。
【００６２】
図３は、本発明の別の例示的な実施形態による、プログラマブル・コントローラ３００の概略ブロック図を示す。プログラマブル・コントローラ３００は、プログラマブル状態マシンとして実装されている。プログラマブル・コントローラ３００は、遷移規則メモリ３１０と、規則セレクタ３２０と、状態レジスタ３３０とを含む。規則セレクタ３２０は、図１の構文解析器１１０からの構文解析情報ならびに図１のフロー計測ユニット１３０からのフロー状態情報を、外部入力信号３４０として受信するように設けられる。さらに、規則セレクタ３２０は、状態レジスタ３３０から内部入力信号３５０を受信するように設けられる。この内部入力信号３５０は、状態レジスタ３３０の現在の状態を示す。規則セレクタ３２０は、遷移規則メモリ３１０を用いて、遷移規則に関して内部入力信号３５０ならびに外部入力信号３４０を観察する。規則セレクタ３２０は、遷移規則が適用されると、状態レジスタ３３０の状態を変え、さらに、図１の構文解析器１１０への構文解析命令の送信または図１のフロー計測ユニット１３０へのフロー計測命令の送信あるいはその両方を行うように設けられる。
【００６３】
図３に示すようなプログラマブル状態マシンの実装に関するさらなる詳細は、米国特許出願公開第２００５／０１３２３４２（Ａ１）号明細書に記載されており、本特許は参照によって本願明細書に引用したものとする。
【００６４】
図４は、図１の装置をさらに詳細に示す概略図である。
【００６５】
構文解析器１００は、ネットワーク・フロー１０５から任意の望ましいフロー識別情報を抽出するように、プログラマブル・コントローラを用いてプログラムすることができる。本発明の例示的な一実施形態によれば、ネットワーク・フロー１０５には、パケット・ヘッダを有するパケットが含まれ、構文解析器１１０は、パケット・ヘッダを使ってフロー識別情報を抽出する。従って、構文解析器１１０は、フロー識別に使われることになるパケット・ヘッダから任意の望ましいヘッダ・フィールドの組み合わせを抽出するように、プログラムされればよい。上述のようなヘッダ・フィールドの例としては、ＩＰの発信元および宛先アドレス、伝送制御プロトコル（ＴＣＰ：Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）の発信元および宛先ポート番号、マルチプロトコル・ラベル・スイッチング（ＭＰＬＳ：Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）および仮想ローカル・エリア・ネットワーク（ＶＬＡＮ：Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）のタグなどが挙げられる。各々のネットワーク解析プロトコルのプロトコル標準に基づき、構文解析器１１０は、そのプロトコル標準に適切な対応するヘッダ・フィールドを抽出するように、プログラムすることができる。構文解析器１１０は、これらのヘッダ・フィールドのフロー識別情報を、レジスタ・ユニット４００へ書き込むように設けられる。故に、レジスタ・ユニット４００には、パケット・ヘッダに由来するフロー識別情報を備えたレジスタが含まれる。
【００６６】
このフロー識別情報が、プログラマブル・ハッシュ関数ユニット４１０へ入力として提供される。プログラマブル・ハッシュ関数ユニット４１０は、レジスタ・ユニット４００に保存されたフロー識別情報をハッシュ・インデックスにマップする。言い換えれば、プログラマブル・ハッシュ関数ユニット４１０は、選択されたヘッダ・フィールドの実際の値をハッシュ・インデックスにマップする。プログラマブル・ハッシュ関数ユニット４１０は、装置１００がサポートすることになる各プロトコル・バージョン用に求められる関数を全て対象として含む、多様なハッシュ関数を提供するとよい。プログラマブル・コントローラ１４０は、利用可能なハッシュ関数のうちの１つを選択するように設けられる。ハッシュ関数のうちの１つを選択することは、そのハッシュ関数に対応するハッシュ識別子を、プログラマブル・コントローラ１４０からプログラマブル・ハッシュ関数ユニット４１０へ送信することによって実現すればよい。上述のようなハッシュ識別子は、実装されているハッシュ関数のうちの１つと一意に対応する短いビット・ベクトルで構成することができる。
【００６７】
フロー計測ユニット１３０は、さらに、フロー・テーブル管理ユニット４２０を含む。フロー・テーブル管理ユニット４２０は、プログラマブル・ハッシュ関数ユニット４１０から、各々のパケット・ヘッダの各々のフロー識別情報のハッシュ・インデックスを受信するように設けられる。フロー・テーブル管理ユニット４２０は、フロー・テーブル・ユニット４３０の管理および制御を行う。フロー・テーブル管理ユニット４２０は、フロー計測命令として、フロー・テーブル管理コマンドを実行することができる。このようなフロー・テーブル管理コマンドとしては、例えば、フロー・テーブル・ユニット４３０の更新、フロー・テーブル・ユニット４３０の新しいエントリの作成、フロー・テーブル・ユニット４３０のエントリの確認、フロー・テーブル・ユニット４３０からのエントリの削除、ならびにフロー・テーブル・ユニット４３０のエントリの走査などを行うためのコマンドが挙げられる。フロー・テーブル管理ユニット４２０は、ハードワイヤードの状態マシンを用いて実現されることが好ましい。フロー・テーブル管理コマンドは、プログラマブル・コントローラ１４０からフロー・テーブル管理ユニット４２０へ送信される。フロー・テーブル・ユニット４３０には、各々のハッシュ・インデックスによって特定されるネットワーク・フローのネットワーク・フロー・エントリを保存するメモリが含まれる。ネットワーク・フロー・エントリには、フローを定義するキー・フィールドと、定義されたフローに関する情報を含むコンテンツ・フィールドとが含まれる。コンテンツ・フィールドは、ネットワーク・フローの新しいパケットごとに更新される。フロー・テーブル・ユニット４３０は、キー・フィールドにて、例えば５タプルの定義を使用してネットワーク・フローを特徴付け定義すると考えられる。本例では、キー・フィールドには、発信元および宛先ＩＰアドレス、発信元および宛先ポート、および各々のネットワーク・フローのＩＰプロトコルが含まれると考えられる。
【００６８】
フロー・テーブルは、上述のようなキー・フィールド各々に関して、例えば各々のネットワーク・フローの開始および終了時のタイムスタンプ、各々のネットワーク・フローにて観察されたバイトおよびパケットの数、および観察されたネットワーク・フローのその他各種の特性などといったフロー計測情報を、対応するコンテンツ・フィールドへ保存するとよい。
【００６９】
一例として、フロー・テーブル管理ユニット４２０は、プログラマブル・コントローラ１４０から確認コマンドを受信すると、各々のハッシュ・インデックスによって特定されるネットワーク・フローのエントリが既にフロー・テーブル・ユニット４３０に含まれているかどうかを確認する。フロー・テーブル管理ユニットは、折り返しプログラマブル・コントローラ１４０へ、各々のネットワーク・フローが存在することを示すかまたはそのハッシュ・インデックスはフロー・テーブル・ユニット４３０内には存在しない新しいネットワーク・フローに対応することを示す表示を、フロー状態情報として提供する。ハッシュ関数によっては、フロー・テーブル管理ユニット４２０が、レジスタ・ユニット４００の実際の値、言い換えればレジスタ・ユニット４００に保存されたフロー識別情報へ、直接アクセスすることもできる。
【００７０】
特定されるネットワーク・フローが存在するか否かというフロー状態情報の受信に応えて、プログラマブル・コントローラ１４０は、更新コマンドまたは作成コマンドを用いて既存のフロー・テーブル・エントリの更新または新しいフロー・テーブル・エントリの作成を行わせるテーブル管理コマンドを、フロー計測命令として、フロー・テーブル管理ユニット４２０へ発信するとよい。
【００７１】
さらに、プログラマブル・コントローラ１４０は、フロー・テーブル・ユニット４３０の期限切れフロー・テーブル・エントリに関する走査を制御するように設けられる。このために、プログラマブル・コントローラ１４０は、プログラマブル・タイマ４５０の値を検証する。このプログラム・タイマは、各々のネットワーク解析プロトコルのサポートされているプロトコル・バージョンの特質に適合するように、設定可能である。これにより、一定期間の経過後または設定可能な規則的間隔あるいはその両方にて、走査命令をテーブル管理コマンドとしてフロー・テーブル管理ユニット４２０へ送信するように、プログラマブル・コントローラ１４０がトリガされることになる。次いで、フロー・テーブル管理ユニット４２０が、フロー・テーブル・ユニット４３０を走査して、期限切れテーブル・エントリがあればその全てをプログラマブル・コントローラ１４０へ報告する。それに応じて、プログラマブル・コントローラ１４０は、そうしたフロー・テーブル・エントリを削除するように、削除コマンドをフロー・テーブル管理ユニット４２０へ送信することができる。さらに、プログラマブル・コントローラ１４０は、これらの期限切れフロー・テーブル・エントリのエクスポートをトリガすることができる。この後者の事例では、プログラマブル・コントローラ１４０は、期限切れネットワーク・フローに関する情報が含まれたフロー情報パケットの作成を、トリガする。プログラマブル・コントローラ１４０は、フロー情報エクスポート・ユニット４４０へ「パケット生成」コマンドを送信する。フロー情報エクスポート・ユニット４４０は、パケット生成器とも表される。フロー情報エクスポート・ユニット４４０は、ハードワイヤードの状態マシンを用いて実現することができる。フロー情報エクスポート・ユニット４４０は、ネットワーク・フロー情報を含むフロー情報パケットを、中央サーバあるいは他の任意の宛先へとエクスポートする。
【００７２】
装置１００の、このプログラマブルな構想によって、フロー計測ユニット１３０のフロー計測機能が、アプリケーション環境、使用プロトコル標準（例えば、ＮｅｔＦｌｏｗ  ｖ５、ｖ７、ｖ９、ＩＰＦＩＸなど）、サポート対象となるネットワーク・フローの数、または各々のネットワークの速度に応じて、各様に実装、設定、および実行可能となる。
【００７３】
例えば、ＮｅｔＦｌｏｗ  ｖ９およびＩＰＦＩＸは、固定のレコード・フィールドを使用せずに、フロー・テンプレートで定義される可変数のフィールドを使用する。テンプレートは、フロー・テーブルのコンテンツと、エクスポートされるネットワーク・フロー情報の量とを指定する。加えて、複数のネットワーク・フローを同一のフロー・テーブル・エントリに集約しマップすることもできる。フロー・テーブルは、ネットワーク・フロー各々に関する様々なタイプの情報を収容すると考えられる。さらに、ネットワーク・フロー情報がいつエクスポートされることになるかを指定する規則は、多様にすることができる。
【００７４】
図５は、フロー計測ユニット１３０のフロー・テーブル更新機能を説明するフロー図を示す。
【００７５】
ステップ５１０にて、装置１００が、観察されているネットワーク・フローのデータ・パケットを受信する。ステップ５２０にて、構文解析器１１０が、データ・パケットのヘッダを構文解析してフロー識別情報を抽出し、該フロー識別情報をレジスタ・ユニット４００へ書き込む。ステップ５３０にて、プログラマブル・ハッシュ関数ユニット４１０が、フロー識別情報のハッシュ・インデックスを計算し、フロー・テーブル管理ユニット４２０が、フロー・テーブル・ユニット４３０内のフロー・テーブル（ハッシュ・テーブル）検索を実施する。ステップ５４０にて、フロー・テーブル管理ユニット４２０は、各々のハッシュ・インデックスに関してフロー・テーブル・エントリが既に存在するかどうかを評価する。存在する場合、ステップ５５０にて、フロー・テーブル管理ユニット４２０は、フロー・テーブル・ユニット４３０の各々のフロー・テーブル・エントリを更新する。存在しない場合、ステップ５６０にて、フロー・テーブル管理ユニット４２０は、フロー・テーブル・ユニット４３０内に新しいフロー・テーブル・エントリを作成する。
【００７６】
図６は、フロー・テーブル・ユニット４３０内の期限切れフロー・テーブル・エントリの判定を説明するフロー図を示す。
【００７７】
ステップ６００にて、プログラマブル・コントローラ１４０が、フロー・テーブル管理ユニット４２０へ、フロー計測命令として走査コマンドを送信する。このことは、一定時間の経過後にまたは設定可能な規則的間隔であるいはその両方にて、発生させることができる。その結果フロー・テーブル管理ユニット４２０が、フロー・テーブル・ユニット４３０を走査することになる。ステップ６１０にて、フロー・テーブル管理ユニット４２０は、フロー・テーブル・ユニット４３０の初期エントリを選択し、ステップ６２０にて、最終の更新以降の時間ｔを指定する。この時間ｔが、例えばタイマ４５０によって指定されるような所定の時間よりも長い場合、フロー・テーブル・ユニット４３０の各々のエントリは期限切れの印を付けられる。ステップ６５０にて、フロー・テーブル・ユニット４３０の全エントリが処理済みであるかどうか、すなわち期限切れの有無を確認済みであるかどうかが確認される。全エントリが処理済みではない場合、フロー・テーブル管理ユニット４２０は、次のエントリを選択し、ステップ６２０から続行する。ステップ６５０の結果、フロー・テーブル・ユニット４３０の全エントリが処理済みであれば、走査は完了している。その後フロー・テーブル管理ユニット４２０の走査機能は、ステップ６７０にて、プログラマブル・コントローラ１４０から新たな走査コマンドを受信するまでの時間ｔ’の間、待機する。
【００７８】
図７は、期限切れテーブル・エントリの、サーバまたはその他の宛先へのエクスポートを説明するフロー図を示す。
【００７９】
ステップ７００にて、プログラマブル・コントローラ１４０が、「パケット生成」コマンドをフロー情報エクスポート・ユニット（パケット生成器）４４０へ送信することによって、エクスポート・プロセスをトリガする。ステップ７１０にて、フロー情報エクスポート・ユニット４４０が、フロー・テーブル・ユニット４３０の初期エントリを選択し、ステップ７２０にて、各々のエントリが期限切れの印を付けられていないか確認する。各々のエントリが期限切れの印を付けられている場合、ステップ７３０にて、フロー情報エクスポート・ユニット４４０は、各々のフロー・テーブル・エントリの期限切れネットワーク・フローのネットワーク・フロー情報を含んだフロー情報パケットを、作成し伝送する。フロー情報エクスポート・ユニット４４０は、フロー情報パケットを、中央サーバまたはその他の任意の宛先へエクスポートすればよい。続くステップ７４０にて、上記のテーブル・エントリ各々が、フロー・テーブル・ユニット４３０から削除される。続くステップ７５０にて、フロー情報エクスポート・ユニット４４０は、全てのテーブル・エントリが処理済みであるか、言い換えれば、期限切れの印を付けられたフローの有無を確認済みであるかを、確認する。ステップ７２０の結果、各々のフロー・テーブル・エントリに期限切れの印が付けられていなかった場合も、エクスポート・プロセスはステップ７５０から同様に続行される。ステップ７５０の確認が否定的な結果であれば、ステップ７６０にて、次のフロー・テーブル・エントリが処理に向けて選択され、エクスポート・プロセスはステップ７２０から続行される。ステップ７５０の確認が肯定的な結果であれば、エクスポート・プロセスはひとまず終了する。その後ステップ７７０にて、フロー情報エクスポート・ユニット４４０のエクスポート機能は、プログラマブル・コントローラ１４０から新たなパケット生成コマンドを受信するまでの時間ｔ’’の間、待機する。
【００８０】
図８は、仮想コンピューティング・システム間のネットワーク・フローを解析する装置を含む仮想化されたサーバ環境の概略図である。
【００８１】
仮想化されたサーバ環境はコンピュータ・システム８００を含み、該コンピュータ・システムには、コンピュータ・システム８００の中央処理装置８２０上で動作する２つ以上の仮想コンピューティング・システム８１０が含まれる。コンピュータ・システム８００は、さらに、仮想コンピューティング・システム８１０相互間の内部通信用のソフトウェア・ネットワーキング・デバイス８３０、ならびに仮想コンピューティング・システム８１０と外部デバイス８５０との間の外部通信用のハードウェア・ネットワーキング・デバイス８４０を含む。
【００８２】
ソフトウェア・ネットワーキング・デバイス８３０は、仮想コンピューティング・システム８１０相互間の内部通信の管理および制御を行うように設けられる。ソフトウェア・ネットワーキング・システムは、例えば、ソフトウェア・スイッチ、すなわちソフトウェアにより実現されたスイッチであるとよい。
【００８３】
ハードウェア・ネットワーキング・デバイス８４０は、例えば、ネットワーク・アダプタまたはハードウェア・スイッチとすればよい。ハードウェア・ネットワーキング・デバイスは、仮想コンピューティング・システム８１０と外部デバイス８５０との間の外部通信の管理および制御を行うように設けられる。外部デバイス８５０は、例えば、他のコンピュータ・システム、ネットワーク、インターネット、あるいはコンピュータ・システム８００が通信を望むその他の任意の宛先とすることができる。
【００８４】
ハードウェア・ネットワーキング・デバイス８４０は、ネットワーク・フローを解析する装置１００を含む。装置１００は、コンピュータ・システム８００の中央処理装置８２０に対するハードウェア支援デバイスとして、ハードウェアにより実現される。
【００８５】
仮想コンピューティング・システム８１０は、ソフトウェア・ネットワーキング・デバイス８３０および仮想ローカル・ネットワーク８６０を介して、互いに通信するとよい。仮想ローカル・ネットワーク８６０は、例えば、仮想ローカル・エリア・ネットワーク（ＶＬＡＮ）などであると考えられる。
【００８６】
ハードウェア・ネットワーキング・デバイス８４０は、仮想入力／出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）サーバ・パーティション８７０によって、仮想コンピューティング・システム８１０ならびにソフトウェア・ネットワーキング・デバイス８３０と、通信することができる。
【００８７】
ソフトウェア・ネットワーキング・デバイス８３０は、ソフトウェア・ネットワーキング・デバイス８３０内に生じるネットワーク・フローもしくはネットワーク・フローの一部を、装置１００へ転送するように設けられる。ハードウェア・ネットワーキング・デバイス８４０は、ハードウェア・ネットワーキング・デバイス８４０内に生じるネットワーク・フローもしくはネットワーク・フローの一部を、装置１００へ転送するように設けられる。ソフトウェア・ネットワーキング・デバイス８３０は、仮想入力／出力（Ｉ／Ｏ）サーバ・パーティション８７０を用いて、ネットワーク・フローもしくはネットワーク・フローの一部を装置１００へ転送するとよい。ハードウェア・ネットワーキング・デバイス８４０は、ハードウェア・バス８８０を用いて、ネットワーク・フローもしくはネットワーク・フローの一部を装置１００へ転送するとよい。
【００８８】
コンピュータ・システム８００は、仮想コンピューティング・システム８１０相互間、または仮想コンピューティング・システム８１０と外部デバイス８５０との間、あるいはその両方におけるネットワーク・フローを、スケーラブルな方法で監視および解析できるようにする。コンピュータ・システム８００上および仮想コンピューティング・システム８１０上に、付加的なソフトウェアは必要ない。
【００８９】
開示された各実施形態は、提示または記載あるいは提示および記載された別の実施形態のうちの１つまたはいくつかと組み合わせることもできる。このことは、実施形態の１つ以上の特性に関しても同様に可能である。
【００９０】
付加的な実施形態の詳細
記載された技術は、方法として、または装置として、あるいはソフトウェア、ファームウェア、マイクロコード、ハードウェア、またはこれらの任意の組み合わせあるいはその両方を含む製品として、実現されるとよい。本明細書で用いられる用語「製品」は、媒体に実装されたコードまたは論理を指し、そのような媒体には、ハードウェア論理［例えば、集積回路チップ、プログラマブル・ゲート・アレイ（ＰＧＡ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、特定用途向け集積回路（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）など］、または磁気ストレージ媒体（例えば、ハード・ディスク・ドライブ、フレキシブル・ディスク、テープなど）などのコンピュータ可読媒体、光ストレージ（ＣＤ−ＲＯＭ、光ディスクなど）、揮発性および不揮発性のメモリ・デバイス［例えば、電気的に消去可能なプログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ：Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、プログラマブル読み取り専用メモリ（ＰＲＯＭ：Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダム・アクセス・メモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ：Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、フラッシュ、ファームウェア、プログラマブル論理など］を含めることができる。コンピュータ可読媒体にあるコードは、プロセッサによってアクセスされ実行される。内部にコードまたは論理がエンコードされた媒体には、空間を通じてあるいは光ファイバ、銅線などの伝送媒体を通じて伝播する伝送信号も含まれるとよい。内部にコードまたは論理がエンコードされた伝送信号は、さらに、無線信号、衛星伝送、電波、赤外線信号、Ｂｌｕｅｔｏｏｔｈ（Ｒ）などを含むとよい。内部にコードまたは論理がエンコードされた伝送信号は、送信局によって送信し、受信局によって受信することが可能であり、その場合、伝送信号にエンコードされたコードまたは論理は、受信局および送信局あるいはデバイスにおいてデコードされハードウェアまたはコンピュータ可読媒体へ保存されるとよい。加えて、「製品」には、内部でコードが具現化、処理、実行される、ハードウェアおよびソフトウェア・コンポーネントが含まれるとよい。当業者には当然のことながら、実施形態の範囲から逸脱することなく多数の変更を施すことが可能であり、製品には、あらゆる情報担持媒体を含めることができる。例えば、製品は、マシンによって実行されると動作の実施をもたらす命令が内部に保存された、ストレージ媒体を含む。
【００９１】
或る特定の実施形態は、完全なハードウェアの実施形態、または完全なソフトウェアの実施形態、あるいはハードウェアおよびソフトウェア双方の要素を含む実施形態の形をとることができる。好適な一実施形態では、本発明が、ファームウェア、常駐ソフトウェア、マイクロコードなどが挙げられるがこれらに限定されないソフトウェアによって実現される。
【００９２】
さらに、或る特定の実施形態は、コンピュータ使用可能なまたはコンピュータ可読の媒体からアクセス可能なコンピュータ・プログラム製品の形をとることができ、該コンピュータ・プログラム製品は、コンピュータまたは何らかの命令実行システムによってあるいはこれらと関連して使用されるプログラム・コードを提供する。本説明の目的上、コンピュータ使用可能またはコンピュータ可読の媒体は、命令実行システム、装置またはデバイスによってあるいはこれらと関連して使用されるプログラムを収容、保存、通信、伝搬、または搬送することの可能な任意の装置とすることができる。媒体は、電子、磁気、光、電磁気、赤外線、または半導体のシステム（または装置もしくはデバイス）あるいは伝搬媒体とすることができる。コンピュータ可読媒体の例としては、半導体すなわちソリッド・ステートのメモリ、磁気テープ、着脱可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、固定型磁気ディスクおよび光ディスクが挙げられる。光ディスクの現行の例としては、コンパクト・ディスク−読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、コンパクト・ディスク−読み／書き（ＣＤ−Ｒ／Ｗ：ｃｏｍｐａｃｔ  ｄｉｓｋ−ｒｅａｄ／ｗｒｉｔｅ）およびＤＶＤが挙げられる。
【００９３】
互いに通信しているデバイスは、特に明確な指定のない限り、連続的に通信している必要はない。加えて、互いに通信しているデバイスは、直接通信してもよいし、あるいは１つ以上の媒介を通じて間接的に通信してもよい。その上、互いに通信しているいくつかのコンポーネントを用いた実施形態の記載は、それらのコンポーネント全てが必要であることを含意するものではない。それどころか、多種多様なあり得る実施形態を説明するために、各種の任意的なコンポーネントが記載されている。さらに、プロセスのステップ群、方法のステップ群およびアルゴリズムなどが逐次順序で記載される場合があるが、そのようなプロセス、方法およびアルゴリズムは、別の順序で機能するように設定することもできる。言い換えれば、記載され得るステップ群の何らかの並びすなわち順序は、必ずしも、ステップ群をその順序で実施する必要条件を示すものではない。本明細書に記載されるプロセスのステップ群は、実用的な任意の順序で実施すればよい。さらに、一部のステップを同時に、並列に、あるいは一斉に実施してもよい。
【００９４】
本明細書にて、単一のデバイスまたは物品が記載される場合、当然のことながら、１つより多いデバイス／物品を（それらが協働するか否かに関わらず）単一のデバイス／物品の代わりに使用してもよい。同様に、本明細書にて１つよりも多くのデバイスまたは物品が（それらが協働するか否かに関わらず）記載されている場合、当然のことながら、単一のデバイス／物品を、１つよりも多くのデバイスまたは物品の代わりに使用してもよい。或るデバイスの機能または特性あるいはその両方は、そのような機能／特性を有することが明記されない１つ以上の別のデバイスによって、代わりに具現化することもできる。故に、別の実施形態には、該デバイスそのものを含める必要がない。
【００９５】
本文脈におけるコンピュータ・プログラム手段またはコンピュータ・プログラムとは、情報処理能力を有するシステムに、直接的に、あるいはａ）別の言語、コード、表記法への変換；ｂ）別の材料形態での再現のいずれかまたは両方を経て、特定の機能を実行させることを目的とする一連の命令の、任意の言語、コード、または表記法での任意の表現を意味する。
【図１】
2010514313.tif 000003
【図２】
2010514313.tif 000004
【図３】
2010514313.tif 000005
【図４】
2010514313.tif 000006
【図５】
2010514313.tif 000007
【図６】
2010514313.tif 000008
【図７】
2010514313.tif 000009
【図８】
2010514313.tif 000010
【国際調査報告】
2010514313.tif 000011
2010514313.tif 000012
2010514313.tif 000013