【文献】
QUALCOMM Europe,XOR Retransmission for MBMS,3GPP TSG-GERAN Meeting #20,2004年 6月25日,G2-041399,URL,http://www.3gpp.org/ftp/tsg_geran/TSG_GERAN/GERAN_20_Bilbao/Docs/GP-041399.zip
【文献】
Shen Yong and Lee Bu Sung,XOR Retransmission in Multicast Error Recovery,Networks, 2000. (ICON 2000). Proceedings. IEEE International Conference on,2000年 9月 5日,p.336-340,URL,http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=875810
(58)【調査した分野】(Int.Cl.,DB名)
各レベルは、パケットを要求する前記宛先デバイスの数と、前記要求されたパケットを記憶する前記宛先デバイス・キャッシュの数との合計である、請求項1に記載のネットワーク要素。
前記プロセッサは、前記同じカラーを有する前記頂点によって表される前記パケットに対して有限フィールドの上の線形結合オペレーションを実行することにより前記パケットを結合するように構成されている、請求項1に記載のネットワーク要素。
(i)第1の頂点と、第2の頂点とが、同じパケットを表しておらず、また(ii)前記第1の頂点によって表されるパケットが、前記第2の頂点に関連する前記宛先デバイスの前記キャッシュに記憶されず、または前記第2の頂点によって表される前記パケットが、前記第1の頂点に関連する前記宛先デバイスの前記キャッシュに記憶されない場合に、前記プロセッサは、前記複数の頂点のうちの前記第1の頂点と前記第2の頂点との間のリンクを作り出すことにより、前記競合グラフを構築するように構成されている、請求項1に記載のネットワーク要素。
前記プロセッサは、前記複数の頂点が着色されることを示す最低のレベルが到達されるまで、前記レベルをアップデートするように構成されている、請求項6に記載のネットワーク要素。
前記プロセッサは、前記競合グラフのために使用されるカラーの数を低減させるために、前記複数の着色された頂点に対してローカル・サーチを実行するように構成されている、請求項7に記載のネットワーク要素。
【発明を実施するための形態】
【0018】
様々な例示の実施形態が、次に、いくつかの例示の実施形態が示される添付の図面を参照して、より十分に説明されるであろう。
【0019】
詳細な実例となる実施形態が、本明細書において、開示される。しかしながら、本明細書において開示される特定の構造的詳細および機能的詳細は、例示の実施形態を説明する目的のための、単に、代表的なものにすぎない。しかしながら、本発明は、多数の代替的な形態で実施されることもあり、また本明細書において説明される実施形態だけに限定されるように解釈されるべきではない。
【0020】
それに応じて、例示の実施形態は、様々な修正形態および代替形態とすることができるが、それらの実施形態は、図面において例として示され、また本明細書において詳細に説明されるであろう。しかしながら、開示される特定の形態だけに例示の実施形態を限定する意図は存在していないことを理解すべきである。それとは反対に、例示の実施形態は、本開示の範囲内に含まれるすべての修正形態と、同等形態と、代替形態とを対象として含むべきである。同様な番号は、図面の説明の全体を通して、同様な要素のことを意味している。
【0021】
第1の、第2の、などの用語を本明細書において使用して、様々な要素を説明することができるが、これらの要素は、これらの用語によって限定されるべきではない。これらの用語を使用して、1つの要素を別の要素から区別するだけである。例えば、本開示の範囲を逸脱することなく、第1の要素は、第2の要素と命名される可能性があり、また同様に、第2の要素は、第1の要素と命名される可能性がある。本明細書において使用されるように、用語「および/または」は、1つまたは複数の関連するリストアップされた項目の任意の組合せ、およびすべての組合せを含んでいる。
【0022】
ある要素が、別の要素に「接続され(connected)」ている、または「結合され(coupled)」ていると称されるときに、その要素は、他の要素に直接に接続され、または結合される可能性もあり、あるいは介在する要素が存在していてもよい。対照的に、ある要素が、別の要素に「直接に(directly)接続され」ている、または「直接に結合され」ていると称されるときには、介在する要素は存在していない。要素の間の関係を説明するために使用される他の言葉も、同様なやり方(例えば、「間に(between)」に対して「直接に間に(directly between)」、「隣接する(adjacent)」に対して「直接に隣接する(directly adjacent)」など)で解釈されるべきである。
【0023】
本明細書において使用される専門用語は、特定の実施形態を説明する目的のためだけであり、限定することを意図してはいない。本明細書において使用されるように、単数形の形式「1つの(a)」、「1つの(an)」、および「その(the)」は、文脈が、明らかにそうでない場合を示していない限り、同様に複数形の形式を含むことを意図している。用語「備える/含む(comprises)」、「備えている/含んでいる(comprising)」、「含む(includes)」、および/または「含んでいる(including)」は、本明細書において使用されるときに、述べられた特徴、整数、ステップ、オペレーション、要素、および/またはコンポーネントの存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、オペレーション、要素、コンポーネント、および/またはそれらのグループの存在もしくは追加を除外するものではないことが、さらに理解されるであろう。
【0024】
いくつかの代替的な実装形態においては、指摘される機能/動作は、図面の中で指摘される順序を外れて、起きることができることにも注意すべきでもある。例えば、連続して示される2つの図は、必要とされる機能/動作に依存して、実際には、実質的に同時に実行されることもあり、または時には、逆の順序で実行されることもある。
【0025】
特定の詳細が、以下の説明において提供されて、例示の実施形態の完全な理解を提供している。しかしながら、例示の実施形態は、これらの特定の詳細なしに、実行され得ることが、当業者によって理解されるであろう。例えば、システムは、不必要な詳細の中で例示の実施形態をあいまいにしないようにするために、ブロック図の形で示されることもある。他の例においては、よく知られているプロセス、構造、および技法は、例示の実施形態をあいまいにすることを回避するために、不必要な詳細なしに示されることもある。
【0026】
以下の説明においては、実例となる実施形態は、プログラム・モジュールまたは機能プロセスが、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むように実施され得る、特定のタスクを実行し、または特定の抽象データ型を実施し、また既存のネットワーク要素(例えば、基地局、基地局制御装置、ノードB(NodeB)、eノードB(eNodeB)など)における既存のハードウェアを使用して実施され得るオペレーションの動作およびシンボリック表現(例えば、フロー・チャート、流れ図、データ・フロー図、構造図、ブロック図などの形式で)を参照して、説明されるであろう。そのような既存のハードウェアは、1つまたは複数の中央演算処理装置(CPU:Central Processors)、デジタル信号プロセッサ(DSP:digital signal processors)、特定用途向け集積回路(application−specific−integrated−circuits)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate arrays)コンピュータなどを含むことができる。
【0027】
フロー・チャートは、逐次的プロセスとしてオペレーションを説明することができるが、オペレーションの多くは、並列に、同時に、または並行して実行されることもある。さらに、オペレーションの順序は、配列し直されることもある。プロセスは、そのオペレーションが完了されるときに終了されることもあるが、図面の中に含まれていない追加のステップを有することもできる。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応することができる。プロセスが、ある関数に対応するときに、その終了は、呼び出し関数、またはメイン関数に対する、関数のリターンに対応することができる。
【0028】
本明細書において開示されるように、用語「ストレージ媒体」または「コンピュータ読取り可能ストレージ媒体」は、リード・オンリー・メモリ(ROM:read only memory)、ランダム・アクセス・メモリ(RAM:random access memory)、磁気RAM、コア・メモリ、磁気ディスク・ストレージ媒体、光ストレージ媒体、フラッシュ・メモリ・デバイス、および/または情報を記憶するための他の有形マシン読取り可能媒体を含めて、データを記憶するための1つまたは複数のデバイスを表すことができる。用語「コンピュータ読取り可能媒体」は、それだけには限定されないが、ポータブル・ストレージ・デバイスもしくは固定ストレージ・デバイスと、光ストレージ・デバイスと、命令(単数または複数)および/またはデータを記憶し、含み、あるいは搬送することができる様々な他の媒体とを含むことができる。
【0029】
さらに、例示の実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実施されることもある。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードの形で実施されるときに、必要なタスクを実行するプログラム・コードまたはコード・セグメントは、コンピュータ読取り可能ストレージ媒体など、マシン読取り可能媒体またはコンピュータ読取り可能媒体に記憶されることもある。ソフトウェアの形で実施されるときに、1つまたは複数の専用プロセッサが、必要なタスクを実行するであろう。
【0030】
コード・セグメントは、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェア・パッケージ、クラス、または命令、データ構造もしくはプログラム・ステートメントの任意の組合せを表すことができる。コード・セグメントは、情報、データ、引き数、パラメータ、またはメモリ・コンテンツを渡すこと、および/または受信することにより、別のコード・セグメントまたはハードウェア回路に結合されることもある。情報、引き数、パラメータ、データなどは、メモリ共有化、メッセージ・パッシング、トークン・パッシング、ネットワーク送信などを含む任意の適切な手段を経由して、渡され、転送され、または送信されることもある。
【0031】
図1は、少なくとも1つの例示の実施形態によるコンテンツ配信ネットワークを示すものである。
【0032】
図1に示されるように、コンテンツ配信ネットワーク(CDN)は、複数の宛先デバイス(またはユーザ・デバイス)200に接続されたネットワーク要素151を含むことができる。ネットワーク要素151は、データ・ファイル(例えば、映画ファイル)を配信するためのコンテンツ・ソース(例えば、マルチキャスト・ソース)とすることができる。宛先デバイス200は、コンテンツ・ソースからデータを要求するエンド・ユーザ・デバイスとすることができる。例えば、各宛先デバイス200は、ユーザが要求されたデータにアクセスすることができるようにするデバイスの一部分とすることができ、またはそのデバイスに関連づけられることもある。例えば、各宛先デバイス200は、セット・トップ・ボックス、パーソナル・コンピュータ、タブレット、モバイル電話、あるいはオーディオまたはビデオをストリーミングするために使用される関連する任意の他のデバイスとすることができる。宛先デバイス200のそれぞれは、ネットワーク要素151から受信されるデータを記憶するためのメモリを含むことができる。ネットワーク要素151と、宛先デバイス200との構造およびオペレーションは、
図2および3を参照して以下でより詳細に説明されるであろう。
【0033】
図2は、例示の実施形態によるネットワーク要素の例示の構造を示す図である。少なくとも1つの例示の実施形態によれば、ネットワーク要素151は、通信ネットワーク(例えば、
図1のコンテンツ配信ネットワーク(CDN))における使用のために構成されていることもある。
図2を参照すると、ネットワーク要素151は、例えば、データ・バス159と、トランスミッタ152と、レシーバ154と、メモリ156と、プロセッサ158とを含むことができる。簡潔にするために、別個の説明が、ここで含められていないが、各宛先デバイス200は、ネットワーク要素151と同じ、または類似した構造を有することができることが、理解されるべきである。
【0034】
トランスミッタ152と、レシーバ154と、メモリ156と、プロセッサ158とは、データ・バス159を使用して互いにデータを送信し、かつ/または互いからのデータを受信することができる。トランスミッタ152は、通信ネットワークにおける他のネットワーク要素に対する1つまたは複数のワイヤレス接続を経由して、例えば、データ信号と、制御信号と、信号強度/品質情報とを含むワイヤレス信号を送信するためのハードウェアと、任意の必要なソフトウェアとを含むデバイスである。
【0035】
レシーバ154は、通信ネットワークにおける他のネットワーク要素に対する1つまたは複数のワイヤレス接続を経由して、例えば、データ信号と、制御信号と、信号強度/品質情報とを含むワイヤレス信号を受信するためのハードウェアと、任意の必要なソフトウェアとを含むデバイスである。
【0036】
メモリ156は、磁気ストレージ、フラッシュ・ストレージなどを含む、データを記憶することができる任意のデバイスとすることができる。
【0037】
プロセッサ158は、例えば、入力データに基づいて、特定のオペレーションを実行するように構成された、またはコンピュータ読取り可能コードに含まれる命令を実行することができる、専用プロセッサを含めて、データを処理することができる任意のデバイスとすることができる。例えば、以下で説明される修正形態と、方法とは、メモリ156の上に記憶され、またネットワーク要素151の内部のプロセッサ158によって実施されることもあることを理解すべきである。
【0038】
さらに、以下の修正形態と、方法とは、ネットワーク要素151の1つまたは複数の上記で説明された要素によって実行され得ることを理解すべきである。例えば、レシーバ154は、「受信するステップ」と、「獲得するステップ」などとを実行することができ、トランスミッタ152は、「送信するステップ」と、「出力するステップ」と、「送るステップ」などとを実行することができ、プロセッサ158は、「決定するステップ」と、「生成するステップ」と、「相互に関連づけるステップ」と、「算出するステップ」などとを実行することができ、またメモリ156は、「記憶するステップ」と、「保存するステップ」などとを実行することができる。
【0039】
例示の実施形態は、キャッシング・フェーズ(
図3Aおよび3Bを参照して以下で説明される)と、配信フェーズ(
図4〜
図7を参照して以下で説明される)とを対象としていることを理解すべきである。
図3〜
図6は、
図2におけるネットワーク要素の例示のオペレーションを示すフロー・チャートである。例えば、
図3Aおよび
図3Bは、通信ネットワークにおいて、キャッシングの方法を実行するための例示のオペレーションを示すものである。
図4〜
図6は、キャッシング方法が実行された後に、データ・ファイルを配信するための例示のオペレーションを示すものである。
【0040】
図3Aおよび
図3Bは、以下のアルゴリズム1に関連したキャッシング配信方法を実行するためのものであり、ここで、各データ・ファイル「f」は、有限フィールドのシンボルとして表される「B」個の等しいサイズのパケットへと分割され、またライブラリ「F」に属することを理解すべきである。
【0042】
アルゴリズム1において、
【数1】
は、「u」の宛先デバイス200のキャッシング分布であり、ここで、u=1,・・・,nを用いた∀uに対して、
【数2】
であり、また∀f=1,・・・,m、u=1,・・・,nに対して0≦p
f,u≦1/M
uであり、「m」は、ネットワーク要素151によってホストされるファイルの数であり、また「M
u」は、宛先デバイス「u」(すなわち、宛先デバイス200)におけるキャッシュのストレージ容量であり、またM
u,f=p
f,uM
uBは、ユーザuにおいてキャッシュされるファイルfのパケットを示している。ネットワーク要素151は、宛先「u」のデバイス200が、ファイル「f」のM
u.f=p
f,uM
uB個のパケットをキャッシュするように、アルゴリズム1を実行する。さらに、アルゴリズム1のランダム化された性質は、2つの宛先が、与えられたファイル「f」について同じ数のパケットをキャッシュする場合、そのときには、2つの宛先デバイス200のうちのそれぞれが、同じファイル「f」の異なるパケットをキャッシュするように、ネットワーク要素151が、オペレーションを実行することを可能にする。アルゴリズム1は、以下で
図3Aおよび
図3Bにおいて説明されるオペレーションに従って、ネットワーク要素151によって実施されることもある。
【0043】
図3Aを参照すると、オペレーション300において、ネットワーク要素151は、複数のデータ・ファイルについての人気を決定することができる。データ・ファイルは、例えば、ビデオ・ファイルおよび/またはオーディオ・ファイルとすることができる。ネットワーク要素151は、宛先デバイス200のうちの少なくとも1つからの複数のデータ・ファイルについての要求(例えば、ユーザ要求)に基づいて、人気を決定することができる。ユーザ要求は、データ・ファイルについての需要分布を形成することができる。ネットワーク要素151は、すべての宛先デバイス200の需要分布に従って人気を決定することができる。この場合には、需要分布は、ジップ(Zipf)分布に従うことができる。代わりに、ネットワーク要素151は、各宛先デバイスごとの人気を決定することができ、ここでは、各宛先デバイス200は、関連する需要分布を有している。
【0044】
ネットワーク要素151は、宛先デバイス200からのデータ・ファイルについての要求の数に基づいて人気を決定することができる。例えば、ネットワーク要素151は、宛先デバイス200によって100回要求されるデータ・ファイルを50回要求されるデータ・ファイルよりもより高い人気を有するものとして決定する。したがって、人気は、どのデータ・ファイルが、宛先デバイス200のユーザによって最も頻繁に要求され、また閲覧されるかに基づいたものとすることができる。
【0045】
ネットワーク要素151は、各データ・ファイルを複数のパケットへと分割することができる。例えば、ネットワーク要素151は、各データ・ファイルを同じ数のパケット(例えば、3つのパケット)へと分割することができる。それに応じて、オペレーション310においては、ネットワーク要素151は、オペレーション300の中で決定される人気に基づいて、少なくとも1つの宛先デバイスに対して複数のデータ・ファイルのランダム・パケットを送信することができる。例えば、ネットワーク要素151は、ランダム・パケットが各宛先デバイス200に記憶される(またはキャッシュされる)ように各データ・ファイルのランダム・パケットを宛先デバイス200に対して送信することができる。
【0046】
ネットワーク要素151は、各宛先デバイス200が、決定された人気と、入力パラメータ(例えば、宛先デバイスの数、人気分布、各宛先デバイスのキャッシュ・サイズ、ネットワーク要素151におけるデータ・ファイル・ライブラリのサイズなど)とに基づいて、データ・ファイルのうちの少なくとも1つについての与えられた数のランダム・パケットを受信するように、ランダム・パケットを送信することができる。例えば、宛先デバイス200が、同じサイズのキャッシュと、同じ需要分布とを有する(例えば、宛先デバイスが、一様である)場合に、ネットワーク要素151は、各宛先デバイス200に対して同じ数のパケットを送信することができる。一例においては、10個のパケットへと分割される2つの宛先デバイス1および2と、2つのファイルAおよびBとが、存在していることを仮定する。(i)宛先デバイス1および2が、同じ頻度でファイルAおよびファイルBを要求し、またファイルAが、ファイルBよりも多い頻度で両方の宛先によって要求され、また(ii)2つの宛先デバイス1および2が、同じキャッシュ・サイズを、例えば、パケットの観点から6つのユニットを有する場合、そのときには、ネットワーク要素151は、両方の宛先デバイス1および2が、ファイルAのうちの4つのパケットと、ファイルBのうちの2つのパケットをキャッシュするように、キャッシングの方法を実行するであろう。
【0047】
ネットワーク要素151が、オペレーション300において、宛先デバイス当たりに基づいて、人気を決定した場合、そのときには、ネットワーク要素151は、オペレーション310において、宛先デバイス当たりに基づいて、ランダム・パケットを送信することができる。例えば、宛先デバイス200が、異なるサイズのキャッシュまたは異なる需要分布を有する場合、ネットワーク要素151は、各宛先に対して異なる数のパケットを送信することができる。この場合には、上記の例を参照すると、宛先デバイス1は、ファイルAのうちの7つのパケットと、ファイルBのうちの3つのパケットとを受信することができるが、宛先デバイス2は、ファイルAのうちの2つのパケットと、ファイルBのうちの5つのパケットとを受信することができる。これは、宛先デバイス1が、ファイルAをファイルBよりもずっと多く要求し、またパケットの観点で10個のユニットの総キャッシュ・サイズを有しているが、宛先2デバイスは、ファイルBよりもずっと少なくファイルAを要求し、またパケットの観点で7つのユニットの総キャッシュ・サイズを有していることに起因する可能性がある。
【0048】
図3Bは、必要に応じて、オペレーション300と、310との間で実行され得るネットワーク要素151の例示のオペレーションを示すものである。例えば、
図3Aにおけるオペレーション300に従って、ネットワーク要素151は、決定された人気に基づいて、データ・ファイルをランク付けすることができる。例えば、オペレーション301において、ネットワーク要素151は、オペレーション300において決定される人気を使用して、最も人気のあるデータ・ファイルから最も人気のないデータ・ファイルまでデータ・ファイルをランク付けすることができる。
【0049】
オペレーション302において、ネットワーク要素151は、各データ・ファイルについて、ランキングに基づいて、いくつかのランダム・パケットを選択することができる。例えば、ネットワーク要素151は、各データ・ファイルのそれぞれのランクと、ネットワークの入力パラメータ(例えば、宛先デバイスの数、人気分布、各宛先デバイスのキャッシュ・サイズ、ネットワーク要素151におけるデータ・ファイル・ライブラリのサイズなど)とのうちの少なくとも1つに従って、各宛先デバイスについて、またデータ・ファイルのそれぞれについて異なる数のランダム・パケットを選択する。オペレーション302の後に、ネットワーク要素151は、
図3Aにおけるオペレーション310へと戻り、各データ・ファイルについての選択された数のランダム・パケットを送信することができる。
【0050】
オペレーション302は、ネットワーク要素151が、少なくとも1つのしきい値に基づいて、ランク付けされたデータ・ファイルを少なくとも第1の部分集合と、第2の部分集合とに分割することを含むことができることを理解すべきである。少なくとも1つのしきい値は、経験的証拠に基づいており、かつ/またはユーザ定義されたものとすることができる。第1の部分集合は、第2の部分集合よりも高くランク付けされたデータ・ファイルを含むことができる。このようにして、オペレーション310においては、ネットワーク要素151は、第1の部分集合の中のデータ・ファイルだけについて、選択された数のランダム・パケットを送信することができる。これは、宛先デバイス200におけるパケットのより効率の高いキャッシングを可能にすることができる。
【0051】
図3Aおよび3Bを参照して説明されるオペレーションは、より人気のあるファイルのより多くのパケットをキャッシュし、また宛先デバイス200によってまとめてキャッシュされる各ファイルの異なるパケットの量を増大させ(または代わりに、最大にし)、また従来のマルチキャスティングに比べて、送信の数を低減させるスキームの能力のために、改善されたネットワークの性能を実現することを理解すべきである。
【0052】
上記で説明されたキャッシング方法に関連して、本出願は、データ・ファイルの要求されたパケットが、宛先デバイス200に対して配信される配信フェーズのための例示の方法を開示している。配信フェーズのための例示の方法は、グラフ理論に基づいている。
【0053】
図4は、少なくとも1つの例示の実施形態による配信フェーズのための例示のオペレーションを示すものである。
図4を参照すると、オペレーション400において、ネットワーク要素151は、データ・ファイルのパケットについての、宛先デバイス200(またはユーザ・デバイス)からの要求を受信する。ネットワーク要素151は、上記で説明されるキャッシング方法を既に実行しているので、各宛先デバイス200は、キャッシング方法の結果として、キャッシュされ(または記憶され)なかったこれらのパケットだけを要求する。したがって、配信フェーズは、各宛先デバイス200に対して、要求されたファイルのうちの欠けている部分(単数または複数)を、すなわち、その宛先デバイス200のメモリから失われているパケットを提供することを含んでいる。
【0054】
オペレーション410において、ネットワーク要素151は、競合グラフを構築する。例えば、ネットワーク要素151は、各宛先デバイス200によって要求される各パケットが、競合グラフの複数の頂点の中の異なる頂点によって表されるように、複数の頂点を用いて競合グラフに追加する。それゆえに、たとえ同じパケットが、K人の異なるユーザによって要求されるとしても、パケットは、競合グラフの中のK個の異なる頂点として表される。言い換えれば、競合グラフの中の各頂点は、宛先デバイス200と、要求されたパケットとの固有の対に関連づけられる。したがって、競合グラフの各頂点は、宛先デバイス200に関連づけられ、また宛先デバイス200によって要求されるパケットを表す。さらに、ネットワーク要素151は、複数の頂点のうちのどれが、同じ要求されたパケットを表すかと、どの要求されたパケットが、宛先デバイス200に属するキャッシュに記憶されるかと、に基づいて、競合グラフを構築することができる。オペレーション410は、
図5および6を参照して、以下でさらに詳細に説明される。
【0055】
依然として
図4を参照すると、オペレーション420において、ネットワーク要素151は、複数の頂点を元のレベルに割り当てることができる。それぞれの元のレベルは、パケットについての要求の数と、パケットを記憶するユーザ宛先200のキャッシュの数とを示すことができる。例えば、各レベルは、パケットを要求するユーザの宛先の数と、要求されたパケットを記憶するユーザ・デバイス・キャッシュの数との合計とすることができる。したがって、パケットが、4つの宛先デバイス200によって要求され、また宛先デバイス200のうちの3つが、パケットを記憶している場合、そのときには、そのパケットに関連する頂点についての元のレベルは、3+4=7である。
【0056】
依然として
図4を参照すると、オペレーション420において、ネットワーク要素151はまた、複数の頂点にラベルを割り当てることもできる。各ラベルは、頂点に対応するパケットを要求する宛先デバイス200、およびパケットを記憶する宛先デバイス200のキャッシュを示すことができる。例えば、各ラベルは、宛先デバイス200がパケットを要求することに対応し、また宛先デバイス200が、要求されたパケットを記憶することに対応するインデックスの集合とすることができる。例えば、パケットが、4つの宛先デバイス200(例えば、ユーザ1、ユーザ3、ユーザ5、ユーザ10)によって要求され、また宛先デバイス200のうちの3つ(例えば、ユーザ2、ユーザ4、ユーザ8)が、要求されたパケットを記憶している場合、そのときには要求されたパケットに関連する頂点についてのインデックスの集合は、
【数3】
である。ここで、ラベルの長さは、7(すなわち、パケットを要求する宛先デバイスの数と、パケットを記憶する宛先デバイス・キャッシュの数との合計)である。
【0057】
オペレーション430において、ネットワーク要素151は、割り当てられたレベルに基づいて、頂点を順序付けることができる。例えば、ネットワーク要素151は、着色するオペレーションに備えて、最高のレベルから最低のレベルまでの頂点を順序付けることができる。
【0058】
オペレーション445において、ネットワーク要素151は、競合グラフの上の要求されたパケットをラベル付けするやり方として、複数の頂点に着色する。例えば、ネットワーク要素151は、オペレーション430において決定される順序に基づいて、複数の頂点に着色する。オペレーション455が、
図6に関して、以下でさらに詳細に考察される。
【0059】
オペレーション480において、ネットワーク要素151は、同じカラーを有する頂点によって表される要求されたパケットを結合する。例えば、ネットワーク要素151は、同じカラーを有する頂点によって表されるパケットに対して排他的論理和(XOR:exclusive−OR)オペレーション(または有限フィールドの上の他の線形結合オペレーション)を実行する。
【0060】
オペレーション490において、ネットワーク要素151は、結合されたパケットを送信する。例えば、ネットワーク要素151は、マルチキャスト送信を経由して、結合されたパケットを宛先デバイス200に対して送信する。送信に先立ってパケットを結合することにより、少なくとも1つの例示の実施形態による配信方法が、ネットワーク要素151の送信の数を低減させることができ、これは、消費電力を低減させ、またネットワーク効率を改善させることができることを理解すべきである。宛先デバイス200は、XORオペレーションの組(または他の線形結合オペレーションの組)を使用して、送信された結合されたパケットを受信し、また復号することができることを理解すべきである。例えば、宛先デバイス200は、そのキャッシュされたパケットをキーとして使用して、結合されたパケットを復号することができる。
【0061】
図5は、少なくとも1つの例示の実施形態による競合グラフを構築するための例示のオペレーションを示すものである。例えば、
図5は、
図4からのオペレーション410をさらに詳細に考察している。
図5は、方向づけのない競合グラフを構築するための例示のオペレーションを示すものである。方向づけのない競合グラフは、本出願において、階層的グリーディ着色(HgC:hierarchical greedy coloring)スキームと称される着色スキームと組み合わせて使用されることもある。この着色スキームは、
図6を参照して、以下でより詳細に説明される。
【0062】
図5を参照すると、オペレーション511において、ネットワーク要素151は、オペレーション410において追加される複数の頂点からの頂点「Vi」と、「Vj」とを分析する。オペレーション513において、ネットワーク要素が、頂点ViとVjとが同じ要求されたパケットを表すことを決定する場合、そのときにはネットワーク要素151は、オペレーション515において、2つの頂点の間のリンク(またはエッジ)を作り出さない。次いで、ネットワーク要素151は、オペレーション531へと進んで、競合グラフの中の頂点のすべてが、分析されているかどうかを決定する。
【0063】
オペレーション513において、ネットワーク要素151は、頂点ViとVjとが、同じ要求されたパケットを表さないことを決定する場合、そのときにはネットワーク要素151は、オペレーション517へと進み、また頂点Viに関連する、すなわち、頂点Viによって表されるパケットを要求する宛先デバイス200のキャッシュ(またはメモリ)をチェックする。オペレーション519において、ネットワーク要素151が、頂点Vjを表すパケットが頂点Viによって表されるパケットを要求する宛先デバイス200のキャッシュの中で使用可能ではないことを決定する場合、そのときにはネットワーク要素151は、オペレーション521において、頂点Viと頂点Vjとの間にリンクを作り出す。次いで、ネットワーク要素151は、オペレーション531へと進んで、競合グラフの中の頂点のすべてが、分析されているかどうかを決定する。
【0064】
オペレーション519において、ネットワーク要素151が、頂点Vjを表すパケットが頂点Viに関連する、また頂点Viによって表されるパケットを要求する宛先デバイス200のキャッシュにおいて使用可能であることを決定する場合、そのときにはネットワーク要素151は、オペレーション523において、頂点Vjに関連する、また頂点Vjによって表されるパケットを要求する宛先デバイス200のキャッシュをチェックする。オペレーション525において、頂点Viを表すパケットが、頂点Vjに関連する、また頂点Vjによって表されるパケットを要求する宛先デバイス200のキャッシュにおいて使用可能ではない場合、そのときにはネットワーク要素151は、競合グラフの中の頂点のすべてが分析されているかどうかを決定するオペレーション531へと進む前に、オペレーション527において、頂点ViとVjとの間にリンクを作り出す。
【0065】
オペレーション525において、ネットワーク要素151が、頂点Viを表すパケットが頂点Vjに関連する、また頂点Vjによって表されるパケットを要求する宛先デバイス200のキャッシュにおいて使用可能である場合、そのときにはネットワーク要素151は、オペレーション529において、頂点ViとVjとの間のリンクを作り出す。次いで、ネットワーク要素151は、オペレーション531へと進んで、競合グラフの中の頂点のすべてが分析されているかどうかを決定する。
【0066】
ひとたびネットワーク要素151が、競合グラフの中の頂点のすべてを分析した後に、次いで、ネットワーク要素151は、オペレーション533において、構築された競合グラフを戻す。
【0067】
図5を考慮すると、(i)第1の頂点と、第2の頂点とが、同じパケットを表さず、また(ii)第1の頂点によって表されるパケットが、第2の頂点に関連する、また第2の頂点によって表されるパケットを要求するユーザ・デバイスのキャッシュに記憶されず、または第2の頂点によって表されるパケットが、第1の頂点に関連する、また第1の頂点によって表されるパケットを要求するユーザ・デバイスのキャッシュに記憶されない場合に、
図4における構築するオペレーション410は、複数の頂点のうちの第1の頂点と第2の頂点との間にリンクを作り出すオペレーションによって要約されることもあることを理解すべきである。
【0068】
図6は、少なくとも1つの例による、競合グラフを着色するための例示のオペレーションを示すものである。
図6のオペレーションは、以下で考察されるアルゴリズムに関連している。
【0070】
上記のアルゴリズム(「HgCアルゴリズム」と称される)において、f(v)は、競合グラフの中の頂点vによって表されるパケットとする。Uをユーザ宛先デバイスの集合として定義すると、K
v={∀u∈U:f(v)∈Q
u∪C
u}であり、式中で、Q
uは、ユーザ宛先デバイスuによって要求されるすべてのパケットの集合であり、またC
uは、ユーザ宛先デバイスuによる、すべてのキャッシュされたパケットの集合である。本発明者等は、K
vを頂点「v」に関連するラベルと呼ぶ。例えば、パケットA
1(f(v
1)=A
1)を表す頂点v
1が、ユーザ宛先デバイス1とユーザ宛先デバイス2とによって要求され、またユーザ宛先デバイス3とユーザ宛先デバイス4とにキャッシュされる場合、そのときには、
【数4】
である。
【0071】
G
i={v:|K
v|=i}とする。本発明者等は、G
iを元の階層(またはレベル)として考える。本発明者等は、階層(またはレベル)nから開始し、この階層(またはレベル)nは、最高の階層またはレベルである。それらが、同じ|K
v|=nを有しており、またそのような集合の濃度が、nに等しく、また競合グラフの中のそのような集合のうちの任意の2つの頂点の間にリンクが存在していない(すなわち、グリーディなやり方で、サイズ「n」を有する独立した集合を検索する)場合に、最初に、本発明者等は、同じカラーを用いてG
nの中の頂点の部分集合を着色する(同じ|K
v|を有しており、また競合グラフにおいてリンクによって接続されていない2つのノードは、それらが、同じK
vを有することを述べることと同等であることに注意すべきである。)。次いで、本発明者等は、G
nの中の着色されていない頂点の残りをG
n−1とマージ(すなわち、G
n−1≡G
n−1∪G
n、HgCアルゴリズムのライン35)して、新しい階層(またはレベル)n−1をもたらす。
【0072】
階層(またはレベル)n−1において、|K
v|=n−1となるようなすべてのKについて、それらが、同じ|K
v|=n−1を有しており、そのような集合の濃度が、nに等しく、またそのような集合のうちの任意の2つの頂点の間にリンクが存在していない場合に、本発明者等は、最初に、同じカラーを用いて、G
n−1の中の頂点の部分集合を着色する。次いで、本発明者等は、G
n−1の中の頂点の残りを着色しようと試みる。
【0073】
G
n−1の中の頂点の残りを着色するために本発明者等が使用する判断基準は、本発明者等が、第1に、HgCアルゴリズムのライン19の中に示されるW
1∈G
n−1から頂点vをランダムに選択することであり、ここで、W
1は、H
C,Qにおいて、「小さな」|K
v|、v∈G
n−1または「大きな程度」を有する頂点の集合を示しており、またここで値a∈[0,1]は、W
1のサイズを制御する。例えば、a=0である場合、そのときにはW
1は、最小の|K
v|、v∈G
n−1を有する頂点を示している。
【0074】
第2に、本発明者等は、同じカラーを用いて、選択された頂点vと、頂点v’∈W
2⊆G
1\{v}とに着色しようと試みており、ここでW
2は、v’∈G
i\{v}を用いてその|K
v’|が、グリーディなやり方で|K
v|に「近接して」いる「i」レベルにおける着色されていない頂点の集合として規定される。パラメータa∈[0,1]と同様に、この近さは、アルゴリズムの中のライン22において示されるように、別のパラメータb∈[0,1]によって取り込まれる。例えば、b=0である場合、そのときには本発明者等は、|K
v’|−|K
v|が最小にされるように、頂点v’から開始する。ここで、本発明者等は、グリーディなやり方で、i番目の階層(またはレベル)において、少なくとも「i」のサイズを有する独立した集合を探している。
【0075】
この第2の着色するプロシージャの後に、本発明者等は、次の階層(またはレベル)の頂点と着色されていない頂点とを一体化しており、この次の階層(またはレベル)は、この場合には、G
n−2である。次いで、本発明者等は、すべての階層(またはレベル)について同じプロシージャを反復する。
【0076】
最後に、本発明者等は、LocalSearch(ローカル・サーチ)と呼ばれる関数を使用して、HgCアルゴリズムのライン39における最後の競合グラフのために使用されるカラーの数をさらに低減させる。LocalSearchの詳細は、以下のアルゴリズムによって与えられる。
【0078】
ここで、N(j)は、頂点「j」の隣接する頂点(頂点「j」を除外する)を示すものとする。明確にするために、本発明者等は、コンマを使用して、A
1を要求するユーザ宛先デバイスと、A
1をキャッシュするユーザ宛先デバイスとを分離している。さらに、cは、着色を示す望ましいベクトルである。HgCアルゴリズムの複雑度は、O(n
3B
2)である。
【0079】
図6に示されるオペレーションは、a=0およびb=0についてのHgCアルゴリズムに関連しており、また
図4におけるオペレーション445の一部分として実行されるオペレーションに対応していることを理解すべきである。最初に、ネットワーク要素151は、競合グラフの中の頂点としての「V」と、着色された頂点の集合としてのV_1と、着色されていない頂点の集合としてのV_2とを規定する。着色するオペレーションが開始される前に、集合V_1は空集合であり、またV_2=Vである。
【0080】
オペレーション600において、ネットワーク要素151は、レベルj=nとなるように初期化し、ここでnは、割り当てられたレベルのうちからの最高のレベルを示している(頂点は、オペレーション430において、それらの割り当てられたレベルに基づいて、順序付けられたことを思い出して欲しい)。オペレーション605において、ネットワーク要素151は、分析のためにレベル「j」を選択する。
【0081】
オペレーション610において、ネットワーク要素151は、ラベルの長さがjに等しいレベルjに属する頂点「v’」を選択し、また分析されるようにその頂点にマーク付けする。オペレーション615において、ネットワーク要素151は、頂点の集合「L」を形成する。ネットワーク要素151は、i)頂点vと同じラベルの長さを有し(すなわち、同じ|K
v|を有し)、ii)着色されておらず、iii)互いにリンクされておらず、またiv)頂点vにリンクされていないレベルjにおける頂点を用いて集合Lを形成する。オペレーション620においては、ネットワーク要素151は、(頂点vを含む)集合Lの中の頂点の数が、レベルjの数に等しいかどうかを決定する。等しくない場合、そのときにはネットワーク要素151は、集合Lの中の頂点に対してカラーを割り当てず、またオペレーション635へと進んで、レベルjにおけるすべての頂点が分析されているかどうかをチェックする。集合Lの中の頂点の数がjに等しい場合、そのときにはネットワーク要素151は、オペレーション625において、新しいカラー(例えば、競合グラフの中でまだ使用されていないカラー)を選択する。オペレーション630において、ネットワーク要素151は、集合Lの中の頂点に新しいカラーを割り当て、集合V_1の中に集合Lの中の頂点を含んでおり、また集合V_2から集合Lの中の頂点を取り除く。
【0082】
次いで、オペレーション635において、ネットワーク要素151は、jというラベルの長さを有しているレベルjにおける頂点のすべてが分析されているかどうかを決定する。分析されていない場合、そのときにはネットワーク要素151は、オペレーション605へと戻る。分析されている場合、そのときにはネットワーク要素151は、オペレーション640へと進む。
【0083】
オペレーション640において、ネットワーク要素151は、レベルjにおけるどの頂点が着色されていないかを決定し、これらの着色されていない頂点を分析されていないとしてマーク付けし、ラベルがレベルj以上の長さを有している頂点「w」を選択し、また頂点「w」を分析されるようにマーク付けする。これは、a=0であるときに、G
n−1の中の頂点のうちの残りに着色することに関して、上記の説明と同等である。
【0084】
オペレーション645において、ネットワーク要素151は、集合Lを空集合に再設定し、また互いにリンクされておらず、また頂点「w」にリンクされていないjに最も近い(またはj以上の)長さを有するラベルを有するレベルjの中に依然として着色されていない頂点を含むように、集合Lを形成する。オペレーション650において、ネットワーク要素151は、(頂点「w」を含む)集合Lの中の頂点の数が、「j」以上であるかどうかを決定する。「j」以上でない場合、そのときにはネットワーク要素151は、どのような頂点にも着色せず、またオペレーション665へと進んで、レベルjにおけるすべての頂点が分析されているかどうかを決定する。
【0085】
オペレーション650において、ネットワーク要素151が、集合Lの中の頂点の総数がj以上であることを決定する場合、そのときにはネットワーク要素151は、オペレーション655において、新しいカラー(例えば、競合グラフの中でまだ使用されていないカラー)を選択する。オペレーション660において、ネットワーク要素151は、集合Lの中の頂点に新しいカラーを割り当て、集合V_1の中に集合Lの中の頂点を含んでおり、また集合V_2から集合Lの中の頂点を取り除く。オペレーション665において、ネットワーク要素151は、レベルjにおけるすべての頂点が分析されているかどうかを決定する。分析されていない場合、そのときにはネットワーク要素151は、オペレーション640へと戻る。分析されている場合、そのときには、オペレーション668において、ネットワーク要素151は、レベルjにおけるすべての着色されていない頂点を次により低いレベルへと移動させて、レベルj−1にもともと属しているすべての頂点の、レベルjに属している着色されていない頂点との結合によって与えられる新しいレベルj−1を作り出す。次に、オペレーション670においては、ネットワーク要素151は、レベルjが、1(または割り当てられたレベルのうちからの最低の割り当てられたレベル)に等しいかどうかを決定する。
【0086】
レベルjが、1(または割り当てられたレベルのうちからの最低の割り当てられたレベル)に等しい場合、そのときにはネットワーク要素151は、オペレーション677へと進む。そうでない場合には、オペレーション675において、ネットワーク要素151は、レベルjをj−1に設定し、またオペレーション605へと戻る。オペレーション675において、ネットワーク要素151は、レベルjにとどまっている任意の着色されていない頂点を次の最低のレベル(すなわち、j−1)へと配置して、競合グラフのすべての頂点が、カラーを割り当てられることを保証することを理解すべきである。オペレーション677において、ネットワーク要素は、競合グラフにおいて使用されるカラーの総数を低減させる試みの中で、ローカル・サーチを実行する。例えば、ネットワーク要素151は、競合グラフの既存のカラーからあるカラーを選択し、選択されたカラーを有する頂点を識別し、また識別された頂点にリンクされる頂点が、異なるカラーを用いて着色されていない場合に、既存のカラーから選択される異なるカラーと、選択されたカラーを置換する。このようにして、選択されたカラーは、既存のカラーの集合から取り除かれる。次いで、ネットワーク要素151は、オペレーション680において、問題解決手法として着色された競合グラフを戻す。
【0087】
図6に示されるオペレーションを考慮すると、(i)部分集合の中の頂点が入力パラメータに基づいており、また選択された頂点のラベルの長さに基づいている望ましい長さを有する割り当てられたラベルを有しており、(ii)部分集合の中の頂点が、選択された頂点に対するリンクを有しておらず、(iii)部分集合の中の頂点が、互いの間にリンクを有しておらず、また(iv)部分集合の濃度が、そのレベルから1を差し引いた値に等しい場合に、
図6のオペレーションは、ネットワーク要素151が、最高のレベルを有する着色されていない頂点を選択することと、選択された頂点に、また複数の頂点の中の着色されていない頂点の部分集合に、同じカラーを割り当てることとに対応している可能性があることもまた、理解すべきである。
図6のオペレーションは、ネットワーク要素151が、最高のレベルのすべての頂点が選択されるまで、反復して、同じカラー・オペレーションを選択すること、および割り当てることを実行することと、依然として着色されていない最高のレベルの頂点を最高のレベルの下の次のレベルへとアップデートすることとに対応していること、をさらに理解すべきである。さらにまた、
図6のオペレーションは、競合グラフの頂点のすべてが着色されるまで、ネットワーク要素151によって実行されることを理解すべきである。さらにまた、レベルはまた、階層と称されることもあり、またレベル(または階層)「j」に割り当てられる頂点の集合は、G
jを用いて示され、そのようにしてレベルjにとどまっているすべての着色されていない頂点をレベルj−1へと配置するオペレーションは、集合G
j−1を形成することと同等であることを理解すべきである。G
j−1を形成するこのオペレーションは、オペレーション668と同等であることを理解すべきである。
【0088】
図7は、少なくとも1つの例示の実施形態による着色された競合グラフを示すものである。例えば、
図7は、
図5に従って構築され、またHgCスキームと、
図6のオペレーションとに従って着色される競合グラフを示すものである。
【0089】
図7においては、本発明者等は、n=3の宛先デバイス(またはユーザ・デバイス)200(すなわち、U={1,2,3})と、m=3のデータ・ファイルA、B、C(すなわち、F={A,B,C})とを有する共用リンク・ネットワークを考慮している。各データ・ファイルは、4つのパケットへと分割される。例えば、データ・ファイルAは、{A1,A2,A3,A4}という4つのパケットを有する。キャッシング・フェーズ(すなわわち、
図3Aおよび3Bと、関連した説明とを参照)では、ユーザ・デバイス1は、{A1,B1,B2,B3,B4,C2}をキャッシュし、ユーザ・デバイス2は、{A1,A2,A3,A4,B1,C2,C3}をキャッシュし、またユーザ・デバイス3は、{A1,A2,A3,B1,B2,B3}をキャッシュするものとする。次いで、ユーザ・デバイス{1,2,3}は、それぞれデータ・ファイル{A,B,C}を要求するものとする。同等に、ユーザ・デバイス1は、A2、A3、A4を要求し、ユーザ・デバイス2は、B2、B3、B4を要求し、またユーザ・デバイス3は、C1、C2、C3、C4を要求する。次いで、本発明者等は、K
A2={1,2,3}(コンマを使用して、パケットA2をキャッシュしているユーザ・デバイスからパケットA2を要求するユーザ・デバイスを分離している。ここで、パケットA2は、ユーザ・デバイス1によって要求されるが、パケットA2は、ユーザ・デバイス2および3によってキャッシュされる);K
A3={1;2,3};K
A4={1;2};K
B2={2;1,3};K
B2={2;1,3};K
B4={2;1};K
C2={3;1,2};K
C3={3;2};K
C4={3}(ここで、C4は、ユーザ・デバイス3によって要求され、またどこでもキャッシュされない)を有している。
【0090】
HgCスキームは、次のように(HgCアルゴリズムと、
図6とを参照して)機能する。j=n=3、G3={A2,A3,B2,B3,C2}の場合に、頂点v=A2とすると、そのときには、B2およびC2が集合Lの中にあることになることが見出される可能性があり、それゆえに、集合L={A2,B2,C2}である。次に、|L|=n=3であるので、本発明者等は、A2、B2、C2を、黒色を用いて着色する。次いで、3=G3\L={A3,B3}となる。以下のループにおいては、本発明者等は、|L|=n=3を伴う集合Iを見出すことができないので、本発明者等は、アルゴリズムのライン21へと移行する。次いで、本発明者等は|L|≧n=3を伴う集合Lを見出すことができないので、次いで、本発明者等は、G2=G2∪{A3}を行い、また次いで、G2=G2∪{B3}を行う。それゆえに、本発明者等は、G2={A3,A4,B3,B4,C3}を得る。次に、本発明者等は、アルゴリズムのライン3へと進む(すなわち、次のループを開始する)。j=j−1=n−1=2の場合には、このループにおいて、本発明者等は、最初に頂点v=A4を選び、次いで、本発明者等は、L={A4,B4}を見出す。本発明者等は、青色を用いて{A4,B4}に着色する(
図4を参照)。次に、G2=G2\{A4,B4}={A3,B3,C3}となる。次いで、アルゴリズムのライン21において、本発明者等は、Kvの最小の長さを有する頂点を見出し、この頂点は、K
C3={3;2}を有するC3であり、次いで本発明者等は、L={C3,B3}を見出す。本発明者等は、赤色を用いてL={C3,B3}に着色する。次に、G2=G2\{C3,B3}={A3}となる。L≧2となるLは、存在しないので、次いで本発明者等は、G1=G1∪{A3}={C4,A3}を行う。次いで、本発明者等は、次のループj=j−1=n−2=1へと進む。次いで、本発明者等は、L={C4}であることを知ることができ、また本発明者等は、紫色を用いて{C4}に着色する。次いで、G1=G1\{C4}={A3}となる。それゆえに、本発明者等は、L={A3}を見出すことができ、また本発明者等は、茶色を用いて{A3}に着色する。完全に着色された競合グラフは、
図7に示される。
【0091】
例示の実施形態が、宛先デバイス200においてより人気のあるファイルのより多くのパケットをキャッシュし、宛先デバイス200によってまとめてキャッシュされる各ファイルの異なるパケットの量を増大させ(または代わりに、最大にし)、またデータ・ファイルの要求されたパケットの完全な集合の内部の符号化されたマルチキャスト送信を可能にする能力を可能にするので、上記で説明されるオペレーションは、改善されたネットワークの性能を実現可能とすることを理解すべきである。送信に先立ってパケットを結合することにより、少なくとも1つの例示の実施形態による配信の方法および/またはデバイスは、ネットワーク要素151の送信の数を低減させることができ、これは、消費電力を低減させ、またネットワーク効率を改善することができることを理解すべきである。例えば、興味のあるいくつかのシナリオにおいては、上記で説明された方法およびデバイスは、10というファクタまで送信の数を低減させることができる。本発明者等が、制限のない複雑度を有する場合、利得は、制限されない可能性がある。さらに、それぞれのユーザの宛先のメモリ(またはキャッシュ)サイズが、帯域幅乗数(bandwidth multiplier)として使用され得ることを理解すべきである。
【0092】
例示の実施形態の変形形態は、例示の実施形態の精神および範囲からの逸脱として見なされるべきではない。当業者には明らかになるような、すべてのそのような変形形態は、本開示の範囲内に含まれることを意図している。