理解を容易にするために、本質的に同じもしくは類似の構造、または本質的に同じもしくは類似の機能を持つ要素を示すために、同一の参照番号が使用されている。
記述および図面は、単に本発明の原理を示すものである。当業者であれば、本明細書に明示的に記述して示していないが、本発明の原理を具体化し、その範囲に含まれる様々な配置を考案できることを理解されるだろう。さらに、本明細書に詳述したすべての例は、原則として、読者が本発明の原理、およびその技術を推進する発明者(ら)によって提供された概念を理解するのを支援するために、教育のみを目的とすることを明確に意図するものであり、そのような具体的に詳述された例および条件に限定しないものとして解釈するべきである。さらに、本明細書に使用する「または(or)」という用語は、そうでないことが明記されていない限り(たとえば、「さもなければ(or else)」または「別の方法では(in the alternative)」など)、非排他的な「または(or)」を示している。また、本明細書に記述した様々な実施形態は、必ずしも相互排他的ではなく、一部の実施形態は、新しい実施形態を形成するために、1つまたは複数の他の実施形態と組み合わせることができる。
様々な実施形態において、ユーザごとに暗号化されたデータを含むファイルの送信をサポートするクラウド・ネットワークにおいて、高速化され、暗号化された接続を提供する方法および装置が提供される。アプリケーション・サーバからの暗号化されたファイルの送信は、コンテンツ自体から鍵を取得する第1の暗号化方式を使用して静的データを暗号化し、第2の暗号化方式を使用して、個別化されたユーザ・データを用いる動的なウェブサイト・コンテンツなど、動的データを暗号化する暗号化方式を使用する。
図1は、クラウド・ネットワークに高速化接続システム100の実施形態を含むクラウド・ネットワークを示す図である。高速化接続システム100は、通信路を通じて、1つまたは複数のクライアント180−a〜180−c(まとめて、クライアント180)にデータを配布するアプリケーション・サーバ120を含む。通信路は、アプリケーション通信チャネル125、高速化ミドルボックス150−aおよび150−b(まとめて、高速化ミドルボックス150)、高速化ミドルボックス通信チャネル155−aおよび155−b(まとめて、高速化ミドルボックス通信チャネル155)、ネットワーク130、ならびにクライアント通信チャネル185−a〜185−c(まとめて、クライアント通信チャネル185)の1つを含む。
アプリケーション・サーバ120は、アプリケーション・サーバ通信チャネル125を通じてクライアント180の1つまたは複数にファイルを送信できる任意の装置の場合がある。特に、アプリケーション・サーバは、第1の暗号化方式を使用して、複数のクライアントに共通するデータなど、静的ファイル・チャンクを暗号化する暗号化方式を使用して、暗号化ファイルを送信し、第2の暗号化方式を使用して、個別化されたユーザ・データを用いる動的なウェブサイトのコンテンツなど、動的ファイル・チャンクを暗号化する。
本明細書で使用する「ファイル」および「チャンク」という用語は、任意のアプリケーション・コンテンツを意味するものであり、アプリケーション・サーバ通信チャネル125を通じて送信または受信できる任意のコンテンツを含むものとして広く理解するべきである。たとえば、ファイルおよびファイル・チャンクは、従来のファイル、パケット、パケットのストリーム、デジタル文書、ビデオまたは映像のコンテンツ、ファイル・ブロック、データ・オブジェクト、前述のものの一部などを含むことができる。
通信チャネル125、155、および185は、ワイヤレス通信(たとえばLTE、GSM、CDMA、ブルートゥース)、フェムトセル通信(たとえばWiFi)、パケット・ネットワーク通信(たとえばIP)、広帯域通信(たとえばDOCSISおよびDSL)、ストレージ通信(たとえばファイバ・チャネル、iSCSI)など、1つまたは複数の通信チャネルを通じた通信をサポートする。単一の接続として描写しているが、通信チャネル125、155、および185は任意の数でも、または通信チャネルの組み合わせでもよいことを理解されるだろう。
高速化ミドルボックス150は、静的ファイル・チャンクの重複排除が可能な任意の装置の場合がある。特に、高速化ミドルボックスは、アプリケーション・サーバから暗号化された静的ファイル・チャンクをキャッシュし、異なるクライアントが同じ静的ファイル・チャンクを要求する場合、静的ファイル・チャンク全体がネットワーク130を通過することを必要とせずに、静的ファイル・チャンクを配布する。ここでは2つの高速化ミドルボックスを示しているが、システム100は、より多くの高速化ミドルボックスを含むことができることを理解されるだろう。
ネットワーク130は、任意の数のエッジ・ノードおよびネットワーク・デバイスならびに任意の数および構成のリンクを含む。さらに、ネットワーク130は、LTE、GSM、CDMA、ローカル・エリア・ネットワーク(LAN)、ワイヤレス・ローカル・エリア・ネットワーク(WLAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)など、任意の組み合わせおよび任意の数のワイヤレス、ワイヤー・ライン、またはフェムトセルのネットワークを含むことができることを理解されるだろう。
クライアント180は、クライアント通信チャネル185の1つまたは複数を通じてファイル/ファイル・チャンクを送信または受信できる任意のタイプの通信デバイスを含むことができる。たとえば、通信デバイスは、シン・クライアント、スマートフォン(たとえばクライアント180−c)、パーソナル・コンピュータまたはラップトップ・コンピュータ(たとえばクライアント180−a)、サーバ(たとえば180−b)、ネットワーク・デバイス、タブレット、テレビのセットトップ・ボックス、メディア・プレイヤなどの場合がある。通信デバイスは、処理または記憶などタスクの一部を実行するために、代表的なシステム内の他のリソースに依存する場合があるか、またはタスクを独立して実行することができる場合がある。ここでは3つのクライアントを示しているが、システム100は、より少ないまたはより多いクライアントを含むことができる。さらに、クライアントは、操作の間の様々なときにシステムに追加または削除できるため、クライアントの数はいつでも動的な場合がある。
一部の実施形態では、高速化ミドルボックス150は、従来のWAN高速化ミドルボックスの場合がある。
高速化ミドルボックス150は、明瞭さのためにネットワーク130の外部に描写しているが、一部の実施形態では、高速化ミドルボックス150は、ネットワーク130内にある場合がある。
一部の実施形態では、高速化ミドルボックス150は、アプリケーション・サーバ120から受信された静的ファイル・チャンクと動的ファイル・チャンクを区別する。
一部の実施形態では、アプリケーション・サーバ120は、プロトコルを介して、高速化ミドルボックス150−a、高速化ミドルボックス150−b、または1つまたは複数のクライアント180と通信する。アプリケーション・サーバは、送信されたファイル・チャンクが静的か動的かなど、アプリケーション・サーバと高速化ミドルボックスまたはクライアントとの間で適切なメッセージを通信することができ、高速化方式を適用する方法を指定するか、または圧縮方式を適用する方法を指定する。このプロトコルの一部の実施形態では、アプリケーション・サーバは、パケットの形でデータを送信し、パケット内にメッセージを含む。これらの実施形態の一部では、メッセージは、受信する高速化ミドルボックスまたはクライアントが静的または動的としてファイル・チャンクを処理するべきかどうかを指定することができる。これらの実施形態の一部では、アプリケーション・サーバおよびクライアントのペアは、従来のエンド・ホスト圧縮方式を使用することができる。本実施形態では、クライアントは、メッセージに基づくエンド・ホスト圧縮方式の実装の場合がある。たとえば、静的ファイル・チャンクは、高速化ミドルボックスによって高速化されるため、クライアントは、エンド・ホスト圧縮を使用して動的ファイル・チャンクを圧縮し、圧縮されていない静的ファイル・チャンクを送信することができる。これらの実施形態の一部では、メッセージは、暗号化されたファイル・チャンクと同じ情報単位(たとえばパケット)の一部の場合がある。これらの実施形態の一部では、メッセージ・チャンクは、暗号化されたファイル・チャンクとは異なる情報単位(たとえばパケット)の場合がある。たとえば、先頭または末尾のパケットは、1つまたは複数の後続または引き続くパケットが静的または動的なファイル・チャンクを含むことを示すメッセージを含む場合がある。
一部の実施形態では、高速化ミドルボックス150は、処理せずに動的ファイル・チャンクを渡す。
図2は、図1の高速化接続システム100が、ユーザごとに暗号化されたデータを含むファイルの送信を提供するための方法200の実施形態を示すフローチャートである。方法は、アプリケーション・サーバによるファイルのファイル・チャンクを暗号化および送信(ステップ220)、高速化ミドルボックスによる送信されたファイル・チャンクに高速化方式を適用(ステップ240)、およびクライアントによる送信されたファイル・チャンクを受信および復号化(ステップ260)を含む。
方法200では、ステップ220は、アプリケーション・サーバ(たとえば図1のアプリケーション・サーバ120)によるターゲット・ファイルのファイル・チャンクの暗号化および送信を含む。特に、アプリケーション・サーバは、クライアント(たとえば図1のクライアント180の1つ)からターゲット・ファイルに対する要求を受信し、1つまたは複数の静的ファイル・チャンクおよび1つまたは複数の動的ファイル・チャンクへとターゲット・ファイルを分割し、高速化ミドルボックス(たとえば、図1の高速化ミドルボックス150−a)を介して要求側クライアントに分割されたファイル・チャンクを送信する。
方法200では、ステップ240は、高速化ミドルボックス(たとえば、図1の高速化ミドルボックス150−aおよび150−b)による送信された暗号化されたファイル・チャンクへの高速化方式の適用を含む。高速化方式は、受信された暗号化された静的ファイル・チャンクを対応する識別子に置き換える。繰り返されるバイト・シーケンス(たとえば静的ファイル・チャンク)を次の送信で識別子に置き換えることによって、アプリケーション遅延または帯域幅を減らすことができることを理解されるだろう。
方法200では、ステップ260は、クライアント(たとえばクライアント180の1つ)による送信された暗号化されたファイル・チャンクの受信および復号化を含む。特に、受信するクライアントは、適切な鍵を用いて、適切な受信された暗号化された静的ファイル・チャンクおよび暗号化された動的ファイル・チャンクを復号化し、ターゲット・ファイルを再構築する。
有利なことに、ネットワークの従来のネットワーク要素は、ネットワークにおいて変更を必要とすることなく、暗号化された静的ファイル・チャンクの暗号化されたトラフィックにおける冗長性を除去することができる。さらに、動的ファイル・チャンク(たとえば個人データ)は、これらのネットワーク要素によって格納されることを必要としない。たとえば、同じファイル(たとえばウェブ・ページ)に対する2つのクライアント要求について、ネットワーク(たとえば図1つのネットワーク130)を通じて動的ファイル・チャンクのみを送信する必要がある一方、静的ファイル・チャンクは、クライアントに隣接する高速化ミドルボックス(たとえば図1の高速化ミドルボックス150−b)からクライアントに送信することができる。さらに、セキュリティ(たとえば暗号化)は、静的および動的なファイル・チャンクの両方に適用することができる。
図3は、図2のステップ220に示すように、アプリケーション・サーバ(たとえば図1のアプリケーション・サーバ120)がターゲット・ファイルを暗号化および送信するための方法300の実施形態を示すフローチャートである。方法は、ファイル・チャンクへとターゲット・ファイルを分割するステップ(ステップ320)と、適切な分割されたファイル・チャンクについて(ステップ360)、ファイル・チャンクが動的かどうかに基づいて(ステップ330)、静的な暗号化方式(ステップ340)または動的な暗号化方式(ステップ350)を適用するステップとを含む。最後に、方法は、ターゲット・クライアント(たとえば図1のクライアント180の1つ)にファイル・チャンクを送信する(ステップ370)。
方法300では、ステップ320は、チャンクへとターゲット・ファイルを分割するステップを含む。特に、方法を実行する装置は、クライアント(たとえば図1つのクライアント180の1つ)からターゲット・ファイルに対する要求を受信し、1つまたは複数の静的ファイル・チャンク(つまり静的データ)および1つまたは複数の動的ファイル・チャンク(つまり動的データ)へとターゲット・ファイルを分割する。静的ファイル・チャンクは、多数のユーザに共通し一時的でないデータを含むことができる。動的ファイル・チャンクは、ユーザごとに異なるデータ、または一時的なデータを含むことができる。例として代表的なウェブ・ページを使用すると、静的ファイル・チャンクは、(i)画像、(ii)メタデータ・ファイルで見つかるような共通のhtml;テンプレート、ヘッダー、フッター、およびメニュー、(iii)cssファイルなどのスタイル・シート・ファイル、(iv)javascriptまたはjavaのファイルなどスクリプト・ファイル、(v)その他を含むことができる。さらに、動的ファイル・チャンクは、(i)ソーシャル・ネットワーキング・サイトのメッセージまたは電子商取引サイトの購入品などの個人データ、(ii)アカウント情報、発注情報など、ユーザによって以前に入力されたHTML形式の情報、(iii)検索の結果などウェブ・ページのカスタマイズされた部分、(iv)株式相場表示機など一時データ、または(v)その他を含むことができる。
方法300に、ステップ330は、分割されたファイル・チャンクの1つが動的データを含むかどうかを判定するステップを含む。ファイル・チャンクが動的データを含む場合、方法はステップ350に進み、そうでなければ方法はステップ340に進む。
方法300では、ステップ340は、分割された静的ファイル・チャンクの1つに静的な暗号化方式を適用するステップを含む。特に、静的な暗号化方式は、異なるクライアントに対して同一の暗号化された静的ファイル・チャンクを作成する。
方法300では、ステップ350は、分割されたファイル・チャンクの1つに動的な暗号化方式を適用するステップを含む。特に、動的な暗号化方式は、異なるクライアントに対して同一または同一でない可能性がある暗号化された動的ファイル・チャンクを作成する。一部の実施形態では、動的な暗号化方式は対称鍵暗号化である。
方法300では、ステップ360は、追加的なファイル・チャンクがあるかどうかを判定するステップを含む。追加的なファイル・チャンクが存在する場合、方法はステップ330に進み、そうでない場合は、方法はステップ370に進む。
方法300は、必要に応じて、ステップ370を含む。ステップ370は、ターゲット・クライアントに暗号化された静的および動的なファイル・チャンクを送信するステップを含む。
一部の実施形態では、ステップ320は、動的または個々のクライアントにとって個人的なファイル・チャンク(つまり動的データ)から静的かつ複数のクライアントに「共通」するファイル・チャンク(つまり静的データ)を分割するステップを含む。
ステップ320の一部の実施形態では、ファイルの「個人的な」データは、1つまたは複数の動的ファイル・チャンクへと分割される。個人データは機密性があり、ユーザごとに異なる。有利なことに、個人データは、セキュリティ・プロパティを損なわないように暗号化することができ、しかも従来のWAN高速化ミドルボックスは、静的ファイル・チャンクに対して冗長性消去を実行することができる。
一部の実施形態では、ステップ320および360は、機能を共有することができる。たとえば、ステップ320は、完全な組のファイル・チャンクへとターゲット・ファイルを分割しない場合がある。本実施形態では、ステップ360は、ターゲット・ファイルから次のファイル・チャンクを分割することができる。
ステップ330の一部の実施形態では、ステップ340または350の暗号化方式の1つを使用して、分割されたファイル・チャンクを暗号化する必要がないことを判定することができ、次に、ステップ340または350のどちらかを適用せずに、方法はステップ360に進むことができる。
一部の実施形態では、ステップ340は、静的ファイル・チャンクを暗号化するために収束暗号化(CE)を使用するステップを含む。収束暗号化は、コンテンツ自体(たとえば静的ファイル・チャンク)から鍵を取得し、コンテンツ(たとえば静的ファイル・チャンク)を暗号化するために、その取得した鍵を使用する。たとえば、静的ファイル・チャンクbについて、静的ファイル・チャンクbは、鍵k=H(b)を用いて暗号化することができる。有利なことに、同じ静的ファイル・チャンク(たとえばウェブ・ページのプレーン・テキスト)は、同一の暗号化された静的ファイル・チャンクを作成する、同じ鍵を使用して暗号化される。したがって、次に、同一の暗号化された静的ファイル・チャンクは、従来のWAN高速化ソリューションを使用して高速化することができる。
ステップ340の一部の実施形態では、収束するように暗号化された静的ファイル・チャンクを復号化するための鍵は、個別の暗号化方式を介して送信される。これらの実施形態の一部では、鍵は、クライアントにHTTPSを介して送信される。
一部の実施形態では、ステップ340は、アプリケーション・レイヤで暗号化方式を適用するステップを含む。有利なことに、これらの実施形態の一部では、他のネットワーク要素は、暗号化された静的ファイル・チャンクをプレーンテキスト・データとして処理し、暗号化された静的ファイル・チャンクの上に既存の方式を適用して、従来のWAN高速化ソリューションの完全な利点を可能にすることができる。
ステップ350の一部の実施形態では、対称鍵暗号はHTTPSである。たとえば、HTTPS接続は、HTTPSプロトコルによって生成されたユーザごとの対称鍵で暗号化された、暗号化された動的ファイル・チャンクを含む。
方法300の一部の実施形態では、ステップ340で静的ファイル・チャンクを復号化するための鍵は、ステップ350の暗号化された動的ファイル・チャンクの少なくとも1つの中に含まれている。
方法300の一部の実施形態では、ステップ330および360は、同時に実行することができる。たとえば、ステップ360で、ステップ340、350、または370に進むかどうかについて第3の判定を行うことができる。
一部の実施形態では、ステップ370は、各暗号化ステップ(たとえば340または350)の後に発生する場合があり、すべてのファイル・チャンクがステップ360を介して分析されるまで待つ必要はない。
一部の実施形態では、ステップ370は、TCP/IPまたはHTTPSの使用により送信するステップを含む。
図4は、図2のステップ240に示すように、1対の高速化ミドルボックス(たとえば、図1の高速化ミドルボックス150−aおよび150−b)が高速化方式を提供するための方法400の実施形態を示すフローチャートを示している。方法は、第1の装置によって実行される部分410−a(たとえば、図1の高速化ミドルボックス150−a)および第2の装置によって実行される部分410−b(たとえば、高速化ミドルボックス150−b)を含む。
第1の装置は、アプリケーション・サーバ(たとえば、図1のアプリケーション・サーバ120)からファイル・チャンクを受信し(ステップ420)、ファイル・チャンクに高速化方式を適用するべきかどうかを判定する(ステップ440)。高速化方式が適用されないと第1の装置が判定した場合、第1の装置は、受信されたファイル・チャンクを第2の装置に送信する(ステップ442)。高速化方式が適用されると第1の装置が判定した場合、第1の装置は、ファイル・チャンクに対してファイル・チャンク識別子が存在するかどうかを判定する(ステップ450)。ファイル・チャンクに対してファイル・チャンク識別子が存在しない場合、第1の装置は、ファイル・チャンク識別子を決定し、第2の装置にファイル・チャンクおよびその関連するファイル・チャンク識別子を送信する(ステップ462)。ファイル・チャンクに対するファイル・チャンク識別子が存在する場合、第1の装置は、第2の装置にファイル・チャンク識別子を送信する(ステップ482)。
第2の装置は、ファイル・チャンクを受信するか(ステップ444)、ファイル・チャンクおよびファイル・チャンク識別子を受信するか(ステップ464)、または第1の装置からファイル・チャンク識別子を受信し(ステップ484)、次にクライアントにファイル・チャンクを送信する(ステップ490)。第2の装置がファイル・チャンクおよびファイル・チャンク識別子を受信すると(ステップ464)、第2の装置は、ファイル・チャンクの送信に加えて、ファイル・チャンク−ファイル・チャンク識別子の関連を格納する(ステップ466)。第2の装置がファイル・チャンク識別子のみを受信すると(ステップ484)、第2の装置は、ファイル・チャンクの送信に加えて、ファイル・チャンク−ファイル・チャンク識別子の関連に基づいて、格納されたファイル・チャンクを取得する(ステップ486)。
ステップ466または486の一部の実施形態では、ファイル・チャンク−ファイル・チャンク識別子は、表で関連づけることができる。
ステップ462および464の一部の実施形態では、ファイル・チャンク識別子は、ファイル・チャンクと共に送信されない。これらの実施形態では、第2の装置が、格納されたファイル・チャンク−ファイル・チャンク識別子の関連を持っていない場合、第2の装置は、ファイル・チャンクに基づいてファイル・チャンク識別子を決定し、ステップ466で、決定されたファイル・チャンク識別子を格納する。第2の装置は、ファイル・チャンクのコンテンツに基づいてファイル・チャンク識別子を決定できるため、ファイル・チャンク識別子がファイル・チャンク・コンテンツに基づいている場合、ファイル・チャンク識別子は、第1の装置によって送信される必要はないことを理解されるだろう。
ステップ482の一部の実施形態では、第1の装置は、また、ファイル・チャンクを送信することができる。これらの実施形態の一部では、第1の装置は、ファイル・チャンク識別子の期限が切れたと判定することができる。これらの実施形態の一部では、第1の装置は、第2の装置が、格納された関連するファイル・チャンク−ファイル・チャンク識別子を持っていないと判定することができる。たとえば、第1の装置が、ファイル・チャンク−ファイル・チャンク識別子をまだ以前に受信していない高速化ミドルボックスである場合、または第1の装置が、第2の装置が格納された関連を持っていないという指示を受信した場合である。これらの実施形態の一部では、第2の装置は、第2の装置が受信されたファイル・チャンク識別子に対する関連を持っていないという応答メッセージを第1の装置に送信し、次にメッセージに応じて、第1の装置は、ファイル・チャンクを送信し、必要に応じて、ファイル・チャンク識別子を再送することができる。
主に特定の順序で描写および記述しているが、方法200、300、および400に示したステップは、任意の適切な順序で実行できることを理解されたい。さらに、1つのステップによって識別されるステップは、また、連続する1つまたは複数の他のステップで実行することができるか、または2つ以上のステップの共通する動作は、1度のみ実行することができる。
上記の様々な方法のステップは、プログラムされたコンピュータによって実行することができることを理解されるだろう。本明細書において、一部の実施形態は、また、機械またはコンピュータで読み取り可能であり、装置で実行可能またはコンピュータで実行可能なプログラム命令をエンコードする、たとえば、データ記憶メディアなど、プログラム記憶装置を包含することを意図するものであり、前述の命令は、上記方法のステップの一部またはすべてを実行する。プログラム記憶装置は、たとえば、デジタル・メモリ、磁気ディスクや磁気テープなどの磁気記憶メディア、ハード・ドライブ、または光学的に読み取り可能なデータ記憶メディアなどでもよい。また、実施形態は、上記方法の前記ステップを実行するようにプログラムされたコンピュータを包含することを意図するものである。
図5は、図1のアプリケーション・サーバ120または図1の高速化ミドルボックス150の1つなど、様々な装置500の実施形態を概略的に示している。装置500は、プロセッサ510、データ記憶装置511、およびI/Oインターフェース530を含む。
プロセッサ510は、装置500の操作を制御する。プロセッサ510は、データ記憶装置511と協働する。
データ記憶装置511は、必要に応じて、ルーティング情報などのプログラム・データを格納することができる。データ記憶装置511は、また、プロセッサ510によって実行可能なプログラム520を格納する。
プロセッサで実行可能なプログラム520は、I/Oインターフェース・プログラム521、ファイル・サービス・プログラム523、またはファイル・チャンク高速化プログラム525を含むことができる。プロセッサ510は、プロセッサで実行可能なプログラム520と協働する。
I/Oインターフェース530は、必要に応じてかつ上記のように、図1の通信チャネル125および155を通じて通信をサポートするために、プロセッサ510およびI/Oインターフェース・プログラム521と協働する。
ファイル・サービス・プログラム523は、上記のように図3の方法300のステップを実行する。
ファイル・チャンク高速化プログラム525は、上記のように図4の方法400の部分410−aまたは410−bのステップを実行する。
一部の実施形態では、プロセッサ510は、プロセッサ/CPUコアなどのリソースを含むことができ、I/Oインターフェース530は、任意の適切なネットワーク・インターフェースを含むことができ、またはデータ記憶装置511は、メモリもしくは記憶デバイスを含むことができる。さらに、装置500は、1つまたは複数のサーバや、プロセッサ、メモリ、ネットワーク・インターフェース、または記憶デバイスなどのコンポーネントから構成されるブレードなど任意の適切な物理ハードウェア構成の場合がある。これらの実施形態の一部では、装置500は、相互にリモートであるクラウド・ネットワーク・リソースを含むことができる。
一部の実施形態では、装置500は、バーチャル・マシンの場合がある。これらの実施形態の一部では、バーチャル・マシンは、異なるマシンからのコンポーネントを含む場合も、または地理的に分散している場合もある。たとえば、データ記憶装置511およびプロセッサ510は、2台の異なる物理的なマシンにある場合がある。
プロセッサで実行可能なプログラム520がプロセッサ510に実装される場合、特定の論理回路と同様に動作する一意のデバイスを提供するために、プログラム・コード・セグメントはプロセッサに組み合わせられる。
本明細書における描写および記述は、たとえば、プログラムおよびロジックはデータ記憶装置内に格納され、メモリは、プロセッサに通信できるように接続されている実施形態に関するが、そのような情報は、任意の適切な配置のデバイスに通信できるように接続されたメモリ、記憶装置、もしくはデータベースの任意の適切な配置を使用して、メモリ、記憶装置、もしくは内部もしくは外部のデータベースの任意の適切な組み合わせに情報を格納して、または任意の適切な数のアクセス可能な外部メモリ、記憶装置、もしくはデータベースを使用して、任意の他の適切な方法で(たとえば、任意の適切な数のメモリ、記憶装置、またはデータベースを使用して)格納できることを理解されたい。したがって、本明細書で言及するデータ記憶装置という用語は、メモリ、記憶装置、およびデータベースの適切な組み合わせをすべて包含することを意図している。
記述および図面は、単に本発明の原理を示すものである。本明細書に明示的に記述して示していないが、本発明の原理を具体化し、その精神および範囲に含まれる様々な配置を当業者であれば考案できることを理解されるだろう。さらに、本明細書に詳述したすべての例は、原則として、読者が本発明の原理、およびその技術を推進する発明者(ら)によって提供された概念を理解するのを支援するために、教育のみを目的とすることを明確に意図するものであり、そのような具体的に詳述された例および条件に限定しないものとして解釈するべきである。さらに、本明細書において、本発明の原理、態様、および実施形態を詳述するすべての記述、およびその特定の例は、その等価物を包含することを意図するものである。
「プロセッサ」と書かれた任意の機能ブロックを含む、図に示す様々な要素の機能は、専用ハードウェア、および適切なソフトウェアと連携してソフトウェアを実行する機能を持つハードウェアの利用を通じて提供することができる。プロセッサによって提供される場合、機能は、単一の専用プロセッサによって、単一の共有プロセッサによって、またはその一部を共有できる、複数の個々のプロセッサによって提供することができる。さらに、「プロセッサ」または「コントローラ」という用語の明示的な使用は、ソフトウェアを実行できるハードウェアを排他的に指すものと解釈するべきではなく、デジタル・シグナル・プロセッサ(DSP)ハードウェア、ネットワーク・プロセッサ、特定用途向けIC(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、ソフトウェアを格納するための読み取り専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、および不揮発性記憶装置を限定することなく、暗黙的に含むことができる。従来型またはカスタムの他のハードウェアも含むことができる。同様に、図に示すすべてのスイッチは概念のみを示すものである。それらの機能は、プログラム・ロジックの動作を通じて、専用ロジックを通じて、プログラム制御および専用ロジックの対話を通じて、または手動でも、実行することができ、内容からより明確に理解されるように、特定の技術を実装者が選択可能である。
本明細書に示すブロック図は、本発明の原理を具体化する実例となる回路についての概念的な視点を表していることは自明であろう。同様に、そのようなコンピュータまたはプロセッサが明示的に示されているかどうかに関わりなく、任意のフローチャート、流れ図、状態遷移図、擬似コードなどは、コンピュータ可読媒体において本質的に表され、したがって、コンピュータまたはプロセッサによって実行できる様々なプロセスを表していることを理解されたい。