(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
理解を容易にするために、可能な場合には、複数の図面に共通する同一の要素を指定するのに、同一の符号を使用した。
【0011】
一般に、冗長性除去(RE)能力は、通信ネットワーク内でREミドルボックスをスケーリングするために提供される。
【0012】
少なくともいくつかの実施形態では、RE能力は、REの処理をスケーリングすると同時に、REがREミドルボックス・インスタンスの一部またはすべてのコンテンツ履歴を使用することを可能にする。その結果、RE能力の少なくともいくつかの実施形態は、REミドルボックスのストレージ能力と処理能力との両方を効果的にスケーリングする。
【0013】
本明細書では主に、クラウドベースの通信システム内でのRE能力の提供(たとえば、広域ネットワーク(WAN)を介するクラウド・サイトの間の通信に関する)の文脈で図示され、説明されるが、RE能力のさまざまな実施形態を、冗長性除去が必要であるか望ましい可能性がある他のタイプの通信システム内で利用することができることに留意されたい。
【0014】
図1に、冗長性除去(RE)機能をサポートする例示的なクラウドベースの通信システムの高レベル・ブロック図を示す。
【0015】
図1に示されているように、クラウドベースの通信システム100は、広域ネットワーク(WAN)120を介して通信できる第1のクラウド・サイト110
1および第2のクラウド・サイト110
2(集合的にクラウド・サイト110)を含む。クラウド・サイト110は、WAN 120を介するクラウド・サイト110の間のデータの転送のさまざまな態様を最適化するためのWAN最適化をサポートするように構成される。WAN最適化の一部として、クラウド・サイト110は、第1のクラウド・サイト110
1から第2のクラウド・サイト110
2へのWAN 120を介するデータの転送における冗長性を除去するためにRE機能をサポートするように構成される(しかし、クラウド・サイト110が、その代わりにまたはやはり、第2のクラウド・サイト110
2から第1のクラウド・サイト110
1へのWAN 120を介するデータの転送のさまざまな態様を最適化するためにWAN最適化をサポートするように構成され得ることを理解されたい)。より具体的には、第1のクラウド・サイト110
1は、RE符号化ミドルボックス112
Eを含み、第2のクラウド・サイトは、RE復号ミドルボックス112
Dを含む。WAN 120は、クラウド・サイト110の間のデータの伝搬をサポートするのに適切な任意のタイプの通信ネットワークとすることができる。
【0016】
一般に、WAN最適化機能は、通常、冗長性除去(RE)機能ならびに他のタイプの機能を含む。異なるWAN最適化解決策は、RE機能性が実施される形において異なる可能性があるが、基本的なRE方法論は、ほとんどの場合に類似する。一般に、REは、それぞれ冗長データの転送を減らしまたは除去する形でデータ・アイテムを符号化し、復号するように構成された符号化ミドルボックスおよび復号ミドルボックスを含むREミドルボックスの対を使用して提供される。データ・アイテムは、パケット、パケットの一部(本明細書ではチャンクと称する場合もある)など、ならびにそのさまざまな組合せを含むことができることに留意されたい。
【0017】
一般に、符号化ミドルボックスは、オリジナル・パケットを受信し、オリジナル・パケットを符号化された(より小さい)パケットに符号化し、符号化されたパケットをネットワークを介して伝搬させる。符号化ミドルボックスは、通常、2つの構造すなわち、指紋テーブルおよびコンテンツ・ストアを維持する。指紋テーブルは、コンテンツ・ストア内のコンテンツ(たとえば、パケット、パケットの一部など)をポイントする指紋を含む。コンテンツ・ストアは、符号化ミドルボックスで受信されたコンテンツを格納する(たとえば、新しいコンテンツは、到着時に格納され、より古いコンテンツは、より新しいコンテンツのための場所をあけるために追い出される。指紋テーブルは、コンテンツがコンテンツ・ストアに追加され、コンテンツ・ストアから追い出される時に、それに従って調整される。符号化ミドルボックスを、最大一致RE、チャンク一致RE、または任意の他の適切なRE方式をサポートするように構成することができる。
【0018】
最大一致REでは、一般的に言って、オリジナル・パケットの最大の一致する領域が、一致する領域より小さい符号化された領域によって置換され、これによって、オリジナル・パケットをより小さくする。指紋が、指紋アルゴリズムに基づいて(たとえば、ラビン指紋法(Rabin fingerprinting)または任意の他の適切なタイプの指紋アルゴリズムを使用して)パケットごとに計算される。指紋は、オリジナル・パケットから選択される。指紋の選択は、ある種の判断基準(たとえば、値サンプリングまたは類似物)に基づくものとすることができる。オリジナル・パケットからの選択された指紋が指紋テーブルに含まれるかどうかを判定するために、選択された指紋を使用するルックアップが、指紋テーブル内で実行される。一致が指紋テーブル内で見つかる場合には、コンテンツ・ストア内の対応する格納されたパケットが、取り出され、オリジナル・パケットと格納されたパケットとの間の最大一致が識別されるまで、オリジナル・パケットと格納されたパケットとの間の一致する領域が、比較(たとえば、バイトごとの比較)を介して展開される。最大一致が識別された後に、オリジナル・パケットの一致する領域は、符号化された領域(たとえば、コンテンツ・ストアからの格納されたパケットの1つへのポインタおよび一致する領域のサイズを含むシム・ヘッダ(shim header))によって置換される。
【0019】
チャンク一致REでは、一般的に言って、オリジナル・パケットのチャンクが、チャンクより小さい符号化された領域によって置換され、これによってオリジナル・パケットをより小さくする。オリジナル・パケットは、チャンクに分割され、チャンクは、コンテンツ・ストアに格納される。指紋テーブルは、コンテンツ・ストア内のチャンクをポイントするハッシュを含む。指紋が、オリジナル・パケットから選択される。指紋の選択は、ある種の判断基準(たとえば、値サンプリングまたは類似物)に基づくものとすることができる。オリジナル・パケットからの選択された指紋が指紋テーブルに含まれるかどうかを判定するために、選択された指紋を使用するルックアップが、指紋テーブル内で実行される。一致が指紋テーブル内で見つかる場合には、オリジナル・パケットの一致する領域/チャンクが、符号化された領域(たとえば、コンテンツ・ストアからの格納されたチャンクの1つへのポインタおよび一致する領域/チャンクのサイズを含むシム・ヘッダ)によって置換される。チャンク一致REでは、比較ベースの展開は、一致が指紋テーブル内で見つかる時に実行されない。
【0020】
一般に、復号ミドルボックスは、符号化されたパケットを受信し、符号化されたパケットからオリジナル・パケットを再構成する。復号ミドルボックスは、符号化ミドルボックス上で維持されるコンテンツ・ストアに類似するコンテンツ・ストアを有する(たとえば、最大一致REでパケットを格納し、チャンク一致REでチャンクを格納するなど)。符号化された領域(本明細書では符号化キーと称する場合もある)を含む符号化されたパケットが、復号ミドルボックスで受信される時に、符号化された領域は、符号化された領域をオリジナル・コンテンツ(すなわち、符号化ミドルボックスによってオリジナル・パケットから除去され、符号化された領域に置換されたコンテンツ)に置換することによって、オリジナル・パケットを再構成するのに使用される。符号化された領域は、オリジナル・コンテンツを取り出すために復号ミドルボックスのコンテンツ・ストア内でルックアップを実行するのに使用され、符号化された領域は、その後、オリジナル・パケットが再形成されるように、オリジナル・コンテンツによって置換される。
【0021】
REミドルボックスでは、さまざまなデータ構造を、メモリまたはディスク内で維持することができる。少なくともいくつかの場合に、高性能のために、データ構造は、メモリ内でのみ維持される。用語「ストレージ・モジュール」は、本明細書では、REミドルボックスのためにそのようなデータ構造を維持する際の使用に適する任意のタイプのストレージを指すために使用され得る(たとえば、メモリ、ディスクなど、ならびにそのさまざまな組合せ)。
【0022】
本明細書で説明されるように、そのようなREミドルボックスを、クラウド・設定内の仮想機器として実施することができるが、仮想機器として実施されたそのようなREミドルボックスのスケーリングは、簡単ではなく、さらに、仮想機器として実施されたそのようなREミドルボックスのスケーリングに対する負荷平衡化ベースの手法は、通常はうまく働かない。上で注記したように、RE能力の少なくともいくつかの実施形態は、REミドルボックスのストレージ能力および処理能力の効果的なスケーリングを提供する。
【0023】
一実施形態では、RE符号化ミドルボックス112
EおよびRE復号ミドルボックス112
Dは、WAN 120を介するデータの転送用のRE機能を提供することに関係するストレージ能力および処理能力のスケーリングをサポートするように構成される。最大一致REのRE符号化ミドルボックス112
EおよびRE復号ミドルボックス112
Dの例示的実施形態を、それぞれ
図2および
図3に関して図示し、説明する。チャンク一致REのRE符号化ミドルボックス112
EおよびRE復号ミドルボックス112
Dの例示的実施形態を、それぞれ
図5および
図6に関して図示し、説明する。
【0024】
主にRE処理ミドルボックスが2つのクラウド・サイトの間の通信を最適化するために利用される実施形態に関して
図1に図示され、説明されるが、RE処理ミドルボックスを、さまざまな他の要素の間(たとえば、企業とクラウド・サイトとの間、ユーザとクラウド・サイトとの間、無線通信システム内の無線アクセス・ネットワーク(RAN)とコア・ネットワーク(CN)との間など、ならびにそのさまざまな組合せ)の通信を最適化するために利用することもできることに留意されたい。
【0025】
一実施形態では、RE符号化ミドルボックス112
EおよびRE復号ミドルボックス112
Dは、最大一致RE能力をサポートするように構成される。これを、
図2、3、および4に関して図示し、説明する。
【0026】
図2に、最大一致REのRE符号化ミドルボックスの例示的実施形態を示す。より具体的には、
図2は、最大一致REのためのRE符号化ミドルボックス112
Eの例示的実施形態(RE符号化ミドルボックス200
Eと表される)を示す。
【0027】
RE符号化ミドルボックス200
Eは、クラシファイヤ210、分類−符号器マッピング・テーブル211、複数の符号器212
1〜212
N(集合的に符号器212)、およびマージャ215を含む。符号器212
1〜212
Nは、それぞれ、複数のコンテンツ・ストア213
1〜213
N(集合的にコンテンツ・ストア213)および複数の指紋テーブル214
1〜214
N(集合的に指紋テーブル214)を含む。
【0028】
クラシファイヤ210は、符号器212のそれぞれと通信するように構成される。マージャ215も、符号器212のそれぞれと通信するように構成される。符号器212は、お互いと通信するように構成され、主にお互いと直列に通信するものとして図示されるが(例示として、符号器212
1は、符号器212
2と通信し、以下同様であり、また、反対の順序で通信する)、少なくともいくつかの実施形態では、任意の符号器212が、任意の他の符号器212と直接(すなわち、他の符号器212をトラバースせずに)、または、符号器212の図示の順序をトラバースせずに間接的に、通信することができることに留意されたい。
【0029】
RE符号化ミドルボックス200
Eは、パケットが、クラシファイヤ210によって分類され、その後、クラシファイヤ210によって判定されるパケットのパケット・クラスに基づいて、異なる形で符号器212によって処理される(たとえば、符号器212の異なるサブセットによって処理される、符号器212の異なる順序を使用して符号器212によって処理されるなど、ならびにそのさまざまな組合せ)ように構成される。
【0030】
クラシファイヤ210は、パケットを受け取り、受け取られたパケットの分類を判定する。RE符号化ミドルボックス200
Eは、任意の適切な判断基準に基づくものとすることができる任意の適切な個数およびタイプのパケット・クラスをサポートすることができる。たとえば、クラシファイヤ210による受け取られたパケットの分類を、ラウンドロビンの形で、パケットのパケット・サイズに基づく負荷平衡化を使用してなどで実行することができる。一実施形態では、RE符号化ミドルボックス200
Eによってサポートされるパケット・クラスのセットは、RE復号ミドルボックス112
Dによってサポートされるパケット・クラスのセットと同一である。クラシファイヤ210は、分類−符号器マッピング・テーブル211に従って、分類されたパケットを符号器212に供給する。
【0031】
分類−符号器マッピング・テーブル211は、パケット・クラスのそれぞれについて、符号器212がそのパケット・クラスのパケットを符号化するのに使用されるそれぞれの形へのパケット・クラスのマッピングを指定する。所与のパケット・クラスについて、符号器212がパケット・クラスのパケットを符号化するのに使用される形は、符号器リストとして指定され、符号器リスト内の符号器212の順序は、符号器212が所与のパケット・クラスに分類された各パケットに作用する順序を指定する。たとえば、例示的な分類−符号器マッピング・テーブル211は、第1のパケット・クラス(第1クラス)が符号器212の第1の順序付け(例示として、符号器212
1、符号器212
2、以下、符号器212
Nまで下付きの数値の順)にマッピングされ、第2のパケット・クラス(第2クラス)が符号器212の第2の順序付け(例示として、符号器212
2、符号器212
3、以下、符号器212
Nまで下付きの数値の順、その後に最終的に符号器212
1)にマッピングされ、以下、第Nのパケット・クラス(第Nクラス)が符号器212の第Nの順序付け(例示として、符号器212
N、符号器212
N−1、以下、符号器212
1まで下付きの逆の数値の順)にマッピングされるなどを示す。主に特定の個数のパケット・クラスおよび符号器212の使用(およびパケット・クラスの個数が符号器212の個数と等しい場合)に関して図示され、説明されるが、より少数またはより多数のパケット・クラスまたは符号器212を使用することができることに留意されたい(また、パケット・クラスの個数と符号器212の個数との間の1対1関係が要求されないことを理解されたい)。主に分類−符号器マッピング・テーブル211が符号器212のそれぞれからアクセス可能な単一のテーブルである実施形態に関して図示され、説明されるが、分類−符号器マッピング・テーブル211のN個のコピーを、それぞれ符号器212
1〜212
Nに格納することができることに留意されたい。
【0032】
クラシファイヤ210は、受け取られたパケットを符号化するのに使用すべき符号器212のセットを判定するのに分類−符号器マッピング・テーブル211を使用する。たとえば、受け取られたパケットのパケット・クラスを判定した後に、クラシファイヤ210は、受け取られたパケットを符号化するのに使用すべき符号器212のセットを判定するために、分類−符号器マッピング・テーブル211へのキーとして、判定されたパケット・クラスを使用することができる。上で説明したように、分類−符号器マッピング・テーブル211は、パケット・クラスごとに、符号器212がパケットの符号化のためにパケットを処理する順序を示す符号器212の順序を指定する。クラシファイヤ210は、パケット・クラスの符号器リスト内の最初の符号器212にパケットを供給する前に、パケット内でパケットのパケット・クラスをマークする。一実施形態では、クラシファイヤ210は、パケット内に、分類−符号器マッピング・テーブル211から判定されるパケット・クラスの符号器リストを含めることによって、パケット内でパケット・クラスをマークする(これによって、符号器リストがパケット自体からたやすく使用可能なので、パケット・クラスの符号器リスト内の符号器212が分類−符号器マッピング・テーブル211へのルックアップを実行する必要が防がれる)。一実施形態では、クラシファイヤ210は、分類−符号器マッピング・テーブル211へのキーとして符号器リスト内の各符号器212によって使用され得るパケット・クラス識別子を用いてパケットをマークすることによって、パケット内でパケット・クラスをマークする。そのような実施形態では、現在の符号器212は、パケットについてどのRE機能を実行すべきかを知り、パケットが供給されなければならない次のノード(たとえば、次の符号器212またはマージャ215)を判定することもできるように、パケット・クラスの符号器リスト内のそれ自体の位置を判定する。
【0033】
符号器212は、それぞれ、最大一致REの複数のRE符号化機能をサポートするように構成される。各符号器212によってサポートされるRE符号化機能は、(1)指紋の計算、(2)指紋ルックアップの実行、(3)一致する領域の展開、および(4)コンテンツ・ストア(例示として、それぞれのコンテンツ・ストア213)へのパケットの格納を含む。主に、符号器212のそれぞれが4つのリストされたRE復号機能のそれぞれを実行するように構成される実施形態に関して図示され、説明されるが、少なくともいくつかの実施形態で、符号器212のうちの1つまたは複数を、リストされたRE符号化機能のうちのより少数または他のRE符号化機能をサポートするように構成することができることに留意されたい。
【0034】
符号器212は、分類−符号器マッピング・テーブル211内で指定されるパケット・クラスに関連する符号器リスト内のその位置に基づいて、どのRE符号化機能をパケット・クラスのパケットについて実行すべきかを知るように構成される。
【0035】
パケット・クラスのパケットについて符号器212によって実行されるRE符号化機能は、符号器212がパケット・クラスの符号器リスト内の最初の符号器212またはパケット・クラスの符号器リスト内の後続の符号器212のどちらであるのかに依存する。一実施形態では、符号器212は、符号器リスト内の最初の符号器212がパケット・クラスの所与のパケットの4つのRE符号化機能のそれぞれを実行する責任を負い、符号器リスト内の後続の符号器212のそれぞれが符号器リスト内のより前の符号器212によってマッチングされず展開されない指紋の指紋ルックアップの実行および一致する領域の展開の責任を負うように構成される。上で注記したように、各符号器212は、パケット自体から(たとえば、クラシファイヤ210が、分類−符号器マッピング・テーブル211へのルック・アップに基づいてパケットに符号器リストを追加する場合)または分類−符号器マッピング・テーブル211へのルック・アップを介して(たとえば、クラシファイヤ210によってパケット内に含められたパケット・クラス識別子に基づいて)所与のパケット・クラスの符号器リスト内のその位置を判定することができる。パケット・クラスの符号器リスト内の最初の符号器212は、そのパケット・クラスに関連するものとしてマークされたパケットを受け取った時に、パケットの指紋(符号器リスト内の最初の符号器212ならびに符号器リスト内の1つまたは複数の後続の符号器212によって使用される計算された指紋のリストとして維持される)を計算し、パケットをそれに関連するコンテンツ・ストア213に格納し、それに関連する指紋テーブル214内で指紋ルックアップを実行し、指紋一致が見つかる時に、パケット内の一致した指紋の一致する領域を符号化し、一致した指紋を計算された指紋のリストから除去し、符号化されたパケットおよび計算された指紋の更新されたリストをパケット・クラスの符号器リスト内の次の符号器212に渡す。パケット・クラスの符号器リスト内の各後続の符号器212(すなわち、パケット・クラスの符号器リスト内の最初の符号器212を除くすべての符号器)は、符号器リスト内の以前の符号器212から符号化されたパケットを受け取り、それに関連する指紋テーブル214内で指紋ルックアップを実行し、指紋一致が見つかる時に、パケット内の一致した指紋の一致する領域を符号化し、一致した指紋を計算された指紋のリストから除去し、符号化されたパケットおよび計算された指紋の更新されたリストをパケット・クラスの符号器リスト内の次の符号器212に渡す。符号器リスト内の最後の符号器212は、パケット・クラスの符号器リスト内の後続符号器212としての機能を実行した後に、符号化されたパケットをマージャ215に供給する。
【0036】
マージャ215は、符号器212から符号化されたパケットを受け取り、符号化されたパケットを伝搬させる(たとえば、それを介して符号化されたパケットをRE復号ミドルボックス112
Dに配送できるWAN 120を介して)。
【0037】
この形で、RE符号化機能を、さまざまな符号器212にまたがって分散させる(したがって、負荷平衡化する)ことができ、同様に、RE符号化機能に関連する格納および処理を、さまざまな符号器212にまたがって分散させる(したがって、負荷平衡化する)ことができる。パケットは、分類され、異なるパケット・クラスについて符号器212の異なるリスト内の最初の符号器として動作する符号器212の異なるものに供給されるので、パケットの格納は、それぞれ、符号器212のコンテンツ・ストア213にまたがって分散される。同様に、パケットは、分類され、異なるパケット・クラスについて符号器212の異なるリスト内の最初の符号器として動作する符号器212の異なる1つに供給されるので、REに使用される指紋の維持は、それぞれ符号器212の指紋テーブル214にまたがって分散される。パケットは、分類され、異なるパケット・クラスについて符号器212の異なるリストに基づいて異なる順序で後続符号器として動作する符号器212に供給されるので、指紋を符号化された領域と置換するためのパケットの処理は、それぞれ符号器212にまたがって分散される。この形でRE符号化ミドルボックス200
Eを構成することのさまざまな利益は、
図4を参照することによってよりよく理解することができる。
【0038】
図3に、最大一致REのRE復号ミドルボックスの例示的実施形態を示す。より具体的には、
図3は、最大一致REのRE復号ミドルボックス112
Dの例示的実施形態(RE復号ミドルボックス300
Dと表される)を示す。
【0039】
図3のRE復号ミドルボックス300
Dは、
図2のRE符号化ミドルボックス200
Eに類似する形で動作するように構成され、RE復号ミドルボックス300
Dは、RE符号化ミドルボックス200
Eによって実行されるRE符号化機能に相補的なRE復号機能を実行する。
【0040】
RE復号ミドルボックス300
Dは、クラシファイヤ310、分類−復号器マッピング・テーブル311、複数の復号器312
1〜312
N(集合的に復号器312)、およびマージャ315を含む。復号器312
1〜312
Nは、それぞれ複数のコンテンツ・ストア313
1〜313
N(集合的にコンテンツ・ストア313)を含む。
【0041】
クラシファイヤ310は、復号器312のそれぞれと通信するように構成される。マージャ315も、復号器312のそれぞれと通信するように構成される。復号器312は、お互いと通信するように構成され、主にお互いと直列に通信するものとして図示されるが(例示として、復号器312
1は復号器312
2と通信し、以下同様であり、また、反対の順序で通信する)、少なくともいくつかの実施形態では、任意の復号器312が、任意の他の復号器312と直接(すなわち、他の復号器312をトラバースせずに)、または、復号器312の図示の順序をトラバースせずに間接的に、通信することができることに留意されたい。
【0042】
RE復号ミドルボックス300
Dは、パケットが、クラシファイヤ310によって分類され、その後、クラシファイヤ310によって判定されるパケットのパケット・クラスに基づいて、異なる形で復号器312によって処理される(たとえば、復号器312の異なるサブセットによって処理される、復号器312の異なる順序を使用して復号器312によって処理されるなど、ならびにそのさまざまな組合せ)ように構成される。
【0043】
クラシファイヤ310は、パケットを受け取り、受け取られたパケットの分類を判定し、それぞれ、パケット内の受け取られたパケットの分類をマークする。RE復号ミドルボックス300
Dは、任意の適切な判断基準に基づくものとすることができる任意の適切な個数およびタイプのパケット・クラスをサポートすることができる。たとえば、クラシファイヤ310による受け取られたパケットの分類を、ラウンドロビンの形で、パケットのパケット・サイズに基づく負荷平衡化を使用してなどで実行することができる。一実施形態では、RE復号ミドルボックス300
Dによってサポートされるパケット・クラスのセットは、RE符号化ミドルボックス112
Eによってサポートされるパケット・クラスのセットと同一である。クラシファイヤ310は、分類−符号器マッピング・テーブル311に従って、分類されたパケットを復号器312に供給する。
【0044】
分類−復号器マッピング・テーブル311は、パケット・クラスのそれぞれについて、復号器312がそのパケット・クラスのパケットを復号するのに使用されるそれぞれの形へのパケット・クラスのマッピングを指定する。所与のパケット・クラスについて、復号器312がパケット・クラスのパケットを復号するのに使用される形は、復号器リストとして指定され、復号器リスト内の復号器312の順序は、復号器312が所与のパケット・クラスに分類された各パケットに作用する順序を指定する。一実施形態では、パケット・クラスごとに、復号器リスト内の復号器312の順序は、RE符号化ミドルボックス200
Eの分類−符号器マッピング・テーブル211内で指定される符号器リストの符号器212の順序の逆である。たとえば、
図3の例示的な分類−復号器マッピング・テーブル311は、第1のパケット・クラス(第1クラス)が復号器312の第1の順序付け(例示として、復号器312
N、復号器312
N−1、以下、復号器312
1まで下付きの数値の順)にマッピングされ、第2のパケット・クラス(第2クラス)が復号器312の第2の順序付け(例示として、復号器312
N−1、復号器312
N−2、以下、復号器312
1まで下付きの数値の順、その後に最終的に復号器312
N)にマッピングされ、以下、第Nのパケット・クラス(第Nクラス)が復号器312の第Nの順序付け(例示として、復号器312
1、復号器312
2、以下、復号器312
Nまで下付きの数値の順)にマッピングされるなどを示す。主に特定の個数のパケット・クラスおよび復号器312の使用(およびパケット・クラスの個数が復号器312の個数と等しい場合)に関して図示され、説明されるが、より少数またはより多数のクラスまたは復号器312を使用することができることに留意されたい(また、パケット・クラスの個数と復号器312の個数との間の1対1関係が要求されないことを理解されたい)。主に分類−復号器マッピング・テーブル311が復号器312のそれぞれからアクセス可能な単一のテーブルである実施形態に関して図示され、説明されるが、分類−復号器マッピング・テーブル311のN個のコピーを、それぞれ復号器312
1〜312
Nに格納することができることに留意されたい。
【0045】
クラシファイヤ310は、受け取られたパケットを復号するのに使用すべき復号器312のセットを判定するのに分類−復号器マッピング・テーブル311を使用する。たとえば、受け取られたパケットのパケット・クラスを判定した後に、クラシファイヤ310は、受け取られたパケットを復号するのに使用すべき復号器312のセットを判定するために、分類−復号器マッピング・テーブル311へのキーとして、判定されたパケット・クラスを使用することができる。上で説明したように、分類−復号器マッピング・テーブル311は、パケット・クラスごとに、復号器312がパケットの復号のためにパケットを処理する順序を示す復号器312の順序を指定する。クラシファイヤ310は、パケット・クラスの復号器リスト内の最初の復号器312にパケットを供給する前に、パケット内でパケットのパケット・クラスをマークする。一実施形態では、クラシファイヤ310は、パケット内に、分類−復号器マッピング・テーブル311から判定されるパケット・クラスの復号器リストを含めることによって、パケット内でパケット・クラスをマークする(これによって、復号器リストがパケット自体からたやすく使用可能なので、パケット・クラスの復号器リスト内の復号器312が分類−復号器マッピング・テーブル311へのルックアップを実行する必要が防がれる)。一実施形態では、クラシファイヤ310は、分類−復号器マッピング・テーブル311へのキーとして復号器リスト内の各復号器312によって使用され得るパケット・クラス識別子を用いてパケットをマークすることによって、パケット内でパケット・クラスをマークする。そのような実施形態では、現在の復号器312は、パケットについてどのRE機能を実行すべきかを知り、パケットが供給されなければならない次のノード(たとえば、次の復号器312またはマージャ315)を判定することもできるように、パケット・クラスの復号器リスト内のそれ自体の位置を判定する。
【0046】
復号器312は、それぞれ、最大一致REの複数のRE復号機能をサポートするように構成される。各復号器312によってサポートされるRE復号機能は、(1)符号化キーの復号、(2)符号化キーによって識別されるパケットのルックアップの実行、(3)符号化キーによって識別されたパケットの対応する諸部分による符号化キーの置換、および(4)コンテンツ・ストア(例示として、それぞれのコンテンツ・ストア313)へのパケットの格納を含む。主に、復号器312のそれぞれが4つのリストされたRE復号機能のそれぞれを実行するように構成される実施形態に関して図示され、説明されるが、少なくともいくつかの実施形態で、復号器312のうちの1つまたは複数を、リストされたRE復号機能のうちのより少数または他のRE復号機能をサポートするように構成することができることに留意されたい。
【0047】
復号器312は、分類−復号器マッピング・テーブル311内で指定されるパケット・クラスに関連する復号器リスト内のその位置に基づいて、どのRE復号機能をパケット・クラスのパケットについて実行すべきかを知るように構成される。
【0048】
パケット・クラスのパケットについて復号器312によって実行されるRE復号機能は、復号器312がパケット・クラスの復号器リスト内の最初の復号器312、パケット・クラスの復号器リスト内の中間の復号器312、またはパケット・クラスの復号器リスト内の最後の復号器312のどちらであるのかに依存する。一実施形態では、復号器312は、復号器リスト内の最初の復号器312が第1のRE復号機能(すなわち、符号化キーの復号)を実行する責任を負い、復号器リスト内の復号器312のそれぞれが第2および第3のRE復号機能(すなわち、符号化キーによって識別されるパケットのルックアップの実行および符号化キーによって識別されたパケットの対応する諸部分による符号化キーの置換)を実行する責任を負い、復号器リスト内の最後の復号器312が第4のRE復号機能(すなわち、コンテンツ・ストアへのパケットの格納)を実行する責任を負うように構成される。上で注記したように、各復号器312は、パケット自体から(たとえば、クラシファイヤ310が、分類−復号器マッピング・テーブル311へのルック・アップに基づいてパケットに復号器リストを追加する場合)または分類−復号器マッピング・テーブル311へのルック・アップを介して(たとえば、クラシファイヤ310によってパケット内に含められたパケット・クラス識別子に基づいて)所与のパケット・クラスの復号器リスト内のその位置を判定することができる。パケット・クラスの復号器リスト内の最初の復号器312は、そのパケット・クラスに関連するものとしてマークされたパケットを受け取った時に、受け取られたパケット内に含まれる符号化キーのそれぞれ(たとえば、パケットのREベースの符号化中にRE符号化ミドルボックス112
Eによってそこに置かれた)を識別し、復号する。パケット・クラスの復号器リスト内の最初の復号器312は、次に、そのコンテンツ・ストア313を使用して符号化キーのそれぞれのルックアップを実行し、一致するパケットがそれに関して最初の復号器312のコンテンツ・ストア313内で識別される符号化キーごとに、受け取られたパケット内の符号化キーを、最初の復号器312のコンテンツ・ストア313から識別された格納されたパケットの対応する部分に置換する。パケット・クラスの復号器リスト内の最初の復号器312は、次に、受け取られたパケットおよび残りの符号化キー(すなわち、最初の復号器312が処理できなかった符号化キー)をパケット・クラスの復号器リスト内の2番目の復号器312に渡す。パケット・クラスの復号器リスト内の2番目の復号器312は、そのコンテンツ・ストア313を使用して残りの符号化キー(最初の復号器312から受け取られた)のそれぞれについてルックアップを実行し、一致するパケットがそれに関して2番目の復号器312のコンテンツ・ストア313内で識別される符号化キーごとに、受け取られたパケット内の符号化キーを、2番目の復号器312のコンテンツ・ストア313から識別された格納されたパケットの対応する部分に置換する。パケット・クラスの復号器リスト内の2番目の復号器312は、次に、受け取られたパケットおよび残りの符号化キー(すなわち、最初および2番目の復号器312が処理できなかった符号化キー)をパケット・クラスの復号器リスト内の3番目の復号器312に渡す。パケットは、パケット・クラスの復号器リスト内の最後の復号器312に達するまで、この形で処理され、渡され続ける。パケット・クラスの復号器リスト内の最後の復号器312は、そのコンテンツ・ストア313を使用して残りの符号化キー(最後の直前の復号器312から受け取られた)のそれぞれについてルックアップを実行し、一致するパケットがそれに関して最後の復号器312のコンテンツ・ストア313内で識別される符号化キーごとに、受け取られたパケット内の符号化キーを、2番目の復号器312のコンテンツ・ストア313から識別された格納されたパケットの対応する部分に置換する。したがって、パケット・クラスの復号器リスト内の最後の復号器312による受け取られたパケットの処理の後に、完全なパケット(すなわち、パケットのREベースの符号化中にRE符号化ミドルボックス112
Eによって符号化される前のオリジナル・パケット)が復元される。パケット・クラスの復号器リスト内の最後の復号器312は、パケットをそのコンテンツ・ストア313に格納する。パケット・クラスの復号器リスト内の最後の復号器312は、回復されたパケットをマージャ315に供給する。
【0049】
マージャ315は、復号されたパケットを復号器312から受け取り、復号されたパケットを伝搬する。
【0050】
この形で、RE復号機能を、さまざまな復号器312にまたがって分散させる(したがって、負荷平衡化する)ことができ、同様に、RE復号機能に関連する格納および処理を、さまざまな復号器312にまたがって分散させる(したがって、負荷平衡化する)ことができる。たとえば、パケットは、分類され、異なるパケット・クラスについて復号器312の異なるリスト内の最初の復号器として動作する復号器312の異なるものに供給されるので、受け取られたパケットの符号化キーの処理は、それぞれ復号器312にまたがって分散される。たとえば、パケットは、分類され、異なるパケット・クラスについて復号器312の異なるチェーンに供給されるので、パケットの格納は、それぞれ復号器312のコンテンツ・ストア313にまたがって分散される。たとえば、パケットの格納が、復号器312にまたがって分散されるので、パケットの符号化キーを格納されたパケットのコンテンツに置換するためのパケットの処理も、復号器312にまたがって分散される。この形でのRE復号ミドルボックス300
Dを構成することのさまざまな利益は、
図4を参照することによってよりよく理解することができる。
【0051】
図4に、3つの符号器を有する例示的なRE符号化ミドルボックスおよび3つの復号器を有する例示的なRE復号ミドルボックスの異なる処理ステージにまたがるRE機能の例示的な分散を示す。
【0052】
本明細書で説明されるように、RE符号化ミドルボックス200
Eは、RE処理を複数の符号器212にまたがって分割し、効果的に大きいメモリを使用する。最大一致REでは、パケットごとに実行すべきRE符号化機能は、(1)指紋の計算、(2)指紋ルックアップの実行、(3)一致する領域の展開、および(4)コンテンツ・ストアへのパケットの格納を含む。
【0053】
第1および第4のRE符号化機能に関して、一実施形態で、第1および第4の機能が、所与のパケット・クラスのノードのリストの最初のノードだけに割り当てられることに留意されたい。各パケット・クラスが、符号器212のランダムな置換を含み、クラシファイヤ210がパケットをすべてのパケット・クラスの間で均等に分割するという仮定が行われる場合に、高い確率で、各符号器212は、第1および第4のRE符号化機能のほぼ等しい責任を有する。したがって、第1および第4のRE符号化機能は、複数の符号器212にまたがって均等に分割されるはずである。
【0054】
第3のRE符号化機能に関して、第3のRE符号化機能も、符号器212にまたがって自動的に分割されることに留意されたい(たとえば、単純なラウンドロビン・ポリシでは、パケットは、符号器212のすべての間でほぼ均等に格納され、したがって、一致する領域も符号器212のすべての間でほぼ均等に分割される高い尤度がある)。一実施形態では、クラシファイヤ210を、符号器212のそれぞれの間での均等な分割を強制するように構成された1つまたは複数のポリシを使用するように構成することができる。
【0055】
しかし、第2のRE符号化機能に関して、指紋ルックアップ機能を、符号器212の間で分割することができないことに留意されたい。しかし、他の3つのRE符号化機能が符号器212の間で分割され、インメモリ指紋ルックアップが、他のRE符号化機能と比較して相対的に安価であることを考慮すると、指紋ルックアップが符号器212の間で均等には分割されない場合に、重大な悪影響はない。
【0056】
その結果、各符号器212は、すべてのステージでいくつかのRE符号化機能を実行しつつある。これが、
図4に示されており、例示的な分散410は、3つの符号器(符号器1、符号器2、および符号器3と表される)を有するRE符号化ミドルボックス212
Eの例示的実施態様の異なる処理ステージにまたがるRE符号化機能の分散を示す。RE符号化ミドルボックス212
Eの例示的実施態様は、赤、青、および緑と表された3つのパケット・クラスをサポートし、赤パケット・クラスは、第1の符号器リスト(符号器1、符号器2、符号器3)を有し、青パケット・クラスは、第2の符号器リスト(符号器2、符号器3、符号器1)を有し、緑パケット・クラスは、第3の符号器リスト(符号器3、符号器1、符号器2)を有する。例示的な分散410のステージ1では、符号器1は、指紋を計算し、パケットを格納し、赤パケットの指紋ルックアップを実行し、符号器2は、指紋を計算し、パケットを格納し、青パケットの指紋ルックアップを実行し、符号器3は、指紋を計算し、パケットを格納し、緑パケットの指紋ルックアップを実行する。例示的な分散410のステージ2では、符号器1は、緑パケットの残りの指紋の指紋ルックアップを実行し、符号器2は、赤パケットの残りの指紋の指紋ルックアップを実行し、符号器3は、青パケットの残りの指紋の指紋ルックアップを実行する。例示的な分散410のステージ3では、符号器1は、青パケットの残りの指紋の指紋ルックアップを実行し、符号器2は、緑パケットの残りの指紋の指紋ルックアップを実行し、符号器3は、赤パケットの残りの指紋の指紋ルックアップを実行する。例示的な分散410について、各符号器が、パケットごとに一致を見つけるためにその指紋テーブルへのルックアップを実行するので、REのために使用される有効なメモリが、すべての符号器212で使用可能なメモリの合計であることがわかる。
【0057】
本明細書で説明するように、RE復号ミドルボックス300
Dは、複数の復号器312にまたがってRE処理を分割し、効果的に大きいメモリを使用する。最大一致REでは、パケットごとに実行すべきRE復号機能は、(1)符号化キーの復号、(2)符号化キーによって識別されたパケットのルックアップの実行、(3)符号化キーによって識別されたパケットの対応する部分による符号化キーの置換、および(4)コンテンツ・ストアへのパケットの格納を含む。RE復号が、RE符号化に似た形でスケール・アップされる(したがって、そのようなスケーリングの詳細な説明は、簡潔さのために省略される)ことを理解されたい。
【0058】
その結果、各復号器312は、すべてのステージでいくつかのRE復号機能を実行しつつある。これが、
図4に示されており、例示的な分散420は、3つの復号器(復号器1、復号器2、および復号器3と表される)を有するRE復号ミドルボックス212
Dの例示的実施態様の異なる処理ステージにまたがるRE復号機能の分散を示す。RE復号ミドルボックス212
Dの例示的実施態様は、赤、青、および緑と表された3つのパケット・クラスをサポートし、赤パケット・クラスは、第1の復号器リスト(復号器3、復号器2、復号器1)を有し、青パケット・クラスは、第2の復号器リスト(復号器1、復号器3、復号器2)を有し、緑パケット・クラスは、第3の復号器リスト(復号器2、復号器1、復号器3)を有する。例示的な分散420のステージ1では、復号器3は、符号化キーを復号し、赤パケットのパケット・ルックアップを実行し、復号器1は、符号化キーを復号し、青パケットのパケット・ルックアップを実行し、復号器2は、符号化キーを復号し、緑パケットのパケット・ルックアップを実行する。例示的な分散420のステージ2では、復号器2は、符号化キーを復号し、赤パケットのパケット・ルックアップを実行し、復号器3は、符号化キーを復号し、青パケットのパケット・ルックアップを実行し、復号器1は、符号化キーを復号し、緑パケットのパケット・ルックアップを実行する。例示的な分散420のステージ3では、復号器1は、符号化キーを復号し、赤パケットのパケット・ルックアップを実行し、その後、赤パケットを格納し、復号器2は、符号化キーを復号し、青パケットのパケット・ルックアップを実行し、その後、青パケットを格納し、復号器3は、符号化キーを復号し、緑パケットのパケット・ルックアップを実行し、その後、緑パケットを格納する。
【0059】
1つまたは複数の追加の特徴を提供して、RE符号化機能またはRE復号機能の提供に関する処理およびメモリのスケーリングをさらに制御することができることに留意されたい。
【0060】
一実施形態では、それぞれRE符号化ミドルボックス112
EおよびRE復号ミドルボックス112
Dの使用に起因する第1のクラウド110
1および第2のクラウド110
2内での帯域幅使用量の潜在的な増加(たとえば、各パケットが、RE符号化ミドルボックス200
Eの各符号器212およびRE復号ミドルボックス300
Dの各復号器312をトラバースするように向けられる場合)は、使用される帯域幅の量またはスケーリングされたメモリのサイズを変更するために適合される1つまたは複数の同調可能パラメータを使用して制御され得る。たとえば、4つのREミドルボックスを使用して、メモリに関する2のスケーリング係数を提供することができると同時に、ネットワーク・トラフィックは、REミドルボックスのうちの2つを通って流れることだけを許される。他のレベルのスケーリングをサポートすることができることを理解されたい。
【0061】
一実施形態では、データ・プロセッサ(たとえば、RE符号化ミドルボックス200
Eの場合に符号器212、RE復号ミドルボックス300
Dの場合に復号器312)を動的に追加し、除去する能力を提供することができる。この実施形態では、新しいデータ・プロセッサが追加される時に、新しいデータ・プロセッサは、トラフィックの受信を開始し、したがって、RE機能を実行する際の使用のためにパケットをそのコンテンツ・ストアに追加し始める。この実施形態では、既存のデータ・プロセッサが除去される時に、データ・プロセッサのコンテンツ・ストアを、捨てることができ、あるいは、残りのデータ・プロセッサの一部またはすべてにまたがって分散させることができる。
【0062】
一実施形態では、ブルーム・フィルタを使用して、ディスク・ルックアップを減らすことができる。比較的大きいコンテンツ・ストアについて、関連する指紋テーブルが、メモリに収まらない可能性があることに留意されたい。その場合に、指紋テーブルの少なくとも一部は、ディスク上で維持されなければならないはずである。これは、ディスク・ルックアップ動作がメモリ・ルックアップ動作と比較して高価なので、望ましくない。したがって、一実施形態では、ブルーム・フィルタを活用して、ディスク・ルックアップを減らすことができる。ハッシュ・テーブルとは異なって、ブルーム・フィルタは、空間効率のよいデータ構造であり、メモリに収まる可能性がある。指紋が存在する場合は、ブルーム・フィルタ・ルックアップが成功するが、指紋が存在しない場合に、ブルーム・フィルタ・ルックアップがそれでも成功する可能性がある(たとえば、偽陽性の場合)。したがって、ブルーム・フィルタは、偽陽性の確率が低いことを保証するために、正しく構成されなければならない。この形で、指紋が指紋テーブルに存在する時にルックアップがディスクに向かうことを高い確率で保証することが可能になる。指紋が存在する時には、対応する一致する領域が判定される。前に論じたように、一致展開機能は、符号器212にまたがってほぼ均等に分割される。したがって、そのようなブルーム・フィルタを使用することによって、ディスクI/O動作のバランスを、符号器212の間でとることができる。
【0063】
一実施形態では、RE符号化ミドルボックス112
EおよびRE復号ミドルボックス112
Dは、チャンク一致RE能力をサポートするように構成される。これを、
図5および6に関して図示し、説明する。
【0064】
図5に、チャンク一致REのRE符号化ミドルボックスの例示的実施形態を示す。より具体的には、
図5は、チャンク一致REに関するRE符号化ミドルボックス112
Eの例示的実施形態(RE符号化ミドルボックス500
Eと表される)を示す。
【0065】
チャンク一致RE手法が、パケットのチャンク(パケットではなく)が格納され、RE符号化に使用されることを除いて、
図2および
図3に関して図示し、説明した最大一致RE手法に類似することに留意されたい。したがって、チャンク一致REに関するRE符号化ミドルボックス500
Eは、最大一致REに関するRE符号化ミドルボックス200
Eに類似する。
【0066】
RE符号化ミドルボックス500
Eは、クラシファイヤ510、分類−符号器マッピング・テーブル511、複数の符号器512
1〜512
N(集合的に符号器512)、およびマージャ515を含む。符号器512
1〜512
Nは、それぞれ、複数のコンテンツ・ストア513
1〜513
N(集合的にコンテンツ・ストア513)、複数の指紋テーブル514
1〜514
N(集合的に指紋テーブル514)、および複数のハッシュ領域マッピング・テーブル516
1〜516
N(集合的にハッシュ領域マッピング・テーブル516)を含む。
【0067】
クラシファイヤ510は、符号器512のそれぞれと通信するように構成される。マージャ515も、符号器512のそれぞれと通信するように構成される。符号器512は、お互いと通信するように構成され、主にお互いと直列に通信するものとして図示されるが(例示として、符号器512
1は、符号器512
2と通信し、以下同様であり、また、反対の順序で通信する)、少なくともいくつかの実施形態では、任意の符号器512が、任意の他の符号器512と直接(すなわち、他の符号器512をトラバースせずに)、または、符号器512の図示の順序をトラバースせずに間接的に、通信することができることに留意されたい。
【0068】
一般に、
図5のクラシファイヤ510、分類−符号器マッピング・テーブル511、符号器512、およびマージャ515の構成/動作は、それぞれ
図2のクラシファイヤ210、分類−符号器マッピング・テーブル211、符号器212、およびマージャ215の構成/動作に類似する。しかし、符号器512は、クラシファイヤ510によって分類されたパケットを格納するように構成されるのではなく、クラシファイヤ510によって分類されたパケットをチャンクに分割し、チャンクを(それからチャンクが生成されたパケットではなく)符号器512のコンテンツ・ストア513に格納するように構成される。一実施形態では、所与のパケット・クラスのパケットについて、所与のパケット・クラスの符号器リスト内の最初の符号器512が、パケットをチャンクに分割する責任を負う。パケットのチャンクを、符号器512によって任意の適切な形で処理することができる。
【0069】
一実施形態(
図5に示された)では、チャンクの格納および処理の責任が、ハッシュ領域に基づいて符号器512にまたがって分割される。
【0070】
一実施形態では、各符号器512
1〜512
Nは、それぞれハッシュ領域を割り当てられる。一実施形態では、最初の符号器512
1は、ハッシュ領域[0.0−a]を割り当てられ、2番目の符号器512
2は、ハッシュ領域[a−b]を割り当てられ、以下同様に、最後の1つ前の符号器512
N−1は、ハッシュ領域[(n−2)−(n−1)]を割り当てられ、最後の符号器512
Nは、ハッシュ領域[(n−1)−1.0]を割り当てられる。3つのハッシュ領域が、単に例示であり、任意の適切なサイズの任意の適切な個数のハッシュ領域を符号器512に割り当てることができることに留意されたい。主に、符号器512が単一のハッシュ領域だけを割り当てられる実施形態に関して図示され、説明されるが、1つまたは複数の符号器512が、複数のハッシュ領域を割り当てられ得ることに留意されたい。
【0071】
一実施形態では、符号器512は、(1)チャンクについて計算されたハッシュが符号器512に割り当てられたハッシュ領域内に含まれる場合に、符号器512がチャンクを格納し、(2)チャンクが符号器512に割り当てられたハッシュ領域内に含まれる関連するハッシュを有する場合に、符号器512がチャンクのルックアップを実行するように構成される。
【0072】
一実施形態では、ハッシュ領域の責任を負う符号器512へのハッシュ領域のマッピングは、ハッシュ領域マッピング・テーブル516
1〜516
N内で維持される(すなわち、各符号器512が、どのハッシュ領域がどの符号器512にマッピングされるのかを示す情報を有する)。主に、ハッシュ領域の責任を負う符号器512へのハッシュ領域のマッピングが、それぞれ符号器512
1〜512
N上で実施されるN個のハッシュ領域マッピング・テーブル516
1〜516
Nを使用して維持される実施形態に関して図示され、説明されるが、ハッシュ領域の責任を負う符号器512へのハッシュ領域のマッピングを、符号器512のそれぞれからアクセス可能な単一のハッシュ領域マッピング・テーブルを使用して、または符号器512のそれぞれのサブセットからアクセス可能な複数のハッシュ領域マッピング・テーブルを使用して、維持することができることに留意されたい。
【0073】
RE符号化ミドルボックス500
Eの動作は、RE符号化ミドルボックス500
Eで受信される時にパケットがRE符号化のために処理される形を考慮することによって、最もよく理解することができる。クラシファイヤ510は、パケットを関連するパケット・クラスに分類する。クラシファイヤ510は、分類−符号器マッピング・テーブル511からクラシファイヤ510によって判定されたパケット・クラスについて指定された符号器リスト内の最初の符号器512にパケットを供給する。最初の符号器512は、パケットをチャンクに分割する。最初の符号器512は、チャンクのそれぞれについてそれぞれのハッシュを計算する。最初の符号器512は、最初の符号器512に割り当てられたハッシュ領域内に含まれるハッシュを有するすべてのチャンクについて指紋ルックアップを実行する。最初の符号器512は、最初の符号器512に割り当てられたハッシュ領域内に含まれるハッシュを有するチャンクごとにパケットの符号化を実行する(すなわち、最初の符号器512がそれに関して責任を負うチャンクごとに見つかった指紋一致ごとに、パケットの一致するチャンクが、関連する符号化キーに置換される)。その後、最初の符号器512は、パケットが供給される次の符号器512を選択する。最初の符号器512は、(1)パケットの残りのチャンクのハッシュ(すなわち、最初の符号器512によって識別されたが、最初の符号器512がそれに関して責任を負うハッシュ領域の外に含まれる1つまたは複数のハッシュ)、(2)ハッシュ領域の責任を負う符号器512へのハッシュ領域のマッピング(最初の符号器512のハッシュ領域マッピング・テーブル516内で指定される)、および(3)パケット・クラスの符号器リスト(パケット自体の中で指定されるか、分類−符号器マッピング・テーブル511から入手可能)に基づいて、パケットが提供される次の符号器512を選択する。たとえば、最初の符号器512は、(1)パケットの残りのハッシュのうちの1つまたは複数の責任を負う1つまたは複数の他の符号器512を識別するために、パケットの残りのハッシュを使用してそのハッシュ領域マッピング・テーブル516を検索し(パケットの残りのハッシュは、最初の符号器512によって計算されたが最初の符号器512がそれに関して責任を負うハッシュ領域の外に含まれるハッシュである)、(2)パケット・クラスの符号器リストに基づいて1つまたは複数の他の符号器512から次の符号器512を選択することができる。たとえば、最初の符号器512は、パケット・クラスの符号器リスト上で次の、識別された他の符号器512を選択することができる。次に、次の符号器512は、(1)次の符号器512に割り当てられたハッシュ領域内に含まれるハッシュを有するチャンクごとにパケットの符号化を実行し、(2)パケットが伝搬される次の要素(別の符号器512またはマージャ515)を判定する。パケットの符号化は、パケットが完全に符号化され、マージャ515に供給されるまで、この形で継続される。ハッシュ領域マッピング・テーブル516の使用が、パケットに符号器512のすべてを通過させる必要をなくすことができ(たとえば、符号器512の一部が、パケットのチャンクのいずれにも適用可能ではない関連するハッシュ領域を有する場合)、これによって、パケットを符号化するための帯域幅使用量の削減をもたらすことに留意されたい。前述の説明は、複数の符号器512がパケットを符号化するのに使用されると仮定する(パケットを符号化するための複数の符号器512の使用を例示するために)が、あるパケットが、最初の符号器512によって完全に符号化され、最初の符号器512からマージャ515に直接渡されることが可能であることに留意されたい。
【0074】
たとえば、3つの符号器512
1〜512
3を有するRE符号化ミドルボックス500
Eの場合を検討されたい。この例では、ハッシュ領域を、符号器512
1(ハッシュ領域0.0〜0.3)、符号器512
2(ハッシュ領域0.3〜0.6)、および符号器512
3(ハッシュ領域0.6〜1.0)のように符号器512に割り当てることができる。この例では、符号器512
1は、0.0〜0.3ハッシュ領域内のハッシュを有するチャンクだけについてハッシュ・ルックアップを実行し、ハッシュを格納し、符号器512
2は、0.3〜0.6ハッシュ領域内のハッシュを有するチャンクだけについてハッシュ・ルックアップを実行し、ハッシュを格納し、符号器512
3は、0.6〜1.0ハッシュ領域内のハッシュを有するチャンクだけについてハッシュ・ルックアップを実行し、ハッシュを格納する。したがって、RE動作のバランスを、3つの符号器512にまたがってとることができる。
【0075】
この形で、チャンク・ルックアップおよびチャンク格納を、ハッシュ領域を適当に分割することによって、任意の適切な形で(たとえば、均等に、ほぼ均等に、または任意の他の適切な形で)符号器512にまたがって分散させることができる。
【0076】
一実施形態では、ハッシュ領域を、動的に監視し、再構成することができる。これを、チャンク・ルックアップおよびチャンク格納が符号器512にまたがって分散されたままになることを保証する形で実行することができる。一実施形態では、チャンク・ハッシュが異なるハッシュ領域内に含まれる形に関する統計(たとえば、ハッシュ領域上の負荷)が維持され、そのような統計に基づいて、ハッシュ領域を動的に再構成することができる。動的再構成は、符号器512に割り当てられたハッシュ領域のサイズを変更すること、ハッシュ領域を組み合わせること、ハッシュ領域を分割すること、1つまたは複数の符号器512を除去し、ハッシュ領域を再割り当てすること、1つまたは複数の符号器512を追加し、ハッシュ領域を再割り当てすることなど、ならびにそのさまざまな組合せを含むことができる。
【0077】
一実施形態では、RE符号化ミドルボックス500
Eへ/からの符号器512の動的な追加または除去をサポートすることができる。新しい符号器512がRE符号化ミドルボックス500
Eに追加される時および既存の符号器がRE符号化ミドルボックス500
Eから除去される時に、RE符号化ミドルボックス500
Eの既存の符号器512のうちの1つまたは複数のハッシュ領域を変更することができる。たとえば、RE符号化ミドルボックス500
Eが、それぞれ[0.0−0.25]、[0.25−0.50]、[0.50−0.75]、および[0.75−1.0]のハッシュ領域を有する4つの符号器512を含み、新しい符号器512が追加される場合に、新しい符号器512に、[0.2−0.25]、[0.45−0.50]、[0.70−0.75]、および[0.95−1.0]のハッシュ領域のそれぞれの責任を割り当てることができる(すなわち、既存の符号器のそれぞれの既存のハッシュ領域の小さい部分の責任だけを引き受ける)。たとえば、RE符号化ミドルボックス500
Eが、それぞれ[0.0−0.25]、[0.25−0.50]、[0.50−0.75]、および[0.75−1.0]のハッシュ領域を有する4つの符号器512を含み、[0.75−1.0]のハッシュ領域の責任を負う4番目の符号器512が、RE符号化ミドルボックス500
Eから除去される場合に、最初の符号器512に、ハッシュ領域[0.75−0.83]の責任を割り当てることができ、2番目の符号器512に、ハッシュ領域[0.84−0.92]の責任を割り当てることができ、3番目の符号器512に、ハッシュ領域[0.93−1.0]の責任を割り当てることができる。前述の例が、単に例示であり、より洗練されたポリシを、符号器512へのハッシュ領域の分散を制御するために適用することができることに留意されたい。
【0078】
一実施形態(明瞭さのために省略されている)では、チャンクの格納および処理の責任が、ハッシュ領域を使用せずに符号器512にまたがって分割される。一実施形態では、所与のパケットの各チャンクは、パケットをチャンクに分割する符号器512(すなわち、パケットのパケット・クラスに関連する符号器リスト内の最初の符号器512)のコンテンツ・ストア513に格納される。一実施形態では、ハッシュ領域が使用されないので、各パケットは、チャンクのそれぞれのハッシュをパケットのRE符号化のために符号器512によってチェックできるように、パケットのパケット・クラスの符号器リスト内の符号器512のそれぞれをトラバースすることを要求される。
【0079】
図6に、チャンク一致REのRE復号ミドルボックスの例示的実施形態を示す。より具体的には、
図6は、チャンク一致REのRE復号ミドルボックス112
Dの例示的実施形態(RE復号ミドルボックス600
Dと表される)を示す。
【0080】
チャンク一致RE手法が、パケットのチャンク(パケットではなく)が格納され、RE符号化に使用されることを除いて、
図2および
図3に関して図示し、説明した最大一致RE手法に類似することに留意されたい。したがって、チャンク一致REのRE復号ミドルボックス600
Eは、最大一致REのRE復号ミドルボックス300
Dに類似する。
【0081】
さらに、
図6のRE復号ミドルボックス600
Dが、
図5のRE符号化ミドルボックス500
Eに類似する形で動作するように構成され、RE復号ミドルボックス600
Dは、RE符号化ミドルボックス500
Eによって実行されるRE符号化機能に相補的なRE復号機能を実行することに留意されたい。
【0082】
RE復号ミドルボックス600
Dは、クラシファイヤ610、分類−復号器マッピング・テーブル611、複数の復号器612
1〜612
N(集合的に復号器612)、およびマージャ615を含む。復号器612
1〜612
Nは、それぞれ、複数のコンテンツ・ストア613
1〜613
N(集合的にコンテンツ・ストア613)および複数のハッシュ領域マッピング・テーブル616
1〜616
N(集合的にハッシュ領域マッピング・テーブル616)を含む。
【0083】
クラシファイヤ610は、復号器612のそれぞれと通信するように構成される。マージャ615も、復号器612のそれぞれと通信するように構成される。復号器612は、お互いと通信するように構成され、主にお互いと直列に通信するものとして図示されるが(例示として、復号器612
1は復号器612
2と通信し、以下同様であり、また、反対の順序で通信する)、少なくともいくつかの実施形態では、任意の復号器612が、任意の復号器612と直接(すなわち、他の復号器612をトラバースせずに)、または、復号器612の図示の順序をトラバースせずに間接的に、通信することができることに留意されたい。
【0084】
一般に、
図6のクラシファイヤ610、分類−復号器マッピング・テーブル611、復号器612、およびマージャ615の構成/動作は、それぞれ
図3のクラシファイヤ310、分類−復号器マッピング・テーブル311、復号器312、およびマージャ315の構成/動作に類似する。しかし、復号器612は、クラシファイヤ610によって分類されたパケットを格納するように構成されるのではなく、クラシファイヤ610によって分類されたパケットをチャンクに分割し、チャンクを(それからチャンクが生成されたパケットではなく)復号器612のコンテンツ・ストア613に格納するように構成される。一実施形態では、所与のパケット・クラスのパケットについて、所与のパケット・クラスの復号器リスト内の最初の復号器612が、パケットをチャンクに分割する責任を負う。パケットのチャンクを、復号器612によって任意の適切な形で処理することができる。
【0085】
一実施形態(
図6に示された)では、チャンクの格納および処理の責任が、ハッシュ領域に基づいて復号器612にまたがって分割される。
【0086】
一実施形態では、各復号器612
1〜612
Nは、それぞれハッシュ領域を割り当てられる。一実施形態では、最初の復号器612
1は、ハッシュ領域[0.0−a]を割り当てられ、2番目の復号器612
2は、ハッシュ領域[a−b]を割り当てられ、以下同様に、最後の1つ前の復号器612
N−1は、ハッシュ領域[(n−2)−(n−1)]を割り当てられ、最後の復号器612
Nは、ハッシュ領域[(n−1)−1.0]を割り当てられる。これらのハッシュ領域が、単に例示であり、任意の適切なサイズの任意の適切な個数のハッシュ領域を復号器612に割り当てることができることに留意されたい。主に、各復号器612が単一のハッシュ領域だけを割り当てられる実施形態に関して図示され、説明されるが、1つまたは複数の復号器612が、複数のハッシュ領域を割り当てられ得ることに留意されたい。
【0087】
一実施形態では、復号器612は、(1)チャンクについて計算されたハッシュが復号器612に割り当てられたハッシュ領域内に含まれる場合に、復号器612がチャンクを格納し、(2)チャンクが復号器612に割り当てられたハッシュ領域内に含まれる関連するハッシュを有する場合に、復号器612がチャンクのルックアップだけを実行するように構成される。
【0088】
一実施形態では、ハッシュ領域の責任を負う復号器612へのハッシュ領域のマッピングは、ハッシュ領域マッピング・テーブル616
1〜616
N内で維持される(すなわち、各復号器612が、どのハッシュ領域がどの復号器612にマッピングされるのかを示す情報を有する)。主に、ハッシュ領域の責任を負う復号器612へのハッシュ領域のマッピングが、それぞれ復号器612
1〜612
N上で実施されるN個のハッシュ領域マッピング・テーブル616
1〜616
Nを使用して維持される実施形態に関して図示され、説明されるが、ハッシュ領域の責任を負う復号器612へのハッシュ領域のマッピングを、復号器612のそれぞれからアクセス可能な単一のハッシュ領域マッピング・テーブルを使用して、または復号器612のそれぞれのサブセットからアクセス可能な複数のハッシュ領域マッピング・テーブルを使用して、維持することができることに留意されたい。
【0089】
RE復号ミドルボックス600
Dの動作は、パケットがRE復号ミドルボックス600
Dで受信される時にRE復号のために処理される形を考慮することによって、最もよく理解することができる。クラシファイヤ610は、パケットを関連するパケット・クラスに分類する。クラシファイヤ610は、分類−復号器マッピング・テーブル611からクラシファイヤ610によって判定されたパケット・クラスについて指定された符号器リスト内の最初の復号器612にパケットを供給する。最初の復号器612は、パケット内に含まれる符号化キーを復号する。符号化キーは、復号器612のうちの1つまたは複数のコンテンツ・ストア613に格納されたパケットのチャンクに関連する。符号化キーは、RE符号化ミドルボックス112
Eによって計算されたチャンクのハッシュとすることができる。最初の復号器612は、最初の復号器612に割り当てられたハッシュ領域内に含まれるそれぞれのハッシュを有するチャンクのそれぞれについて、そのコンテンツ・ストア613へのルックアップを実行する。最初の復号器612は、(1)最初の復号器612に割り当てられたハッシュ領域内に含まれるそれぞれのハッシュを有するチャンクのそれぞれの符号化キーを(2)最初の復号器612に割り当てられたハッシュ領域内に含まれるそれぞれのハッシュを有するチャンクのそれぞれの符号化キーに対応するチャンクに置換することによって、パケットの復号を実行する。その後、最初の復号器612は、パケットが供給される次の復号器612を選択する。最初の復号器612は、(1)パケットの残りの符号化キーのハッシュ(すなわち、最初の復号器612によって識別されたが、最初の復号器612がそれに関して責任を負うハッシュ領域の外に含まれる1つまたは複数のハッシュ)、(2)ハッシュ領域の責任を負う復号器612へのハッシュ領域のマッピング(最初の復号器612のハッシュ領域マッピング・テーブル616内で指定される)、および(3)パケット・クラスの復号器リスト(パケット自体の中で指定されまたは分類−復号器マッピング・テーブル611から入手可能)に基づいて、パケットが供給される次の復号器612を選択する。たとえば、最初の復号器612は、(1)パケットの残りのハッシュのうちの1つまたは複数の責任を負う1つまたは複数の他の復号器612を識別するために、パケットの残りのハッシュを使用して、そのハッシュ領域マッピング・テーブル616を検索し(パケットの残りのハッシュは、最初の復号器612によって計算されたが最初の復号器612がそれに関して責任を負うハッシュ領域の外に含まれるハッシュである)、(2)パケット・クラスの復号器リストに基づいて1つまたは複数の他の復号器612から次の復号器612を選択することができる。たとえば、最初の復号器612は、パケット・クラスの復号器リスト上で次の、識別された他の復号器612を選択することができる。次に、次の復号器612は、(1)次の復号器612に割り当てられたハッシュ領域内に含まれるハッシュを有するチャンクごとにパケットの復号を実行し、(2)パケットが伝搬される次の要素(別の復号器612またはマージャ615)を判定する。パケットの復号は、パケットが完全に復号されるまで、この形で継続される。ハッシュ領域マッピング・テーブル616の使用が、パケットが復号器612のすべてを通過する必要を無くし(たとえば、復号器612の一部が、パケットのチャンクのいずれにも適用可能ではない関連するハッシュ領域を有する場合)、これによって、パケットを復号するための帯域幅使用量の削減をもたらすことに留意されたい。前述の説明は、複数の復号器612がパケットを復号するのに使用されると仮定する(パケットを復号するための複数の復号器612の使用を例示するために)が、あるパケットが、最初の復号器612によって完全に復号され、最初の復号器612からマージャ615に直接渡されることが可能であることに留意されたい。
【0090】
たとえば、3つの復号器612
1〜612
3を有するRE復号ミドルボックス600
Dの場合を検討されたい。この例では、ハッシュ領域を、復号器612
1(ハッシュ領域[0.0〜0.3])、復号器612
2(ハッシュ領域[0.3〜0.6])、および復号器612
3(ハッシュ領域[0.6〜1.0])のように復号器612に割り当てることができる。この例では、復号器612
1は、[0.0〜0.3]ハッシュ領域内のハッシュを有するチャンクだけについてハッシュ・ルックアップを実行し、ハッシュを格納し、復号器612
2は、[0.3〜0.6]ハッシュ領域内のハッシュを有するチャンクだけについてハッシュ・ルックアップを実行し、ハッシュを格納し、復号器612
3は、[0.6〜1.0]ハッシュ領域内のハッシュを有するチャンクだけについてハッシュ・ルックアップを実行し、ハッシュを格納する。したがって、RE動作のバランスを、3つの復号器612にまたがってとることができる。
【0091】
この形で、チャンク・ルックアップおよびチャンク格納を、ハッシュ領域を適当に分割することによって、任意の適切な形で(たとえば、均等に、ほぼ均等に、または任意の他の適切な形で)復号器612にまたがって分散させることができる。
【0092】
図5のRE符号化ミドルボックス500
Eに関して説明したように、
図6のRE復号ミドルボックス600
Dは、追加の管理機能(たとえば、ハッシュ領域の動的な監視および再構成、RE復号ミドルボックス600へ/からの復号器612の動的な追加もしくは除去など、ならびにそのさまざまな組合せ)をサポートすることができる。
【0093】
一実施形態(明瞭さのために省略されている)では、チャンクの格納および処理の責任が、ハッシュ領域を使用せずに復号器612にまたがって分割される。一実施形態では、ハッシュ領域が使用されないので、各パケットは、パケットのチャンクのそれぞれのハッシュをパケットのRE復号のために復号器612によってチェックできるように、パケットのパケット・クラスの復号器リスト内の復号器612のそれぞれをトラバースすることを要求される。
【0094】
一実施形態では、RE符号化ミドルボックス112
EおよびRE復号ミドルボックス112
Dは、それぞれRE符号化機能およびRE復号機能を実行するために分散ハッシュ・テーブル(DHT:Distributed Hash Table)を活用するように構成される。一般に、DHTは、ハッシュ・テーブルに似たルックアップ機能および格納機能を提供する分散データ構造であり、任意の参加するノードは、キーに関連する値を効率的に取り出すことができる。さらに、DHTは、一般に、多数のノードに良好にスケーリングし、ノードの追加/除去を比較的簡単に処理することができる。
【0095】
DHTベースの最大一致RE手法は、符号器212の指紋テーブル213が符号器212にまたがるDHTとして維持され、同様に、復号器312の指紋テーブル313が復号器312にまたがるDHTとして維持されることを除いて、
図2および
図3に関して図示され、説明された最大一致RE手法に類似する。最大一致REに関してDHTを活用するためのRE符号化ミドルボックス112
EおよびRE復号ミドルボックス112
Dの構成を、それぞれ
図7および8に関して図示し、説明する。
【0096】
図7に、DHTベースの最大一致REのRE符号化ミドルボックスの例示的実施形態を示す。
【0097】
DHTベースの最大一致REのRE符号化ミドルボックス700
Eは、最大一致REのRE符号化ミドルボックス200
Eに類似する。
【0098】
RE符号化ミドルボックス700
Eは、クラシファイヤ710、複数の符号器712
1〜712
N(集合的に符号器712)、およびDHT 714を含む。符号器712
1〜712
Nは、それぞれ、複数のコンテンツ・ストア713
1〜713
N(集合的にコンテンツ・ストア713)を含む。RE符号化ミドルボックス700
Eは、マージャ(明瞭さのために
図7から省略されている)をも含む。
【0099】
クラシファイヤ710は、符号器712のそれぞれと通信するように構成される。符号器712は、お互いと通信するように構成され、主にお互いと直列に通信するものとして図示されるが(例示として、符号器712
1は、符号器712
2と通信し、以下同様であり、また、反対の順序で通信する)、少なくともいくつかの実施形態では、任意の符号器712が、任意の他の符号器712と直接(すなわち、他の符号器712をトラバースせずに)、または、符号器712の図示の順序をトラバースせずに間接的に、通信することができることに留意されたい。
【0100】
クラシファイヤ710は、パケットを受け取り、受け取られたパケットの分類を判定する。クラシファイヤ710は、パケット・クラスに基づいて、パケットを格納し、指紋を計算する責任を符号器712に割り当てる(たとえば、符号器712
1は、第1クラスのパケットを格納し、指紋を計算する責任を負い、符号器712
2は、第2クラスのパケットを格納し、指紋を計算する責任を負い、以下同様であり、符号器712
Nは、第Nクラスのパケットを格納し、指紋を計算する責任を負う)。RE符号化ミドルボックス700
Eは、任意の適切な判断基準に基づくものとすることができる任意の適切な個数およびタイプのパケット・クラスをサポートすることができる。たとえば、クラシファイヤ710による受け取られたパケットの分類を、ラウンドロビンの形で、パケットのパケット・サイズに基づく負荷平衡化を使用してなどで実行することができる。一実施形態では、RE符号化ミドルボックス700
Eによってサポートされるパケット・クラスのセットは、RE復号ミドルボックス112
Dによってサポートされるパケット・クラスのセットと同一である。クラシファイヤ710は、パケット・クラスに基づく符号器712への責任の割当に従って、分類されたパケットを符号器712に供給する。
【0101】
DHT 714は、パケット・ポインタへの指紋のマッピングを指定する。DHT 714内では、所与の指紋のパケット・ポインタは、パケットを取り出すために符号器712によって使用され得る情報を含む。パケット・ポインタは、パケット格納位置情報(すなわち、パケットが格納されている符号器712を識別する)およびパケット識別子情報(すなわち、パケットが格納されている符号器712内のパケットのパケット識別子)を含む。これが、
図7に示されており、
図7では、第1の指紋(FP1)は、符号器1:ID1と表される第1パケット・ポインタを関連付けられ(すなわち、FP1に関連するパケットは、符号器712
1に格納されたパケット識別子ID1を有するパケットである)、第2の指紋(FP2)は、符号器1:ID2と表される第2パケット・ポインタを関連付けられ(すなわち、FP2に関連するパケットは、符号器712
1に格納されたパケット識別子ID2を有するパケットである)、第3の指紋(FP3)は、符号器2:ID1と表される第3パケット・ポインタを関連付けられ(すなわち、FP3に関連するパケットは、符号器712
1に格納されたパケット識別子ID1を有するパケットである)、などである。
【0102】
クラシファイヤ710は、パケットを受け取り、クラシファイヤ710によって判定されたパケットのパケット・クラスに基づいて符号器712のうちの1つ(すなわち、そのパケット・クラスについて割り当てられた主符号器712)にパケットを供給する。クラシファイヤ710がパケットを供給する主符号器712は、パケットを格納し、パケットの指紋を計算する責任を負う。主符号器712は、計算された指紋のそれぞれについて、どの符号器712が計算された指紋のパケットを格納しつつあるのかを識別し、計算された指紋のパケットを格納しつつある符号器712のコンテンツ・ストア713内のパケットのパケット識別子を判定するために、DHT 714内で指紋ルックアップを実行する。主符号器712は、主符号器712のコンテンツ・ストア713にローカルに格納されたパケットに関連するものとして識別されたすべての指紋のパケットのRE符号化を実行する。その後、主符号器712は、主符号器712によって計算された指紋に基づいて、パケットがDHT 714から識別された他の符号器712のそれぞれによってさらに処理され得るように、パケットを伝搬させる。
【0103】
一実施形態では、パケットは、他の符号器712に直列に伝搬される。一実施形態では、主符号器712は、パケットを処理する各符号器712が、それにパケットを提供すべき次の符号器712をパケット自体から直接識別できるように、DHT 714から主符号器712によって判定されたパケット・ポインタのリストをパケット内に含める。主符号器712は、パケットを次の符号器712に伝搬させる。次の符号器712は、パケットを受け取り、そのコンテンツ・ストア713をポイントする各パケット・ポインタを識別するためにパケット内に含まれるパケット・ポインタのリストを解析し、パケットの対応する領域を符号化するのに識別されたパケット・ポインタを使用する。最大一致REを使用する格納されたパケットの一致する領域に基づく受け取られたパケットの領域の符号化は、少なくとも
図2の説明から理解される。その後、次の符号器712は、パケットが提供される次の要素(たとえば、パケット内に含まれるパケット・ポインタのリストから判定される別の符号器712または、符号器712がパケットのRE符号化のためにパケットを処理する最後の符号器である場合にはマージャ)を識別する。パケットの符号化は、パケットが完全に符号化され、マージャに供給されるまで、この形で継続される。
【0104】
第1の指紋に関するパケットの一致する領域の展開中に、一致する領域が、第2の指紋に関連するパケットの領域をカバーすると判定される場合に、第2の指紋のポインタを、パケットの符号化中に無視することができることに留意されたい。この場合に、指紋が、現在パケットを処理しつつある符号器712のコンテンツ・ストア713内で維持されるパケットに関連する場合に、現在そのパケットを処理しつつある符号器712は、受け取られたパケットについて計算され、受け取られたパケット内に埋め込まれた指紋のリスト内の次の指紋を無視することができる。同様に、この場合に、指紋が、後続の符号器712(すなわち、現在パケットを処理しつつある符号器712以外の符号器)のコンテンツ・ストア内で維持されるパケットに関連する場合に、後続の符号器712は、受け取られたパケットについて計算され、受け取られたパケット内に埋め込まれた指紋のリスト内の指紋を無視することができる。1つのそのような実施形態では、その指紋を、受け取られたパケット内に含まれる指紋のリストから除去し、これによって、受け取られたパケットをRE符号化する時のその指紋の使用を防ぐことができる。
【0105】
パケットの直列符号化の前述の説明は、複数の符号器712がパケットを符号化するのに使用されると仮定する(パケットを符号化するための複数の符号器712の使用を例示するために)が、パケットが主符号器712によって完全に符号化され、主符号器712からマージャに直接渡されることが可能であることに留意されたい。
【0106】
一実施形態では、パケットは、他の符号器712に並列に伝搬される。他の符号器712は、パケットの符号化を判定するために処理を実行するが、パケットの符号化を実際には実行しない。そうではなく、他の符号器712のそれぞれは、パケットの符号化での使用に適合されたパケット符号化情報を判定し、パケット符号化情報を主符号器712に供給する。主符号器712は、パケット符号化情報を他の符号器712から受け取り、他の符号器712からのパケット符号化情報に基づいてパケットを符号化する(たとえば、主符号器712によって計算される指紋のすべてに関する関連する符号化キーとの一致する領域の置換を含むパケット符号化を実行する)。他の符号器712のうちの1つによって判定されるパケット符号化情報は、他の符号器712がそのコンテンツ・ストア713内に関連するパケットを格納する指紋ごとに、指紋に関連する一致する領域の一致する領域符号化情報を含む。一致する領域符号化情報は、指紋に関する一致する領域の長さと、一致する領域が突き止められたパケット内の位置(たとえば、一致する領域オフセット情報)とを含む。その後、主符号器712は、受け取られたパケットのRE符号化を実行するのに、受け取られたパケットの指紋のそれぞれの一致する領域長さ値および一致する領域オフセット値を使用することができる。その後、主符号器712は、符号化されたパケットをマージャに供給する。
【0107】
パケットを他の符号器712に並列に供給し、パケットの一致する領域のすべてに関する実際のパケット符号化を実行するように主符号器712を構成することによって、主符号器712が、すべての一致する領域を展望し、帯域幅節約を最大にする形で(他の符号器712のそれぞれでの処理オーバーヘッドを増やすことを犠牲にして)一致する領域を比較することができることに留意されたい。
【0108】
主に、主符号器712がパケットの指紋を計算する唯一の符号器712である実施形態に関して図示され、説明されるが、少なくとも1つの実施形態では、指紋の計算を、複数の符号器712によって(または符号器712のそれぞれによってさえ)実行することができることに留意されたい。これは、他の符号器712が、パケットのRE符号化のためにパケットを直列にまたは並列に処理する場合に使用することができる。
【0109】
そのような実施形態では、符号器712のうちの異なる符号器が、パケットのパケット・クラスに基づいて、異なるパケットのRE符号化機能の異なるセットを実行する。
【0110】
DHTベースの最大一致RE手法が、クラシファイヤ710のポリシに基づいてさまざまな符号器712にわたって計算および格納を分散させることを可能にすると同時に、DHT 714が、指紋のルックアップおよび挿入の負荷平衡化を提供することに留意されたい。ここで、DHT 714が負荷平衡化を提供するので、ノード順序トラバーサルの置換は、負荷平衡化のために必要ではない。
【0111】
図8に、DHTベースの最大一致REのRE復号ミドルボックスの例示的実施形態を示す。
【0112】
DHTベースの最大一致REのRE復号ミドルボックス800
Dは、最大一致REのRE復号ミドルボックス300
Dに類似する。
【0113】
図8のRE復号ミドルボックス800
Dは、
図7のRE符号化ミドルボックス700
Eに類似する形で動作するように構成され、RE復号ミドルボックス800
Dは、RE符号化ミドルボックス700
Eによって実行されるRE符号化機能に相補的なRE復号機能を実行する。
【0114】
RE復号ミドルボックス800
Eは、クラシファイヤ810、複数の復号器812
1〜812
N(集合的に復号器812)、およびDHT 814を含む。復号器812
1〜812
Nは、それぞれ、複数のコンテンツ・ストア813
1〜813
N(集合的にコンテンツ・ストア813)を含む。RE復号ミドルボックス800
Eは、マージャ(明瞭さのために
図8から省略されている)をも含む。
【0115】
クラシファイヤ810は、復号器812のそれぞれと通信するように構成される。復号器812は、お互いと通信するように構成され、主にお互いと直列に通信するものとして図示されるが(例示として、復号器812
1は、復号器812
2と通信し、以下同様であり、また、反対の順序で通信する)、少なくともいくつかの実施形態では、任意の復号器812が、任意の他の復号器812と直接(すなわち、他の復号器812をトラバースせずに)、または、復号器812の図示の順序をトラバースせずに間接的に、通信することができることに留意されたい。
【0116】
クラシファイヤ810は、パケットを受け取り、受け取られたパケットの分類を判定する。クラシファイヤ810は、パケット・クラスに基づいて、パケットを格納し、符号化キー・ルックアップを実行する責任を復号器812に割り当てる(たとえば、復号器812
1は、第1クラスのパケットを格納し、符号化キー・ルックアップを実行する責任を負い、復号器812
2は、第2クラスのパケットを格納し、符号化キー・ルックアップを実行する責任を負い、以下同様であり、復号器812
Nは、第Nクラスのパケットを格納し、符号化キー・ルックアップを実行する責任を負う)。RE復号ミドルボックス800
Eは、任意の適切な判断基準に基づくものとすることができる任意の適切な個数およびタイプのパケット・クラスをサポートすることができる。たとえば、クラシファイヤ810による受け取られたパケットの分類を、ラウンドロビンの形で、パケットのパケット・サイズに基づく負荷平衡化を使用してなどで実行することができる。一実施形態では、RE復号ミドルボックス800
Dによってサポートされるパケット・クラスのセットは、RE符号化ミドルボックス112
Eによってサポートされるパケット・クラスのセットと同一である。クラシファイヤ810は、パケット・クラスに基づく復号器812への責任の割当に従って、分類されたパケットを復号器812に供給する。
【0117】
DHT 814は、パケット・ポインタへの符号化キーの、格納されたパケットへのマッピングを指定する。DHT 814内では、所与の符号化キーのパケット・ポインタは、受け取られたパケットの符号化キーを格納されたパケットからのコンテンツに置換する際の使用のためにパケットを取り出すのに復号器812によって使用され得る情報を含む。パケット・ポインタは、格納されたパケットのパケット格納位置情報(すなわち、パケットが格納されている復号器812を識別する)およびパケット識別子情報(すなわち、パケットが格納されている復号器812内の格納されたパケットのパケット識別子)を含む。これが、
図8に示されており、
図8では、第1符号化キー(EK1)は、復号器1:ID3と表される第1パケット・ポインタを関連付けられ(すなわち、EK1に関連するパケットは、復号器812
1に格納されたパケット識別子ID3を有するパケットである)、第2符号化キー(EK2)は、復号器1:ID4と表される第2パケット・ポインタを関連付けられ(すなわち、EK2に関連するパケットは、復号器812
1に格納されたパケット識別子ID4を有するパケットである)、第3符号化キー(EK3)は、復号器2:ID2と表される第3パケット・ポインタを関連付けられ(すなわち、EK3に関連するパケットは、復号器812
2に格納されたパケット識別子ID2を有するパケットである)、などである。
【0118】
クラシファイヤ810は、パケットを受け取り、クラシファイヤ810によって判定されたパケットのパケット・クラスに基づいて復号器812のうちの1つ(すなわち、そのパケット・クラスについて割り当てられた主復号器812)にパケットを供給する。クラシファイヤ810がパケットを供給する主復号器812は、パケットについて符号化キールックアップを実行する責任を負う。主復号器812は、受け取られたパケットの符号化キーのそれぞれについて、どの復号器812が符号化キーのパケットを格納しつつあるのかを識別し、符号化キーのパケットを格納しつつある復号器812のコンテンツ・ストア813内のパケットのパケット識別子を判定するために、DHT 814内で符号化キー・ルックアップを実行する。主復号器812は、主復号器812のコンテンツ・ストア813にローカルに格納されたパケットに関連するものとして識別されたすべての符号化キーのパケットのRE復号を実行する。その後、主復号器812は、主復号器812によって識別された符号化キーに基づいて、パケットがDHT 814から識別された他の復号器812のそれぞれによってさらに処理され得るように、パケットを伝搬させる。
【0119】
一実施形態では、パケットは、他の復号器812に直列に伝搬される。一実施形態では、主復号器812は、パケットを処理する各復号器812が、それにパケットを提供すべき次の復号器812をパケット自体から直接識別できるように、DHT 814から主復号器812によって判定されたパケット・ポインタのリストをパケット内に含める。主復号器812は、パケットを次の復号器812に伝搬させる。次の復号器812は、パケットを受け取り、そのコンテンツ・ストア813をポイントする各パケット・ポインタを識別するためにパケット内に含まれるパケット・ポインタのリストを解析し、パケットの対応する領域を復号するのに識別されたパケット・ポインタを使用する。最大一致REを使用する受け取られたパケットの領域の復号は、少なくとも
図3の説明から理解される。その後、次の復号器812は、パケットが提供される次の要素(たとえば、パケット内に含まれるパケット・ポインタのリストから判定される別の復号器812または、復号器812がパケットのRE復号のためにパケットを処理する最後の復号器である場合にはマージャ)を識別する。パケットの復号は、パケットが完全に復号され、マージャに供給されるまで、この形で継続される。パケットのRE復号を実行する最後の復号器812は、復号されたパケットをそのコンテンツ・ストア813に格納する。パケットの直列復号の前述の説明が、複数の復号器812がパケットを復号するのに使用されることを仮定する(パケットを復号するための複数の復号器812の使用を例示するために)が、パケットが、主復号器812によって完全に復号され、主復号器812からマージャに直接渡されることが可能であることに留意されたい。
【0120】
一実施形態では、パケットは、他の復号器812に並列に伝搬される。他の復号器812は、パケットの復号を判定するために処理を実行するが、パケットの復号を実際には実行しない(すなわち、復号器812は、符号化キーを、符号化キーによって示されるパケットの対応する部分に置換しない)。そうではなく、他の復号器812のそれぞれは、パケットの復号での使用に適合されたパケット復号情報を判定し、パケット復号情報を主復号器812に供給する。主復号器812は、パケット復号情報を他の復号器812から受け取り、他の復号器812からのパケット復号情報に基づいてパケットを復号する(たとえば、主復号器812によって識別される符号化キーのすべてに関する格納されたパケットの関連する一致する領域との符号化キーの置換を含むパケット復号を実行する)。他の復号器812のうちの1つによって判定されるパケット復号情報は、他の復号器812がそのパケット・ストア813内に関連するパケットを格納する符号化キーごとに、パケット内の符号化キーを置換するのに使用されるコンテンツを含む。その後、主復号器812は、パケットのRE復号を実行するのに、パケットの指紋のそれぞれについて受け取られたコンテンツを使用することができる。その後、主復号器812は、符号化されたパケットをマージャに供給する。主に、主復号器812がパケットを他の復号器812に並列に伝搬させ、他の復号器812がパケット復号情報を主復号器812に返す実施形態に関して図示され、説明されるが、少なくとも1つの実施形態では、主復号器812が、パケット自体以外の情報を他の復号器812に伝搬させるように構成され(たとえば、他の復号器812によって処理されるそれぞれの符号化キーまたは類似物)、他の復号器812が、パケット復号情報を主復号器812に返すことに留意されたい。
【0121】
主に、主復号器812がパケットの符号化キーを識別する唯一の復号器812である実施形態に関して図示され、説明されるが、少なくとも1つの実施形態では、符号化キーの識別を、複数の復号器812によって(または復号器812のそれぞれによってさえ)実行することができることに留意されたい。これは、他の復号器812が、パケットのRE復号のためにパケットを直列にまたは並列に処理する場合に使用することができる。
【0122】
そのような実施形態では、復号器812のうちの異なる復号器が、パケットのパケット・クラスに基づいて、異なるパケットのRE復号機能の異なるセットを実行する。
【0123】
DHTベースの最大一致RE手法が、クラシファイヤ810のポリシに基づいてさまざまな復号器812にわたって計算および格納を分散させることを可能にすると同時に、DHT 814が、符号化キー・ルックアップの負荷平衡化を提供することに留意されたい。ここで、DHT 814が負荷平衡化を提供するので、ノード順序トラバーサルの置換は、負荷平衡化のために必要ではない。
【0124】
DHTベースのチャンク一致RE手法は、符号器512の指紋テーブル513およびハッシュ領域マッピング・テーブル516が、符号器512にまたがるDHTとして維持され、同様に、復号器612の指紋テーブル613およびハッシュ領域マッピング・テーブル616が、復号器612にまたがるDHTとして維持されることを除いて、
図5および6に関して図示され、説明されたチャンク一致RE手法に類似する。チャンク一致REのDHTを活用するためのRE復号ミドルボックス112
EおよびRE復号ミドルボックス112
Dの構成を、それぞれ
図9および10に関して図示し、説明する。
【0125】
図9に、DHTベースのチャンク一致REのRE符号化ミドルボックスの例示的実施形態を示す。
【0126】
DHTベースのチャンク一致REのRE符号化ミドルボックス900
Eは、チャンク一致REのRE符号化ミドルボックス500
Eに類似する。
【0127】
RE符号化ミドルボックス900
Eは、クラシファイヤ910、複数の符号器912
1〜912
N(集合的に符号器912)、およびDHT 914を含む。RE符号化ミドルボックス900
Eは、マージャ(明瞭さのために
図9から省略されている)をも含む。
【0128】
クラシファイヤ910は、符号器912のそれぞれと通信するように構成される。符号器912は、お互いと通信するように構成され、主にお互いと直列に通信するものとして図示されるが(例示として、符号器912
1は、符号器912
2と通信し、以下同様であり、また、反対の順序で通信する)、少なくともいくつかの実施形態では、任意の符号器912が、任意の他の符号器912と直接(すなわち、他の符号器912をトラバースせずに)、または、符号器912の図示の順序をトラバースせずに間接的に、通信することができることに留意されたい。
【0129】
クラシファイヤ910は、パケットを受け取り、受け取られたパケットの分類を判定する。クラシファイヤ910は、パケット・クラスに基づいて、チャンク計算の責任を符号器912に割り当てる(たとえば、符号器912
1は、第1クラスのチャンク計算の責任を負い、符号器912
2は、第2クラスのチャンク計算の責任を負い、以下同様であり、符号器912
Nは、第Nクラスのチャンク計算の責任を負う)。RE符号化ミドルボックス900
Eは、任意の適切な判断基準に基づくものとすることができる任意の適切な個数およびタイプのパケット・クラスをサポートすることができる。たとえば、クラシファイヤ910による受け取られたパケットの分類を、ラウンドロビンの形で、パケットのパケット・サイズに基づく負荷平衡化を使用してなどで実行することができる。一実施形態では、RE符号化ミドルボックス900
Eによってサポートされるパケット・クラスのセットは、RE符号化ミドルボックス112
Eによってサポートされるパケット・クラスのセットと同一である。クラシファイヤ910は、パケット・クラスに基づく符号器912への責任の割当に従って、分類されたパケットを符号器912に供給する。
【0130】
DHT 914は、チャンクへの指紋のマッピングを指定する。DHT 914では、チャンクの指紋は、チャンクにマッピングされるチャンクのハッシュである。言い替えると、チャンク自体が、DHT 914内で維持される。これが、
図9に示されており、
図9では、チャンク1の第1の指紋(FP1)(チャンク1のハッシュである)が、チャンク1にマッピングされ、チャンク2の第2の指紋(FP2)(チャンク2のハッシュである)が、チャンク2にマッピングされ、チャンク3の第3の指紋(FP3)(チャンク3のハッシュである)が、チャンク3にマッピングされるなどである。
【0131】
クラシファイヤ910は、パケットを受け取り、クラシファイヤ910によって判定されたパケットのパケット・クラスに基づいて符号器912のうちの1つにパケットを供給する。符号器912は、そのパケットのチャンクを計算する。符号器912は、パケットのチャンクの指紋を計算する。符号器912は、DHT 914を使用して、パケットのチャンクの指紋ルックアップおよび挿入を実行する。符号器912は、パケットのチャンクの指紋ルックアップに基づいて、パケットのRE符号化を実行する。符号器912は、符号化されたパケットをマージャに供給する。
【0132】
そのような実施形態では、符号器912のうちの異なる符号器が、パケットのパケット・クラスに基づいて、異なるパケットのRE符号化機能を実行する。
【0133】
DHTベースのチャンク一致RE手法が、クラシファイヤ910のポリシに基づいてさまざまな符号器912にわたって計算および格納を分散させることを可能にすると同時に、DHT 914(より大きいハッシュ・テーブルを提供する)が、指紋のルックアップおよび挿入の負荷平衡化を提供することに留意されたい。
【0134】
図10に、DHTベースのチャンク一致REのRE復号ミドルボックスの例示的実施形態を示す。
【0135】
DHTベースのチャンク一致REのRE復号ミドルボックス1000
Dは、チャンク一致REのRE復号ミドルボックス600
Dに類似する。
【0136】
図10のRE復号ミドルボックス1000
Dは、
図9のRE符号化ミドルボックス900
Eに似た形で動作するように構成され、RE復号ミドルボックス1000
Dは、RE符号化ミドルボックス900
Eによって実行されるRE符号化機能に相補的なRE復号機能を実行する。
【0137】
RE復号ミドルボックス1000
Dは、クラシファイヤ1010、複数の復号器1012
1〜1012
N(集合的に復号器1012)、およびDHT 1014を含む。RE復号ミドルボックス1000
Dは、マージャ(明瞭さのために
図10から省略されている)をも含む。
【0138】
クラシファイヤ1010は、復号器1012のそれぞれと通信するように構成される。復号器1012は、お互いと通信するように構成され、主にお互いと直列に通信するものとして図示されるが(例示として、復号器1012
1は、復号器1012
2と通信し、以下同様であり、また、反対の順序で通信する)、少なくともいくつかの実施形態では、任意の復号器1012が、任意の他の復号器1012と直接(すなわち、他の復号器1012をトラバースせずに)、または、復号器1012の図示の順序をトラバースせずに間接的に、通信することができることに留意されたい。
【0139】
クラシファイヤ1010は、パケットを受け取り、受け取られたパケットの分類を判定する。クラシファイヤ1010は、パケット・クラスに基づいて、チャンク計算の責任を復号器1012に割り当てる(たとえば、復号器1012
1は、第1クラスのチャンク計算の責任を負い、復号器1012
2は、第2クラスのチャンク計算の責任を負い、以下同様であり、復号器1012
Nは、第Nクラスのチャンク計算の責任を負う)。RE復号ミドルボックス1000
Dは、任意の適切な判断基準に基づくものとすることができる任意の適切な個数およびタイプのパケット・クラスをサポートすることができる。たとえば、クラシファイヤ1010による受け取られたパケットの分類を、ラウンドロビンの形で、パケットのパケット・サイズに基づく負荷平衡化を使用してなどで実行することができる。一実施形態では、RE復号ミドルボックス1000
Dによってサポートされるパケット・クラスのセットは、RE符号化ミドルボックス112
Eによってサポートされるパケット・クラスのセットと同一である。クラシファイヤ1010は、パケット・クラスに基づく復号器1012への責任の割当に従って、分類されたパケットを復号器1012に供給する。
【0140】
DHT 1014は、チャンクへの符号化キーのマッピングを指定する。DHT 1014では、チャンクの符号化キーは、チャンクにマッピングされるチャンクのハッシュである。一実施形態では、チャンク自体が、DHT 1014内で維持される。これが、
図10に示されており、
図10では、チャンク1の第1の符号化キー(EK1)(チャンク1のハッシュである)が、チャンク1にマッピングされ、チャンク2の第2の符号化キー(EK2)(チャンク2のハッシュである)が、チャンク2にマッピングされ、チャンク3の第3の符号化キー(EK3)(チャンク3のハッシュである)が、チャンク3にマッピングされるなどである。
【0141】
クラシファイヤ1010は、パケットを受け取り、クラシファイヤ1010によって判定されたパケットのパケット・クラスに基づいて復号器1012のうちの1つにパケットを供給する。パケットの符号化された領域について、復号器1012は、符号化されたパケット内の符号化キーを識別することと、DHT 1014からチャンクを取り出すのに符号化キーを使用することと、符号化キーをDHT 1014から取り出されたチャンクに置換することとによって、パケットを復号する。パケットの符号化されていない部分について、復号器1012は、パケットの符号化されていない部分のチャンクのハッシュを計算し、チャンクをDHT 1014に挿入する(たとえば、チャンクごとに、符号化キーとしてのチャンクのハッシュと符号化キーにマッピングされたチャンク自体とを含むレコードを挿入することによって)。復号器1012は、復号されたパケットをマージャに供給する。
【0142】
そのような実施形態では、復号器1012のうちの異なる符号器が、パケットのパケット・クラスに基づいて、異なるパケットのRE復号機能を実行する。
【0143】
DHTベースのチャンク一致RE手法が、クラシファイヤ1010のポリシに基づいてさまざまな復号器1012にわたって計算および格納を分散させることを可能にすると同時に、DHT 1014(より大きいハッシュ・テーブルを提供する)が、符号化キーのルックアップおよび挿入の負荷平衡化を提供することに留意されたい。
【0144】
主にチャンク自体がDHT 1014に格納される実施形態に関して図示され、説明されるが、少なくとも1つの実施形態では、DHT 1014が、関連するチャンクの格納位置(たとえば、チャンクを格納する復号器1012の識別子およびチャンクを格納する復号器812内のチャンクの識別子に関して指定される)への符号化キーのマッピングを格納することができることに留意されたい。
【0145】
ここで
図1に戻ると、
図2〜
図10から、RE符号化ミドルボックス112
Eが、さまざまな要素(たとえば、クラシファイヤ、符号器、およびマージャ、ならびに、いくつかの場合に他の要素)を含み、同様に、RE復号ミドルボックス112
Dが、さまざまな要素(たとえば、クラシファイヤ、復号器、およびマージャ、ならびに、いくつかの場合に他の要素)を含むことがわかる。RE符号化ミドルボックス112
EおよびRE復号ミドルボックス112
Dを、集合的にRE処理ミドルボックス112と称する場合がある(したがって、RE符号化ミドルボックス112
Eの符号器およびRE復号ミドルボックス112
Dの復号器を、集合的にREデータ・プロセッサまたはREデータ処理モジュールと称する場合がある)。RE処理ミドルボックス112の要素を、クラウド・サイト110内で任意の適切な形で実施することができる。たとえば、RE処理ミドルボックス112のクラシファイヤ、REデータ・プロセッサのそれぞれ、およびマージャを、仮想計算機(VM)を使用して実施することができる。たとえば、クラシファイヤ、REデータ・プロセッサのそれぞれ、およびマージャを、それぞれのVMを使用して、VMのうちの1つまたは複数が複数の要素(たとえば、複数のREデータ・プロセッサ)を提供するように構成されるVMのセットを使用しなどで実施することができる。たとえば、VMを、ブレード・サーバの同一の中央処理装置(CPU)上で、同一のブレード・サーバの複数のCPU上で、同一のスイッチの複数のブレード・サーバにまたがって分散された複数のCPU上で、複数のスイッチの複数のブレード・サーバにまたがって分散された複数のCPU上でなど、ならびにそのさまざまな組合せで実施することができる。したがって、そのような要素の間の通信を、クラウド環境内での使用に適切な任意の形でサポートすることができる(たとえば、複数の要素が同一のCPU上で実施される時の1つのCPU内の内部通信、要素が同一のブレード・サーバの異なるCPUにまたがって実施される時の1つのブレード・サーバ内だが複数のCPUにまたがる内部通信、要素が異なるブレード・サーバのCPUにまたがって実施される時の同一のスイッチのブレード・サーバの間の通信、要素が異なるスイッチのCPUにまたがって実施される時のクラウド・サイトのスイッチの間の通信など、ならびにそのさまざまな組合せ)。
【0146】
主に、REデータ処理モジュールによって使用されるさまざまなデータ構造がREデータ処理モジュール内に格納される実施形態に関して本明細書に図示され、説明されるが、少なくともいくつかの実施形態では、REデータ処理モジュールのうちの1つまたは複数のデータ構造のうちの1つまたは複数を、1つまたは複数のREデータ処理モジュールの外部に格納することができることに留意されたい。たとえば、そのようなデータ構造は、コンテンツ・ストア、指紋テーブル、ハッシュ領域マッピング・テーブルなどを含むことができる。したがって、REデータ処理モジュールによって使用されるさまざまなデータ構造がREデータ処理モジュール内に格納されることを示す本明細書の図示および説明は、REデータ処理モジュールのデータ構造の情報が関連するREデータ処理モジュールからアクセス可能である(たとえば、内部的にまたはメモリ、ディスク、もしくは任意の他の適切なストレージ・モジュールからそのような情報を取り出す任意の適切な機構を介して)実施形態をも表すことができる。
【0147】
図11に、REをサポートするパケットの処理の方法の一実施形態を示す。
【0148】
方法1100は、クラシファイヤ、REデータ・プロセッサのセット(1つまたは複数のREデータ・プロセッサの使用を含むことができる)、およびマージャによって実行されるステップを含む。
【0149】
方法1100が、
図2〜10のいずれかに関して図示され説明されたさまざまな機能を実施する一般的な方法を表すことを理解されたい。
【0150】
主に、直列に実行されるものとして本明細書で図示され、説明されるが、方法1100のステップを、同時にまたは
図11に示されたものとは異なる順序で実行することができることに留意されたい。
【0151】
ステップ1105では、方法1100が開始される。
【0152】
ステップ1110では、クラシファイヤが、パケットを受信する。パケットは、RE符号化ミドルボックスまたはRE復号ミドルボックスで受信される。RE符号化ミドルボックスの場合には、クラシファイヤは、適当なソース(たとえば、別のネットワーク、ネットワーク要素、ユーザ・デバイスなど)からパケットを受信する。RE復号ミドルボックスの場合には、クラシファイヤは、ネットワークを介してRE符号化ミドルボックスからパケットを受信する。
【0153】
ステップ1115では、クラシファイヤが、パケットのパケット・クラスを判定する。
【0154】
ステップ1120(いくつかの実施形態で実行されない可能性があるオプションのステップ)では、クラシファイヤが、パケット内でパケットのパケット・クラスをマークする。これは、パケットを処理するのに使用されるREデータ・プロセッサの順序付けを用いてパケットにマークすることを含むことができる。
【0155】
ステップ1125では、クラシファイヤが、パケットをREデータ・プロセッサのセットに伝搬させる。これが、パケットをREデータ・プロセッサのうちの1つに供給すること、パケットの複数の部分をREデータ・プロセッサのうちの複数に供給すること、パケットの複数のコピーをREデータ・プロセッサのうちの複数に供給することなど、ならびにそのさまざまな組合せを含むことができることに留意されたい。
【0156】
ステップ1130では、REデータ・プロセッサのセットが、パケットを受け取る。これが、REデータ・プロセッサのうちの1つによるパケットの受取、REデータ・プロセッサのうちの複数によるパケットの複数の部分の受取、REデータ・プロセッサのうちの複数によるパケットの複数のコピーの受取など、ならびにそのさまざまな組合せを含むことができることに留意されたい。
【0157】
ステップ1135では、REデータ・プロセッサのセットが、パケットのパケット・クラスに基づいてREに関してパケットを処理する。このステップを、REデータ・プロセッサのうちの1つまたは複数によって実行できることに留意されたい。さらに、REデータ・プロセッサが、パケットまたはパケットの諸部分を交換できることに留意されたい。
【0158】
ステップ1140では、REデータ・プロセッサのセットが、パケットをマージャに伝搬させる。
【0159】
ステップ1145では、マージャが、REデータ・プロセッサのセットからパケットを受け取る。
【0160】
ステップ1150では、マージャが、パケットを転送する。RE符号化ミドルボックスの場合に、マージャは、ネットワークを介してRE復号ミドルボックスに向かってパケットを転送する。RE復号ミドルボックスの場合に、マージャは、適当な宛先(たとえば、別のネットワーク、ネットワーク要素、ユーザ・デバイスなど)に向かってパケットを転送する。
【0161】
ステップ1155では、方法1100が終了する。
【0162】
上で注記したように、方法1100は、全体的に、
図2〜10のいずれかに関して図示され、説明されたさまざまな機能を実施する方法を表す。したがって、
図2〜10のいずれかに関して図示され、説明されたいずれかの機能または機能の組合せを、任意の適切な個数またはタイプのプロセスを使用して実施することができる。そのような実施形態では、
図2〜10のいずれかに関して図示され、説明された1つまたは複数の機能を提供するプロセスを、プロセッサおよびメモリを使用して実施することができ、メモリは、プロセッサによって実行される時にプロセッサにそれらの機能を実行させる命令を格納する。
【0163】
図12に、本明細書で説明される機能を実行する際の使用に適するコンピュータの高レベル・ブロック図を示す。
【0164】
コンピュータ1200は、プロセッサ1202(たとえば、中央処理装置(CPU)または他の適切なプロセッサ)およびメモリ1204(たとえば、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)など)を含む。
【0165】
コンピュータ1200は、協力するモジュール/プロセス1205を含むこともできる。協力するプロセス1205を、メモリ1204にロードし、プロセッサ1202によって実行して、本明細書で議論される機能を実施することができ、したがって、協力するプロセス1205(関連するデータ構造を含む)を、コンピュータ可読記憶媒体、たとえば、RAMメモリ、磁気または光学的なドライブまたはディスケットなどに格納することができる。
【0166】
コンピュータ1200は、1つまたは複数の入出力デバイス1206(たとえば、ユーザ入力デバイス(キーボード、キーパッド、マウスなど)、ユーザ出力デバイス(ディスプレイ、スピーカなど)、入力ポート、出力ポート、受信器、送信器、1つまたは複数のストレージ・デバイス(たとえば、テープ・ドライブ、フロッピ・ドライブ、ハード・ディスク・ドライブ、コンパクト・ディスク・ドライブなど)など、ならびにそのさまざまな組合せ)を含むこともできる。
【0167】
図12に示されたコンピュータ1200が、本明細書で説明される機能的要素または本明細書で説明される機能的要素の諸部分を実施するのに適する全般的なアーキテクチャおよび機能性を提供することを理解されたい。たとえば、コンピュータ1200は、RE符号化ミドルボックス112
E、RE符号化ミドルボックス112
Eの一部、RE復号ミドルボックス112
D、RE復号ミドルボックス112
Dの一部、
図2〜10のいずれかのクラシファイヤ、
図2〜10のいずれかの符号器または復号器、
図2〜10のいずれかのマージャなど、ならびにそのさまざまな組合せのうちの1つまたは複数を実施するのに適する全般的なアーキテクチャおよび機能性を提供する。
【0168】
本明細書で図示され、説明される機能を、ソフトウェアで(たとえば、特殊目的コンピュータおよび類似物を実施するために汎用コンピュータ上で実行される(たとえば、1つまたは複数のプロセッサによる実行を介して)1つまたは複数のプロセッサ上のソフトウェアの実施態様を介して)実施することができ、またはハードウェアで(たとえば、汎用コンピュータ、1つまたは複数の特定用途向け集積回路(ASIC)、または任意の他のハードウェア同等物を使用して)実施することができることを理解されたい。
【0169】
本明細書でソフトウェア方法として議論されるステップの一部を、ハードウェア内で、たとえばさまざまな方法ステップを実行するためにプロセッサと協力する回路網として実施することができることが企図されている。本明細書で説明される機能/要素の諸部分を、コンピュータ・プログラム製品として実施することができ、ここで、コンピュータ命令は、コンピュータによって処理される時に、本明細書で説明される方法または技法が呼び出されるか他の形で提供されるようにコンピュータの動作を適合させる。発明的方法を呼び出す命令を、固定媒体または取り外し可能媒体に格納し、放送媒体または他の信号担持媒体内のデータ・ストリームを介して送信し、または命令に従って動作するコンピューティング・デバイス内のメモリ内に格納することができる。
【0170】
さらに、本明細書で使用される時に、用語「or(または)」は、そうではないと示される(たとえば、「or else(または、そうではなく)」または「or in the alternative(または、代替案では)」)場合を除いて、非排他的な「or」を指す。
【0171】
さまざまな実施形態の諸態様は、特許請求の範囲で指定される。さまざまな実施形態の上記および他の態様は、次の番号付きの条項で指定される。
【0172】
1.プロセッサとプロセッサに通信可能に接続されたメモリとを含むデータ処理モジュールを含み、データ処理モジュールは、
受け取られたパケットのパケット・クラスに基づいて複数の冗長性除去(RE)処理機能のうちのどれを受け取られたパケットについて実行すべきかを判定する
ように構成される、装置。
【0173】
2.データ処理モジュールは、RE符号化モジュールまたはRE復号モジュールを含む、条項1に記載の装置。
【0174】
3.データ処理モジュールは、パケットのパケット・クラスに関連する複数のデータ処理モジュールのうちの1つであり、プロセッサは、受け取られたパケットのパケット・クラスに基づいて複数のRE処理機能のうちのどれを受け取られたパケットについて実行すべきかを判定するために、
パケットのパケット・クラスに関連する複数のデータ処理モジュールの順序付きリストを判定し、
複数のデータ処理モジュールの順序付きリスト内のデータ処理モジュールの位置に基づいて、複数のRE処理機能のうちのどれを受け取られたパケットについて実行すべきかを判定する
ように構成される、条項1に記載の装置。
【0175】
4.プロセッサは、受け取られたパケット内に含まれる情報に基づいて、パケットのパケット・クラスに関連する複数のデータ処理モジュールの順序付きリストを判定するように構成される、条項3に記載の装置。
【0176】
5.データ処理モジュールは、
データ処理モジュールが複数のデータ処理モジュールの順序付きリスト内の最初の位置にあるという判定に基づいて、
受け取られたパケットをデータ処理モジュールに関連するコンテンツ・ストアに格納し、
データ処理モジュールに関連するコンテンツ・ストアおよびデータ処理モジュールに関連する指紋テーブルを使用して、受け取られたパケットについてRE符号化機能を実行する
ように構成される、条項3に記載の装置。
【0177】
6.データ処理モジュールは、
データ処理モジュールが、複数のデータ処理モジュールの順序付きリスト内の最初の位置以外の位置にあるという判定に基づいて、
データ処理モジュールに関連するコンテンツ・ストアに受け取られたパケットを格納せずに、データ処理モジュールに関連するコンテンツ・ストアおよびデータ処理モジュールに関連する指紋テーブルを使用して、受け取られたパケットについてRE符号化機能を実行する
ように構成される、条項3に記載の装置。
【0178】
7.データ処理モジュールは、
データ処理モジュールが、複数のデータ処理モジュールの順序付きリスト内の最後の位置以外の位置にあるという判定に基づいて、
データ処理モジュールに関連するコンテンツ・ストアに受け取られたパケットを格納せずに、コンテンツ・ストアを使用して、受け取られたパケットについてRE復号機能を実行する
ように構成される、条項3に記載の装置。
【0179】
8.データ処理モジュールは、
データ処理モジュールが、複数のデータ処理モジュールの順序付きリスト内の最後の位置にあるという判定に基づいて、
データ処理モジュールに関連するコンテンツ・ストアを使用して、受け取られたパケットについてRE復号機能を実行し、
受け取られたパケットをデータ処理モジュールに関連するコンテンツ・ストアに格納する
ように構成される、条項3に記載の装置。
【0180】
9.データ処理モジュールは、
データ処理モジュールが複数のデータ処理モジュールの順序付きリスト内の最初の位置にあるという判定基づいて、
パケットを複数のチャンクに分割し、
データ処理モジュールに関連するコンテンツ・ストアおよびデータ処理モジュールに関連する指紋テーブルを使用してチャンクの少なくとも一部についてRE符号化機能を実行する
ように構成される、条項3に記載の装置。
【0181】
10.複数のデータ処理モジュールは、それに関連するそれぞれの複数のハッシュ領域を有し、データ処理モジュールは、
チャンクのうちの1つのハッシュがデータ処理モジュールのハッシュ領域内に含まれるという判定に基づいて、データ処理モジュールに関連するコンテンツ・ストアおよびデータ処理モジュールに関連する指紋テーブルを使用してチャンクのうちの1つについてRE符号化機能を実行する
ように構成される、条項9に記載の装置。
【0182】
11.前記データ処理モジュールは、最初のデータ処理モジュールであり、複数のデータ処理モジュールは、それに関連するそれぞれの複数のハッシュ領域を有し、最初のデータ処理モジュールは、
チャンクのうちの1つのハッシュが最初のデータ処理モジュールのハッシュ領域の外に含まれるという判定に基づいて、複数のデータ処理モジュールの2番目のデータ処理モジュールのハッシュ領域およびチャンクのうちの1つのハッシュに基づいて最初のデータ処理モジュールから2番目のデータ処理モジュールに向かってパケットを伝搬させる
ように構成される、条項9に記載の装置。
【0183】
12.最初のデータ処理モジュールは、
チャンクのうちの1つのハッシュが2番目のデータ処理モジュールのハッシュ領域内に含まれるという判定に基づいて、2番目のデータ処理モジュールを選択する
ように構成される、条項11に記載の装置。
【0184】
13.データ処理モジュールは、最初のデータ処理モジュールであり、複数のデータ処理モジュールは、それに関連するそれぞれの複数のハッシュ領域を有し、最初のデータ処理モジュールは、
最初のデータ処理モジュールのハッシュ領域の外に含まれるハッシュを有する複数のチャンクのそれぞれについて、データ処理モジュールのうちで、チャンクのハッシュをカバーする関連するハッシュ領域を有するデータ処理モジュールを識別し、
複数のデータ処理モジュールの順序付きリストに基づいて、識別されたデータ処理モジュールのうちの1つを選択する
ように構成される、条項9に記載の装置。
【0185】
14.データ処理モジュールは、最初のデータ処理モジュールであり、最初のデータ処理モジュールは、
最初のデータ処理モジュールが、複数のデータ処理モジュールの順序付きリスト内の最初の位置以外の位置にあるという判定に基づいて、
複数のデータ処理モジュールの2番目のデータ処理モジュールからパケットおよびパケットの少なくとも1つのチャンクを受け取り、
データ処理モジュールに関連するコンテンツ・ストアおよびデータ処理モジュールに関連する指紋テーブルを使用してパケットの少なくとも1つのチャンクについてRE符号化機能を実行する
ように構成される、条項3に記載の装置。
【0186】
15.データ処理モジュールは、
データ処理モジュールが、複数のデータ処理モジュールの順序付きリスト内の最初の位置にあるという判定に基づいて、
受け取られたパケット内に含まれる各符号化キーを復号する
ように構成される、条項3に記載の装置。
【0187】
16.データ処理モジュールは、
データ処理モジュールに関連するコンテンツ・ストアを使用して、受け取られたパケットの少なくとも1つの符号化キーについてRE復号機能を実行する
ように構成される、条項3に記載の装置。
【0188】
17.複数のデータ処理モジュールは、それに関連するそれぞれの複数のハッシュ領域を有し、データ処理モジュールは、
受け取られたパケットの符号化キーについて、符号化キーに関連するチャンクのハッシュを判定し、
符号化キーに関連するチャンクのハッシュがデータ処理モジュールのハッシュ領域内に含まれるという判定に基づいて、データ処理モジュールに関連するコンテンツ・ストアを使用してチャンクについてRE復号機能を実行する
ように構成される、条項3に記載の装置。
【0189】
18.データ処理モジュールは、最初のデータ処理モジュールであり、最初のデータ処理モジュールは、
受け取られたパケットの符号化キーについて、符号化キーに関連するチャンクのハッシュを判定し、
符号化キーに関連するチャンクのハッシュが最初のデータ処理モジュールのハッシュ領域の外に含まれるという判定に基づいて、複数のデータ処理モジュールの2番目のデータ処理モジュールのハッシュ領域および符号化キーに関連するチャンクのハッシュに基づいて、パケットを最初のデータ処理モジュールから2番目のデータ処理モジュールに向かって伝搬させる
ように構成される、条項3に記載の装置。
【0190】
19.最初のデータ処理モジュールは、
チャンクのハッシュが2番目のデータ処理モジュールのハッシュ領域内に含まれるという判定に基づいて、2番目のデータ処理モジュールを選択する
ように構成される、条項18に記載の装置。
【0191】
20.データ処理モジュールは、最初のデータ処理モジュールであり、複数のデータ処理モジュールは、それに関連するそれぞれの複数のハッシュ領域を有し、最初のデータ処理モジュールは、
最初のデータ処理モジュールのハッシュ領域の外に含まれるそれぞれの複数のハッシュを有する複数のチャンクのそれぞれについて、データ処理モジュールのうちでチャンクのハッシュをカバーするハッシュ領域を有するデータ処理モジュールを識別し、
複数のデータ処理モジュールの順序付きリストに基づいて、識別されたデータ処理モジュールのうちの1つを選択する
ように構成される、条項3に記載の装置。
【0192】
21.プロセッサとメモリとを含むデータ処理モジュールで、複数の冗長性除去(RE)処理機能のうちのどれを受け取られたパケットについて実行すべきかを判定するステップを含み、判定するステップは、受け取られたパケットのパケット・クラスに基づく、方法。
【0193】
22.プロセッサとプロセッサに通信可能に接続されたメモリとを含むデータ処理モジュールを含み、データ処理モジュールは、
分散ハッシュ・テーブル(DHT)のうちでデータ処理モジュールに関連する部分に基づいて、受け取られたパケットについて冗長性除去(RE)処理機能を実行する
ように構成される、装置。
【0194】
本発明の教示を組み込んださまざまな実施形態を、本明細書で詳細に示し、説明したが、当業者は、これらの教示を組み込む多数の他の変更された実施形態をたやすく考案することができる。