(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023052726
(43)【公開日】2023-04-12
(54)【発明の名称】マルチサーバ通信システムにおけるダウンロード制御
(51)【国際特許分類】
H04L 67/101 20220101AFI20230405BHJP
H04N 21/437 20110101ALI20230405BHJP
H04N 21/442 20110101ALI20230405BHJP
G06F 12/00 20060101ALI20230405BHJP
H04L 69/14 20220101ALI20230405BHJP
H04L 67/06 20220101ALI20230405BHJP
H04L 67/60 20220101ALI20230405BHJP
【FI】
H04L67/101
H04N21/437
H04N21/442
G06F12/00 560A
H04L69/14
H04L67/06
H04L67/60
【審査請求】有
【請求項の数】17
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022167675
(22)【出願日】2022-10-19
(62)【分割の表示】P 2021551581の分割
【原出願日】2020-03-04
(31)【優先権主張番号】62/814,697
(32)【優先日】2019-03-06
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/984,484
(32)【優先日】2020-03-03
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】507236292
【氏名又は名称】ドルビー ラボラトリーズ ライセンシング コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ユイ,ミーンチャオ
(72)【発明者】
【氏名】オニール,オリヴァー
(72)【発明者】
【氏名】アンティオーク,トーマス フランクリン
(72)【発明者】
【氏名】ナグシン,ヴァヒド
(72)【発明者】
【氏名】クラウド,ジェイソン マイケル
(72)【発明者】
【氏名】リード,マーク クレイグ
(72)【発明者】
【氏名】リードミラー,ジェフリー
(72)【発明者】
【氏名】オズボーン,エリオット
(57)【要約】
【課題】 マルチソースコンテンツ配信におけるデータトラフィック管理のための機器及び方法が記載される。
【解決手段】 機器は、ダウンロード部と制御部とを含む。機器は、通信リンクを介してサーバに結合される。制御部は、リンクの品質に関する所定の情報に基づき、サーバに対する初期ダウンロード要求を決定するよう構成される。制御部は、ダウンロード部により、サーバへ初期ダウンロード要求を送信するよう更に構成される。制御部は、ダウンロード部が通信リンクを介してサーバからデータファイルに関連付けられたデータを受信した後に、通信リンクの品質に関する情報を更新するよう更に構成される。制御部は、リンクの品質に関する更新された情報に基づき、サーバに対する後続のダウンロード要求を決定するよう更に構成される。制御部は、ダウンロード部により、サーバへ後続のダウンロード要求を送信するよう更に構成される。
【選択図】
図1
【特許請求の範囲】
【請求項1】
機器であって、
複数の通信リンクを介して複数のサーバに結合されるダウンロード部と、
制御部と、
を含み、前記制御部は、
前記複数の通信リンクの品質に関する所定の情報に基づき、前記複数のサーバに対する初期ダウンロード要求を決定し、
前記ダウンロード部により、前記複数のサーバへ前記初期ダウンロード要求を送信し、
前記ダウンロード部が前記複数の通信リンクを介して前記複数のサーバからデータファイルに関連付けられたデータを受信した後に、前記複数の通信リンクの前記品質に関する情報を更新し、
前記複数の通信リンクの前記品質に関する更新された情報に基づき、前記複数のサーバに対する後続のダウンロード要求を決定し、
前記ダウンロード部を介して、前記複数のサーバへ前記後続のダウンロード要求を送信する、
よう構成される、機器。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願]
本願は、参照により全体がここに組み込まれる、2019年3月6日に出願した米国仮出願番号第62/814,697号及び2020年3月3日に出願した米国特許出願番号第62/984,484号、の優先権を主張する。
【0002】
[技術分野]
本願は、概してマルチソースコンテンツ配信に関し、特にマルチソースコンテンツ配信の間の超過データトラフィック削減に関する。
【背景技術】
【0003】
冗長符号(Redundancy code)は、データファイルをK個の等しい長さの元のシンボルにパーティションし、N>Kコーディングシンボルを生成する。各シンボルは、元のシンボルの混合(例えば、線形結合)である。冗長符号は、任意のK+δ個のコーディングシンボルを用いて、K個の元のシンボルの復号(及び従ってデータファイルの復元)を可能にする。ここでδ≧0は小さい整数である。幾つかの例示的な冗長符号は、Reed-Solomon符号、低密度パリティチェック符号、噴水(fountain)符号、及びネットワーク符号を含む。
【発明の概要】
【0004】
本開示の種々の態様は、マルチソースコンテンツ配信システムにおける超過データトラフィックを管理する回路、システム、及び方法に関する。
【0005】
本開示は、一実装では、ダウンロード部と制御部とを含む機器を提供する。ダウンロード部は、複数の通信リンクを介して複数のサーバに結合される。制御部は、複数の通信リンクの品質に関する所定の情報に基づき、複数のサーバに対する初期ダウンロード要求を決定するよう構成される。制御部は、ダウンロード部により、複数のサーバへ初期ダウンロード要求を送信するよう更に構成される。制御部は、ダウンロード部が複数の通信リンクを介して複数のサーバからデータファイルに関連付けられたデータを受信した後に、複数の通信リンクの品質に関する情報を更新するよう更に構成される。制御部は、複数のリンクの品質に関する更新された情報に基づき、複数のサーバに対する後続のダウンロード要求を決定するよう更に構成される。制御部は、ダウンロード部により、複数のサーバへ後続のダウンロード要求を送信するよう更に構成される。
【0006】
本開示は、一実装では、方法であって、複数のサーバをダウンロード部に結合する複数の通信リンクの品質に関する所定の情報に基づき、複数のサーバに対する初期ダウンロード要求を決定するステップを含む方法を更に提供する。方法は、ダウンロード部により、複数のサーバへ初期ダウンロード要求を送信するステップを更に含む。方法は、ダウンロード部において、複数の通信リンクを介して、複数のサーバから、データファイルに関連付けられたデータを受信するステップを更に含む。方法は、ダウンロード部が複数の通信リンクを介して複数のサーバからデータを受信した後に、複数の通信リンクの品質に関する情報を更新するステップを更に含む。方法は、複数のリンクの品質に関する更新された情報に基づき、複数のサーバに対する後続のダウンロード要求を決定するステップを更に含む。方法は、ダウンロード部により、複数のサーバへ後続のダウンロード要求を送信するステップを更に含む。
【0007】
本開示は、一実装では、命令を格納している非一時的コンピュータ可読記憶媒体であって、該命令はコンピュータのプロセッサにより実行されると、該コンピュータに動作を実行させ、該動作は、複数のサーバをダウンロード部に結合する複数の通信リンクの品質に関する所定の情報に基づき、複数のサーバに対する初期ダウンロード要求を決定するステップを含む、非一時的コンピュータ可読記憶媒体を更に提供する。動作は、ダウンロード部により、複数のサーバへ初期ダウンロード要求を送信するステップを更に含む。動作は、ダウンロード部において、複数の通信リンクを介して、複数のサーバから、データファイルに関連付けられたデータを受信するステップを更に含む。動作は、ダウンロード部が複数の通信リンクを介して複数のサーバからデータを受信した後に、複数の通信リンクの品質に関する情報を更新するステップを更に含む。動作は、複数のリンクの品質に関する更新された情報に基づき、複数のサーバに対する後続のダウンロード要求を決定するステップを更に含む。動作は、ダウンロード部により、複数のサーバへ後続のダウンロード要求を送信するステップを更に含む。
【0008】
このように、本開示の種々の態様は、少なくともマルチソースコンテンツ配信の技術分野において、超過データトラフィックの低減及び実質的な向上を提供する。
【図面の簡単な説明】
【0009】
本開示は、限定ではなく、添付の図面の図中の例を用いて説明され、図中の同様の参照符号は同様の要素を表す。
【0010】
【
図1】本開示の実装によるマルチソースコンテンツ配信のための例示的なシステムのブロック図を示す。
【0011】
【
図2】本開示の実装による例示的な制御部のブロック図を示す。
【0012】
【
図3A】本開示の実装による、プログレッシブ部分的ダウンロード要求によるマルチソースコンテンツ配信におけるデータトラフィック管理のための例示的な方法のフロー図を示す。
【
図3B】本開示の実装による、プログレッシブ部分的ダウンロード要求によるマルチソースコンテンツ配信におけるデータトラフィック管理のための例示的な方法のフロー図を示す。
【0013】
【
図4】本開示の実装による、ソフトダウンロード終了要求によるマルチソースコンテンツ配信におけるデータトラフィック管理のための例示的な方法のフロー図を示す。
【0014】
【
図5】本開示の実装による、ダウンロードレート適応により生成される例示的なサーバストリーミングレートを示す。
【0015】
【
図6】本開示の実装による、ダウンロードレート適応によるマルチソースコンテンツ配信におけるデータトラフィック管理のための例示的な方法のフロー図を示す。
【0016】
【
図7】本開示の実装による、マルチソースコンテンツ配信におけるデータトラフィック管理のための例示的な方法のフロー図を示す。
【0017】
【
図8】本開示の実装による、マルチソースコンテンツ配信におけるデータトラフィック管理に関連するニューラルネットワークの例示的なトレーニング処理のフロー図を示す。
【0018】
【
図9】本開示の実装による、強化学習を通じるマルチソースコンテンツ配信におけるデータトラフィック管理のための制御部の例示的なトレーニング処理のフロー図を示す。
【発明を実施するための形態】
【0019】
冗長コーディングマルチソースコンテンツ配信システムは、複数のサーバと、1個の受信機と、を含む。各サーバは、同じデータファイルのコーディングシンボルの異なるセットを格納する。システムは、全部のサーバがコーディングシンボルを受信機へストリーミングし、受信機が全部のサーバから復号のために十分なコーディングシンボルをダウンロードすると、受信機が全部のストリームを終了するので、全部のサーバ-受信機リンクの集約された(aggregated)帯域幅を享受できるようにする。このアプローチを用いて、全てのリンクは、ダウンロードの過程を通じて完全に利用され、これはスループットを最大化する。しかしながら、このダウンロード方針は、サーバ間で、受信機により要求されるK+δ個のコーディングシンボルより有意に多い超過(excess)トラフィックを生成し得る。1つの例示的な原因はネットワーク遅延である。サーバがK+δ個のコーディングシンボルを送信すると、受信機は、1ラウンドトリップ時間の遅延の後にこれらのコーディングシンボルの受信を終え、次に終了要求を送信する。この終了要求は、もう1つのラウンドトリップ時間の後に、サーバにより受信される。これは、受信機が復号するのに十分なデータが送信されたときと終了要求の受信との間に、全部で1ラウンドトリップ時間の遅延をもたらす。この期間中、各サーバは、超過データ又はオーバヘッドと呼ばれ得る冗長なコーディングシンボルをストリーミングし続ける。これらの冗長なコーディングシンボルは、全てのリンクに存在し、特定の実装の下ではサーバの及び受信機のより下層の通信バッファにも存在し得る。これらの冗長コーディングシンボルは、サーバイグレス(及び従ってコスト)を増大し、他のネットワークフローのために利用可能なネットワーク帯域幅を低下させ、後続のデータファイルの配信に対してラインオブヘッド閉塞(head-of-line blockage)を引き起こし得る。
【0020】
図1は、本開示の実装によるマルチソースコンテンツ配信のためのシステム100の例のブロック図である。
図1に示したシステム100は、それぞれ同じデータファイルのコーディングシンボル104を格納する複数のサーバ102を含む。幾つかの実装では、複数のサーバ102の各々は、同じデータファイルのコーディングシンボル104の異なるセットを格納する。幾つかの実装では、複数のサーバ102の各々は、同じデータファイルのコーディングシンボル104の完全に同一のセットを格納する。複数のサーバ102は、以下に更に詳述され、各々が出力バッファ106を含み、特に、コーディングシンボル104をシステム100の他のコンポーネント及びシステム100の外部のコンポーネントへ送信又はストリーミングするよう構成される。実際には、複数のサーバ102は、1つ以上の電子プロセッサ、メモリ、インタフェース、ディスプレイ、スピーカ、電源、等のような追加コンポーネントを含んでよい。説明を容易にするために、これらの追加コンポーネントはここに示されない。
図1に示したシステム100は3個のサーバを含む。実際には、システム100は、3個より少ないサーバ又は3個より多いサーバを含んでよい。
【0021】
図1に示したシステム100は、受信機108(例えば、オーディオ/ビデオ受信機)も含む。受信機108は、以下に更に詳述され、ダウンロード部110と制御部112とを含む。実際には、受信機108は、1つ以上のディスプレイ、スピーカ、電源、メモリ、等のような追加コンポーネントを含んでよい。説明を容易にするために、これらの追加コンポーネントはここに示されない。
【0022】
図1に示したダウンロード部110は、入力バッファ114を含み、複数の通信リンク116を介して複数のサーバ102に通信可能に結合される。複数の通信リンク116は、有線リンク、無線リンク、又はそれらの組合せを含む。上述のように、複数のサーバ102の各々は、データファイルのコーディングシンボル104の異なるセットを格納する。データファイルを復号するために、ダウンロード部110は、複数のサーバ102へダウンロード要求を送信し、後に複数のサーバ102の各々に格納されたコーディングシンボル104を受信するよう構成される。ダウンロード部110は、複数の通信リンク116を介して、入力バッファ114により、コーディングシンボル104を複数のサーバ102から受信する。データファイルを復号するために十分な量のコーディングシンボル104を受信した後に、ダウンロード部110は、複数のサーバ102からのデータ転送を停止するために、複数のサーバ102へダウンロード終了要求を送信するよう構成される。
【0023】
制御部112は、ダウンロード部110に通信可能に結合され、特に、後に更に詳述するように、複数のサーバ102の各々からダウンロード部110が要求すべきデータを決定するよう構成される。
図2は、本開示の実装による制御部112の一例のブロック図である。
図2に示した制御部112は、電子プロセッサ202(例えば、1つ以上のマイクロプロセッサ、特定用途向け集積回路(ASIC)、システムオンチップ(SoC)、又は他の電子制御部)、メモリ204、入力/出力インタフェース206、ユーザインタフェース208、及びバス210を含む。実際には、制御部112は、通信回路、1つ以上のセンサ、1つ以上の電源、等のような追加コンポーネントを含んでよい。説明を容易にするために、これらの追加コンポーネントはここに示されない。
【0024】
バス210は、制御部112の種々のコンポーネントを結合する。例えば、メモリ204を電子プロセッサ202に結合することを含む。メモリ204は、例えば、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能なプログラマブル読み出し専用メモリ(EEPROM)、他の非一時的コンピュータ可読媒体、又はそれらの組合せを含む。電子プロセッサ202は、プログラム命令及びデータをメモリ204から読み出し、特にここに記載の方法を実行するために命令を実行するよう構成される。幾つかの実装では、メモリ204は、電子プロセッサ202に含まれる。
【0025】
入力/出力インタフェース206は、制御部112内のコンポーネント及びシステム100の他のコンポーネント、並びにシステム100の外部のコンポーネントの間で情報を転送するルーチンを含む。入力/出力インタフェース206は、1つ以上の有線結合(例えば、有線、光ファイバ、等)を介して、無線で、又はそれらの組合せにより、信号を送信及び受信するよう構成される。信号は、例えば、ダウンロード要求、終了要求、コーディングシンボル、又はそれらの組合せを含んでよい。
【0026】
ユーザインタフェース208は、例えば、ディスプレイ及び入力装置、タッチスクリーンディスプレイ、複数のノブ、ダイヤル、スイッチ、ボタン、フェーダ、等を有するコンピュータを含む。幾つかの実装では、ユーザインタフェース208は、電子プロセッサ202により実行されるソフトウェアアプリケーションにより生成される視覚的出力を表示するタッチ感応インタフェース(例えば、タッチスクリーンディスプレイ)を含む。視覚的出力は、例えば、グラフィカル指示子、光、色、テキスト、画像、グラフィカルユーザインタフェース(GUI)、それらの組合せ、等を含む。タッチ感応インタフェースは、また、検出した物理的接触(例えば、検出されたキャパシタンス又は抵抗)を用いてユーザ入力を受信する。幾つかの実装では、ユーザインタフェース208は、制御部112、受信機108、又はシステム100と別個である。
【0027】
<プログレッシブ部分的ダウンロード要求>
【0028】
幾つかの実装では、ダウンロード部110は、複数のサーバ102の各々へ、1つ以上の部分的ダウンロード要求を続けて送信することにより、データファイルをプログレッシブに(progressively)ダウンロードする。制御部112は、複数のサーバ102の各々からいつ及びどれくらいのデータを要求するかを決定する。ファイルが復号可能になると、制御部112は、ダウンロード部110に、複数のサーバ102の各々へダウンロード終了要求を送信するよう指示する。幾つかの実装では、部分的ダウンロード要求は、2つのフェーズ、つまり、初期フェーズ及びレフィル(refill)フェーズに分けられる。
【0029】
初期フェーズの間、1回の初期ダウンロード要求が、複数のサーバ102の各々に対して行われる。複数のサーバ102の全部に渡り要求されるコーディングシンボルの合計数K’は、K(1+p)より少ない。ここで、Kは、復号するために必要な有用なコーディングシンボルの量であり、p≧0は、超過データの許容量である。幾つかの実装では、K’の値は、各通信リンクの帯域幅、遅延、又はその両方の変動に依存してよい。通常、複数の通信リンク116が安定しているほど、K’はK(1+p)に近くなる。
【0030】
レフィルフェーズの間、追加ダウンロード要求(例えば、後続のダウンロード要求)が、(i)各サーバ102とダウンロード部110との間のそれぞれの通信リンク116を完全に利用されるように保つために、及び(ii)超過データを最小化するためにサーバ102から要求される合計データ量を調整するために、複数のサーバ102の一部又は全部へ送信される。
【0031】
図3A及び3Bは、本開示の実装による、プログレッシブ部分的ダウンロード要求によるマルチソースコンテンツ配信におけるデータトラフィック管理のための方法300の例のフロー図を示す。
図3Aに示した方法300のステップは、上述の初期フェーズの一例である。ブロック302で、初期負荷要求K’が(例えば、制御部112により)決定される。初期負荷要求K’は、初期ダウンロード要求の中で要求されるべきコーディングシンボル104の合計量である。幾つかの実装では、初期要求負荷K’は、通信リンク116の安定性に基づき決定される。例えば、初期負荷要求K’は、通信リンク116の帯域幅の正規化された標準偏差に基づき決定されてよい。正規化された帯域幅標準偏差は、前の情報(例えば、観察)による通信リンクの帯域幅の標準偏差と平均との間の比である。全部の通信リンク116の正規化された帯域幅標準偏差は、平均化されて、0.5のような負ではない分数cにより制限される分散係数νを生じる。分散係数νは次式により与えられる:
【数1】
ここで、Nは通信リンク116の合計数であり、σ
iは、通信リンクiの観察された標準偏差であり、w
iは、通信リンクiの平均帯域幅である。幾つかの実装では、通信リンクiの帯域幅w
iは、通信リンクiの前に観察された性能に基づき(例えば、通信リンクiの前に観察された性能を平均化することにより)決定される。
【0032】
初期負荷要求K’は次式により与えられる:
【数2】
ここで、νは、上述の分散係数であり、Kは、データファイルを復号するために要求され有用なシンボルの数であり、pは、超過データの許容量である。幾つかの実装では、超過データの許容量pは、システム100のシステムレベルの要件に基づき決定される。幾つかの実装では、超過データの許容量pは、システム100の特定のコンポーネントに少なくとも部分的に基づき決定される。
【0033】
ブロック304で、初期ダウンロード完了時間Tが(例えば、制御部112により)決定される。幾つかの実装では、制御部112は、合計でK’個のコーディングシンボル104が受信され、複数の通信リンク116の各々が完全に利用されるとき、初期ダウンロード完了時間Tを、複数のサーバ102の各々により提供された合計データ量に基づき、決定するよう構成される。例えば、初期ダウンロード完了時間Tは、Tについて次式を解くことにより決定されてよい:
【数3】
ここで、Nは、通信リンク116の合計数であり、d
iは、通信リンクiのラウンドトリップ時間であり、w
iは、通信リンクiの平均帯域幅であり、sは、コーディングシンボルのサイズであり、K’は、データファイルを復号するために依然として要求されているコーディングシンボル104の量(つまり初期負荷要求)である。
【0034】
ブロック306で、複数のサーバ102の各々の初期サーバ負荷L
iが、(例えば、制御部112により)決定される。幾つかの実装では、制御部112は、サーバiの初期サーバ負荷L
iを、初期ダウンロード完了時間Tに部分的に基づき決定するよう構成される。例えば、初期ダウンロード完了時間Tが通信リンクiのラウンドトリップ時間d
iより大きいとき、サーバiの初期サーバ負荷L
iは、次式により与えられる:
【数4】
ここで、diは、通信リンクiのラウンドトリップ時間であり、w
iは、通信リンクiの平均帯域幅であり、pは超過データの許容量である。
【0035】
(例えば、高いラウンドトリップ時間、小さい帯域幅、又はその両方により)サーバiがゼロ負荷を割り当てられる状況では、制御部112は、サーバiに、初期負荷要求K’より小さい初期サーバ負荷L
iを割り当てるよう構成される。例えば、初期ダウンロード完了時間Tが通信リンクiのラウンドトリップ時間d
iより小さい又は等しいとき、サーバiの初期サーバ負荷L
iは、次式により与えられる:
【数5】
ここで、cは、負ではない分数(例えば、0.5)であり、Kは、データファイルを復号するために要求されている有用なシンボルの数であり、pは、超過データ許容量であり、Nは、通信リンク116の合計数である。
【0036】
ブロック308で、複数のサーバ102の各々から最初に要求すべきコーディングシンボル104の量n
iが、(例えば、制御部112により)決定される。幾つかの実装では、制御部112は、複数のサーバ102の各々の初期サーバ負荷L
iをコーディングシンボル104のサイズsにより丸め込むことにより、コーディングシンボル104の量n
iを決定するよう構成される。例えば、サーバiからの要求すべきコーディングシンボル104の量n
iは、次式で与えられる:
【数6】
ここで、L
iは、サーバiの初期サーバ負荷であり、sは、シンボルのサイズである。ここで使用されるとき、ceil(x)は、xより大きい最小の整数を返す天井関数である。
ブロック310で、初期ダウンロード要求が、(例えば、ダウンロード部110により)複数のサーバ102の各々へ送信される。例えば、ダウンロード部110は、複数のサーバ102の各々へ、複数の通信リンク116の各々を介して、初期ダウンロード要求を含む信号を送信する。幾つかの実装では、初期ダウンロード要求の各々は、特に、ダウンロードすべきデータファイルの識別子、及びサーバ102からの要求すべきコーディングシンボル104の量n
iを含む。例えば、ダウンロード部110は、初期ダウンロード要求をサーバiへ、通信リンクiを介して、送信する。これは、ダウンロードすべきデータファイルの識別子、及びサーバiからの要求すべきコーディングシンボル104の量n
iを含む。
【0037】
幾つかの実装では、初期負荷要求K’は、複数のサーバ102に不均一に割り当てられる。例えば、より高い性能を有するサーバ102は、初期負荷要求K’のうち、より低い性能を有するサーバより多くを割り当てられる。方法300のブロック302で上述したように、初期負荷要求K’は、複数の通信リンク116の各々のラウンドトリップ時間及び帯域幅に基づき割り当てられる。幾つかの実装では、初期負荷要求K’は、複数のサーバ102の全部に渡り均一に割り当てられる。
【0038】
図3Bを参照すると、
図3Bに示した方法300のステップは、上述のレフィルフェーズの一例である。ブロック312で、コーディングシンボル104が、複数のサーバ102のうちの1つから、複数の通信リンク116のうちの1つを介して、(例えば、ダウンロード部110により)受信される。例えば、ダウンロード部110は、複数のサーバ102のうちの1つから、1つ以上のコーディングシンボル104を含むコーディングデータパケットを受信する。ブロック314で、複数の通信リンク116の品質に関する更新された情報が、(例えば、制御部112により)決定される。幾つかの実装では、制御部112は、複数の通信リンク116の各々について、更新された帯域幅及び瞬間遅延τ
iを決定する。例えば、制御部112は、最も最近にダウンロードされたコーディングデータパケットの受信の間に測定されたダウンロード速度に基づき、通信リンクiの更新された帯域幅w
iを決定する。更に、制御部112は、ダウンロード部110が通信リンクiを介して任意のデータを受信したか否かに基づき、通信リンクiの瞬間遅延τ
iを決定する。例えば、制御部112は、ダウンロード部110が通信リンクiを介して任意のデータを受信したとき、通信リンクiについて0の瞬間遅延τ
iを決定する。ダウンロード部110が通信リンクiを介して任意のデータを受信しなかった場合、通信リンクiのラウンドトリップ時間d
iは、初期ダウンロード要求が送信されてから経過した時間tより大きく、制御部112は、通信リンクiの瞬間遅延τ
iをd
iとtとの間の差として決定する。
【0039】
ブロック316で、更新されたダウンロード完了時間T’が(例えば、制御部112により)決定される。幾つかの実装では、制御部112は、更新されたダウンロード完了時間T'を、複数の通信リンク116の品質に関する更新された情報、及びデータファイルを復号するために依然として要求されているコーディングシンボル104の合計数K’’に基づき、決定するよう構成される。例えば、更新されたダウンロード完了時間T’は、T’について次式を解くことにより決定されてよい:
【数7】
ここで、Nは、通信リンク116の合計数であり、τ
iは、通信リンクiの瞬間遅延であり、w
iは、通信リンクiの更新された帯域幅であり、sは、シンボルのサイズであり、K’’は、データファイルを復号するために依然として要求されているコーディングシンボル104の量である。
【0040】
ブロック318で、複数のサーバ102の各々の更新されたサーバ負荷L
iが、(例えば、制御部112により)決定される。幾つかの実装では、制御部112は、サーバiの更新されたサーバ負荷L
iを、更新されたダウンロード完了時間T’及び通信リンクiの更新された帯域幅w
iに基づき、決定するよう構成される。例えば、サーバiの更新されたサーバ負荷L
iは、次式により与えられる:
【数8】
ここで、T’は、更新されたダウンロード完了時間であり、w
iは、通信リンクiの更新された帯域幅である。
【0041】
幾つかの実装では、後続のダウンロード要求(レフィル要求としても知られる)は、サーバ102の更新されたサーバ負荷が受信されていないその現在の負荷より高いときにのみ、サーバ102へ送信される。従って、ブロック320で、複数のサーバ102の各々の負荷の差δiが、(例えば、制御部112により)決定される。例えば、サーバiの負荷の差δiは、サーバiの更新されたサーバ負荷Liとサーバiの現在の未配信負荷Li’との間の差である。
【0042】
ブロック322で、制御部112は、複数のサーバ102のうちのいずれかが負荷が不足している(低負荷、又はunder-loaded)かどうかを決定する。例えば、制御部112は、サーバiの負荷の差δ
iが0より大きいとき、サーバiが低負荷であると決定する。更に、制御部112は、サーバiの負荷の差δ
iが0以下であるとき、サーバiが十分な負荷を有すると決定する。複数のサーバ102のうちのいずれも低負荷ではないとき、後続のダウンロード要求は複数のサーバ102へ送信されず、方法300は、ブロック312に戻り、複数のサーバ102から追加コーディングシンボル104を受信する。代替として、複数のサーバ102のうちのいずれかが低負荷であるとき、低負荷サーバの各々からの要求すべきコーディングシンボル104の更新された量n
iは、ブロック324で(例えば、制御部112により)決定される。例えば、サーバiからの要求すべきコーディングシンボル104の更新された量n
iは、次式で与えられる:
【数9】
ここで、δ
iは、サーバiの負荷の差であり、w
iは、通信リンクiの更新された帯域幅であり、d
iは、通信リンクiのラウンドトリップ時間であり、sは、シンボルのサイズである。
【0043】
ブロック326で、後続のダウンロード要求が、(例えば、ダウンロード部110により)低負荷のサーバ102へ送信される。幾つかの実装では、後続のダウンロード要求の各々は、特に、低負荷のサーバ102からの要求すべきコーディングシンボル104の更新された量niを含む。例えば、ダウンロード部110は、後続のダウンロード要求をサーバiへ、通信リンクiを介して、送信する。これは、サーバiからの要求すべきコーディングシンボル104の更新された量niを含む。幾つかの実装では、後続のダウンロード要求を送信した後に、方法300は、ブロック312に戻り、複数のサーバ102から追加コーディングシンボル104を受信する。
【0044】
<ソフトダウンロード終了要求>
【0045】
幾つかの実装では、ダウンロード部110は、特定の時間に、複数のサーバ102の各々へダウンロード終了要求を送信するよう構成される。その結果、複数のサーバ102の各々は、サーバ102が自身出力バッファ106に最後の有用なシンボルをロードした直後にダウンロード終了要求を受信する。複数のサーバ102の各々は、ダウンロード終了要求を受信し、サーバ102が自身の出力バッファ106に最後の有用なシンボルをロードした直後に実行する。このように、複数のサーバ102の各々はダウンロード部110へ少ししか又は全く超過シンボルを送信しないので、複数のサーバ102の各々により送信される超過データの量は、最小化される。
【0046】
図4は、本開示の実装によるソフトダウンロード終了要求によるマルチソースコンテンツ配信におけるデータトラフィック管理のための方法400の例のフロー図を示す。ブロック402で、コーディングシンボルが、(例えば、ダウンロード部110により)複数のサーバ102の各々から要求される。幾つかの実装では、コーディングシンボルは、上述の方法300の任意の部分(又は部分の任意の組合せ)を用いて、複数のサーバ102から要求される。ブロック404で、コーディングシンボル104が、複数のサーバ102のうちの1つから、複数の通信リンク116のうちの1つを介して、(例えば、ダウンロード部110により)受信される。例えば、ダウンロード部110は、複数のサーバ102のうちの1つから、1つ以上のコーディングシンボル104を含むコーディングデータパケットを受信する。ブロック406で、制御部112は、ダウンロードが大部分完了しているかどうかを決定する。幾つかの実装では、制御部112は、ダウンロード部110が複数のサーバ102からコーディングシンボル104の大半を受信したとき、ダウンロードが大部分完了していると決定する。例えば、制御部112は、ダウンロード部110が最終フェーズ閾値Th’より大きいコーディングシンボル104の量を受信したとき、ダウンロードが大部分完了していると決定する。最終フェーズ閾値Th’は、次式により与えられる:
【数10】
ここで、sは、コーディングシンボルのサイズであり、Kは、データファイルを復号するために要求されている有用なコーディングシンボルの量であり、Nは、通信リンク116の合計数であり、w
iは、通信リンクiの平均帯域幅であり、d
iは、通信リンクiのラウンドトリップ時間である。ダウンロードが大部分完了していないとき、方法400は、ブロック404に戻り、複数のサーバ102から追加コーディングシンボル104を受信する。
【0047】
代替として、ダウンロードが大部分完了しているとき、ブロック408で、ダウンロード完了時間Tが(例えば、制御部112により)決定される。例えば、ダウンロード完了時間Tは、Tについて次式を解くことにより決定されてよい:
【数11】
ここで、Nは、通信リンク116の合計数であり、d
iは、通信リンクiのラウンドトリップ時間であり、w
iは、通信リンクiの平均帯域幅であり、sは、コーディングシンボルのサイズであり、Kは、データファイルを復号するために要求されている有用なシンボルの量である。
【0048】
ブロック410で、複数のサーバ102の各々が最後の有用なコーディングシンボル104をそれらの出力バッファ106にロードするサーバ完了時間U
iが、(例えば、制御部112により)決定される。幾つかの実装では、制御部112は、サーバ完了時間U
iを、複数の通信リンク116の品質に関する情報及びサーバの出力バッファ106のサイズに基づき、決定する。例えば、サーバiのサーバの完了時間U
iは、次式により与えられる:
【数12】
ここで、d
iは、通信リンクiのラウンドトリップ時間であり、Tは、ダウンロード完了時間であり、b
iは、サーバiの出力バッファ106のサイズであり、w
iは、通信リンクiの帯域幅である。
【0049】
ブロック412で、ダウンロード終了要求が、(例えば、ダウンロード部110により)複数のサーバ102へ送信される。ダウンロード終了要求の各々は、特定のサーバのサーバ完了時間の前の設定された時間期間に、該特定のサーバへ送信される。例えば、ダウンロード終了要求は、サーバiへ、時間Ui-(di/2)において送信される。幾つかの実装では、複数のサーバ102のうちの特定のサブセットは、データファイルがダウンロード可能になるまで、ダウンロード終了要求を送信されない。
【0050】
<ダウンロードレート適応>
【0051】
幾つかの実装では、データファイルをダウンロードしている間、制御部112は、(i)データファイルが大部分復号可能になるまで、最大ストリーミングレートを維持するため、及び(ii)最後の数個のコーディングシンボルをダウンロードするために低減したストリーミングレートを使用するために、複数のサーバ102の各々のストリーミングレートを適応する。例えば、
図5に示すように、サーバストリーミングレートは、全部でK-ε個のコーディングシンボルがダウンロードされるまで、その最大レートr
1に設定される。ここで、Kは、データファイルを復号するために要求されている有用なコーディングシンボルの量であり、εは、小さい正整数である。
図5に示したサーバストリーミングレートは、データファイルが復号可能になるまで、小さいレートr
2にまで低減される。この後、ダウンロードが終了する。
【0052】
幾つかの実装では、制御部112は、複数のサーバ102の出力バッファ106のサイズを適応することにより、複数のサーバ102のストリーミングレートを適応する。例えば、制御部112は、HTTP/2セッションウインドウサイズ適応を通じて、複数のサーバ102の出力バッファ106のサイズを適応する。通常、サーバ102の出力バッファ106のサイズを増大することは、ストリーミングレート及び対応する通信リンク116の帯域幅を増大する。
【0053】
図6は、本開示の実装によるダウンロードレート適応によるマルチソースコンテンツ配信におけるデータトラフィック管理のための方法600の例のフロー図を示す。ブロック602で、コーディングシンボルが、(例えば、ダウンロード部110により)複数のサーバ102の各々から要求される。幾つかの実装では、コーディングシンボルは、上述の方法300の任意の部分(又は部分の任意の組合せ)を用いて、複数のサーバ102から要求される。
【0054】
ブロック604で、複数のサーバ102の出力バッファ106は、大きな値(「第1値」の例)に設定される。例えば、サーバiの出力バッファ106の大きな値L_Buf
iは、次式により与えられる:
【数13】
ここで、w
iは、通信リンクiの帯域幅であり、d
iは、通信リンクiのラウンドトリップ時間であり、piは、(i)サーバiのストリーミングレートが帯域幅w
iに達することを許容する、及び(ii)コーディングシンボル104のサイズsの倍数である、最小の正の数である。
【0055】
ブロック606で、コーディングシンボル104が、複数のサーバ102から、複数の通信リンク116を介して、(例えば、ダウンロード部110により)受信される。例えば、ダウンロード部110は、複数のサーバ102から、コーディングシンボル104を含むコーディングデータパケットを受信する。ブロック608で、制御部112は、ダウンロードが大部分完了しているかどうかを決定する。幾つかの実装では、制御部112は、ダウンロード部110が複数のサーバ102からコーディングシンボル104の大半を受信したとき、ダウンロードが大部分完了していると決定する。例えば、制御部112は、ダウンロード部110が複数のサーバ102から全部でK-ε個のコーディングシンボル104を受信したとき、ダウンロードが大部分完了していると決定する(「過半数(majority)閾値」の例)。ここで、Kは、データファイルを復号するために要求されている有用なコーディングシンボルの量であり、εは、小さい正整数である。ダウンロードが大部分完了していないとき、方法600は、ブロック604に戻り、複数のサーバ102から追加コーディングシンボルを受信する。
【0056】
代替として、ダウンロードが大部分完了しているとき、ブロック610で、複数のサーバ102の出力バッファ106が小さい値(「第2値」の例)に設定される。例えば、サーバiの出力バッファ106の小さなサイズ値S_Buf
iは、次式により与えられる:
【数14】
ここで、w
iは、通信リンクiの帯域幅であり、d
iは、通信リンクiのラウンドトリップ時間であり、qiは、(i)p
iより小さい、及び(ii)コーディングシンボル104のサイズsの倍数である、正の数である。
【0057】
ブロック612で、追加コーディングシンボル104が、複数のサーバ102から、複数の通信リンク116を介して、(例えば、ダウンロード部110により)受信される。ブロック614で、制御部112は、データファイルが復号可能であるかどうかを決定する。幾つかの実装では、データファイルは、ダウンロード部110が、データファイルを復号するために要求されている十分な量のコーディングシンボル104を受信したとき、復号可能である。例えば、制御部112は、ダウンロード部110が複数のサーバ102から全部でK+δ個のコーディングシンボル104を受信したとき、データファイルが復号可能であると決定する。ここで、Kは、データファイルを復号するために要求されている有用なコーディングシンボルの量であり、δは、小さい正整数である。データファイルが復号可能ではないとき、方法600は、ブロック612に戻り、複数のサーバ102から追加コーディングシンボルを受信する。代替として、データファイルが復号可能であるとき、ブロック616で、ダウンロード終了要求が、(例えば、ダウンロード部110により)複数のサーバ102へ送信される。
【0058】
図7は、本開示の実装によるマルチソースコンテンツ配信におけるデータトラフィック管理のための方法700の例のフロー図を示す。ブロック702で、複数のサーバ102の初期ダウンロード要求が、(例えば、制御部112により)決定される。幾つかの実装では、初期ダウンロード要求の各々は、ダウンロード部110へ特定量(「第1の量」の例)のデータを送信するための、特定のサーバに対する要求を含む。例えば、
図3Aのブロック308に関して上述したように、初期ダウンロード要求の各々は、ダウンロード部110へ特定の量のコーディングシンボル104を送信するための、特定のサーバに対する要求を含んでよい。幾つかの実装では、例えば、
図6のブロック604に関して上述したように、初期ダウンロード要求の各々は、特定のサーバの出力バッファ106を大きな値に設定するための、該特定のサーバに対する要求を含む。
【0059】
初期ダウンロード要求は、複数の通信リンク116の品質に関する所定の情報(例えば、帯域幅、遅延、及びパケット損失率)に基づき決定される。幾つかの実装では、初期ダウンロード要求は、サーバ情報(例えば、サーバ位置、キャッシュ状態、及び出力バッファサイズ)に基づき決定される。幾つかの実装では、初期ダウンロード要求は、ダウンロードされているデータファイルに関する情報(例えば、データファイルサイズ、及びデータファイルタイプ)に基づき決定される。幾つかの実装では、初期ダウンロード要求は、前にダウンロードされたデータファイルのダウンロード性能に基づき決定される。幾つかの実装では、初期ダウンロード要求は、システムバジェット(例えば、超過データの最大許容量)に基づき決定される。
【0060】
ブロック704で、初期ダウンロード要求が、(例えば、ダウンロード部110により)複数のサーバ102へ送信される。例えば、ダウンロード部110は、複数のサーバ102の各々へ、複数の通信リンク116の各々を介して、初期ダウンロード要求を含む信号を送信する。ブロック706で、受信機108が、(例えば、ダウンロード部110により)複数のサーバ102からデータを受信する。例えば、ダウンロード部110は、複数のサーバ102から、コーディングシンボル104を受信する。
【0061】
ブロック708で、複数の通信リンク116の品質に関する更新された情報が、(例えば、制御部112により)決定される。幾つかの実装では、例えば、
図3Bのブロック314と関連して上述したように、制御部112は、複数の通信リンク116の各々について、更新された帯域幅及び瞬間遅延を決定する。
【0062】
ブロック710で、後続のダウンロード要求が(例えば、制御部112により)決定される。幾つかの実装では、後続のダウンロード要求の各々は、ダウンロード部110へ特定量(「第2の量」の例)のデータを送信するための、特定のサーバに対する要求を含む。例えば、
図3Bのブロック324に関して上述したように、後続のダウンロード要求の各々は、ダウンロード部110へ特定の量のコーディングシンボル104を送信するための、特定のサーバに対する要求を含んでよい。幾つかの実装では、後続のダウンロード要求の各々は、ダウンロード部110へのデータの送信を停止するための、特定のサーバに対するダウンロード終了要求を含む。例えば、
図4のブロック412に関して上述したように、後続のダウンロード要求の各々は、ダウンロード部110へのコーディングシンボル104の送信を停止するための、特定のサーバに対する要求を含んでよい。幾つかの実装では、例えば、
図6のブロック610に関して上述したように、後続のダウンロード要求の各々は、特定のサーバの出力バッファ106を小さな値に設定するための、該特定のサーバに対する要求を含む。
【0063】
後続のダウンロード要求は、複数の通信リンク116の品質に関する更新された情報(例えば、帯域幅、遅延、及びパケット損失率)に基づき決定される。幾つかの実装では、後続のダウンロード要求は、サーバ情報(例えば、サーバ位置、キャッシュ状態、及び出力バッファサイズ)に基づき決定される。幾つかの実装では、後続ダウンロード要求は、ダウンロードされているデータファイルに関する情報(例えば、データファイルサイズ、及びデータファイルタイプ)に基づき決定される。幾つかの実装では、後続のダウンロード要求は、前にダウンロードされたデータファイル及びダウンロード中の現在のデータファイルのダウンロード性能に基づき決定されるダウンロード。幾つかの実装では、後続のダウンロード要求は、システムバジェット(例えば、超過データの最大許容量)に基づき決定される。
【0064】
ブロック712で、後続のダウンロード要求が、(例えば、ダウンロード部110により)複数のサーバ102へ送信される。例えば、ダウンロード部110は、複数のサーバ102の各々へ、複数の通信リンク116の各々を介して、後続のダウンロード要求を含む信号を送信する。
【0065】
<機械学習>
【0066】
幾つかの実装では、制御判断を行うために、制御部112により使用されるダウンロード処理をトレーニングし及び展開するために、機械学習技術が使用される。制御判断の例は限定ではないが以下を含む。(i)前述のデータトラフィック管理処理のうちのどれが使用されるべきか、(ii)選択された処理のパラメータが何であるか、及び(iii)前述の処理の範囲を超える判断。幾つかの実装では、トレーニング初期化は、以下の4つの設定を定義する。(i)入力空間、(ii)学習処理及びモデル、(iii)出力空間、及び(iv)報酬/ペナルティ関数。入力空間により、各入力は、(限定ではないが)サーバ情報、ネットワーク情報、装置情報、ダウンロード処理、等を含むシステム情報のセットである。情報は、グローバルに、局所的に、ローカルに、及び/又はユーザ毎に収集され、次に、トレーニングデータセット及びテストデータセットがそれに応じて生成される。学習アルゴリズム及びモデルの一例は、畳み込みニューラルネットワークを用いるバッチ化された確率勾配降下法(batched stochastic gradient descent)である、出力空間は、例えば、どのサーバ102がダウンロード要求を生成するか、どれだけ多くのデータを要求するか、いつダウンロード要求を行うか、及びいつダウンロードを終了するか、を含む。報酬/ペナルティ関数は、スループットと超過データとの間の比が高いほど、高い報酬を生成する。トレーニング処理は、反復的であり、各反復は、例えば以下を含む:(i)トレーニング入力のバッチがモデルに与えられる、(ii)サンプル入力毎に、モデルが学習処理に基づき出力(つまり、制御判断)を決定する、(iii)超過データ及び各出力のスループット性能を決定する、(iv)合計報酬/ペナルティを決定する、及び(v)報酬/ペナルティからのフィードバックに基づき、モデルを調整する。幾つかの実装では、モデルの性能は、テストデータセットを用いて追跡される。その結果、トレーニングは、モデルの性能が安定的になると(つまり、モデルが収束する)、停止する。
【0067】
トレーニング出力は、システム情報を提供されるとき制御判断を決定するモデルである。モデルは、汎用データサンプルを用いて予めトレーニングされ、次に制御部112へ配信され、制御部112において受信機108のリアルタイムデータを用いてトレーニングされる、或いは、予めトレーニングされ、次に制御部112において進展させることもできる。
図8は、本開示の実装によるトレーニング処理800の例のフロー図を示す。ブロック802で、データは、グローバルに、局所的に、ローカルに、及びユーザ毎に収集される。ブロック804で、トレーニングデータセット及びテストデータセットは、収集されたデータに基づき決定される。ブロック806で、トレーニング入力のランダムなサブセットが選択される。ブロック808で、制御判断が、現在のニューラルネットワークを用いて決定される。ブロック810で、超過データ及び制御判断のシステム性能が決定される。ブロック812で、報酬及びペナルティが決定される。ブロック814で、ニューラルネットワークが、報酬及びペナルティに従い勾配降下法を用いて更新される。ブロック816で、ニューラルネットワークの性能が、テストデータセットを用いてテストされる。ブロック818で、ニューラルネットワークが収束したかどうかが決定される。ニューラルネットワークが収束していないとき、トレーニング処理800は、ブロック806に戻り、トレーニング入力の新しいランダムなサブセットを選択する。代替として、ニューラルネットワークが収束しているとき、ブロック820で、ニューラルネットワークは制御部112へ送信される。
【0068】
幾つかの実装では、強化(reinforcement)学習モデルが利用される。
図9は、強化学習によりトレーニング処理900の例を示す。
図9に示すトレーニング処理900は、ブローカ902、環境904、及び報酬計算部906を含む。ブローカ902は、制御部112により使用されるダウンロード処理として定義されてよい。環境904は、1つ以上のユニークに識別されるサーバ102、出力バッファ106、入力バッファ114、及び通信リンク116として定義されてよい。報酬計算部906は、スループット、超過データ、等に基づき、報酬を決定する。強化学習モデルは、環境904と相互作用するブローカ902の使用を定義する。トレーニング中の各時間ステップで、ブローカ902は、環境904の更新された状態(例えば、ダウンロード完了時間)を観察し、次に、実行すべきアクション(例えば、特定の時間に特定のサーバへダウンロード終了要求を送信する)を決定する。アクションが適用されると、環境904は、別の更新された状態へ遷移し、ブローカ902は報酬を受信する。ブローカ902は、報酬情報を使用して、予想される累積的割引報酬(cumulative discounted reward)を最大化することを目標として、自身の判断を向上する。
【0069】
制御部112のトレーニング及び処理も、グローバルな、局所的な、ローカルな、ユーザ毎の、及び装置毎の環境データを使用してよい。環境データは、第三者プラットフォームから、及びシステムの所有するデータ収集処理から、リアルタイムに又は非リアルタイムに、供給されることができる。グローバルに利用される最適化された制御部の単一の実装であるこの能力情報は、サーバ特性及びネットワーク特性の両方が地理的位置の範囲内で及びその間で大きく変化し得るので、局所的、ローカル、ユーザ毎、又は装置毎に異なり得る。例えば、制御部112は、サンフランシスコで実行するクライアントとムンバイで実行するクライアントとでは異なるソリューションに構成されてよい。更に、モデルおよび制御部112は、更に、トレーニング及び動作の間に、時間的変動及びアクセスネットワークの異種性を要因として含めることができる。
【0070】
<実装メカニズム-ハードウェア概要>
【0071】
一実装によると、本願明細書に記載の技術は、1つ以上の専用コンピューティング装置により実装される。専用コンピューティング装置は、技術を実行するためにハード結線されてよく、又は技術を実行するために永久的にプログラムされた1つ以上の特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)のようなデジタル電子装置を含んでよく、又はファームウェア、メモリ、他の記憶装置又はそれらの組み合わせの中のプログラム命令に従い技術を実行するためにプログラムされた1つ以上の汎用ハードウェアプロセッサを含んでよい。このような専用コンピューティング装置は、技術を達成するために、カスタムハードワイヤドロジック、ASIC、又はFPGAをカスタムプログラミングと結合してもよい。専用コンピューティング装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルド装置、ネットワーク装置、又は技術を実装するためにハードワイヤ-ド及び/又はプログラムロジックを組み込む任意の他の装置であってよい。技術は、ハードウェア回路及びソフトウェアの任意の特定の組合せにもコンピューティング装置またはデータ処理システムにより実行される命令の任意の特定のソースにも、限定されない。
【0072】
本願明細書で使用される用語「記憶媒体」は、機械を特定の方法で動作させるデータ及び/又は命令を格納する任意の媒体を表す。それは非一時的である。このような記憶媒体は、不揮発性媒体及び/又は揮発性媒体を含んでよい。不揮発性媒体は、例えば、光学又は磁気ディスクを含む。揮発性媒体は、動的メモリを含む。記憶媒体の一般的形式は、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、固体ドライブ、磁気テープ、又は任意の他の磁気データ記憶媒体、CD-ROM、任意の他の光学データ記憶媒体、ホールのパターンを有する任意の物理媒体、RAM、PROM、EPROM、FLASH(登録商標)-EPROM、NVRAM、任意の他のメモリチップ又はカートリッジを含む。
【0073】
記憶媒体は、伝送媒体と異なるが、それと関連して使用されてよい。伝送媒体は、記憶媒体の間で情報を転送する際に関連する。例えば、伝送媒体は、同軸ケーブル、銅線、及び光ファイバを含む。伝送媒体は、無線波及び赤外線データ通信の間に生成されるような、音響又は光波の形式も取りうる。
【0074】
<均等物、拡張機能、代替按、等(Equivalents, Extensions, Alternatives 、and Miscellaneous)>
【0075】
以上の明細書において、本開示の可能な実装は、実装毎に変化し得る多数の特定の詳細を参照して説明された。請求の範囲に含まれる用語について本願明細書に明示的に記載された任意の定義は、請求の範囲において使用されるこのような用語の意味を支配するべきである。従って、請求の範囲に明示的に記載されないいかなる限定、要素、特徴、利点、又は属性は、いかなる方法でも、請求の範囲の範囲を限定すべきではない。明細書及び図面は、従って、限定的意味では無く、説明であると考えられるべきである。更に理解されるべきことに、明確さのために、「例えば」(e.g.)は、「例のために」(網羅的ではない)を意味し、「つまり」(i.e.)又は「すなわち」とは異なる。
【0076】
更に、前述の説明では、特定のコンポーネント、装置、方法、等のような多数の特定の詳細が、本開示の実装の完全な理解尾w提供するために説明された。しかしながら、当業者には、これらの特定の詳細が本開示の実装を実施するために利用される必要がないことが明らかである。他の例では、よく知られた材料又は方法は、本開示の実装を不必要に曖昧にすることを避けるために、詳細に記載されない。
【0077】
本開示の種々の態様は、以下の例示的な構成のうちの任意の1つ以上を取り入れてよい。
【0078】
(EEE1)機器であって、
複数の通信リンクを介して複数のサーバに結合されるダウンロード部と、
制御部と、
を含み、前記制御部は、
前記複数の通信リンクの品質に関する所定の情報に基づき、前記複数のサーバに対する初期ダウンロード要求を決定し、
前記ダウンロード部により、前記複数のサーバへ前記初期ダウンロード要求を送信し、
前記ダウンロード部が前記複数の通信リンクを介して前記複数のサーバからデータファイルに関連付けられたデータを受信した後に、前記複数の通信リンクの前記品質に関する情報を更新し、
前記複数の通信リンクの前記品質に関する更新された情報に基づき、前記複数のサーバに対する後続のダウンロード要求を決定し、
前記ダウンロード部を介して、前記複数のサーバへ前記後続のダウンロード要求を送信する、
よう構成される、機器。
【0079】
(EEE2)前記初期ダウンロード要求は、前記複数のサーバの各々に対し1つの要求を含む、EEE1に記載の機器。
【0080】
(EEE3)前記初期ダウンロード要求は、前記ダウンロード部へ前記データのうちの第1の量を送信するための、前記複数のサーバに含まれる特定のサーバに対する要求を含み、前記後続のダウンロード要求は、前記ダウンロード部へ前記データのうちの第2の量を送信するための、前記特定のサーバに対する要求を含み、前記第2の量は前記第1の量と異なるEEE1又は2に記載の機器。
【0081】
(EEE4)前記制御部は、
前記複数の通信リンクの前記品質に関する所定の情報に基づき、前記特定のサーバの初期サーバ負荷を決定し、
前記初期サーバ負荷に基づき、前記データのうちの前記第1の量を決定し、
前記複数の通信リンクの前記品質に関する更新された情報に基づき、前記特定のサーバの更新されたサーバ負荷を決定し、
前記更新されたサーバ負荷に基づき、前記データのうちの前記第2の量を決定する、
よう更に構成される、EEE3に記載の機器。
【0082】
(EEE5)前記初期ダウンロード要求は、前記ダウンロード部へ前記データの量を送信するための、前記複数のサーバに含まれる特定のサーバに対する要求を含み、前記後続のダウンロード要求は、前記ダウンロード部への前記データの送信を停止するための、前記特定のサーバに対するダウンロード終了要求を含み、前記制御部は、
前記特定のサーバのサーバ完了時間を決定し、
前記サーバ完了時間の前に、前記特定のサーバへ前記ダウンロード終了要求を送信する、
よう更に構成される、EEE2~4のいずれかに記載の機器。
【0083】
(EEE6)前記初期ダウンロード要求は、前記特定のサーバの出力バッファのサイズをEEE(1)EEE(値に設定するための、前記複数のサーバに含まれる特定のサーバに対する要求を含み、前記後続のダウンロード要求は、前記出力バッファの前記サイズを前記第1値より小さい第2値に設定するための、前記特定のサーバに対する要求を含む、EEE1~5のいずれかに記載の機器。
【0084】
(EEE7)前記複数の通信リンクの前記品質に関する情報は、帯域幅及び遅延を含む、EEE1~6のいずれかに記載の機器。
【0085】
(EEE8)方法であって、
複数のサーバをダウンロード部に結合する複数の通信リンクの品質に関する所定の情報に基づき、前記複数のサーバに対する初期ダウンロード要求を決定するステップと、
前記ダウンロード部により、前記複数のサーバへ前記初期ダウンロード要求を送信するステップと、
前記ダウンロード部において、前記複数の通信リンクを介して、前記複数のサーバからデータファイルに関連付けられたデータを受信するステップと、
前記ダウンロード部が前記複数の通信リンクを介して前記複数のサーバから前記データを受信した後に、前記複数の通信リンクの前記品質に関する情報を更新するステップと、
前記複数の通信リンクの前記品質に関する更新された情報に基づき、前記複数のサーバに対する後続のダウンロード要求を決定するステップと、
前記ダウンロード部により、前記複数のサーバへ前記後続のダウンロード要求を送信するステップと、
を含む方法。
【0086】
(EEE9)前記初期ダウンロード要求は、前記複数のサーバの各々に対し1つの要求を含む、EEE8に記載の方法。
【0087】
(EEE10)前記複数の通信リンクの前記品質に関する更新された情報に基づき、前記複数のサーバに含まれる低負荷のサーバを検出するステップと、
前記複数のサーバに含まれる前記低負荷のサーバにのみ、前記後続のダウンロード要求を送信するステップと、
を更に含むEEE8又は9に記載の方法。
【0088】
(EEE11)前記初期ダウンロード要求は、前記ダウンロード部へ前記データのうちの第1の量を送信するための、前記複数のサーバに含まれる特定のサーバに対する要求を含み、前記後続のダウンロード要求は、前記ダウンロード部へ前記データのうちの第2の量を送信するための、前記特定のサーバに対する要求を含み、前記第2の量は前記第1の量と異なるEEE8~10のいずれか一項に記載の機器。
【0089】
(EEE12)前記複数の通信リンクの前記品質に関する所定の情報に基づき、前記特定のサーバの初期サーバ負荷を決定するステップと、
前記初期サーバ負荷に基づき、前記データのうちの前記第1の量を決定するステップと、
前記複数の通信リンクの前記品質に関する更新された情報に基づき、前記特定のサーバの更新されたサーバ負荷を決定するステップと、
前記更新されたサーバ負荷に基づき、前記データのうちの前記第2の量を決定するステップと、
を更に含むEEE11に記載の方法。
【0090】
(EEE13)初期負荷要求を決定するステップと、
前記初期負荷要求及び前記複数の通信リンクの前記品質に関する所定の情報に基づき、初期ダウンロード完了時間を決定するステップと、
前記初期ダウンロード完了時間及び前記複数の通信リンクの前記品質に関する所定の情報に基づき、前記特定のサーバの初期サーバ負荷を決定するステップと、
前記初期サーバ負荷に基づき、前記データのうちの前記第1の量を決定するステップと、
を更に含むEEE11に記載の方法。
【0091】
(EEE14)前記複数の通信リンクの前記品質に関する更新された情報に基づき、更新されたダウンロード完了時間を決定するステップと、
前記更新されたダウンロード完了時間および前記複数の通信リンクの前記品質に関する更新された情報に基づき、前記特定のサーバの更新されたサーバ負荷を決定するステップと、
前記更新されたサーバ負荷に基づき、前記データのうちの前記第2の量を決定するステップと、
を更に含むEEE13に記載の方法。
【0092】
(EEE15)前記初期ダウンロード要求は、前記ダウンロード部へ前記データの量を送信するための、前記複数のサーバに含まれる特定のサーバに対する要求を含み、前記後続のダウンロード要求は、前記ダウンロード部への前記データの送信を停止するための、前記特定のサーバに対するダウンロード終了要求を含み、
前記方法は、
前記特定のサーバのサーバ完了時間を決定するステップと、
前記サーバ完了時間の前に、前記特定のサーバへ前記ダウンロード終了要求を送信するステップと、
を更に含むEEE8~14のいずれかに記載の方法。
【0093】
(EEE16)前記特定のサーバのラウンドトリップ時間を決定するステップと、
前記サーバ完了時間の前に、前記ラウンドトリップ時間の1回未満の反復で、前記特定のサーバへ前記ダウンロード終了要求を送信するステップと、
を更に含むEEE15に記載の方法。
【0094】
(EEE17)前記初期ダウンロード要求は、特定のサーバの出力バッファのサイズを第1値に設定するための、前記複数のサーバに含まれる前記特定のサーバに対する要求を含み、前記後続のダウンロード要求は、前記出力バッファの前記サイズを前記第1値より小さい第2値に設定するための、前記特定のサーバに対する要求を含む、EEE8~16のいずれかに記載の方法。
【0095】
(EEE18)前記ダウンロード部が過半数閾値より大きい前記複数のサーバからの前記データの量を受信した後に、前記複数のサーバへ前記後続のダウンロード要求を送信するステップ、
を更に含むEEE17に記載の方法。
【0096】
(EEE19)前記複数の通信リンクの前記品質に関する情報は、帯域幅及び遅延を含む、EEE8~18のいずれかに記載の機器。
【0097】
(EEE20)命令を格納している非一時的コンピュータ可読媒体であって、前記命令は、コンピュータの電子プロセッサにより実行されると、前記コンピュータにEEE8~19のいずれかに記載の方法を含む動作を実行させる、非一時的コンピュータ可読記憶媒体。
【符号の説明】
【0098】
100 システム
102 サーバ
104 コーディングシンボル
106 出力バッファ
108 受信機
110 ダウンロード部
112 制御部
114 入力バッファ
【手続補正書】
【提出日】2023-03-02
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
複数の通信リンクを介してダウンロード部に結合された複数のサーバからデータファイルを取得する方法であって、
初期負荷要求を決定するステップと、
初期ダウンロード完了時間を決定するステップと、
前記複数のサーバのうちの各々のサーバの初期サーバ負荷を決定するステップと、
前記複数のサーバのうちの各々のサーバから要求すべきコーディングシンボルの量を決定するステップと、
前記複数のサーバのうちの各々のサーバへ前記コーディングシンボルの量についての初期ダウンロード要求を送信するステップと、
を含む方法。
【請求項2】
前記初期負荷要求は、初期ダウンロードフェーズで要求されるべき前記データファイルに対応する冗長コーディングシンボルの合計量を含む、請求項1に記載の方法。
【請求項3】
前記初期負荷要求は、前記複数の通信リンクの安定性に部分的に基づく、請求項1又は2に記載の方法。
【請求項4】
前記複数のサーバの各々は、前記データファイルを表す冗長コーディングシンボルのユニークなセットを格納する、請求項1~3のいずれかに記載の方法。
【請求項5】
前記複数のサーバのうちの1つより多くのサーバは、前記データファイルを表す冗長コーディングシンボルの同一のセットを格納する、請求項1~3のいずれかに記載の方法。
【請求項6】
前記初期ダウンロード完了時間は、前記初期負荷要求と前記複数の通信リンクの帯域幅に基づき推定される、請求項1~5のいずれかに記載の方法。
【請求項7】
各々のサーバの初期サーバ負荷を決定するステップは、前記初期ダウンロード完了時間に基づく、請求項1~6のいずれかに記載の方法。
【請求項8】
各々のサーバの初期サーバ負荷を決定するステップは、前記各々のサーバを前記ダウンロード部に結合する各々の通信リンクに関連するラウンドトリップ時間に部分的に基づく、請求項1~7のいずれかに記載の方法。
【請求項9】
前記冗長コーディングシンボルの量は、前記各々のサーバの前記初期サーバ負荷と冗長コーディングシンボルに関連する所定のサイズに基づく、請求項1~8のいずれかに記載の方法。
【請求項10】
冗長コーディングシンボルの量を決定するステップは、前記各々のサーバの初期サーバ負荷を、冗長コーディングシンボルに関連する所定のサイズの整数倍に丸め込むステップを含む、請求項1~9のいずれかに記載の方法。
【請求項11】
前記ダウンロード部において、前記複数の通信リンクを介して、前記複数のサーバから前記データファイルに関連付けられたデータを受信するステップと、
前記ダウンロード部が前記複数の通信リンクを介して前記複数のサーバから前記データを受信した後に、前記複数の通信リンクの品質に関する情報を更新するステップと、
前記複数の通信リンクの前記品質に関する更新された情報に基づき、前記複数のサーバに対する後続のダウンロード要求を決定するステップと、
前記ダウンロード部により、前記複数のサーバへ前記後続のダウンロード要求を送信するステップと、
を更に含む請求項1~10のいずれかに記載の方法。
【請求項12】
前記複数のサーバに対する後続のダウンロード要求を決定するステップは、
前記複数の通信リンクの前記品質に関する更新された情報に基づき、前記複数のサーバに含まれる低負荷のサーバを検出するステップと、
前記複数のサーバに含まれる前記低負荷のサーバにのみ、前記後続のダウンロード要求を送信するステップと、
を含む、請求項11に記載の方法。
【請求項13】
前記複数のサーバに対する後続のダウンロード要求を決定するステップは、
前記複数の通信リンクの前記品質に関する更新された情報に基づき、更新されたダウンロード完了時間を決定するステップと、
前記更新されたダウンロード完了時間及び前記複数の通信リンクの前記品質に関する更新された情報に基づき、前記複数のサーバのうちの各々のサーバの更新されたサーバ負荷を決定するステップと、
前記更新されたサーバ負荷に基づき、前記複数のサーバのうちの各々のサーバから要求すべきコーディングシンボルの更新された量を決定するステップと、
を含む請求項11又は12に記載の方法。
【請求項14】
前記複数の通信リンクの前記品質に関する情報は、帯域幅及び遅延を含む、請求項11~13のいずれかに記載の方法。
【請求項15】
前記初期ダウンロード要求は、前記ダウンロード部へ前記データのうちの第1量を送信するための、前記複数のサーバに含まれる各々のサーバに対する要求を含み、前記後続のダウンロード要求は、前記ダウンロード部へ前記データのうちの第2量を送信するための、前記各々のサーバに対する要求を含み、前記第2量は前記第1量と異なる、請求項11~14のいずれかに記載の方法。
【請求項16】
命令を格納している非一時的コンピュータ可読媒体であって、前記命令は、電子装置の電子プロセッサにより実行されると、前記電子装置に請求項1~15のいずれかに記載の方法を実行させる、非一時的コンピュータ可読媒体。
【請求項17】
機器であって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサにより実行されると前記機器に請求項1~15のいずれかに記載の方法を実行させる命令を格納しているメモリと、
を含む機器。
【外国語明細書】