(57)【要約】  第１のエンティティと第２のエンティティとの間のデジタル電子フローを処理するシステムおよび方法であって、このデジタル電子フローに施されるべきフロー・ポリシーを決定し、次に、そのフロー・ポリシーに基づいて、そのデジタル電子フローを経路に沿って送るもの。それぞれのフローに対してＩＤが提供され、また、それぞれのフローに関連するタグは、その関連するフローに施されるべきフロー・ポリシーを示している。フローはまた、互いに関連付けられ、しかも、関連するフローは、関連するフロー・ポリシーを持っている。特に、このフローは、処理されるか、あるいは転送されることがある。この経路は、グラフ構造体や仮想アプリケーションを含むことがある。【選択図】図１
2009506618.tif 000002
【特許請求の範囲】
【請求項１】
第１のエンティティと第２のエンティティとの間のデジタル電子フローを処理するシステムであって、
前記デジタル電子フローに施されるべきフロー・ポリシーを決定するフロー・ポリシー決定手段と、
前記関連フロー・ポリシーに基づいて、前記フローを、定められた経路に沿って送る送り手段と、
を含むシステム。
【請求項２】
初めに、前記第１のエンティティからのそれぞれの新たなフローに対してＩＤを提供し、後で、既存フローの前記ＩＤを識別するフローＩＤ提供・識別手段を含む請求項１に記載のシステム。
【請求項３】
前記フロー・ポリシー決定手段は、それぞれのフローに対してポリシー・タグを提供し、前記ポリシー・タグはそのフローの前記ＩＤに関連付けられており、前記ポリシー・タグはそのフローに施されるべき前記フロー・ポリシーを示す請求項２に記載のシステム。
【請求項４】
前記経路に含まれることがある少なくとも１つの処理手段を含む請求項１に記載のシステム。
【請求項５】
前記経路に含まれることがある少なくとも１つの転送手段を含む請求項１に記載のシステム。
【請求項６】
前記フロー・ポリシー決定手段が、フローに施される前記フロー・ポリシーを、その存続期間の間に変更する請求項３に記載のシステム。
【請求項７】
第１のフローが第２のフローに関連付けられるべきであるかどうか判定し、また、関連フロー・ポリシーを関連フローに施す関連付け判定手段を含む請求項１に記載のシステム。
【請求項８】
前記フロー・ポリシー決定手段が、フローを最初に受け取ったときに前記フローに施されるべき前記フロー・ポリシーを決定する請求項１に記載のシステム。
【請求項９】
前記処理手段が、グラフ構造体、プロセッサ、メモリ、仮想マシン、アプリケーションを含むグループから選択された少なくとも１つのコンポーネントを含む請求項４に記載のシステム。
【請求項１０】
前記アプリケーションが、仮想マシン上でカーネル・モードで実行するアプリケーションであるか、あるいは、仮想マシン上でユーザ・モードで実行するアプリケーションである請求項９に記載のシステム。
【請求項１１】
前記転送手段が、グラフ構造体、ネットワーク・インターフェース、通信インターフェース、仮想スイッチ、仮想ネットワーク・インターフェース、仮想ストリーム・インターフェースを含むグループから選択された少なくとも１つのコンポーネントを含む請求項５に記載のシステム。
【請求項１２】
前記送り手段が、柔軟なグラフ構造体を含む経路に沿って、前記フローを送る請求項１に記載のシステム。
【請求項１３】
少なくとも１つのリアルタイム処理機能を持つオペレーティングシステムと、前記オペレーティングシステムのカーネル内、または前記オペレーティングシステムのユーザ空間内でホストされるアプリケーションとを持つプロセッサであって、前記送り手段が、前記アプリケーションを含む経路に沿って、前記フローの少なくとも一部を送るようなプロセッサを含む請求項１に記載のシステム。
【請求項１４】
前記送り手段が、処理手段と転送手段のグループから選択された複数のエンティティを含む経路に沿って、前記フローを送り、その場合、前記エンティティが、並列に、直列に、あるいは並列と直列の任意の組合せで接続されている請求項１に記載のシステム。
【請求項１５】
前記送り手段が、内部コンポーネントおよび／または外部コンポーネントを含む経路に沿って、前記フローを送る請求項１に記載のシステム。
【請求項１６】
前記フロー・ポリシー決定手段がアプリケーションに応答する請求項６に記載のシステム。
【請求項１７】
前記フロー・ポリシー決定手段が、フローの前進部分と戻り部分に対して、異なるフロー・ポリシーを決定する請求項１に記載のシステム。
【請求項１８】
前記フロー・ポリシー決定手段が、メモリ使用量、ネットワーク帯域幅の使用、電力消費、仮想マシン上のゲスト・オペレーティングシステムからのフィードバック、アプリケーションからのフィードバック、処理手段からのフィードバック、および、転送手段からのフィードバックを含むグループから選択された基準に基づいて、フローに対して前記フロー・ポリシーを決定する請求項１に記載のシステム。
【請求項１９】
前記フロー・ポリシー決定手段が、パケット・ヘッダー中のフィールド、パケット・ペイロード中のデータ、および、プロトコルとプロトコル・セットを含むグループから選択された基準に基づいて、フローに対して前記フロー・ポリシーを決定する請求項１に記載のシステム。
【請求項２０】
前記関連付け判定手段が、特定タイプのアプリケーションからのフロー、指定したプロトコルを使用するフロー、関連プロトコル階層の指定レイヤにサブプロトコルを使用するフロー、トラフィックの指定部分中の指定パターン、指定した組の通信エンティティに関連するフロー、含まれている経路からのフロー、および、指定したリンク、ネットワーク、ネットワーク・インターフェースからのフローを含むグループから選択された基準に基づいて、フローを関連付ける請求項７に記載のシステム。
【請求項２１】
前記グラフ構造体が、処理手段、転送手段、サブグラフ構造体を含むグループから選択された任意の組合せから成っている請求項１２に記載のシステム。
【請求項２２】
第１のエンティティと第２のエンティティとの間のデジタル電子フローを処理する方法であって、
フローに施されるべきポリシーを決定するステップと、
前記関連フロー・ポリシーに基づいて、前記フローを、定められた経路に沿って送るステップと、
を含む方法。
【請求項２３】
初めに、前記第１のエンティティからのそれぞれの新たなフローに対してＩＤを提供し、後で、既存フローの前記ＩＤを識別するステップを含む請求項２２に記載のシステム。
【請求項２４】
ポリシー・タグそれぞれのフローに対して提供し、前記ポリシー・タグをそのフローの前記ＩＤに関連付けるステップを含み、前記ポリシー・タグはそのフローに施されるべき前記フロー・ポリシーを示す請求項２３に記載の方法。
【請求項２５】
前記経路に少なくとも１つの処理手段を含むステップを含む請求項２２に記載の方法。
【請求項２６】
前記経路に少なくとも１つの転送手段を含むステップを含む請求項２２に記載の方法。
【請求項２７】
フローに施される前記フロー・ポリシーを、その存続期間の間に変更する請求項２４に記載の方法。
【請求項２８】
第１のフローが第２のフローに関連付けられるべきであるかどうか判定し、また、関連フロー・ポリシーを関連フローに施すステップを含む請求項２２に記載の方法。
【請求項２９】
フローを最初に受け取ったときに前記フローに施されるべき前記フロー・ポリシーを決定する請求項２２に記載の方法。
【請求項３０】
前記処理手段が、グラフ構造体、プロセッサ、メモリ、仮想マシン、アプリケーションを含むグループから選択された少なくとも１つのコンポーネントを含む請求項２５に記載の方法。
【請求項３１】
前記アプリケーションが、仮想マシン上でカーネル・モードで実行するアプリケーションであるか、あるいは、仮想マシン上でユーザ・モードで実行するアプリケーションである請求項３０に記載の方法。
【請求項３２】
前記転送手段が、グラフ構造体、ネットワーク・インターフェース、通信インターフェース、仮想スイッチ、仮想ネットワーク・インターフェース、仮想ストリーム・インターフェースを含むグループから選択された少なくとも１つのコンポーネントを含む請求項２６に記載の方法。
【請求項３３】
柔軟なグラフ構造体を含む経路に沿って、前記フローを送る請求項２２に記載の方法。
【請求項３４】
少なくとも１つのリアルタイム処理機能を持つオペレーティングシステムのカーネル内またはユーザ空間内でホストされるアプリケーションを含む経路に沿って、前記フローの少なくとも一部が送られる請求項２２に記載の方法。
【請求項３５】
処理手段と転送手段のグループから選択された複数のエンティティを含む経路に沿って、前記フローが送られ、その場合、前記エンティティが、並列に、直列に、あるいは並列と直列の任意の組合せで接続されている請求項２２に記載の方法。
【請求項３６】
内部コンポーネントおよび／または外部コンポーネントを含む経路に沿って、前記フローが送られる請求項２２に記載の方法。
【請求項３７】
前記フロー・ポリシーが、アプリケーションに応答して決定される請求項２７に記載の方法。
【請求項３８】
フローの前進部分と戻り部分に対して、前記フロー・ポリシーが異なる請求項２２に記載の方法。
【請求項３９】
メモリ使用量、ネットワーク帯域幅の使用、電力消費、仮想マシン上のゲスト・オペレーティングシステムからのフィードバック、アプリケーションからのフィードバック、処理手段からのフィードバック、および、転送手段からのフィードバックを含むグループから選択された基準に基づいて、フローに対して前記フロー・ポリシーが決定される請求項２２に記載の方法。
【請求項４０】
パケット・ヘッダー中のフィールド、パケット・ペイロード中のデータ、および、プロトコルとプロトコル・セットを含むグループから選択された基準に基づいて、フローに対して前記フロー・ポリシーが決定される請求項２２に記載の方法。
【請求項４１】
特定タイプのアプリケーションからのフロー、指定したプロトコルを使用するフロー、関連プロトコル階層の指定レイヤにサブプロトコルを使用するフロー、トラフィックの指定部分中の指定パターン、指定した組の通信エンティティに関連するフロー、含まれている経路からのフロー、および、指定したリンク、ネットワーク、ネットワーク・インターフェースからのフローを含むグループから選択された基準に基づいて、前記フローが関連付けられる請求項２８に記載の方法。
【請求項４２】
前記グラフ構造体が、処理手段、転送手段、サブグラフ構造体を含むグループから選択された任意の組合せから成っている請求項３３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、伝送情報を処理するシステムおよび方法に関する。さらに具体的に言えば、本発明は、第１のエンティティと第２のエンティティとの間のデジタル電子フローを転送して、処理するシステムおよび方法に関する。
【発明の開示】
【課題を解決するための手段】
【０００２】
本発明により、第１のエンティティと第２のエンティティとの間のデジタル電子フローを処理するシステムであって、
・このデジタル電子フローに施されるべきフロー・ポリシーを決定するフロー・ポリシー決定手段と、
・関連フロー・ポリシーに基づいて、このフローを、定められた経路に沿って送る送り手段（directing means）と、
を含むシステムが提供される。
【０００３】
このシステムは、初めに、上記第１のエンティティからのそれぞれの新たなフローに対してＩＤを提供し、後で、既存フローのＩＤを識別するフローＩＤ提供・識別手段を含むことがある。
【０００４】
上記フロー・ポリシー決定手段は、フローのＩＤに関連付けられるポリシー・タグであって、このフローに施されるべきフロー・ポリシーを示すポリシー・タグを、それぞれのフローに対して提供することがある。
【０００５】
このフロー・ポリシー決定手段は、最初にフローを受け取ったときに、そのフローに施されるべきフロー・ポリシーを決定し、また、フローに施されるフロー・ポリシーを、その存続期間の間に変更することがある。
【０００６】
このシステムはまた、第１のフローが第２のフローに関連付けられるべきであるかどうか判定し、また、関連フロー・ポリシーを関連フローに施す関連付け判定手段（association determining means）を含むことがある。
【０００７】
少なくとも１つの処理手段が、この経路に含まれることがある。同様に、少なくとも１つの転送手段も、この経路に含まれることがある。
【０００８】
この処理手段は、グラフ構造体（graph structure）、プロセッサ、メモリ、仮想マシン、および／または、アプリケーションを含むことがある。このアプリケーションは、仮想マシン上でカーネル・モードで実行するアプリケーションであるか、あるいは、仮想マシン上でユーザ・モードで実行するアプリケーションである。
【０００９】
この転送手段は、グラフ構造体、ネットワーク・インターフェース、通信インターフェース、仮想スイッチ、仮想ネットワーク・インターフェース、および／または、仮想ストリーム・インターフェースを含むことがある。
【００１０】
特に、上記送り手段は、柔軟なグラフ構造体（flexible graph structure）を含む経路に沿って、このフローを送ることがある。このグラフ構造体は、サブグラフ構造体、またはネストされたグラフ構造体を持つことがある。このグラフ構造体はまた、処理コンポーネントおよび／または転送コンポーネントも持つことがある。
【００１１】
このシステムは、少なくとも１つのリアルタイム処理機能を持つオペレーティングシステムと、このオペレーティングシステムのカーネル内、またはこのオペレーティングシステムのユーザ空間内でホストされるアプリケーションとを持つプロセッサであって、上記送り手段が、このアプリケーションを含む経路に沿って、このフローの少なくとも一部を送るようなプロセッサを含むことがある。
【００１２】
この経路を形成するエンティティは、並列に、直列に、あるいは並列と直列の任意の組合せで接続されていることがある。この経路は、内部コンポーネントおよび／または外部コンポーネントを含むことがある。
【００１３】
上記フロー・ポリシー決定手段は、アプリケーションに応答することがある。
【００１４】
さらに、このフロー・ポリシー決定手段は、フローの前進部分と戻り部分に対して、異なるフロー・ポリシーを決定することがある。
【００１５】
このフロー・ポリシー決定手段は、任意の適切な基準に基づいて、フローに対してフロー・ポリシーを決定することがある。特に、これらの基準は、メモリ使用量、ネットワーク帯域幅の使用、電力消費、仮想マシン上のゲスト・オペレーティングシステムからのフィードバック、アプリケーションからのフィードバック、処理手段からのフィードバック、および、転送手段からのフィードバックであってよい。これらの基準はまた、パケット・ヘッダー中のフィールド、パケット・ペイロード中のデータ、および、プロトコルとプロトコル・セットであってよい。
【００１６】
同様に、上記関連付け判定手段は、特定タイプのアプリケーションからのフロー、指定したプロトコルを使用するフロー、関連プロトコル階層の指定レイヤにサブプロトコルを使用するフロー、トラフィックの指定部分中の指定パターン、指定した組の通信エンティティに関連するフロー、含まれている経路からのフロー、および、指定したリンク、ネットワーク、ネットワーク・インターフェースからのフローなどのフローを、適切な基準に基づいて関連付けることがある。
【００１７】
さらに本発明により、第１のエンティティと第２のエンティティとの間のデジタル電子フローを処理する方法であって、
・フローに施されるべきポリシーを決定することと、
・関連フロー・ポリシーにより、このフローを、定められた経路に沿って送ることと、
を含む方法が提供される。
【００１８】
当初、ＩＤが、第１のエンティティからのそれぞれの新たなフローに提供され、後で、既存フローのＩＤが識別されることがある。
【００１９】
この方法は、フローに施されるべきフロー・ポリシーを示すポリシー・タグをそれぞれのフローに対して提供して、そのポリシー・タグを、このフローのＩＤに関連付けることを含む場合がある。
【００２０】
上に示されるように、少なくとも１つの処理手段および／または１つの転送手段が、この経路中に含まれることがある。
【００２１】
フローに施されるべきフロー・ポリシーは、このフローを最初に受け取ったときに決定されて、また、その有効期間中に変更されることがある。
【００２２】
この方法はさらに、第１のフローが第２のフローに関連付けられるべきかどうか判定して、関連フロー・ポリシーを関連フローに施すことも含む場合がある。
【００２３】
柔軟なグラフ構造体を含み、また、少なくとも１つのリアルタイム処理機能を持つオペレーティングシステムのカーネル内またはユーザ空間内でホストされるアプリケーションを含み、また、並列および／または直列に接続された複数のエンティティを含むか、あるいは内部コンポーネントおよび／または外部コンポーネントを含む経路に沿って、このフローを送ることがある。
【００２４】
このフロー・ポリシーは、アプリケーションに応答して決定され、また、このフロー・ポリシーは、フローの前進部分と戻り部分に対して、異なることがある。
【００２５】
第１のエンティティと第２のエンティティは、ネットワーク装置または通信装置、ネットワーク機器（例えば、ブリッジ／ルータ／スイッチ）、ネットワーク・ノード、コンピュータ、アプリケーション、タスク、プロセス、サービス、ユーザ、あるいは、他のソフトウェア・システムまたはハードウェア・システムであることがある。
【００２６】
このシステムは、ネットワーク・トラフィックまたは他の伝送情報が強制的にこのシステムを通過させられるように、ネットワークまたは他の通信システムに接続されることがある。伝送情報はまた、適切に構築または策定されている伝送情報に基づいて、例えば、適切なアドレス（レイヤ２のネットワーク・アドレス）を用いて、このシステムに宛てられている情報により、このシステムにて発信するか、着信するか、あるいは、通過することがある。したがって、このシステムは、ルータ、スイッチ、「ｂｕｍｐ ｉｎ ｔｈｅ ｗｉｒｅ」ブリッジ、「自己学習」マルチポート・ブリッジ、リレー、プロキシ、またはゲートウェイであってよい。
【００２７】
さらに、このシステムは、１つまたは複数のプロセッサまたはコプロセッサを含むことがある。このシステムが複数のプロセッサまたはコプロセッサを持っている場合には、これらのプロセッサまたはコプロセッサは、以下の１つまたは複数を用いて相互接続されてよい。
・物理的に共有されるメモリ
・リモート直接メモリアクセス（ＲＤＭＡ）機構を用いて実現される仮想共有メモリ
・ＨｙｐｅｒＴｒａｎｓｐｏｒｔ、ＰＣＩ、またはＰＣＩ Ｅｘｐｒｅｓｓのようなバス
・Ｇｉｇａｂｉｔ Ｅｔｈｅｒｎｅｔ（登録商標）、Ａｄｖａｎｃｅｄ Ｓｗｉｔｃｈｉｎｇ Ｉｎｔｅｒｃｏｎｎｅｃｔ、またはＩｎｆｉｎｉｂａｎｄのような、任意の他のネットワークまたは他の通信リンク（データグラム指向であれ、ストリーム指向であれ）。
【００２８】
このシステムは、ネットワーク・インターフェースまたは通信インターフェースを用いて、通信ネットワークまたは他のデータ通信システムに接続されることがある。この接続されたネットワークは、伝送情報が属している集合体（aggregate）が、その伝送情報の一部として明瞭に識別されるか、あるいは、この集合体を、その伝送情報または伝送メディアに関連するパラメータから推定できるようなデータ通信システムまたは通信ネットワークであってよい。その関連付け手段（associating means）は、この集合体識別情報の同等または関係性を利用して、伝送情報を他の伝送情報に関連付けることがある。この集合体識別情報は、そのフロー、チャネル、回路、パイプ、セッション、ストリーム、タイムスロット、周波数、スペクトル拡張符号、ラベル・スイッチ・パス（label switched path）、または、伝送情報の波長を識別することがある。
【００２９】
この通信ネットワークは、伝送データを個別のデータグラムに区分することがある。これらのデータグラムは、ＩＰパケット、ＡＴＭセル、Ｅｔｈｅｒｎｅｔフレームであるか、あるいは、任意のメディアを介して運ばれる他の任意のプロトコルを使用することがある。この関連付け手段は、ネットワーク／通信トラフィックを調べることで、経時的に保持される情報だけでなく、これらのデータグラムに入っている情報（ヘッダー情報とペイロード情報の両方）も利用して、伝送情報を他の伝送情報に関連付ける。
【００３０】
この伝送情報のフォーマットまたは解釈（interpretation）は、プロトコル層から成る一階層によって定められることがある。この関連付け手段は、これらのプロトコル層の１つまたは複数にてプロトコルを調べて、（もしあれば）どの伝送情報に、他の伝送情報を関係付けるのか決定することがある。
【００３１】
この伝送情報は、例えば、ＩＰ（Ｉｎｔｅｒｎｅｔ Ｐｒｏｔｏｃｏｌ）および／またはＥｔｈｅｒｎｅｔ Ｐｒｏｔｏｃｏｌ（ＩＥＥＥ ８０２．ｘ）を使用するネットワーク・トラフィックであることもある。この関連付け手段は、ネットワーク・パケットのペイロードだけでなく、ＩＰおよび／またはＥｔｈｅｒｎｅｔのヘッダーも調べ、さらに、これらのプロトコル中にネストされた任意プロトコルのヘッダーまたはペイロードも調べて、（もしあれば）どの伝送情報に、他の伝送情報を関係付けるか決定することがある。
【００３２】
この伝送情報は、この伝送情報の送信元（すなわち、発信者または起動側）と送信先（すなわち、アドレスまたはターゲット）を識別する識別情報を含むことがある。この識別情報は、ネットワーク・ノード識別子を、Ｉｎｔｅｒｎｅｔ Ｐｒｏｔｏｃｏｌアドレス、ＭＡＣ層アドレス、数字、文字、バイナリ、または他のフォーマットで含むことがある。この識別情報はまた、この伝送情報の送信元または送信先であるネットワーク・ノード内に、ユーザ、アプリケーション、コンポーネント、プロセス、タスク、サブシステム、または他のエンティティを指定する識別子も含むことがある。この識別情報は、前述の送信元または送信先のグループまたは他の集合体を表すことがある。この識別情報はまた、その伝送情報で使用されるプロトコルまたはサブプロトコルも指定することがある。すなわち、これらのプロトコルまたはサブプロトコルは、他の識別情報のフォーマット、範囲、および／またはネーム空間を定めることがある。上記関連付け手段は、前述の識別情報のどれか、前述の識別情報の組合せを利用して、伝送情報を、他の伝送情報に関連づけることがある。
【００３３】
この伝送情報は、それ自体、直接に、または間接に関連伝送情報を参照することがある。上記関連付け手段は、これらの参照情報を検出し、取り出し、復号し、解釈し、利用して、参照情報により伝送情報を、他の伝送情報に関連付けることがある。
【００３４】
この伝送情報は例えば、関連するデータ伝送情報のセッション／ストリーム／経路／トラフィックを参照する信号プロトコルまたは制御プロトコル（例えば、ＳＩＰ／Ｈ．３２３／ＦＴＰ／ＲＳＶＰ／ＣＲ−ＬＤＰなど）であることもある。
【００３５】
この関連付け手段はまた、定められたバンドリング・ポリシー（bundling policy）により、伝送情報を関連づけることもある。このバンドリング・ポリシーは、
・特定タイプのアプリケーションにより送られた伝送情報、あるいは、関連プロトコル階層の指定レイヤにて指定プロトコルまたは指定サブプロトコルを使用する伝送情報と、
・指定した任意パターンを含む伝送情報（その場合、それぞれのパターンが、さらに高いレベル（コネクション／セッション／アプリケーション層）のデータストリームなどの中で、このトラフィックの指定部分、例えば、データグラムのヘッダー、データグラムのペイロードの中に求められる）と、
・特定の組の通信エンティティ（例えば、ユーザ、サーバー、装置、ネットワーク、アプリケーション・インスタンス、サービス、または、それらを組み合わせたもの）に関連する伝送情報。
・収容フロー（containing flow）の中に、例えば、トンネル、仮想回線、仮想パス、ラベル・スイッチ・パス、仮想プライベート・ネットワーク、トランクなどの中に入っている伝送情報、
・指定したリンクまたはネットワークを介して送られるか、あるいは、この装置の指定ネットワーク・インターフェースに入った情報と、
・任意の深さまでネストされた上記情報の任意の組合せと、
をひとまとめにすることがある。
【００３６】
このフロー・ポリシー決定手段は、伝送情報を分類して、伝送情報をカテゴリに分ける。このフロー・ポリシー決定手段は、伝送情報を、以下の様々な基準により分類することがある。
【００３７】
分類は、パケット・ヘッダー、パケット・ペイロード（内容）中のフィールドと、装置全体の状態だけでなく、分類されているフローに対して維持される状態にも基づいて、行われる。
【００３８】
この分類手段は、パケット境界にまたがるプロトコル、または他のプロトコル上に重ねられるプロトコルを、この分類手段の組み込まれたプロトコル知識、あるいはインストールされた追加のプロトコル・サポート・モジュールを用いて、復号することもある。特定プロトコル、または特定の組のプロトコルを検出したかどうかが、分類基準として使用される。
【００３９】
この分類手段は、そのサポートされたプロトコル層からデータを取り出して、そのデータを、任意パターンと比較することもある（正規表現、範囲（レンジ）、アドレスの最長プレフィックス一致判定（longest prefix matching）、サブストリング、および、ストリング／数値的に同等と、一致（マッチング）よりも大きい／小さい、を含む）。
【００４０】
この分類手段は、論理式と算術式を使用して、分類の部分結果を組み合わせて、全体結果を形成する。
【００４１】
このシステムは、どんな方法で伝送情報を処理すべきかも決定することがある。これは、上記関連付け手段の結果と、上記フロー・ポリシー決定手段の結果を利用して行われて、この伝送情報に施されるべき処理ポリシーを決定する。この処理ポリシーは、このトラフィックをさらに処理／検査する必要のある組のコンポーネント（直列にあるか、並列にあるか、あるいは任意グラフにおいて相互接続される）を、これらのコンポーネントのそれぞれに対する追加の処理パラメータ（例えば、トラフィック・スケジューラにより施されるべきサービス・パラメータの品質、または、仮想プライベート・ネットワーク・モジュールがトラフィックをトンネリング（en-tunnel）すべきトンネルの詳細など）とともに規定している。
【００４２】
この処理手段は、伝送情報を生成し、発信し、着信し、記憶させ、調べ、変更し、複写し、フィルタリングし、カプセル化し、カプセル解除し（un-encapsulate）、および／または、他の方法で伝送情報を処理することがある。特定の項目（アイテム）またはバンドルまたはカテゴリの伝送情報に対して行われる処理は、この形成された処理ポリシーによって決定されるか、あるいは、万一、形成された処理ポリシーがまったく施されなければ、デフォルト組込みポリシー（default built-in policy）によって、決定される。
【００４３】
この処理手段はモジュール化されることがある。すなわち、この処理手段は、一組の相互接続されたモジュールまたはコンポーネントとして実現される。このモジュール化された処理手段中のコンポーネントは、
・この装置を外部通信ネットワークまたは伝送メディアにリンクするネットワーク・インターフェースと通信インターフェース、
・伝送情報と他の伝送情報との関連付けを検出し、また、伝送情報に施されるべきポリシーを決定する関連付け識別コンポーネントと分類コンポーネント、
・任意グラフにおいて相互接続された１つまたは複数のトラフィック処理モジュールを含むアクション・グラフ（そこでは、これらのトラフィック処理モジュールは、これらのコンポーネントのうちのどれかのインスタンスであるか、あるいは、基本処理モジュールである）、
・現実の（リアル）スイッチ（real switch）が行うことになる処理（例えば、Ｅｔｈｅｒｎｅｔアドレスの自己学習と、情報のマルチキャスト／ブロードキャスト）を実行しながら、これらのコンポーネントをいくつでも（一般に、３つ以上）リンクする仮想スイッチ、
・これらのコンポーネントのうちの２つをリンクする仮想ワイヤ（仮想線、virtual wire）、
・ユニプロセッサ形またはマルチプロセッサ形のコンピュータシステムをエミュレートし、また、（多分、変更される）標準オペレーティングシステム（例えば、Ｌｉｎｕｘ、Ｍｉｃｒｏｓｏｆｔ Ｗｉｎｄｏｗｓ（登録商標）、Ｕｎｉｘ（登録商標）のようなオペレーティングシステム、リアルタイム・オペレーティングシステムなど）を実行する仮想マシン、
・「仮想マシン」上で実行するオペレーティングシステム／アプリケーションには（例えば、「仮想マシン」上のネットワーク・スタックには）、ネットワーク・インターフェース・カードのように思われるが、ただし、現実の（リアル）ハードウェアに接続するのではなく、これらのコンポーネントに接続する仮想ネットワーク・インターフェース・カード、
・アプリケーションが、パケットではなく、ストリームとして、例えば、Ｓｏｃｋｅｔｓ Ｄｉｒｅｃｔ Ｐｒｏｔｏｃｏｌなどのようなストリーム指向のプロトコルをエミュレートする仮想キャラクタ装置／仮想ファイルシステム／装置として、データを受け取れるようにする仮想ストリーム・インターフェース、
・リモート直接メモリアクセス・システムのように、共有メモリ・ベースの通信をエミュレートする仮想共有メモリ機構、
・「仮想マシン」上で、カーネル・モードまたはユーザ・モードで実行する標準（変更されない）アプリケーション、
・このシステムで提供されるアプリケーション・プログラミング・インターフェース（ＡＰＩ）と対話するように作られている「仮想マシン」上で、カーネル・モードまたはユーザ・モードで実行するアプリケーション、
である。
【００４４】
これらのコンポーネントは、このシステム内で最高レベル（もっとも抽象的なレベル）のデータフロー・グラフを形成するように相互接続される。データフロー・グラフ（それよりも低いレベルのグラフ）のネスティングは、上記アクション・グラフ機構を介してサポートされる。
【００４５】
コンポーネントは、クラスタ中で相互接続されている一組のプロセッサまたはコプロセッサ（専用固定機能ハードウェア）に任意に対応付けられる（すなわち、これらのプロセッサまたはコプロセッサ上に配備されるか、あるいはホストされる）ことがある。例として、これらのネットワーク・インターフェースと、一部のバンドリング（すなわち、情報の関連付け）／分類／アクション・グラフのモジュールは、１つのプロセッサ（多分、ネットワーク・プロセッサのような専用プロセッサ）上でホストされるかもしれないが、しかるに、他のコンポーネントは、他のプロセッサ（多分、汎用コンピューティング・プロセッサ）上でホストされるかもしれない。これらのコンポーネントをホストするプロセッサは、共有メモリ（均一、または不均一）、バス／バックプレーン、あるいは、メッセージ／パケット／データグラム／情報ストリーム・パッシング・パラダイム（information stream passing paradigm）をサポートする任意形式の通信リンクを使用して、相互接続されることがある。
【００４６】
このホスティング手段により、コンポーネントは、このシステムを含むプロセッサ上で共存することができる。このホスティング手段はまた、これらのコンポーネントが互いに、また、その他のシステムと対話できるようにする通信機構も提供する。
【００４７】
このホスティング手段は、リソース（メモリ、専用のＣＰＵまたはＣＰＵタイムスライス、コプロセッサ、ディスク空間、ネットワーク帯域幅など）をこれらのコンポーネントに割り当てるオペレーティングシステムを取り入れている。このような基礎になるオペレーティングシステムは、随意に、その基礎になるオペレーティングシステム上で実行する仮想マシンをサポートできる能力を持つリアルタイムまたは非リアルタイムのオペレーティングシステムであることもある。
【００４８】
このホスティング手段は、共有メモリ通信機構、メッセージ・パッシング通信機構（message passing communication mechanism）、ハイブリッド機構を含め、内部および外部の様々な通信機構と通信メディアを使用して、このホスティング手段がホストするコンポーネントをリンクすることができる。
【００４９】
この共有メモリ通信機構は、送信側が、伝達されるべき情報を、受信側がアクセスできる共有メモリエリアに入れることで動作する。この共有メモリエリアは、これらの通信関係者の双方がつねに物理的にアクセスできる一組の物理メモリ素子の中にあることもある。例えば、これは、上記通信関係者が、同一プロセッサ上で、あるいは、「対称型マルチプロセッシング（ＳＭＰ）」システム内の異なるプロセッサ上で実行するアプリケーションである場合に当てはまる。このような場合、仮想メモリ（当てはまる場合に）は、明瞭にメモリ・セグメント／ページを共有できるように構成される必要がある。別法として、この共有メモリエリアは、専用の共有メモリ・ハードウェア（多分、デュアルポートまたはマルチポート）を用いて実現されることもある。いずれにしても、随意の最適化として、送信プロセッサは、受信プロセッサのキャッシュに、通信情報、または通信情報の一部（例えば、データグラムのヘッダー、ただし、そのデータグラムのペイロードではない）を、そのキャッシュに「プレロード」するように指示する。これは、これらのプロセッサがキャッシュを共有する場合、あるいは、これらの通信関係者が単一プロセッサ上で実行する場合には、必要でない。このシステムは、互いに素な（非接続、disjoint）複数の共有メモリ・プールをサポートする。その意図は、同一セキュリティ・クラスのアプリケーションが、単一のメモリ・プールを使用するように構成されていることである。例えば、特定の組のプロトコルに属しているトラフィックを処理するアプリケーションは、他のプロトコルを処理するアプリケーションから分離されるか、あるいは、特定のユーザ／カスタマに関連するトラフィックに基づいて働くアプリケーションは、別のユーザ／カスタマのために働くアプリケーションとは分離される。共有メモリ・プールを分離することにより、他の通信機構の１つを使用して、プール間で情報を転送することが必要となり、すなわち、プール間でデータをコピーする必要があろう。所望のセキュリティ・ポリシーと、所望の性能レベルとの間の適切な妥協点を得るメモリ共有ポリシーを定めるのは、この装置のアドミニストレータの責任である。
【００５０】
完全共有メモリに代わる別法として、仮想メモリ・システムは、ページをリマッピングして、関係者間で、所有権またはアクセス可能性（accessibility）を転送するために使用されることがある。このような場合、ページは、伝達されるべきデータ項目よりも大きいから、この共有メモリのオプションに代わるものとして、追加メモリが消費される。また、ページをリマッピングすることから、処理のオーバーヘッドがもたらされることになるが、しかし、特定のデータ項目にアクセスできる（読取りまたは書込みができる）関係者（PartyまたはParties）を特定的に管理できるので、セキュリティが向上するであろう。
【００５１】
リモート直接メモリアクセス機構は、物理的に共有されるメモリを必要とせずに、仮想共有メモリを実現するために使用されることもある。このような場合、どの記憶場所にメッセージが転送されるのか（本質的にはフリーリスト情報をシンクロナイズするために）送信関係者に受信関係者が知らせるための機構が使用されることがある。
【００５２】
上記ホスティング手段はまた、メッセージ・パッシング・システムを使用して、コンポーネントをリンクすることもサポートする場合がある。このメッセージ・パッシング・システムは、様々な物理メディア、例えば、パケット指向のネットワーク・メディア、バス／バックプレーン、ストリーム／回線チャネル指向のメディアなどを利用できる。このメッセージ・パッシング・システムは、それぞれのリンクを横切って、１つまたは複数のメッセージ・パッシング待ち行列（キュー）を確立する。必要である場合には、メッセージは、複数のタイプの伝送メディアにアクセスするコンポーネントにより、伝送メディア間で変換される。これらの待ち行列は優先順位で配列されて、それぞれの優先順位に１つまたは複数の待ち行列を関連付けることがある。このような場合、或るメッセージを、他のメッセージの前に送り／受け取る必要がある場合には、このシステムは、そのメッセージを、他のメッセージが入れられる待ち行列の優先度よりも高い優先度で、待ち行列に入れることもある。
【００５３】
このシステムは、信頼できるトランスポートを横切って、または、信頼できないトランスポートを横切って（ここでは、伝送情報が失われる確率がゼロではない）、動作できる。その基礎になるトランスポートが信頼できない場合には、このシステムは、受け渡す必要のあるメッセージを確実に受け渡せるようにする再試行だけでなく、肯定応答および／または否定応答も利用する。一定のメッセージを受け渡す必要がない。すなわち、これらのメッセージは、必要な場合に（例えば、リソースが、これらのメッセージを送り／受け渡し／受け取り／処理するのに充分でない場合に）、上記メッセージ・パッシング・システムにより廃棄される。
【００５４】
上記ホスティング手段はまた、以下の機構の組合せを使用することもある。このシステムは、例えば、１つまたは複数の情報構造体を共有メモリに入れ、次に、共有メモリにおいて、情報をいつでも読み取れる状態にあることを、渡されたメッセージ／割込み（interrupt）／タスク間またはスレッド間の信号などを介して、受信者に通知することがある。このシステムは、受信者が共有メモリエリアを「ポーリングする（poll）」ことをこのシステムが知ると、これらのメッセージを抑制するために、また、この受信者が休止状態にある可能性がある場合に（例えば、メッセージが、しばらくの間、受信者に送られていない場合）、メッセージを送って受信者を目覚めさせるために、最適化を含む。
【００５５】
上記送り手段は、情報を、一組のコンポーネント、アプリケーション、サブシステム、通信／ネットワーク・インターフェース、および／または、外部システムに転送することがある。情報を転送しなければならない組のエンティティと、どの順序で、これらのエンティティが情報を受け取る必要があるのか（すなわち、どのエンティティが、まず最初に、この情報を受け取り、次に、この情報をどのエンティティに送るかなど）は、このフロー・ポリシーに左右される。このフロー・ポリシーは、バンドルごとに、また分類カテゴリごとに定められることもあり、他の方法ではバンドル／分類されないすべてのトラフィックに施される一組のポリシーを自由に指定できる。一組のデフォルト・フロー・ポリシーが、このシステムに組み込まれることがある。
【００５６】
この情報は、ＡＰＩを介して、アプリケーションに転送されることがある。この方法は、これらのＡＰＩと対話するように設計されているアプリケーションが、その基礎になるオペレーティングシステム（例えば、リアルタイムＯＳ／ハイパーバイザ）上で実行していようと、仮想マシン上で実行していようと、それらのアプリケーションに利用できる。この情報はまた、「仮想ネットワーク・インターフェース・カード」または「仮想ストリーム・インターフェース」を介して、仮想マシンにも転送されることもある。このような場合、標準の商用既製アプリケーションは、それらのアプリケーションをこれらの仮想マシン上でホストできるという条件で、この情報を受け取ることができる。外部サーバーまたは他の外部ノードは、この情報を、現実の（リアル）ネットワーク・トラフィック／他の通信伝送情報として受け取ることになる。
【００５７】
このフロー・ポリシーはまた、バンドル（すなわち、一般にフロー）の一部だけを特定のコンポーネントに送るべきと規定する場合がある。コンポーネントは、このフローの始まりから、このフローの中央のどこかまで、このフローの一区分を受け取る必要があることが多いであろう。しかしながら、一部のコンポーネントは、フローの任意部分の受取り（途中でフローに「加わる（join）」）をサポートすることがある。
【００５８】
このフロー・ポリシーは、処理されているバンドル／フローには特定的な関連はない（あるいは、ときには、どんなバンドル／フローにも関連はない）このシステム内の状態変数に左右されることがある。したがって、このシステムは、このシステム内の異なるプロセッサの現在負荷（実際には、プロセッサの間での負荷分散トラフィック）に基づいて、それらのプロセッサ上で作動する同等な組の仮想マシンの１つにバンドル／フローを送ることに決める。また、このシステムは、このシステムに通された経路を変更するように決め、例えば、いくつかの時刻／曜日に、いくつかのコンポーネントを省くか、あるいは、システム負荷が或るしきい値を超える場合に、（重要と標記されている操作、例えば、トラフィック・ファイアウォール処置／ウイルス・フィルタリングを引き続き実行しながら）、任意と標記されている操作を省く（例えば、求められていない商用電子メール、別名「スパム」をフィルタリングする）ように決める。さらに、このシステムは、このフロー・ポリシーにより指定されたデータフロー・グラフにおいて、他のコンポーネントに近いことに基づいて、一組の同等なコンポーネントからのデータを処理するコンポーネントを選択する。したがって、トラフィックが、このシステムにおいて、プロセッサ１に接続されたネットワーク・インターフェースに入る場合には、プロセッサ１上でホストされるソフトウェア・コンポーネント、あるいは、プロセッサ１にじかに接続されているハードウェア・コンポーネントは、このシステム内の他の場所にある他の同等なコンポーネントよりも好まれるが、しかしながら、このシステム内のプロセッサ２に情報を転送する犠牲よりも、プロセッサ２が、特定のコンポーネントをホストするのにさらに適していること（なぜなら、プロセッサ２が、より大きな処理能力／より大きなメモリ／自由になる専用ハードウェアなどを持っているからである）の方が重要である場合には、このシステムは、プロセッサ１上で、特定コンポーネントの同等なインスタンスが利用できても、プロセッサ２を使用して、このコンポーネントをホストすることに決める。このシステムが、自動的に代用を行わないように構成されているモード、すなわち、それぞれのコンポーネントのタイプおよびインスタンスが特定的に構成されているモードも利用可能である。それゆえ、自動的に決定されようと、手操作で構成されようと、このシステムは、他のプロセッサ／転送・処理用のハードウェアを使用することで、トラフィックを「カットスルー」するか、あるいは、いくつかのプロセッサからトラフィックを「オフロード」することができる。
【００５９】
このフロー・ポリシーはまた、外部装置／コンポーネント／システムの状態、あるいは、これらのエンティティとのインターフェースの状態にも左右されることがある。例として、このシステムは、様々な外部サーバーの負荷に基づいて、それらのサーバーの間で、負荷分散する（load balance）か、または、このトラフィックの発信者のネットワーク・アドレスに関連する地理的場所に基づいて、トラフィックに適した送信先を選択するか、あるいは、一組のネットワーク・リンクの使用容量に基づいて使用するネットワーク・リンクを決定することができるであろう。
【００６０】
このシステム挙動は、以下の通り、時間の経過とともに変化することがある。
・上記分類手段は、さらに多くの伝送情報を受け取るので、伝送情報を入れるカテゴリを順次に改善することがある（例えば、トラフィックは、ＴＣＰトラフィック、次に、「ＨＴＴＰ ｏｖｅｒ ＴＣＰ」トラフィック、次に、「ＨＴＴＰ ｏｖｅｒ ＴＣＰ」トラフィックでのｗｅｂ会議（web conferencing）として分類されることがある）。
・上記関連付け手段は、その関連付け情報、すなわち、伝送情報が関連付けられるバンドルを変更することがある。
・この分類カテゴリとバンドリング情報を変更することにより、異なるフロー・ポリシーが他のフロー・ポリシーとして実現されるかもしれないという事実は、新たに決定されたカテゴリ／バンドルに結び付けられることがある。
・外部システムまたは内部コンポーネントは、関連付け（すなわち、バンドリング）、分類、フロー・ポリシーを変更し、さらに、どんな方法でコンポーネントを構成するかだけでなく、どんな方法でコンポーネントを相互接続してデータフロー・グラフを形成するのかも変更することがある。
【００６１】
次に、本発明は、クライアント、サーバー、アプリケーションにつながれた本発明によるシステムを図式的に示す線図式の添付図面を参照して、例示として述べられる。
【発明を実施するための最良の形態】
【００６２】
次に、図１を参照すると、本発明によるデジタル電子フローを処理するシステムは、その全体が参照番号１０で表されている。システム１０は、クライアント１４とサーバー（１６．１と１６．２）との間に接続された装置１２を含む。この例では、装置１２は、ネットワーク・トラフィックまたは他の通信が装置１２（すなわち、この装置は、ゲートウェイ、ルータ、スイッチ、「ｂｕｍｐ ｉｎ ｔｈｅ ｗｉｒｅ」ブリッジ、または、同様に接続される装置である）を通過するよう指示される（特定のレイヤ、例えばレイヤ２に宛てることに基づいて）か、あるいは、強制的に装置１２を通過させられる（物理的コネクティビティのトポロジーに基づいて）ように、ネットワークまたは他のデータ通信システムに接続されている。
【００６３】
装置１２のハードウェアは、専用プロセッサ・サブシステム１８．１と汎用プロセッサ・サブシステム１８．２とを含む。専用プロセッサ・サブシステム１８．１と汎用プロセッサ・サブシステム１８．２は、通信機構（図示されてない）を利用して、相互連絡される。この通信機構は、これらのプロセッサ・サブシステム間のメッセージ交換をサポートできるか、あるいは、これらのプロセッサ・サブシステムがやり取りできるようにする、双方のプロセッサ・サブシステムで共有されるメモリエリアを提供できる。
【００６４】
専用プロセッサ・サブシステム１８．１は、ネットワーク・トラフィックの識別、分類、処理に当てられる一組のプロセッサとコプロセッサだけでなく、ネットワーク・インターフェース・ハードウェア（２０．１と２０．２）も含む。フロー識別・分類サブシステム（２２．１と２２．２）、アクション・グラフ・サブシステム２４、仮想スイッチ（ＶＸ）サブシステム２６は、この組のプロセッサとコプロセッサ上でホストされる。
【００６５】
クライアント１４は、ネットワーク・インターフェース２０．１に接続される。ネットワーク・インターフェース２０．１は、フローＩＤ・分類サブシステム２２．１に接続され、さらに、フローＩＤ・分類サブシステム２２．１が仮想スイッチ２６に接続されている。ネットワーク・インターフェース２０．１はまた、アクション・グラフ・サブシステム２４にも接続され、さらに、アクション・グラフ・サブシステム２４も仮想スイッチ２６に接続されている。
【００６６】
サーバー１６．１とサーバー１６．２は、ネットワーク・インターフェース２０．２に接続される。ネットワーク・インターフェース２０．２は、フロー識別・分類サブシステム２２．２に接続され、さらに、フローＩＤ・分類サブシステム２２．２が仮想スイッチ２６に接続されている。
【００６７】
汎用プロセッサ・サブシステム１８．２は、１つまたは複数のプロセッサ装置内の１つまたは複数のプロセッサ・コアから成っている。これらのプロセッサ・コアと装置は、相互接続されてマルチプロセッサ・システムを形成する。このマルチプロセッサ・システムは、カーネル・モードのソフトウェア環境３０と、ユーザ・モードのソフトウェア環境３２とを持つ汎用オペレーティングシステムをホストする。カーネル・モードのソフトウェア環境３０内では、仮想ネットワーク・インターフェース・カード（ＶＮＩＣ）（３２．１と３２．２）が置かれている。ユーザ・モードのソフトウェア環境３２内では、アプリケーション３６がホストされる。アプリケーション３６は、直接的に、または、間接的にカーネル３０を介して、ＶＮＩＣ３２．１およびＶＮＩＣ３２．２に結び付けられる。ＶＮＩＣ３２．１とＶＮＩＣ３２．２は、仮想スイッチ２６に接続される。
【００６８】
使用中に、クライアント１４は、サーバー１６．１と、また（ほぼ同時に、または異なるときに）サーバー１６．２と、通信セッションを確立する。例えば、クライアント１４は、ＴＣＰセッションを確立するかもしれない（しかしながら、任意のメディアを介して、どんなネットワーク・プロトコル／通信セッションもサポートできるであろう）。
【００６９】
クライアント１４により送られた情報（この例では、データグラム／パケットにカプセル化される）は、ネットワーク・インターフェース２０．１を介して、この装置に入る。
【００７０】
フロー識別・分類コンポーネント２２．１は、フローが確立されていることを決定して、フロー識別・分類コンポーネント２２．１が受け取るそれぞれのデータグラムに関連するフローを識別する。このようにして、このフロー中のデータグラムが、まとめてバンドルされる（互いに関連付けられる）。
【００７１】
フロー識別・分類コンポーネント２２．１はさらに、パケット・ヘッダー、パケット内容、フロー内容を調べて、解析し、また、プロトコル（ネストされたプロトコルも含む）を検出して、復号し、さらに、フローから情報を取り出す。この分類プロセスは、このシステムにより、および／または、このシステム上で実行するアプリケーションにより提供されるポリシー記述情報（policy specification information）に左右される。このポリシー記述情報は、一組のルールまたは一組のマッチング表現の形式を取ることがある。これらのルールとマッチング表現は両方とも、基準と、その基準を満たす場合に適用されるポリシーとを規定している。
【００７２】
フロー識別・分類コンポーネント２２．１は、任意グラフ構造体において相互接続された複数のサブモジュールから成っている。これらのサブモジュールは、この分類プロセスの特定の面を実施する。例えば、或るサブモジュールは、特定のプロトコルを検出して、復号することができる一方で、別のサブモジュールは、特定のマッチング処理を実施できることがある。サブモジュールは、適切な場合にコプロセッサを使用して、処理タスクを実行する。例えば、暗号化コプロセッサを使用して、情報を解読することで、フローの内容を得るか、あるいは、正規表現構文解析コプロセッサを使用して、このマッチング・プロセスに役立てることがある。
【００７３】
このフロー分類の結果は、このポリシーを、そのフロー（あるいは、フローでない他の伝送情報）に施す必要があるということである。この例では、そのポリシーは、クライアント１４からサーバー１６．１まで指定基準に一致するフローが、「仮想ネットワーク・インターフェース・カード（ＶＮＩＣ）」３２．１を介して、アプリケーション３６に送られるべきと規定している。
【００７４】
アプリケーション３６およびオペレーティングシステムのカーネル３０には、ＶＮＩＣ３２．１とＶＮＩＣ３２．２は、標準ネットワーク・インターフェース（すなわち、デバイス・ドライバ）のように思われる。アプリケーション３６は、生のネットワーク・パケットとして、あるいは、カーネル３０に組み込まれたプロトコル・スタックを介して、ＶＮＩＣ３２．１とＶＮＩＣ３２．２からネットワーク・トラフィックを得るように構成されている。アプリケーション３６は、このネットワーク・インターフェースが、現実のネットワーク・インターフェースではなくて、仮想ネットワーク・インターフェースであることに気づいてなく、また同様に、トラフィックが、このネットワーク・インターフェースに到達する前に処理されていることにも気づいていない。アプリケーション３６は、このフロー中のトラフィックを解析して、このフローが進行すべきことを決定する。このトラフィックを処理した後で、例えば、パケット・ヘッダーまたはフロー内容を変更した後で、アプリケーション３６は、ＶＮＩＣ３２．２を介して、このトラフィックを送る。標準ネットワーク・インターフェースに対応したＶＮＩＣにデータを通しているから、このフロー識別・分類サブシステムにより決定されたメタデータ、例えば、このフロー分類の結果を表す情報だけでなく、このフローに施されるポリシーにもリンクされているタグが失われている。それゆえ、このフロー識別子とフロー・ポリシーを決定するために、このトラフィックを、第２のフロー識別・分類サブシステム２２．２に転送する必要がある。この例では、このフロー・ポリシーは、それ以上、このトラフィックに処置を施す必要がないことと、ネットワーク・インターフェース２０．２を介して、このトラフィックを単に送る必要があるだけであると規定している。次に、サーバー１６．１は、このトラフィックを受け取る。
【００７５】
サーバー１６．１は、サーバー１６．１が受け取っている情報を処理し、変更された情報または他の情報（例えば、クライアントにより要求される情報）を戻す。サーバー１６．１により送られた情報は、戻りトラフィック、または、このフローの戻り部分と呼ばれる。この例では、この戻りトラフィックは、ネットワーク・インターフェース２０．２を介して受け取られ、そこで、第２のフロー識別・分類サブシステム２２．２は、この場合も、その受信トラフィックが属しているフローを識別して、このフローに施されるべきポリシーを決定する。このような場合、このフロー・ポリシーは、このトラフィックをＶＮＩＣ３２．２に転送すべきことを指示し、そこで、アプリケーション３６は、所要のどんな処理も行って、（多分、変更されている）トラフィックを、トラフィックが仮想スイッチ２６で受け取られて、アクション・グラフ２４に送られる場所から、ＶＮＩＣ３２．１に転送する。
【００７６】
この例では、ＶＮＩＣ３２．１を介して送られるすべてのトラフィックが、クライアント１４宛てであって、かつ、アクション・グラフ２４により、同じやり方で処理されることに留意されたい。このトラフィックに施されるフロー・ポリシーは、このトラフィックが属しているフローにも左右されないし、また、トラフィックまたはフロー内容にも左右されない。それゆえ、このトラフィックを、フロー識別・分類サブシステムで処理する必要はないから、このトラフィックは、直接にアクション・グラフ２４に送られる。この例では、本システムは、場合によっては諸機能を必要としないことを決定でき、よって、このシステム内でのフローのルーティング（経路指定）を最適化できることが例示されている。
【００７７】
アクション・グラフ２４は、任意グラフにおいて接続されるアクション・モジュールから成っている。この例では、アクション・グラフ２４は、このシステムを通るパケットとバイトに関して統計を取るトラフィック監視モジュール、このトラフィックの一部をフィルタで除くファイアウォール・モジュール、および、トラフィックの帯域幅を制限するトラフィック管理モジュールから成っていることもある。
【００７８】
フロー中のトラフィックの異なる方向、すなわち、前進トラフィックと戻りトラフィックは、このシステムを通る同一経路に従う必要はなく、この経路に沿って、サブシステムおよびモジュールにより、様々に処理される場合があることに留意されたい。この例では、戻りトラフィックは、アクション・グラフを通ったが、しかるに、前進トラフィックは、アクション・グラフを通らなかった。このシステムが、トラフィックを分類し続け、それに対応して、このフロー処理ポリシーを改善することで、あるいは、このフロー処理ポリシーが、このフローの存続期間にわたってアドミニストレータまたはアプリケーションにより変更されることで、このフロー処理ポリシーは、このフローの存続期間にわたって調整される場合があることも留意されたい。このことから、その経路が変更されるか、あるいは、その経路中のサブシステムで使用されるパラメータが変更されることがある。
【００７９】
第２のフローは、図１において、クライアント１４とサーバー１６．２との間に示されている。このフローは、クライアント１４により開始され、フロー識別・分類ブロック２２．１により解析されて、分類される。この場合、このシステムは、このフローに入っているトラフィックをアプリケーション１６が受け取る必要はないと判定する。これは、おそらく、アプリケーション１６がセキュリティ機能を実行しており、しかも、このクライアントとサーバーが信頼されるからである。このシステムは、このフローを、アクション・グラフ２４を介して、ネットワーク・インターフェース２０．２に送る。このシステムは、このフローを「カットスルー」し、このことは、このフローのすべての処理が、システム１８．１内で行われることと、このフローが、絶対にプロセッサ１８．２を通って送られることはなく、それゆえ、このフローが、オペレーティングシステム３０によっても、またアプリケーション３６によっても処理されないことを意味する。
【００８０】
図２は、動作時のこのシステムの別の例を示している。システム１２は、処理システム１８．１と処理システム１８．２から成っている。処理システム１８．２は、オペレーティングシステムのカーネル３０とオペレーティングシステムのユーザ空間４０とを持つオペレーティングシステム（例えば、Ｌｉｎｕｘ）の単一のインスタンスを実行している。このオペレーティングシステムは、２つのサードパーティ・アプリケーション、例えば、ユーザ空間で実行する「侵入検出」アプリケーション４４と、オペレーティングシステムのカーネル３０で実行する監視アプリケーション３４とをサポートしている。クライアント１４は、サーバー１６．１とセッションを確立する。このフローは、ネットワーク・インターフェース２０．１を介して、このシステムに連絡し、また、フロー識別・分類モジュール２２．１に渡される。最初の分類から、ポリシーは、このフローが、アクション・グラフ２４で処理された後で、ネットワーク・インターフェース２０．２に送られるべきであると決定する。この最初のポリシーはまた、このフローのコピーを作成して、それを、ＶＮＩＣ３２に送り、そこで、オペレーティングシステムのカーネル３０上で実行しているアプリケーション３４に、このフローを受け取らせることも指示する。アプリケーション３４は、このフローを、サーバー１６．１に進む途中で変更したくないという点で、「読取り専用」のアプリケーションであることに留意されたい。さらに多くのフロー情報が、フローＩＤ・分類モジュール２２．１により解析されるから、最終分類が可能になる。ここで、アプリケーション４４は、このフローを受け取ることを必要とし、また、このフローを変更したい場合があることが決定される。図示される例では、このフローは、ＶＮＩＣを使用するのではなくて、アプリケーション・プログラミング・インターフェース（ＡＰＩ）４２を実施するライブラリを介して、アプリケーション４４に渡される。アプリケーション４４の開発者は、ＡＰＩ４２を実現するライブラリにより提供されるインターフェースを明確に利用してきた。図示される例では、このフローに入っているトラフィックがアプリケーション４４に送られ、また、このシステムは、そのトラフィックがアプリケーション４４から戻されるのを待ってから、このトラフィックをサーバー１６．１に転送し、かつ、コピーをアプリケーション３４に転送し続ける。形成されたポリシーにより、また、データのいくつかのコピーを作ることや、そのデータを、いくつかのアプリケーションおよびサブシステムに同時に転送することなど、このデータを受け取るアプリケーションおよびサブシステムがこのデータを変更するかどうかにより、他のオプションも可能であることは明らかである。
【００８１】
一定期間後に、アプリケーション４４は、このフローが、もう脅威とはならないことと、このフロー中に残りのトラフィックを知る必要がないことを決定する場合がある。ここで、アプリケーション４４は、もう、このフローを受け取り続けたくないことを、このシステムに指示することもある。このシステムは、そのフローをアプリケーション４４に送るのを止めることになるが、それでも、このフローをサーバー１６．１に転送しており、かつ、コピーをアプリケーション３４に送っている。このように、フローを「返す（ｈａｎｄ ｂａｃｋ）」ことができることから、アプリケーション４４においてリソースが利用可能になり、かつ、性能が向上する。
【００８２】
図２はまた、関連するフローを処理するシステムの一例も示している。この例での第２のフローは、クライアント１４とサーバー１６．２との間に発生する。このフローは、発生することになる将来のフローを前もって通知するフローであると、フロー識別・分類サブシステム２２．１により判定される。一例として、デジタル化された音声を運ぶ関連メディア・フローを参照するＳＩＰなどの信号プロトコルを運ぶフローであるかもしれない。このシステムは、このフローを分類して、確立されるかもしれない将来のどんなフローに関しても、上記フローから情報を収集しながら、そのフローを所定の経路でサーバー１６．２に送る。第２のフローが、なおアクティブである間、あるいは、第２のフローが終了した後で、第３のフローがサーバー１６．２から始まって、クライアント１４に戻る。第３のフローは、フロー識別・分類機能２２．２で処理され、また、ポリシーがすでに決定されている関連フローであると認められる（第２のフローから収集された情報に基づいて）。このような第３のフローの一例は、第２のフローに入っている信号トラフィック（signaling traffic）に関連するメディア・ストリームであるかもしれない。
【００８３】
図３は、2つ以上のアプリケーションで処理される必要のあるフローを処理するシステムの一例を示している。図３はまた、同一のプラットフォーム上で、複数のアプリケーションを統合できるようにするために、ＶＮＩＣの使用も図示している。
【００８４】
この例では、フローは、クライアント１４とサーバー１６．１との間に発生する。フロー識別・分類サブシテム２２．１は、このフロー中のトラフィックが、アプリケーション４４で処理される必要のあることを決定する。このフロー・ポリシーは、アプリケーション４４が、このシステムで提供されたＡＰＩを利用するように作られていることと、アプリケーション４４宛てのトラフィックが、システムＡＰＩを実現するライブラリを構成しているコンポーネント４２を介して、アプリケーション４４に送られる必要があると規定している。このフロー・ポリシーはまた、アプリケーション４２による処理の後で、このフローを所定の経路でアプリケーション４６に送って、さらなる処理を行うべきであることと、アプリケーション４６がＶＮＩＣ３２．１に結び付けられることも規定している。アプリケーション４４がシステムＡＰＩを使用しているので、このフローに対するフロー・ポリシーは、このフロー内容といっしょに保存されるメタデータとして保持されることもあり、それゆえ、アプリケーション４４で処理されてきたトラフィックにおいて、フロー識別・分類を行う必要はない。しかしながら、このトラフィックが、アプリケーション４６で処理されると、アプリケーション４６により出力されたデータは、フロー識別・分類サブシテム２２．２に通される必要がある。このことは必要である。なぜなら、フロー・ポリシーのようなメタデータを保持できるようにはしないＶＮＩＣを、このトラフィックが通るからである。フロー識別・分類サブシテム２２．２が、このフローを識別して、このフロー・ポリシーを決定すると、このシステムは、このフロー・ポリシーに基づいて、このフローのトラフィックを、ネットワーク・インターフェース２０．２を介してサーバー１６．１に送る。
【００８５】
この例では、第２のフローは、クライアント１４とサーバー１６．１との間に存在する。この第２のフローに対するフロー・ポリシーは、ＶＮＩＣ３２．１に結び付けられているアプリケーション４６を、このフローが通過する必要があると規定している。アプリケーション４６は、アプリケーション４４を介してアプリケーション４６に送られる第１のフローだけでなく、直接にアプリケーション４６に送られる第２のフローも処理していることに留意されたい。アプリケーション４６は、そのフローを受け取る前に発生するフローの処理にまったく気づいていない。例えば、第１のフローの場合に、アプリケーション４６は、第１のフローがアプリケーション４４ですでに処理されていることを知らない。すなわち、アプリケーション４６は、単に、潜在的に変更されたか、あるいはフィルタリングされたフロー内容を受け取るだけである。
【００８６】
この例での第３のフローは、クライアント１４とサーバー１６．２との間に発生する。第３のフローは、フロー識別・分類サブシテム２２．１により分類され、また、第１のフローおよび第２のフローに用いられているものとは異なる内部仮想ネットワークを使用して、アプリケーション４８に送ることを必要とするものと決められる。第３のフローは、仮想スイッチ２６．１を介して送られるが、しかるに、他のフローは、仮想スイッチ２６．２を介して送られる。第３のフローは、ＶＮＩＣ３２．２を使用して、アプリケーション４８に送られる。このシステム内で、このように別々のＶＮＩＣおよび仮想スイッチを使用すると、第３のフローと他のフローとの間の隔離度が、第１のフローと第２のフローとの間にある隔離度よりも大きくなる。これはまた、このシステムが性能を最適化する機会も提供する。
【００８７】
図４は、仮想マシン（６０．１、６０．２、６０．３）を提供して、オペレーティングシステムのユーザ空間（４０．１、４０．２、４０．３）、および、これらのオペレーティングシステム上でカーネル・モードまたはユーザ・モードで実行するアプリケーションとともに、それぞれ、ゲスト・オペレーティングシステムのカーネル（３０．１、３０．２、３０．３）をサポートするシステム１２の一例を示している。このシステムは、様々な数の仮想マシンをサポートでき、しかも、それぞれの仮想マシンは、異なるタイプまたはバージョンのゲスト・オペレーティングシステム、および／または、同一のタイプまたはバージョンのゲスト・オペレーティングシステムの様々に構成されたインスタンスをホストすることができる。これらのゲスト・オペレーティングシステムはそれぞれ、同一のアプリケーションをホストするか、あるいは、異なるアプリケーションをホストすることができる。
【００８８】
この例では、フローは、クライアント１４とサーバー１６．１との間に発生する。このフローは、ネットワーク・インターフェース２０．１で受け取られ、そこで、このフローは、フロー識別・分類サブシテム２２．１により分類されて、仮想マシン（ＶＭ）６０．１上で実行するアプリケーション４４による処理を必要とするものと決められる。アプリケーション４４は、システムＡＰＩ実現ライブラリ４２を介して、内容を受け取ることができる。このシステムは、ＶＭ６０．１において動作するゲストＯＳ中のユーザ空間４０．１で実行するアプリケーションに、このフロー内容を直接に受け渡すことができ、ゲストＯＳのカーネル３０．１による処理または転送を必要としないことに留意されたい。
【００８９】
この例では、この形成されたフロー処理ポリシーは、アプリケーション４４で処理されたあらゆるトラフィックを、仮想マシン６０．２内のアプリケーション４６でも処理する必要があることと、このトラフィックを、ＶＮＩＣ３２．１を介して、アプリケーション４６に渡す必要があることを規定している。アプリケーション４６で処理されると、このフローは、ＶＮＩＣ３２．１を通して、仮想マシン６０．２から出て、仮想スイッチ２６．２により、フロー識別・分類サブシテム２２．２に転送されて、後で、フロー識別・分類サブシテム２２．２により、このフロー・ポリシーを施すことに決められる。このフロー・ポリシーは、このフローが、アクション・グラフ２４．１に送られて処理された後で、サーバー１６．１またはサーバー１６．２に送られる（双方とも、ネットワーク・インターフェース２０．２を介する）べきと規定している。この例でのアクション・グラフ２４．１は、負荷分散機能を果たして、このフローを受け取るべきサーバーを選択する。
【００９０】
第２のフローは、クライアント１４．２とサーバー１６．１との間に存在する。第２のフロー中のトラフィックは、ネットワーク・インターフェース２０．１を介して、このシステムに入り、そこで、このトラフィックが、フロー識別・分類サブシテム２２．１で処理される。この形成されたフロー・ポリシーは、このフローが、ＶＭ６０．２上で実行するアプリケーション４６（ＶＮＩＣ３２．１に結び付けられている）による処理を必要とすることを規定している。このフローがＶＮＩＣ３２．１から出ると、仮想スイッチ２６．２は、このトラフィックを、フロー識別・分類サブシテム２２．２に転送する。フロー識別・分類サブシテム２２．２は、このトラフィックを分類し直して、このトラフィックを、ネットワーク・インターフェース２０．２を介して、サーバー１６．２に送るべきことを決定する。第１のフローと第２のフローは両方とも、ＶＮＩＣ３２．１から出るが、ただし、フロー識別・分類サブシテム３２．１により戻された結果に応じて、様々に処理されることに留意されたい。
【００９１】
第３のフローは、クライアント１４．２とサーバー１６．１との間に存在する。このフローでのトラフィックは、ネットワーク・インターフェース２０．１で受け取られて、フロー識別・分類サブシテム２２．１で処理される。この形成されたフロー・ポリシーは、このフローを、ＶＮＩＣ３２．２に結び付けられているアプリケーション５０で処理する必要があると規定している。アプリケーション５０は、仮想マシン６０．３内のゲスト・オペレーティングシステムのカーネル３０．３で実行している。それゆえ、このフローに属しているトラフィックは、ＶＮＩＣ３２．２に送られる。アプリケーション５０は、仮想マシン６０．３内のユーザ空間で実行しているアプリケーション４８に、このフロー内容を渡す。アプリケーション４８から戻されたトラフィックは、アプリケーション５０により受け取られて、そのトラフィックを、アプリケーション５０がＶＮＩＣ３２．３を介して先へ送り、そこで、このトラフィックが、フロー識別・分類サブシテム２２．３で処理される。これにより、このフロー・ポリシーは、このトラフィックをネットワーク・インターフェース１６．２を介してサーバー１６．１に受け渡す前に、アクション・グラフ２４．２を経てトラフィックを送るように指示することが、決定される。カーネル・モードとユーザ・モードのアプリケーションだけでなく、１仮想マシンごとに複数のＶＮＩＣも含む場合がある、このシステムを通る任意に複雑な経路が可能であることに留意されたい。また、フローに属しているトラフィックが１つのＶＮＩＣを介して仮想マシンに入り、また、別のＶＮＩＣを介して、この仮想マシンから出ることにも留意されたい。さらに、このシステム内をフローが進むときに、これらのフロー識別・分類サブシテムが、適宜、協働して、このフロー・ポリシーが適正に、かつ一貫して、そのフローに確実に施されるようにすることにも留意されたい。フロー識別・分類サブシテム２２．１は、例えば、第３のフローに施されるべきフロー・ポリシーを、制御チャネル（この略図には示されてない）を介して、フロー識別・分類サブシテム２２．３に伝えることがある。
【００９２】
次に、図５を参照して、フロー識別・分類サブシテム２２のサブコンポーネントと、このサブコンポーネントの模範的な使用シナリオ（概要）が述べられている。この例では、トラフィックは、ネットワーク・インターフェース２０からフロー識別・分類サブシテム２２に送られ、また、フロー識別・分類サブシテム２２から出て、仮想スイッチ２６に進む。
【００９３】
このサブシステム内では、トラフィックは、まず最初に、フロー識別コンポーネント７０で受け取られる。フロー識別コンポーネント７０は、フロー・ステート・テーブル７２中で１つまたは複数のルックアップを実行することで、このトラフィックが属しているフローを識別するのに役立つ。フロー・ステート・テーブル７２は、パケットの内容に含まれている情報だけでなく、パケット・ヘッダーに入っている情報のように、トラフィックに含まれているフロー識別情報も、フロー識別子と相互に関係づける。フロー識別コンポーネント７０は、例えば、同一のＩＰアドレスとＴＣＰポートを持つトラフィックが、同一のフローに属していると判定できる。ときには、パケット内容も調べてみる必要がある。例えば、アプリケーション層（すなわち、レイヤ７）の情報は、同一の基本ＩＰヘッダー情報を共有するフローを見分けるのに役立つことがある。フロー識別コンポーネント７０は、このフロー識別情報を取り出せるようにするのに充分なインテリジェンス（知能）を持ち、かつ、上記アプリケーション層のプロトコルのそのような充分な状態を保つ。
【００９４】
フローに対して、最初のトラフィック要素が受け取られる場合に、そのフローは、新フローと呼ばれ、フロー識別コンポーネント７０により、新たなフロー識別子が割り当てられる。その後、受け取られるトラフィック要素については、フロー識別コンポーネント７０は、先に割り当てられたフロー識別子を検索することになる。
【００９５】
さらに、フロー識別コンポーネント７０は、トンネリングされたトラフィックの場合に行われる可能性があるように、単一の外部フロー中にネストされている複数のフローを識別し、互いに区別することができる。フローがネストされる場合には、このネストされるフローは、含む方のフローの識別子と、含まれる方のフローの識別子とを組み合わせることで、識別される。
【００９６】
さらに、フロー識別コンポーネント７０は、特定のフローに関連するフローを識別することができる。この例では、フローは、フロー・ステート・テーブル７２と、別個の関連フロー・テーブル７４とが、どんな方法で組み合わされるにせよ、このようなテーブル７２とテーブル７４とを組み合わせることによって、関連フローにリンクされる。
【００９７】
フローが他のフローを含む場合には、これらの含まれる方のフローは、同一の含む方のフロー中のすべてのフローと、同胞関係を用いて関連付けられることになる。これらの含む方のフローと、含まれる方のフローは、親と子の関係を用いて関連付けられることになる。
【００９８】
他のタイプの関連フローはまた、このシステムで了解される。例えば、特定のユーザにより開始されているすべてのフローが関連付けられるか、または、信号トラフィックが、この信号トラフィックにより制御されるメディア・ストリームに関連付けられるか、あるいは、特定ホスト間または特定サブネット間のトラフィックが関連付けられることがある。フロー間の複数の関連付けレベルと、複数の関連付け関係が同時にサポートされる。
【００９９】
フロー識別コンポーネント７０にフロー識別子が割り当てられたか、あるいは、フロー識別コンポーネント７０がこのフロー識別子を検索した後で、フロー識別コンポーネント７０は、この受け取られたトラフィックと、このフロー識別子を、フロー分類・ポリシー決定コンポーネント７８に転送する。フロー識別コンポーネント７０は、まず最初に、このフローに施されるべきポリシーを示すタグを、フロー・ステート・テーブル７２から取り出す。フロー識別コンポーネント７０は、別法として、このタグを、そのフロー識別子といっしょに、フロー分類・ポリシー決定コンポーネント７８に転送する。
【０１００】
万一、このタグから、そのフローに対して、このポリシーが完全に決定されていることが示されれば、フロー分類・ポリシー決定コンポーネント７８は、このフローを、このフローに施されるべきポリシーを規定する情報とともに、このポリシーで定められる適切なサブシステムに先へ転送する。この例では、そのフローは、仮想スイッチ２６に転送される。
【０１０１】
しかしながら、当初、このタグにより、ポリシーがまだ完全には決定されていないことが示される場合がある。それゆえ、フロー分類・ポリシー決定コンポーネント７８は、このポリシーを決定するために、トラフィックの分類に取り掛かる。このような分類プロセスは、フロー内容を、ステートレスまたはステートフルなやり方で取り出し、復号し、解釈し、また、このフロー内容、あるいは、このフロー内容から取り出された／決定された情報を、ポリシー・データベース７６の中で規定されているルールおよび表現に絶えず合わせるものである。万一、ルールの一致、または表現がポリシーの更新をもたらすことになれば、このフローに関連するポリシーが更新され、しかも、その更新が、そのフローに関連するタグの変更、あるいは、そのタグに関連するポリシーの変更に反映される。このようにして、このポリシーは、フローの存続期間にわたって順次に改善される。
【０１０２】
ポリシー・データベース７６はまた、分類されているフローに関連するフローに含まれているか、あるいは、それらの関連するフローから得られる情報も参照することがある。それゆえ、フロー分類・ポリシー決定コンポーネント７８は、これらのルールが参照する情報を得るために、その関連フローに関して、関連フロー・テーブル７４、およびフロー・ステート・テーブル７２中の項目を調べることができる。ポリシー・データベース７６には、例えば、この関連信号フローがユーザ名「ＪＳｍｉｔｈ」を参照するメディア・ストリームは、サービスクラス３の品質を用いて転送される必要があるが、しかるに、他のメディア・ストリームは、サービスクラス４の品質を受け取ると規定されることがある。
【０１０３】
ポリシー・データベース７６、フロー・ステート・テーブル７２、関連フロー・テーブル７４に含まれている情報はまた、このシステム内の他のコンポーネントにより、動的に変更されることもある。上記フロー識別・分類サブシテムの異なるインスタンスは、互いにやり取りして、このシステム全体にわたってフロー・ポリシーを、適切に、かつ一貫して確実に施せるようにすることがある。将来、発生が予想されるフローに対して、フロー・ポリシーをあらかじめ形成できるようにする情報を用いて、フロー・ステート・テーブル７２または関連フロー・テーブル７４を事前移入する（pre-populate）ＡＰＩをアプリケーションが呼び出すことも可能である。アプリケーションは、ＡＰＩを呼び出すことで、フローに施されるべきフロー・ポリシーを動的に変更することもある。このような変更から、フロー・ステート・テーブル７２および／または関連フロー・テーブル７４は更新されることになる。ポリシー・データベース７６の内容も、アプリケーションまたは上記システム・アドミニストレータにより、いつでも変更できる。
【０１０４】
フロー分類・ポリシー決定コンポーネント７８は、様々なプロトコルの存在を参照するフロー・ポリシー、すなわち、これらのプロトコルを用いて送られるトラフィックに入っている要素を参照するフロー・ポリシーが施される必要があるかどうか判定できるように、これらのプロトコルを検出して、復号できる必要があると理解されよう。それゆえ、フロー分類・ポリシー決定コンポーネント７８は、特定のプロトコル、または特定の組のプロトコルをそれぞれが検出または復号する責任をもつサブコンポーネントを含む。プロトコルは他のプロトコル上に重ねられることが多いので、これらのサブコンポーネントは互いにやり取りする必要がある。サブコンポーネントはまた、特定のマッチング処理を助けるためにも使用される。これらのサブコンポーネントは、コプロセッサに協力を求めている。この場合、そのようなコプロセッサは、高速度化の処理に利用でき、例えば、圧縮プロトコルを処理するサブコンポーネントは復元コプロセッサを使用する一方で、パターン・マッチングを行うサブコンポーネントは、正規表現マッチング・ハードウェアを使用することがある。
【０１０５】
本発明は、潜在的な用途を例示した下記リストの中で利用できるものと考えられる。このリストは、すべてを尽くすつもりはない。
・複数の現実のマシン（コンピュータ）上で実行していたアプリケーション・ソフトウェアを統合して、単一の仮想マシンにすること。
・機器を統合して、複数の機器を、仮想化技術を装備しているさらに少ない装置に代えられるようにすること。このことに関連して、機器は、多分、専用の周辺装置／ネットワーク・インターフェースのようなインターフェースを持ち、また、多分、装置ベンダー、またはこの装置ベンダーに関連するベンダーにより提供されたソフトウェアと組み合わされるコプロセッサのような他の専用ハードウェアを持っているコンピューティング装置であって、この場合、その機器は、少数の機能の１つを果たすように設計されている。機器の例として、ファイアウォール、侵入検出／防止装置、ウイルス防止装置、スパム防止装置などがある。
・現行の仮想マシン・システムに、ネットワーク・トラフィックを処理して、それを送ることができるようにする（すなわち、ネットワーク・トラフィックの処理／転送を制御する）こと。
・従来のサーバーのような処理を、トラフィックとフローの送り／処理（操作）などと組み合わせる新たな種類のネットワーク・インフラ・アプリケーションをホストすること。
【図面の簡単な説明】
【０１０６】
【図１】単一のアプリケーションが単一のオペレーティングシステムのユーザ空間内にある配置構成を示す図である。
【図２】複数のアプリケーションが含まれていて、一方のアプリケーションがユーザ空間内に、また他方のアプリケーションがカーネル空間内にあり、しかも双方とも単一のオペレーティングシステム上にあるような配置構成を示す図である。
【図３】３つのアプリケーションの１つが、ライブラリと、アプリケーション・プログラミング・インターフェース（ＡＰＩ）とを使用して、このシステムに結び付けられるが、しかるに、３つのアプリケーションの２つが、仮想ネットワーク・インターフェース・カード（ＶＮＩＣ）を使用して、このシステムに結び付けられ、さらに、すべてのアプリケーションが単一のオペレーティングシステム上でホストされるような配置構成を示す図である。
【図４】個別の仮想マシン（ＶＭ）において、それぞれがホストされる３つの別々のオペレーティングシステム・インスタンス上でアプリケーションが実行しているような配置構成を示す図である。
【図５】前述の図の一部であるフロー識別・分類サブシステムのサブコンポーネントを示す図である。
【図１】
2009506618.tif 000003
【図２】
2009506618.tif 000004
【図３】
2009506618.tif 000005
【図４】
2009506618.tif 000006
【図５】
2009506618.tif 000007
【国際調査報告】
2009506618.tif 000008
2009506618.tif 000009
2009506618.tif 000010