(57)【特許請求の範囲】
【請求項１】
スプリットアーキテクチャネットワークのためのコントローラとして機能するネットワークエレメントの方法であって、前記ネットワーク内のスイッチのセットへフローモニタリングタスクを割り当てるための前記方法は、ネットワークワイドなフローモニタリングを、モニタリングされるフローの数を最大化し及び前記フローモニタリングのオーバヘッドを削減することにより最適化し、前記スイッチの各々は、前記コントローラにより指示される通りにフローをサンプリングし、前記スイッチの各々は、前記フローを、前記フローのサブセットをモニタリングし及び前記フローの前記サブセットの測定結果を記録することによりサンプリングし、前記フローの各々は、（始点、終点）、即ち（“ＯＤ”）ペア、のセットのうちの１つにより定義されるパスを介して前記ネットワークを横断し、前記始点は、前記スイッチのうちの前記ネットワークへの前記フローの流入元となる入口スイッチであり、前記終点は、前記スイッチのうちの前記ネットワークからの前記フローの退出元となる出口スイッチであり、
前記方法は、
前記コントローラによって、前記ＯＤペアの各々により定義される前記パスの各々について推定トラフィック量を含む入力を受け取るステップと、
前記スイッチの全て及び前記パスの全てについて、前記スイッチによりサンプリングされる前記フローの数を最大化するサンプリング割合を計算するステップと、所与のスイッチ及び所与のパスについてのサンプリング割合は、当該所与のスイッチ及び当該所与のパスを通過し当該所与のスイッチによりサンプリングされるフローの数を当該所与のパスを通過する前記フローの合計数で割った商として定義されることと、前記計算は、前記推定トラフィック量に基づいてなされ、並びに前記スイッチの帯域幅制約及びメモリ制約を条件とすることと、
前記ネットワーク内の前記パスのうちの１つを横断する新たなフローをセットアップするためのリクエストを受け取るステップと、
前記パスのうちの当該１つの上に位置する前記スイッチのうちの１つへ、割り当てられる当該スイッチ及び前記パスのうちの当該１つについての前記サンプリング割合、前記帯域幅制約、並びに前記メモリ制約に基づいて、前記新たなフローを割り当てるステップと、
を含み、
【数１】
0006013486.tif 000009
【請求項２】
【数２】
0006013486.tif 000010
【請求項３】
前記ネットワークは、前記フローを転送し及びサンプリングすることを前記スイッチへ指示する複数のコントローラを含み、前記方法は、
前記新たなフローの識別子のハッシュを計算して、ハッシュ値を生成するステップと、
前記ハッシュ値が前記コントローラに関連付けられる予め決定されるハッシュレンジの範囲内である場合に、前記コントローラによって、前記パスのうちの前記１つの上に位置する前記スイッチのうちの１つへ、前記新たなフローを割り当てるステップと、
前記スイッチの各々についての割り当てられたフローを追跡するために、前記コントローラ内に記憶されるルーティング情報を更新するステップと、
をさらに含む、請求項１の方法。
【請求項４】
前記推定トラフィック量を受け取ることは、
エントリのセットを含むトラフィック行列を受け取るステップ、をさらに含み、
前記トラフィック行列の行は前記スイッチのうちの入口スイッチに対応し、前記トラフィック行列の列は前記スイッチのうちの出口スイッチに対応し、前記トラフィック行列内の前記エントリの各々は、同じ行内の対応する入口スイッチと同じ列内の対応する出口スイッチとにより定義されるパス上を横断するフローの数を表現する数値を含む、
請求項１の方法。
【請求項５】
スプリットアーキテクチャネットワーク内のスイッチのセットへフローモニタリングタスクを割り当てるための、前記ネットワークのシステムであって、前記システムは、ネットワークワイドなフローモニタリングを、モニタリングされるフローの数を最大化し及び前記フローモニタリングのオーバヘッドを削減することにより最適化し、前記スイッチの各々は、前記フローを、前記フローのサブセットをモニタリングし及び前記フローの前記サブセットの測定結果を記録することによりサンプリングし、前記フローの各々は、（始点、終点）、即ち（“ＯＤ”）ペア、のセットのうちの１つにより定義されるパスを介して前記ネットワークを横断し、前記始点は、前記スイッチのうちの前記ネットワークへの前記フローの流入元となる入口スイッチであり、前記終点は、前記スイッチのうちの前記ネットワークからの前記フローの退出元となる出口スイッチであり、前記システムは、
前記フローの転送及びサンプリングを指示するコントローラと、
前記コントローラに前記ネットワークを介して結合される前記スイッチのセットと、
を含み、
前記コントローラは、
前記ＯＤペアの各々により定義される前記パスの各々について推定トラフィック量を記憶するメモリと、
前記メモリに結合され、前記スイッチの全て及び前記パスの全てについて、前記スイッチによりサンプリングされる前記フローの数を最大化するサンプリング割合を計算するように適合されるプロセッサと、
前記ネットワーク内の前記パスのうちの１つを横断する新たなフローをセットアップするためのリクエストを受け取るネットワークインタフェースと、
を備え、
所与のスイッチ及び所与のパスについてのサンプリング割合は、当該所与のスイッチ及び当該所与のパスを通過し当該所与のスイッチによりサンプリングされるフローの数を当該所与のパスを通過する前記フローの合計数で割った商として定義され、前記計算は、前記推定トラフィック量に基づいてなされ、並びに前記スイッチの帯域幅制約及びメモリ制約を条件とし、
前記リクエストは、前記プロセッサに、前記パスのうちの当該１つの上に位置する前記スイッチのうちの１つへ、割り当てられる当該スイッチ及び前記パスのうちの当該１つについての前記サンプリング割合、前記帯域幅制約、並びに前記メモリ制約に基づいて、前記新たなフローを割り当てさせ、
【数３】
0006013486.tif 000011
【請求項６】
【数４】
0006013486.tif 000012
【請求項７】
前記システムは、前記フローを転送し及びサンプリングすることを前記スイッチへ指示する複数のコントローラをさらに含み、
前記コントローラの前記プロセッサは、
前記新たなフローの識別子のハッシュを計算して、ハッシュ値を生成し、
前記ハッシュ値が前記コントローラに関連付けられる予め決定されるハッシュレンジの範囲内である場合に、前記パスのうちの前記１つの上に位置する前記スイッチのうちの１つへ、前記新たなフローを割り当て、
前記スイッチの各々についての割り当てられたフローを追跡するために、前記コントローラ内に記憶されるルーティング情報を更新する、
ように適合される、請求項５のシステム。
【請求項８】
記憶される前記推定トラフィック量は、エントリのセットを含むトラフィック行列であり、
前記トラフィック行列の行は前記スイッチのうちの入口スイッチに対応し、前記トラフィック行列の列は前記スイッチのうちの出口スイッチに対応し、前記トラフィック行列内の前記エントリの各々は、同じ行内の対応する入口スイッチと同じ列内の対応する出口スイッチとにより定義されるパス上を横断するフローの数を表現する数値を含む、
請求項５のシステム。
【請求項９】
スプリットアーキテクチャネットワークのためのコントローラとして機能するネットワークエレメントであって、前記ネットワーク内のスイッチのセットへフローモニタリングタスクを割り当てるための前記ネットワークエレメントは、ネットワークワイドなフローモニタリングを、モニタリングされるフローの数を最大化し及び前記フローモニタリングのオーバヘッドを削減することにより最適化し、前記スイッチの各々は、前記ネットワークエレメントにより指示される通りにフローをサンプリングし、前記スイッチの各々は、前記フローを、前記フローのサブセットをモニタリングし及び前記フローの前記サブセットの測定結果を記録することによりサンプリングし、前記フローの各々は、（始点、終点）、即ち（“ＯＤ”）ペア、のセットのうちの１つにより定義されるパスを介して前記ネットワークを横断し、前記始点は、前記スイッチのうちの前記ネットワークへの前記フローの流入元となる入口スイッチであり、前記終点は、前記スイッチのうちの前記ネットワークからの前記フローの退出元となる出口スイッチであり、前記ネットワークエレメントは、
前記ＯＤペアの各々により定義される前記パスの各々について推定トラフィック量を記憶するメモリと、
前記メモリに結合され、前記スイッチの全て及び前記パスの全てについて、前記スイッチによりサンプリングされる前記フローの数を最大化するサンプリング割合を計算するように適合されるプロセッサと、
前記ネットワーク内の前記パスのうちの１つを横断する新たなフローをセットアップするためのリクエストを受け取るネットワークインタフェースと、
を備え、
所与のスイッチ及び所与のパスについてのサンプリング割合は、当該所与のスイッチ及び当該所与のパスを通過し当該所与のスイッチによりサンプリングされるフローの数を当該所与のパスを通過する前記フローの合計数で割った商として定義され、前記計算は、前記推定トラフィック量に基づいてなされ、並びに前記スイッチの帯域幅制約及びメモリ制約を条件とし、
前記リクエストは、前記プロセッサに、前記パスのうちの当該１つの上に位置する前記スイッチのうちの１つへ、割り当てられる当該スイッチ及び前記パスのうちの当該１つについての前記サンプリング割合、前記帯域幅制約、並びに前記メモリ制約に基づいて、前記新たなフローを割り当てさせ、
【数５】
0006013486.tif 000013
【請求項１０】
【数６】
0006013486.tif 000014
【請求項１１】
前記コントローラは、前記フローを転送し及びサンプリングすることを前記スイッチへ指示する複数のコントローラへ前記ネットワークを介して結合され、
前記コントローラの前記プロセッサは、
前記新たなフローの識別子のハッシュを計算して、ハッシュ値を生成し、
前記ハッシュ値が前記コントローラに関連付けられる予め決定されるハッシュレンジの範囲内である場合に、前記パスのうちの前記１つの上に位置する前記スイッチのうちの１つへ、前記新たなフローを割り当て、
前記スイッチの各々についての割り当てられたフローを追跡するために、前記コントローラ内に記憶されるルーティング情報を更新する、
ように適合される、請求項９のネットワークエレメント。
【請求項１２】
記憶される前記推定トラフィック量は、エントリのセットを含むトラフィック行列であり、
前記トラフィック行列の行は前記スイッチのうちの入口スイッチに対応し、前記トラフィック行列の列は前記スイッチのうちの出口スイッチに対応し、前記トラフィック行列内の前記エントリの各々は、同じ行内の対応する入口スイッチと同じ列内の対応する出口スイッチとにより定義されるパス上を横断するフローの数を表現する数値を含む、
請求項９のネットワークエレメント。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、スプリットアーキテクチャネットワークの分野に関し、より具体的には、スプリットアーキテクチャネットワークにおけるフローモニタリングに関する。
【背景技術】
【０００２】
ネットワークサービスプロバイダは、ネットワーク管理アプリケーションの実行に指針を示すために、日常的にフローレベル測定結果を収集する必要がある。フロー情報は、顧客への課金、及び総トラフィック量の統計に大きく依拠するトラフィックエンジニアリングのために使用され得る。ネットワーク管理の複雑さが増すにつれて、異常検出（anomaly  detection）、望ましくないアプリケーショントラフィックの識別及び法医学的解析（forensic  analysis）といった、いくつものクリティカルなネットワーク管理タスクのために、フローモニタリングが一層必要とされる。この解析は、可能な限り多くの個別のフローを識別し及び解析することを要する。この増加する複雑さの１つの結末は、強まりつつある、粒度の高い（fine-grained）フロー測定結果についての需要である。しかしながら、ネットワーク事業者は、通常、モニタリング基盤が実行する必要のある詳細な測定タスクの事前の知識を有しない。この１つの例は、セキュリティアプリケーションである。例えば、トラフィックエンジニアリング目的の“below  the  radar”という特定のネットワークプレフィックスが、早期の異常の検出において重要な役割を演じるかもしれない。
【０００３】
従来型のフローモニタリングの解決策は、これらネットワーク管理アプリケーションの多くにとって不十分である。粒度の高さ及び正確さの双方を有するフローモニタリング技法を開発することは、チャレンジングなタスクである。計算リソース及び記憶リソースの制約に起因して、従来型のルータはそれらを通過する全てのパケット又はフローを記録することができない。そのため、ルータのＣＰＵ及びメモリリソースが許容する限り多くのパケットを選択的に記録するために、多様なサンプリング技法が提案されてきた。例えば、今日の多くのルータベンダは、ＮｅｔＦｌｏｗ（Cisco  Systems  NetFlow  Services  Export  Version  9、RFC3954参照）により提供されているサンプリングメカニズムなどの、均一パケットサンプリング（uniform  packet  sampling）を実装する。ＮｅｔＦｌｏｗサンプリングにおいて、各ルータは、独立的に、あるサンプリング確率（典型的には、０．００１と０．０１との間）でパケットを選択し、選択したパケットをフローレコードへ統合する。このアプローチは、技術的に実現可能となるように、簡易である。ルータには小さいオーバヘッドのみが取り入れられる。しかしながら、このアプローチもまた、フローレベルの測定結果を使用する他のアプリケーションの全体としての品質を低下させる。
【０００４】
従って、既存のサンプリング技法は、新たなネットワーク管理アプリケーションの増加しつつある需要にとって十分でない。１つの解決策は、ルータの計算及び記憶ケイパビリティを継続的に増やすことである。極端に言うと、リンク上のあらゆるパケットを捕捉する受動的なモニタリング機器は、精度の高い測定を可能とする。しかしながら、そうしたアプローチは、配備及び保守のための高い単位コストを所与として、大規模なネットワークについてのスケーリング性において非常に劣る。
【発明の概要】
【０００５】
方法、システム、及びスプリットアーキテクチャネットワーク内のコントローラとして機能するネットワークエレメントが説明される。本発明の実施形態によれば、ネットワークワイドなフローモニタリングを最適化するために、ネットワーク内スイッチのセットにフローモニタリングタスクが割り当てられる。その割り当ては、モニタリングされるフローの数を最大化し及びフローモニタリングのオーバヘッドを削減する。スイッチの各々は、コントローラにより指示される通りにフローをサンプリングし、スイッチの各々は、フローのサブセットをモニタリングし及びフローのサブセットの測定結果を記録することにより、フローをサンプリングする。フローの各々は、（始点（Origin）、終点（Destination））、即ち（“ＯＤ”）ペア、のセットのうちの１つにより定義されるパスを介してネットワークを横断し、ここで当該始点は、スイッチ群のうちのネットワークへのフローの流入元となる入口スイッチであり、当該終点は、スイッチ群のうちのネットワークからのフローの退出元となる出口スイッチである。
【０００６】
１つの実施形態において、上記方法は：上記コントローラによって、上記ＯＤペアの各々により定義される上記パスの各々について推定トラフィック量を含む入力を受け取ることと、上記スイッチの全て及び上記パスの全てについて、上記スイッチによりサンプリングされる上記フローの数を最大化するサンプリング割合を計算するステップと、を含む。所与のスイッチ及び所与のパスについてのサンプリング割合は、当該所与のスイッチ及び当該所与のパスを通過し当該所与のスイッチによりサンプリングされるフローの数を当該所与のパスを通過する上記フローの合計数で割った商として定義され、上記計算は、上記推定トラフィック量に基づいてなされ、並びに上記スイッチの帯域幅制約及びメモリ制約を条件とする。上記ネットワーク内の上記パスのうちの１つを横断する新たなフローをセットアップするためのリクエストを受信し、上記パスのうちの当該１つの上に位置する上記スイッチのうちの１つへ、割り当てられる当該スイッチ及び上記パスのうちの当該１つについての上記サンプリング割合、上記帯域幅制約、並びに上記メモリ制約に基づいて、上記新たなフローを割り当てる。
【０００７】
１つの実施形態において、上記システムは、フローの転送及びサンプリングを指示するコントローラと、当該コントローラに上記ネットワークを介して結合されるスイッチのセットと、を含む。上記コントローラは、ＯＤペアの各々により定義されるパスの各々について推定トラフィック量を記憶するメモリと、当該メモリに結合され、上記スイッチの全て及び上記パスの全てについて、上記スイッチの全てによりサンプリングされるフローの数を最大化するサンプリング割合を計算するように適合されるプロセッサと、を備える。所与のスイッチ及び所与のパスについてのサンプリング割合は、当該所与のパスを通過し当該所与のスイッチによりサンプリングされるフローの数を当該所与のパスを通過する上記フローの合計数で割った商として定義され、上記計算は、上記推定トラフィック量に基づいてなされ、並びに上記スイッチの帯域幅制約及びメモリ制約を条件とする。上記コントローラは、上記ネットワーク内の上記パスのうちの１つを横断する新たなフローをセットアップするためのリクエストを受け取るネットワークインタフェースをも備え、上記リクエストは、上記プロセッサに、上記パスのうちの当該１つの上に位置する上記スイッチのうちの１つへ、割り当てられる当該スイッチ及び上記パスのうちの当該１つについての上記サンプリング割合、上記帯域幅制約、並びに上記メモリ制約に基づいて、上記新たなフローを割り当てさせる。
【０００８】
１つの実施形態において、コントローラとして機能する上記ネットワークエレメントは、ＯＤペアの各々により定義される上記パスの各々について推定トラフィック量を記憶するメモリと、上記メモリに結合され、上記スイッチの全て及び上記パスの全てについて、上記スイッチによりサンプリングされるフローの数を最大化するサンプリング割合を計算するように適合されるプロセッサと、を備える。所与のスイッチ及び所与のパスについてのサンプリング割合は、当該所与のスイッチ及び当該所与のパスを通過し当該所与のスイッチによりサンプリングされるフローの数を当該所与のパスを通過する上記フローの合計数で割った商として定義され、上記計算は、上記推定トラフィック量に基づいてなされ、並びに上記スイッチの帯域幅制約及びメモリ制約を条件とする。上記ネットワークエレメントは、上記ネットワーク内の上記パスのうちの１つを横断する新たなフローをセットアップするためのリクエストを受け取るネットワークインタフェース、をも備え、上記リクエストは、上記プロセッサに、上記パスのうちの当該１つの上に位置する上記スイッチのうちの１つへ、割り当てられる当該スイッチ及び上記パスのうちの当該１つについての上記サンプリング割合、上記帯域幅制約、並びに上記メモリ制約に基づいて、上記新たなフローを割り当てさせる。
【図面の簡単な説明】
【０００９】
本発明は、添付図面の図において限定ではなく例示の手段で図示され、その中で類似する参照は同様のエレメントを示す。本開示における“一”又は“１つの”実施形態への様々な言及は必ずしも同じ実施形態についてのものではなく、そうした言及は少なくとも１つを意味することに留意すべきである。さらに、特定の特徴、構造又は特性が一実施形態との関連で説明される際、明示的に説明されているかに関わらず、そうした特徴、構造又は特性を他の実施形態との関連で作用させることは、当業者の知識の範囲内であると考える。
【００１０】
【図１】フローモニタリングが行われるスプリットアーキテクチャネットワークの一実施形態を示している。
【図２】スプリットアーキテクチャネットワーク内のコントローラ及びスイッチの一実施形態を示している。
【図３】ネットワークワイドなフローモニタリングのための方法の一実施形態を示すフロー図である。
【図４】コントローラに関連付けられるスイッチへのフローの割り当てを最適化するための方法の一実施形態を示すフロー図である。
【図５】コントローラ間協調のための方法の一実施形態を示すフロー図である。
【発明を実施するための形態】
【００１１】
以下の説明において、多くの特定の詳細が呈示される。しかしながら、それら特定の詳細が無くとも本発明の実施形態は実践され得ることが理解される。他の例において、よく知られた回路、構造及び技法は、本説明の理解を曖昧にしないために、詳細には示されていない。しかしながら、そうした特定の詳細が無くとも本発明は実践され得ることが、当業者には理解されるであろう。過剰な実験をせずとも、包含した説明があれば、当業者は適切な機能性を実装することができるであろう。
【００１２】
図１は、スプリットアーキテクチャネットワーク１００の一実施形態を示しており、スプリットアーキテクチャネットワーク１００は、複数のコントローラ（例えば、コントローラ１１０及び１２０）と、複数のスイッチ（例えば、スイッチ１３０Ａ〜Ｃ及び１４０Ａ〜Ｄ）とを含む。各コントローラは、当該コントローラにより管理されるスイッチのセットに結合（couple）される。例えば、コントローラ１１０はスイッチ１３０Ａ〜Ｃに結合され、コントローラ１２０はスイッチ１４０Ａ〜Ｄに結合される。各コントローラは、予め定義されるエリア内のデータパケットフローを管理する。例えば、コントローラ１１０はエリア１８０内のフローを管理し、コントローラ１２０はエリア１９０内のフローを管理する。
【００１３】
理解される点として、スプリットアーキテクチャネットワーク１００のトポロジーは説明の容易さのために簡略化されている。スプリットアーキテクチャネットワークは、任意の数のコントローラ及び任意の数のスイッチを含むことができる。各コントローラ（１１０、１２０）は、自身が管理する（即ち、当該コントローラと同じエリア１８０内の）スイッチのセットの間の相互接続及びルーティングを定義する。各コントローラ（１１０、１２０）は、スイッチのセットからの情報の収集及びスイッチへのルーティング指示の配信といったように、ネットワークステートの配信をもハンドリングする。各コントローラ（１１０、１２０）を、新たなアドレッシング、ルーティング及び複雑なパケット処理アプリケーションをサポートするようにプログラミングすることもできる。即ち、コントローラ１１０及び１２０は、ネットワーク１００の“頭脳（brain）”である。各スイッチ（１３０Ａ〜Ｃ、１４０Ａ〜Ｄ）は、正確に機能するために、少なくとも１つのコントローラと接続する必要がある。
【００１４】
例えば、スイッチ１３０Ｃがパケットをどこへ送信すべきかを知ることなく新たなフローを受信した場合、スイッチ１３０Ｃは当該パケットを自身のコントローラ１１０へ転送する。当該パケットを受信すると、コントローラ１１０は、新たなフローをどこへ転送すべきかに関してスイッチ１３０Ｃに指示を与える。そして、スイッチ１３０Ｃ上に、同じフローに属するさらなるパケットをハンドリングするための転送ルールがインストールされる。
【００１５】
スプリットアーキテクチャネットワーク１００といったスプリットアーキテクチャネットワークは、制御プレーンが転送プレーンから分離されている分散型システムである。制御プレーンは、少数のコントローラ（例えば、コントローラ１１０及び１２０）といった、ネットワークワイドな制御プラットフォームを含む。１つの実施形態では、コントローラ１１０及び１２０は、ネットワーク１００内の１つ以上のサーバ上で稼働し、スイッチ（例えば、スイッチ１３０Ａ〜Ｃ及び１４０Ａ〜Ｄ）といった簡易で相互接続された転送エレメントのセットの転送の振る舞い（forwarding  behavior）を指示する。制御プレーン及び転送プレーンの分離（decoupling）は、制御プレーン及び転送プレーンが強固に同じボックス内で結合される旧来のルータのアーキテクチャと対照的である。ルータの統合的なデザインは、通常、過剰に込み入った制御プレーンと複雑なネットワーク管理とをもたらす。このルータの複雑さは、新たなプロトコルの開発及びネットワークのアップグレードに対する高い障壁をなす。旧来のネットワークには、ネットワークの全体像を保持する集中化されたエンティティは存在しない。
【００１６】
図２は、図１のスプリットアーキテクチャネットワーク１００内のコントローラ１１０及びスイッチ１３０の一実施形態を示している。理解される点として、スプリットアーキテクチャネットワーク１００内の他のコントローラ（例えば、コントローラ１２０）及びスイッチ（例えば、スイッチ１３０Ａ〜Ｃ及び１４０Ａ〜Ｄ）もまた、それぞれコントローラ１１０及びスイッチ１３０と同じコンポーネント群を含むことができる。
【００１７】
１つの実施形態において、スイッチ１３０は、フローテーブル２４２内のルールに従って入口ポートから出口ポートへパケットを転送する転送エレメントとして機能する。１つの実施形態において、スイッチ１３０は、メモリ２５０に結合されたプロセッサ２４０と、ネットワークインタフェースのセットとを含み、例えばネットワークインタフェース２６０は、ネットワーク１００内の他のネットワークエレメント（例えば、コントローラ及びスイッチ）との通信用である。メモリ２５０は、測定されたフローデータ２５１及びフローテーブル２５２を記憶する。測定されたフローデータ２５１は、スイッチ１３０によりモニタリングされサンプリングされたフローの測定結果を記録する。フローテーブル２５２は、コントローラ１１０の制御の下で、プロセッサ２４０により、入口ポートから出口ポートへパケットを転送するためのルールを記録するようにプログラミングされることができる。フローテーブル２５２内の各フローエントリは、所与のポートへのパケットの転送、パケットヘッダ内のあるビットの修正、コントローラへのパケットのカプセル化又は単純にパケットの破棄、といったアクションのセットを含むルールである。新たなフロー内の最初のパケットについて、スイッチ１３０は、自身のフローテーブル２５２への新たなフローエントリのプログラミングをトリガするために、当該パケットをコントローラ１１０へ転送することができる。スイッチ１３０は、（ＩＣＭＰ（Internet  Control  Message  protocol）パケットといった）低速パス（slow-path）パケットの全てを処理のためにコントローラ１１０へ転送することもできる。
【００１８】
１つの実施形態において、コントローラ１１０は、メモリ２２０に結合されたプロセッサ２１０と、ネットワーク１００内の他のネットワークエレメント（例えば、コントローラ及びスイッチ）との通信用のネットワークインタフェース２３０と、を含む。メモリ２２０は、トラフィック行列２２３、スイッチ情報２２４、ルーティング情報２２５及びハッシュレンジテーブル２２６を記憶する。トラフィック行列は、ネットワーク内のパスの各々（即ち、後に説明される通りの“各ＯＤペアパス”）についての推定されるトラフィック量を記憶する。トラフィック行列は、エントリのセットを含む。トラフィック行列の各行は入口スイッチに対応し、各列は出口スイッチに対応する。トラフィック行列内の各エントリは、同じ行内の対応する入口スイッチと同じ列内の対応する出口スイッチとにより定義されるパス上を横断するフローの数を表現する数値（値）を含む。スイッチ情報２２４は、コントローラ１１０により管理されるスイッチの各々の、メモリ、帯域幅及び処理の情報（又は制約）を記憶する。ルーティング情報２２５は、コントローラ１１０により管理されるスイッチ間のパス情報を記憶する。例えば、それぞれフローの流入元及びネットワークからの退出元である各入口スイッチ及び出口スイッチについて、ルーティング情報２２５は、当該入口スイッチと当該出口スイッチとの間のパスを形成する他のスイッチのリストを記憶する。１つの実施形態において、ルーティング情報２２５は、コントローラ１１０により管理されるスイッチの各々に割り当てられたフローを追跡するための情報をも含む。ハッシュレンジテーブル２２６は、コントローラ間（cross-controller）協調が実装される実施形態において使用される。ハッシュレンジテーブル２２６は、コントローラ１１０に割り当てられた１つ以上のハッシュレンジを記憶する。コントローラ１１０は、これらハッシュレンジを用いて、所与のフローをハンドリングする責任を自身が有するかを判定する。コントローラ間協調は、図５を参照しながらより詳細に説明されるであろう。
【００１９】
本発明の実施形態に係るネットワークワイドなフローモニタリング技法の詳細を説明する前に、まず、いくつかの技術を説明することが有益である。
【００２０】
フロー。トラフィックのフロー（“パケットフロー”又は“データフロー”ともいう）は、ある時間的期間の範囲内で観測される、フローキーとして知られる共通のプロパティを有するパケットのセットである。よって、ここでの“フロー”との用語は、例えば、ＴＣＰ（Transmission  Control  Protocol）接続上のデータトラフィック、又は特定のＭＡＣ（Media  Access  Control）アドレス若しくはＩＰ（Internet  Protocol）アドレスからの全てのトラフィックなど、広く定義され得る。スイッチは、それらを通過したパケットフローに関する要約した統計を作成し及びエクスポートする。フローキーは、通常、ＩＰ（Internet  Protocol）ソースアドレス及び宛て先アドレス並びにＴＣＰ（Transmission  Control  Protocol）／ＵＤＰ（User  Datagram  Protocol）ポート番号といった、パケットヘッダ内のフィールド群により特定される。フローキーがそれら数量のレンジにより特定される統合フロー（aggregate  flows）とは反対に、フローキーがそれらフィールドの個別の値により特定されるフローは、生フロー（raw  flow）と呼ばれる。パケットのセットをフロー内に含めるべきかは、パケットをフローに割り当てるコントローラにより使用されるアルゴリズムに依存する。
【００２１】
フローレコード。フローレコードは、次のように生成され得る。パケットがスイッチに到着すると、スイッチは、当該フローがアクティブか、即ち当該フローのフローキーについて現在のところ統計を収集中であるか、を判定する。アクティブでなければ、スイッチは、そのフローキーについて統計の新たなセットをインスタンス化する。統計は、フローキーに適合する各パケットについて更新される、パケット用のカウンタ及びバイト用のカウンタを含む。フローが終了したとスイッチが判定すると、フローの統計はフローレコードとしてエクスポートされ、関連付けられていたメモリが新たなフローによる使用のために解放される。スイッチは、次の基準のうちの１つが充足される場合には、フローを終了させることができる：（ｉ）非アクティブフローあるいはインターパケットタイムアウト；即ち、フローについて観測された最後のパケットからの時間が何らかの閾値を超過；
（ｉｉ）ＴＣＰ接続を終了させるＴＣＰ  ＦＩＮパケットといった、プロトコルレイヤ情報；（ｉｉｉ）メモリ管理；即ち、新たなフロー用にメモリを解放させるための終了；（ｉｖ）アクティブフロータイムアウト；即ち、データの陳腐化を防止するために、フローは、当該フローの最初のパケットが到着してからの所与の経過時間の後に終了させられる。
【００２２】
パケットサンプリング及びフローサンプリング。一般に、２つのタイプのサンプリング方法が存在する。パケットサンプリングでは、パケットのサブセットがサンプリングされ、サンプリングされたパケットの統計が収集され及び測定される。フローサンプリングでは、フローのサブセットがサンプリングされ、サンプリングされたフローの統計が収集され及び測定される。フローサンプリングでは、（フロー内の個別のパケットの代わりに）フローについてサンプリングが実行されている間、フローは改変されずに保たれる。実践において、フロー統計を集めるためのいかなる試みも、個別のパケットのフローへの分類を包含する。フローサンプリングを行い得る前に、パケットの全てのメタデータをフローへ体系化しなければならない。よって、フローサンプリングには、概して、パケットサンプリングより多くのＣＰＵ負荷とより多くのメモリとが関与する。
【００２３】
理想的には、ネットワーク事業者は、ネットワーク全体にわたる可視性を提供する正確なモニタリング基盤を必要とする。しかしながら、ネットワーク内の高いトラフィック量とコントローラ／スイッチ上の負担（burden）は、測定基盤内のリソースの消費を制御するニーズをもたらしてきた。パケットサンプリングの従来の使用を導く複数の制約が存在する：レコードバッファのサイズ、レポート帯域幅、ＣＰＵ速度、及びレコードルックアップ時間。
【００２４】
しかしながら、パケットサンプリングは、大規模なフローに向けてバイアスされるという、内在的な問題を有している。よって、パケットサンプリングは、通常、劣悪なフローカバレッジに陥る。結果として、パケットサンプリングは、異常検出といった、多くの種類のセキュリティアプリケーションの要件を満たさない。加えて、このバイアスは、異なるスイッチにより収集される冗長的なフローレポーティングを増加させる。
【００２５】
従来のフローサンプリングは、自身の欠点をも有する。単一のパケットが複数のルータをまたいで複数回サンプリングされる確率は無視できると仮定することは合理的である一方、この仮定はフローレベルのモニタリングの文脈において妥当ではない。同じフローを２つのスイッチがサンプリングする確率は、フローサイズが裾の重い分布（heavy-tailed  distributions）に従う場合には高くなる。従って、ネットワークワイドな観点からは、異なるスイッチ上で重複するフローレコードを有することは、ネットワークリソースの無駄である。
【００２６】
サンプリングレートの選択。フローカバレッジとレポーティング帯域幅及び負荷（load）といったオーバヘッドとの間の内在的なトレードオフが存在する。カバレッジとオーバヘッドとの間のトレードオフを所与とすると、ネットワーク事業者は、どのスイッチにおいてどのようなサンプリングレートでサンプリングを有効化するかという決定に直面する。２つのオプションが有り得る：
−全てのスイッチ上でフローモニタリングを有効化し、但し潜在的なネットワークへのインパクトを最小化するために非常に低いサンプリングレートを用いる
−選択されるスイッチのセットについてフローモニタリングを有効化し、サンプリングレートを測定タスク及び目標精度に依存して設定する
現在のところ、２つ目について自動化された方法が存在しないため、１つ目のオプションがほとんどのインターネットサービスプロバイダ（ＩＳＰ）により採用されている。しかしながら、１つ目のオプションの効果は、サンプリング方法のインパクトに強く依存する。低いサンプリングレートを所与とすると、測定は、通常はあまり正確でない。１つ目のオプションは、簡単な統計を提供することのみできるだけであり、より高い精度を要するアプリケーションのための統計を提供しない。
【００２７】
フローサンプリングは一般にフローカバレッジ及び大規模なフローへのバイアスの回避の観点で他の解決策よりも良好であるため、本発明の実施形態は、フローサンプリングを使用する。フローサンプリングは、マルウェア、ＤＤｏＳ（distributed  denial  of  service）攻撃、及び他の悪意ある攻撃の検出といった、一般に知られたセキュリティアプリケーションのセットをサポートする。さらに、フローサンプリングは、トラフィック量の推定の精度を維持する。よって、そのサンプリングは、トラフィックエンジニアリングアプリケーションについてより適当であり得る。さらに、ここで説明されるフローサンプリング技法は、アプリケーション間の普遍性とフローカバレッジとの間のトレードオフを考慮に入れて、スイッチのリソースの制約の範囲内で効率的に動作する。
【００２８】
本発明の実施形態は、分離された制御プレーン及び転送プレーンを伴うスプリットアーキテクチャネットワークにおける新たなネットワークワイドなフローモニタリングのアプローチを提供する。スプリットアーキテクチャネットワークの１つの例は、図１のスプリットアーキテクチャネットワーク１００である。集中化されたコントローラを伴うスプリットアーキテクチャネットワークには、モニタリングの精度とコストとの間のより良いトレードオフを達成するための、新たなネットワークワイドなフローサンプリングの方法論を設計するための固有の機会が存在する。本発明の実施形態は、スプリットアーキテクチャで配備される次世代のネットワーク一般におけるトラフィックモニタリングにとって有益である。それは、汎用マルチプロトコルラベルスイッチング（ＧＭＰＬＳ）ネットワークといった、ルーティング用の集中型のコントローラを伴ういかなるネットワークにも適用可能である。
【００２９】
集中型のコントローラを伴うスプリットアーキテクチャネットワークは、知的なフローモニタリングを実行することができる。集中型のコントローラは、どのスイッチがどういったタイプのフローをどのサンプリングレートでモニタリングすべきかを判定する。集中型のコントローラの使用は、従来のルータにより実行されていた独立した決定処理を回避する。従来のルータは、フロー測定結果を完全に互いに独立的に記録し、よってそれは冗長的なフロー測定結果及び非効率なルータリソースの使用の根本的な理由である。
【００３０】
本発明の実施形態によれば、集中型のコントローラは、異なるスイッチをまたいでモニタリングの責任を協調させるアプリケーションを稼働させることができる。この協調は、ネットワークワイドなフローモニタリングのケイパビリティのカバレッジ及び精度を有意に増加させることができる。ここで説明されるフローモニタリング技法は、エンタープライズネットワーク、自律システム（ＡＳ）又はモバイルバックホール及びモバイルコアトランスポートネットワーク上で動作することができる。ネットワークは１つ以上のコントローラと１つ以上のスイッチのセットとを含む。各スイッチは、基本的なサンプリングの仕組みを有する。（収集され／測定された統計である）サンプリングされたデータは、ネットワーク内のフローコレクションサーバへ返送され得る。
【００３１】
ここで説明されるネットワークワイドなフローモニタリング技法は、次の特徴を有する：
−大規模なフロー（large  flows）及び小規模なフロー（small  flows）の双方を含む高いフローカバレッジを提供
−全てのサンプリングエンティティからの全体的な測定結果における冗長的なレポートを最小化
−事業者が他よりも高い精度でモニタリングされるべきトラフィックの任意のサブセットを柔軟に特定することを可能とするという、ネットワークワイドなフローモニタリングの目標を充足。事業者は、異なるトラフィックのサブセットにまたがる公平さ（fairness）を保証するといった他の目標に基づく基準を特定することもできる。
−サンプリングがスイッチを過負荷にしない、即ちスイッチのリソースの制約の範囲内となるように、スイッチ上の過負荷を考慮
【００３２】
以下にフローモニタリング技法の詳細が説明される。第一に、ネットワークワイドな最適化の問題が系統的に呈示され（formulated）、線形最適化を用いる解決策が説明される。第二に、複数のスプリットアーキテクチャドメインをまたがるサンプリングタスクの分割が説明される。そのために、異なるドメイン内のサンプル間の重複が無いことを保証するハッシュベースのアルゴリズムが導入される。最適化は、オフラインで事前に計算されることができ、その出力を、コントローラによって、リアルタイムでサンプリングタスクをスイッチへ割り当てるために使用することができる。その代わりに、最適化アルゴリズム及びハッシュベースのアルゴリズムは、双方ともコントローラ上でリアルタイムで実行可能である。
【００３３】
図３は、スプリットアーキテクチャネットワークにおけるフローモニタリングのための方法３００の一実施形態を示している。１つの実施形態において、方法３００は、図１のスプリットアーキテクチャネットワーク１００といったスプリットアーキテクチャネットワーク内のコントローラ及びスイッチにより実行される。方法３００は、４つのステージの観点において、コントローラ及びスイッチの動作の概略を提供する。その動作のさらなる詳細は、図４及び図５を参照しながら、後に説明されるであろう。
【００３４】
１つの実施形態では、第１ステージにおいて、コントローラは、サンプリング割合を計算する（ブロック３１０）。所与のスイッチ及び所与のパスについてのサンプリング割合は、後に数学的に定義されるように、当該所与のスイッチ及び当該所与のパスを通過し当該所与のスイッチによりサンプリングされるフローの数を当該所与のスイッチ及び当該所与のパスを通過するフローの合計数で割った商として定義される。サンプリング割合が計算された後、第２ステージにおいて、コントローラは、コントローラ間協調を実行する（ブロック３２０）。コントローラ間協調の結果は、コントローラに当該フローを管理する責任があるかを示す。コントローラに当該フローを管理する責任がある場合、第３ステージにおいて、コントローラは、自身のスイッチのうちのいずれにフローモニタリングのタスクを割り当てるべきかを判定する（ブロック３３０）。第４ステージにおいて、割り当てられたスイッチは、フローを測定し及び記録し、並びに記録したフローデータを集中型のサーバへ送信する（ブロック３４０）。
【００３５】
ネットワークワイドな最適化。フローモニタリングタスクにどのスイッチを割り当てるべきかを判定する目的で、スイッチのリソース制約下のネットワークワイドなモニタリング目標を特定し充足するために、最適化フレームワークが使用される。この最適化の出力は、サンプリングテンプレートとしてコントローラ内に記憶される。新たなフローがスイッチに到達すると、当該スイッチは、新たなフローをコントローラに通知する。コントローラは、フローをどこへ転送すべきか及びスイッチがそのフローをサンプリングすべきかというスイッチングを指示するフローエントリを、スイッチへ送信する。当該フローエントリは、予め定義される量の期間にわたってスイッチ内に記憶され、同じフローのインカミングのパケットに関してスイッチをガイドする。
【００３６】
１つの実施形態において、最適化問題として割り当てをモデル化することができる。最適化問題への第１の入力は、推定トラフィック行列である。ネットワーク事業者は、通常、入口スイッチ及び出口スイッチの任意のペアの間のトラフィック量を記録する推定トラフィック行列を保持している。トラフィック行列の行は入口スイッチに対応し、列は出口スイッチに対応する。入口／出口の組合せの各ペアは、ＯＤ（Origin-Destination）ペアとして知られる。トラフィック行列内の各エントリは、対応するＯＤペア間の推定されるトラフィック量である。１つの実施形態において、推定トラフィック量は、フローの数によって表現される。いくつかの実施形態では、エントリを、コントローラによって動的に調整することができる。
【００３７】
最適化問題への他の入力は、ルーティング情報である。１つの実施形態において、コントローラは、任意のＯＤペア間のスイッチレベルのパスを記憶している。この情報は、各スイッチへフローエントリを提供するために、コントローラにおいて利用可能である。任意の所与のＯＤペアの間のスイッチレベルのパスはただ１つのみであるものと仮定する。さらに、コントローラは、当該コントローラに関連付けられるスイッチの各々のリソース制約をも記憶し、又は受信する。
【００３８】
【数１】
0006013486.tif 000002
【００３９】
【数２】
0006013486.tif 000003
【００４０】
【数３】
0006013486.tif 000004
【００４１】
【数４】
0006013486.tif 000005
【００４２】
【数５】
0006013486.tif 000006
【００４３】
次のステップにおいて、コントローラは、表１内のアルゴリズムを用いて、どのスイッチがどのフローをモニタリングすべきかを指示する。同アルゴリズムは、スイッチ間の負荷をバランスさせることを狙っている。また、それは、異なるスイッチに割り当てられるフローのセットが重なり合わないことを保証する。言い換えれば、各フローは、ＯＤパスに沿った１つのスイッチによってモニタリングされることになる。
【００４４】
【表１】
0006013486.tif 000007
【００４５】
図４は、コントローラに関連付けられるスイッチへのフローの割り当てを最適化するための方法４００の一実施形態を示している。１つの実施形態において、方法４００は、図１のコントローラ１１０又は１２０といったコントローラにより実行される。方法４００の動作は、図３に示した方法３００のステージ１及びステージ３に対応する。方法３００のステージ２は、コントローラ間協調が実装される実施形態においても実行され得る。
【００４６】
１つの実施形態において、コントローラは、ＯＤペアの各々により定義されるパスの各々について推定トラフィック量を含む入力を受け取る（ブロック４１０）。コントローラは、自身に関連付けられる（即ち、管理している）スイッチの各々におけるリソース制約へのアクセスをも有する。コントローラは、スイッチによりサンプリングされるフローの数を最大化するサンプリング割合を計算する。ここで、所与のスイッチ及び所与のパスについてのサンプリング割合は、当該所与のスイッチ及び当該所与のパスを通過し当該所与のスイッチによりサンプリングされるフローの数を当該所与のパスを通過するフローの合計数で割った商として定義される（ブロック４２０）。その計算は、推定トラフィック量に基づいてなされ、並びにスイッチの帯域幅制約及びメモリ制約を条件とする。１つの実施形態において、ブロック４２０の計算は、線型プログラミングで行われる。サンプリング割合が計算された後、コントローラは、ネットワーク内のパスを横断する新たなフローをセットアップするためのリクエストを受け取る（ブロック４３０）。コントローラは、（例えば、図５を参照しながら説明されるコントローラ間協調により判定される通りに）新たなフローを管理する責任を有する場合、パス群のうちの１つの上に位置するスイッチ群のうちの１つへ、割り当てられる当該スイッチ及びパス群のうちの当該１つについてのサンプリング割合、帯域幅制約、並びにメモリ制約に基づいて、上記新たなフローを割り当てる（ブロック４４０）。１つの実施形態において、スイッチの割り当ては、表１に記述されているアルゴリズムに基づく。即ち、コントローラは、ＯＤパスに沿って各スイッチを検査して、スイッチがそのサンプリング割合、帯域幅制約及びメモリ制約に達したかを判定する。達していなければ、コントローラは、フローサンプリングタスクを当該スイッチへ割り当てた。そうでなければ、フローサンプリングタスクはパス内の他のスイッチ（例えば、次のスイッチ）に割り当てられる。
【００４７】
コントローラ間ハッシュベース協調。１つの実施形態において、異なるコントローラに関連付けられるスイッチをまたいだ重複する測定を排除するために、ハッシュベースの選択アルゴリズムが使用される。これは、コントローラ間の明示的な通信を要することなく、異なるコントローラにより制御されるスイッチがフローの重ならない（disjoint）セットをモニタリングすることを可能とする。ハッシュベースの選択アルゴリズムは、ネットワークにわたる冗長的な測定を排除することを助けることができる。
【００４８】
例えば、ＩＳＰは複数のネットワークエリアを運用することができ、フローのいくつか又はほとんどは複数のエリアをまたいで横断し得る。よって、重複するエントリをモニタリングすることを回避するための、コントローラ間の協調についてのニーズがある。各コントローラが隔離して動作する場合、導かれる異なるルータからの測定結果は、重複を含むことになりそうである。表２は、コントローラ間協調のためのアルゴリズムを示している。
【００４９】
【表２】
0006013486.tif 000008
【００５０】
１つの実施形態において、各コントローラは、ハッシュキーでインデックス付けされたハッシュレンジのテーブルである、サンプリングマニフェストを有する。各コントローラには、ハッシュレンジの１つ以上が割り当てられる。パケットを受信すると、コントローラは、当該パケットのヘッダフィールドから導出されるハッシュキーを用いて、ハッシュレンジをルックアップする。ヘッダフィールド内のパケットのフロー識別子のハッシュが計算される。コントローラに割り当てられたハッシュレンジ（あるいはレンジ群）の範囲内にハッシュ値が入るならば、パケット（と共に関連付けられるフロー）は、当該コントローラに関連付けられるスイッチによりサンプリングされることになる。
【００５１】
ハッシュベースのサンプリングは、異なるコントローラ下のスイッチ間での重複する測定を回避するための、簡易かつ強力な協調戦略を可能とする。コントローラ群は、同じハッシュ機能を使用するように構成され、但し重ならないハッシュレンジを割り当てられ、それにより、いかなるフローのハッシュも高々１つのコントローラのハッシュレンジに適合することになる。従って、異なるコントローラに関連付けられる異なるスイッチによりサンプリングされるフローのセットは、重複しないであろう。重複しないハッシュレンジを割り当てることにより、明示的な通信又は複雑な分散プロトコルがなくとも、コントローラ間協調を達成することができる。
【００５２】
図５は、複数のコントローラの間でサンプリングタスクを協調させるための方法の１つの実施形態を示している。１つの実施形態において、方法５００は、図１のコントローラ１１０及び１２０といった、スプリットアーキテクチャネットワークのコントローラにより実行される。方法５００の動作は、図３に示した方法３００のステージ２及びステージ３に対応する。
【００５３】
１つの実施形態において、コントローラは、ネットワーク内のパスを横断する新たなフローをセットアップするためのリクエストを受信する（ブロック５１０）。１つの実施形態において、新たなフローを受信するスイッチが、自身のコントローラへレポートを送り、当該コントローラがネットワーク内の他のコントローラの全てへ通知を送る。代替的な実施形態において、新たなフローを受信するスイッチが集中型のサーバへレポートを送り、当該集中型のサーバがネットワーク内のコントローラの全てへ通知を送る。コントローラは（ネットワーク内の他のコントローラと共に）、新たなフローのフロー識別子のハッシュを計算して、ハッシュ値を生成する（ブロック５２０）。当該ハッシュ値がコントローラのハッシュレンジに入る場合、コントローラは、新たなフローをパス群のうちの１つの上に位置するスイッチ群のうちの１つに割り当てる（ブロック５３０）。スイッチの割り当ては、割り当てられる当該スイッチ及びパス群のうちの当該１つについての計算されたサンプリング割合と、帯域幅制約と、メモリ制約とに基づく、図４の方法４００によって実装されることができる。そして、コントローラは、コントローラ内に記憶されるルーティング情報を更新して、スイッチの各々に割り当てられたフローを追跡する（ブロック５４０）。コントローラは、自身の関連付けられるスイッチのうちの１つへ新たなフローを割り当てる。すると、割り当てられたスイッチは、方法３００（図３）のブロック３４０の動作を進めることができる。
【００５４】
図３〜図５のフロー図の動作を、図１及び図２の例示的な実施形態を参照しながら説明した。しかしながら、理解されるべき点として、図３〜図５のフロー図の動作は図１及び図２を参照しながら議論したもの以外の本発明の実施形態により実行されることができ、図１及び図２を参照しながら議論した実施形態は上記フロー図を参照しながら議論したものとは異なる動作を実行することができる。図３〜図５のフロー図は本発明のある実施形態によって実行される動作の特定の順序を示している一方、理解されるべき点として、そうした順序は例示的である（例えば、代替的な実施形態は、当該動作を異なる順序で実行し、ある動作を組合せ、ある動作を重複させるなどしてもよい）。
【００５５】
ここで説明されるところによれば、命令（instruction）とは、ある動作を行うように構成され若しくは予め定義される機能性を有するＡＳＩＣ（application  specific  integrated  circuits）などのハードウェアの特定の構成、又は非一時的なコンピュータ読取可能な媒体で具現化されるメモリに記憶されるソフトウェア命令についての言及であり得る。よって、図中に示した技法は、１つ以上の電子デバイス（例えば、端局、ネットワークエレメント）上で記憶され及び実行されるコード及びデータを用いて実装されることができる。そうした電子デバイスは、非一時的なマシン読取可能な又はコンピュータ読取可能な記憶媒体（例えば、磁気ディスク、光学ディスク、ランダムアクセスメモリ、リードオンリメモリ、フラッシュメモリデバイス及び相変化メモリ）及び一時的なコンピュータ読取可能な通信媒体（例えば、搬送波、赤外線信号、デジタル信号といった、電気的、光学的、音響的又は他の形態の伝搬信号）といったコンピュータ読取可能な媒体を用いて、コード及びデータを記憶し並びに（内部的に、及び／又は、ネットワーク上で他の電子デバイスと）通信する。加えて、そのような電子デバイスは、典型的に、１つ以上の記憶デバイス（非一時的な機械読み取り可能な記憶媒体）、ユーザ入力／出力デバイス（例えば、キーボード、タッチスクリーン、及び／又はディスプレイ）、並びにネットワーク接続といった１つ以上の他のコンポーネントに結合される１つ以上のプロセッサのセットを含む。プロセッサのセットと他のコンポーネントとの結合は、典型的に、１つ以上のバス及び（バスコントローラとも称される）ブリッジを介する。よって、所与の電子デバイスの記憶デバイスは、典型的に、当該電子デバイスの１つ以上のプロセッサのセット上での実行のためのコード及び／又はデータを記憶する。当然ながら、本発明の一実施形態の１つ以上の部分は、ソフトウェア、ファームウェア、及び／又はハードウェアの様々な組み合わせを用いて実装され得る。
【００５６】
本発明は幾つかの実施形態の観点から説明されたが、本発明が説明された実施形態に限定されず、添付の特許請求の範囲の思想及び範囲内における変形及び変更と共に実施をされることができることを、当業者は認識するであろう。よって、説明は限定ではなく例示として考慮されるべきである。
【図１】
0006013486.tif 000015
【図２】
0006013486.tif 000016
【図３】
0006013486.tif 000017
【図４】
0006013486.tif 000018
【図５】
0006013486.tif 000019