説明

ネットワークオーバーヘッドを低減しつつ一対多データ送信を円滑化する方法およびシステム

【解決手段】 ネットワークオーバーヘッドを低減しつつ、一対多データ送信を円滑化する方法およびシステムは、一のソースコンピューティングデバイスから複数のシンクコンピューティングデバイスへの1回のデータ送信を実行することを含む。各シンクコンピューティングデバイスは、今回のデータ送信について失われたデータブロックのバケットリストを生成して、ソースコンピューティングデバイスに当該バケットリストを送信する。ソースコンピューティングデバイスは、当該バケットリストに基づいて、次回のデータ送信を実行する。1以上の後続の回のデータ送信は、各シンクコンピューティングデバイスのバケットリストが空になるまで、実行されるとしてよい。

【発明の詳細な説明】
【背景技術】
【0001】
コラボレーションコンピュータ環境では通常、一のソースコンピューティングデバイスから、複数のデスティネーションコンピューティングデバイスまたはシンクコンピューティングデバイスへのデータ転送を利用している。例えば、教育環境において、「学級コラボレーション」では、教師のコンピューティングデバイスから各生徒のコンピューティングデバイスへのファイル、ビデオおよびその他のデータの転送を利用している。また、シンクコンピューティングデバイス(例えば、生徒のコンピューティングデバイス)の管理では、更新、新アプリケーションまたはその他の管理ソフトウェアまたは管理サービスを各デスティネーションコンピューティングデバイスまたは各シンクコンピューティングデバイスに送信する必要があるとしてよい。通常、マルチキャストデータ送信、ブロードキャストデータ送信等の一対多データ送信を用いて、複数のシンクコンピューティングデバイスへのデータ転送を実現する。
【0002】
通常の一対多データ送信技術、例えば、マルチキャスト方式およびブロードキャスト方式は、各デスティネーションコンピューティングデバイスまたは各シンクコンピューティングデバイスからの確認応答フィードバックを利用している。このような確認応答は通常、各シンクコンピューティングデバイスからソースコンピューティングデバイスに送られるユニキャストデータ送信として具現化される。当該ユニキャストデータ送信は、ソースコンピューティングデバイスに、データパケットまたはデータブロックの受信がエラー無しで完了した旨を通知するものである。このように、多数のデスティネーションコンピューティングデバイスまたはシンクコンピューティングデバイス(例えば、学級コラボレーション環境では60人以上の生徒が含まれるとしてよい)を含むネットワークでは、多数の確認応答送信が生成されるとしてよい。このような多数のユニキャスト確認応答送信は、デスティネーションコンピューティングデバイスが略同時に確認応答を送信しようとすると、ネットワークの「内部崩壊」が発生する原因となる可能性がある。一部のネットワークではネットワーク内部崩壊を回避または低減するための「バックオフ」機構を含むが、このような機構は、ネットワークにおいて通信遅延を増加させる可能性がある。また、デスティネーションコンピュータが用いるユニキャスト通信技術(例えば、ユーザデータグラムプロトコル(UDP)または送信制御プロトコル(TCP))ではさらに、ソースコンピューティングデバイスからリンクレイヤの確認応答を必要とするとしてよい。このような確認応答のやり取りおよびネットワーク遅延は、ネットワーク内で同時に発生する可能性があるので、ネットワークのオーバーヘッドが増加する傾向にある。
【図面の簡単な説明】
【0003】
本発明を制限するものとしてではなく一例として、本明細書で説明するシステム、デバイスおよび方法を添付図面に図示している。図示を簡単かつ分かりやすいものにするべく、図面に図示している構成要素は必ずしも実寸に即したものではない。例えば、分かりやすいように、一部の構成要素の寸法は他の構成要素に比べて、強調しているとしてよい。また、適切だと考えられる場合には、複数の図面にわたって同じ参照番号を繰り返し用いて、対応する構成要素または同様の構成要素を特定している。
【図1】ネットワークオーバーヘッドを低減しつつ1以上のコンピューティングデバイスへのデータ送信を円滑化するためのシステムの一実施形態を示す簡略ブロック図である。
【図2】図1のシステムが備えるコンピューティングデバイスの一実施形態を示す簡略ブロック図である。
【図3】図1のシステムが備えるソースコンピューティングデバイスが実行する複数のコンピューティングデバイスへとデータを送信する方法の一実施形態を説明するための簡略フローチャートである。
【図4】図1のシステムが備える複数のコンピューティングデバイスが実行するソースコンピューティングデバイスからデータを受信する方法の一実施形態を説明するための簡略フローチャートである。
【図5】バケットリストをソースコンピューティングデバイスに送信する方法の一実施形態を示す簡略フローチャートである。
【図6】バケットリストをソースコンピューティングデバイスに送信する方法の別の実施形態を示す簡略フローチャートである。
【図7】図5に示した方法において、複数のコンピューティングデバイスに対する第1回目のデータ送信を説明するための簡略図である。
【図8】図7に示したデータ送信の後の、複数のコンピューティングデバイスのバケットリストを示す簡略図である。
【図9】図5に示した方法において、複数のコンピューティングデバイスに対する第2回目のデータ送信を示す簡略図である。
【発明を実施するための形態】
【0004】
本開示の概念はさまざまな点で変形および変更し得るものであるが、本開示の具体的な実施形態例を、図面で一例として図示すると共に本明細書で詳細に説明する。しかし、本開示の概念を開示している具体的な形態に限定する意図はなく、逆に、変形例、均等例および代替例は全て、請求項で定義している本発明の意図および範囲内に含まれるものと理解されたい。
【0005】
以下に記載する説明では、論理の実施例、オペコード、オペランド指定手段、リソースのパーティション化/共有化/複製の実施例、システム構成要素の種類および相関関係、ならびに、論理のパーティション化/集積化に関する選択肢等、具体的且つ詳細な内容を数多く記載して、本開示をより深く理解していただきたい。しかし、当業者であれば、本開示の実施形態はこのような具体的且つ詳細な内容を採用せずとも実施し得ることに想到するであろう。また、制御構造、ゲートレベル回路および完全なソフトウェア命令列は、本開示をあいまいにすることを避けるべく、詳細な説明を省略している場合があるとしてよい。当業者であれば、本明細書に記載する説明を参照することで、過度の実験を行わなくとも適切な機能を実現可能である。
【0006】
本明細書において「一実施形態」、「ある実施形態」、「実施形態例」等の記載は、説明している実施形態が特定の特徴、構造または特性を持つことを意味しているが、各実施形態が必ずしもその特定の特徴、構造または特性を持つものではない。また、これらの記載は、必ずしも同じ実施形態を意味しているものではない。また、ある実施形態に関連付けて特定の特徴、構造または特性が説明されている場合、明示的に説明されていてもいなくても、この特徴、構造または特性を他の実施形態に関連付けて実現することは当業者の知識の範囲内であると考えられる。
【0007】
本開示の一部の実施形態は、ハードウェア、ファームウェア、ソフトウェア、または、これらを任意に組み合わせて実現するとしてよい。コンピュータシステムで実現する本開示の実施形態は、構成要素間に設けられている1以上のバスインターコネクト、および/または、構成要素間に設けられている1以上のポイント・ツー・ポイント・インターコネクトを備えるとしてよい。本発明の実施形態はさらに、機械可読有形媒体に格納されている命令として実現されるとしてもよい。当該命令は、1以上のプロセッサによって読み出されて実行されるとしてよい。機械可読有形媒体は、機械(例えば、コンピューティングデバイス)読み出し可能な形式で情報を格納または送信する任意の有形メカニズムを含むとしてよい。例えば、機械可読有形媒体は、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク格納媒体、光学格納媒体、フラッシュメモリデバイス、および、その他の有形媒体を含むとしてよい。
【0008】
図1を参照しつつ説明すると、ネットワークオーバーヘッドを低減しつつ複数のコンピューティングデバイスに対するデータ送信を円滑化するシステム100は、ソースコンピューティングシステムまたはサーバコンピューティングデバイス102、および、受信側コンピューティングデバイス群またはクライアントコンピューティングデバイス群104を備える。コンピューティングデバイス102、104は、アクセスポイント108を介してネットワーク106で互いに通信可能に結合されている。ソースコンピューティングデバイス102は、本明細書で説明する機能を実行可能な任意の種類のコンピューティングデバイスとして具現化されるとしてよい。例えば、一部の実施形態によると、ソースコンピューティングデバイス102は、デスクトップコンピュータ、ラップトップコンピュータ、モバイルインターネットデバイス(MID)、または、その他のネットワークでの利用が可能なコンピューティングデバイスとして具現化されるとしてよい。
【0009】
コンピューティングデバイス群104は、1以上のデスティネーションコンピューティングデバイスまたはシンクコンピューティングデバイス110を有する。各シンクコンピューティングデバイス110は、ソースコンピューティングデバイス102と同様に、本明細書に記載している機能を実行可能な任意の種類のコンピューティングデバイスとして具現化されるとしてよい。例えば、各シンクコンピューティングデバイス110は、デスクトップコンピュータ、ラップトップコンピュータ、モバイルインターネットデバイス(MID)、または、その他のネットワークでの利用が可能なコンピューティングデバイスとして具現化されるとしてよい。
【0010】
アクセスポイント108は、コンピューティングデバイス102、110の間の通信を円滑化する。アクセスポイント108は、任意の種類の有線形式または無線形式のネットワーク通信ルーティングデバイスとして具現化されるとしてよく、例えば、有線形式または無線形式のルーター、スイッチ、ハブ、または、通信可能にコンピューティングデバイス102、110を結合することが可能なその他のネットワーク通信デバイスであってよい。一部の実施形態によると、アクセスポイント108はさらに、通信リンク124を介して外部ネットワーク130に通信可能に結合されている。ネットワーク130は、任意の種類の有線形式および/または無線形式のネットワークとして具現化されるとしてよく、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、公的に利用可能なグローバルネットワーク(例えば、インターネット)またはその他のネットワークであってよい。同様に、通信リンク124は、アクセスポイント108と外部ネットワーク130との間の通信を円滑化することが可能な任意の種類の有線形式または無線形式の通信リンクとして具現化されるとしてよく、例えば、任意の数の無線接続あるいは物理的接続、配線、ケーブル、および/または、その他の相互接続リンクまたは相互接続パスであってよい。さらに、ネットワーク130は、任意の数のデバイスを追加で含むとしてよく、例えば、コンピューティングデバイス102、110とリモートコンピューティングデバイスとの間の通信を円滑に行うルーター、スイッチ、中間コンピュータ等を含むとしてよい。
【0011】
一部の実施形態によると、ソースコンピューティングデバイス102およびコンピューティングデバイス群104は、1つの部屋の内部に設けられているか、または、互いにローカルに設けられている。例えば、特定の一実施形態によると、システム100は教室に組み込まれている。このような実施形態によると、ソースコンピューティングデバイス102は、教師または指導者のコンピューティングデバイスとして具現化されるとしてよく、シンクコンピューティングデバイス110は生徒のコンピューティングデバイスとして具現化されるとしてよい。言うまでもなく、システム100は、一対多データ送信が必要となる他の環境または実施例でも利用するとしてよい。
【0012】
どのように利用するのか説明すると、ソースコンピューティングデバイス102は、ファイル、動画、画像、テキストおよび/またはその他のデータ等のデータを、各シンクコンピューティングデバイス110に送信する。この送信は、複数のデータブロックがシンクコンピューティングデバイス110に送信されるデータ送信を複数回行うことによって実行される。各回のデータ送信では、シンクコンピューティングデバイス110が、破損状態で受信したブロックまたは受信されなかったデータブロックを、損失データブロックのバケットリストとして記録する。各回のデータ送信が完了した後、シンクコンピューティングデバイス110はそれぞれ、バケットリストをソースコンピューティングデバイス102に送信する。一部の実施形態によると、以下でより詳細に説明するが、シンクコンピューティングデバイス110は、遅延期間またはバケットリストのサイズ(つまり、バケットリストに含まれるデータブロックの数)等の基準に基づき、バケットリストを送信するとしてよい。ソースコンピューティングデバイス102は、各シンクコンピューティングデバイス110から受信したバケットリストをまとめた後、まとめたバケットリストで特定されたデータブロックをシンクコンピューティングデバイス110に再送するデータ送信を実行する。このような後続データ送信を1回以上実行するとしてよい。この間、シンクコンピューティングデバイス110は、各シンクコンピューティングデバイス110のバケットリストが空になるまでソースコンピューティングデバイス102に損失データブロックを報告し続ける。
【0013】
特定の一実施形態によると、シンクコンピューティングデバイス110は、ソースコンピューティングデバイス102から一のデータブロックを受信した後に確認応答を送信しない。このような実施形態では、ソースコンピューティングデバイス102はこれに対応して、データブロック送信の度にコンピューティングデバイス110から確認応答が送信されるまで待機しない。このような構成とすることによって、合計ネットワークトラフィック量、ならびに、このようにネットワークトラフィックが増加することに起因するエラーおよび遅延が低減されるとしてよい。
【0014】
以下で図2を参照しつつ説明すると、一実施形態において、コンピューティングデバイス102、110はそれぞれ、プロセッサ200、チップセット204、および、メモリ202を有するとしてよい。コンピューティングデバイス102、110は、本明細書で説明する各機能を実行可能な任意の種類のコンピューティングデバイスとして具現化されるとしてよい。例えば、上述したように、コンピューティングデバイス102、110は、デスクトップコンピュータ、ラップトップコンピュータ、モバイルインターネットデバイス(MID)またはその他のネットワークでの利用が可能なコンピューティングデバイスとして具現化されているとしてよい。
【0015】
プロセッサ200は、一例として、プロセッサコア206を持つシングルコアプロセッサとして具現化されている。しかし、他の実施形態では、プロセッサ200は、複数のプロセッサコア206を持つマルチコアプロセッサとして具現化するとしてもよい。また、コンピューティングデバイス102、110は、1以上のプロセッサコア206を持つプロセッサ200をさらに有するとしてもよい。プロセッサ200は、複数の信号パス208を介して、チップセット204に通信可能に結合されている。信号パス208は、プロセッサ200とチップセット204との間の通信を円滑化に実行可能な任意の種類の信号パスとして具現化されているとしてよい。例えば、信号パス208は、任意の数のバス経路、プリント配線基板の配線、ワイヤ、ビア、中間デバイス、および/または、その他のインターコネクトとして具現化されるとしてよい。
【0016】
メモリ202は、1以上のメモリデバイスまたはデータ格納位置として具現化されるとしてよい。例えば、ダイナミックランダムアクセスメモリデバイス(DRAM)、シンクロナスダイナミックランダムアクセスメモリデバイス(SDRAM)、ダブルデータレートダイナミックランダムアクセスメモリデバイス(DDR SDRAM)および/またはその他の揮発性メモリデバイスとして具現化されるとしてよい。また、図2に図示しているメモリデバイス202は1つのみであるが、他の実施形態では、コンピューティングデバイス102、110は、さらにメモリデバイスを有するとしてよい。
【0017】
チップセット204は、メモリコントローラハブ(MCH)またはノースブリッジ、入出力コントローラハブ(ICH)またはサウスブリッジ、および、ファームウェアデバイスを含むとしてよい。このような実施形態によると、ファームウェアデバイスは、ベーシック・インプット/アウトプット・システム(BIOS)データおよび/または命令および/またはその他の情報を格納するメモリストレージデバイスとして具現化されるとしてよい。チップセット204は、複数の信号パス210を介して、メモリ202に通信可能に結合されている。信号パス210は、信号パス208と同様に、チップセット204とメモリデバイス202との間の通信を円滑に実行可能な任意の種類の信号パスとして具現化されているとしてよい。例えば、任意の数のバス経路、プリント配線基板の配線、ワイヤ、ビア、中間デバイスおよび/またはその他のインターコネクトとして具現化されているとしてよい。
【0018】
他の実施形態によると、チップセット204は、プラットフォームコントローラハブ(PCH)として具現化されるとしてよい。このような実施形態によると、メモリコントローラハブ(MCH)は、プロセッサ200に組み込まれているか、または、プロセッサ200に対応付けられているとしてよい。また、このような実施形態によると、メモリデバイス202は、複数の信号パス212を介して、チップセット204(つまり、プラットフォームコントローラハブ)ではなく、プロセッサ200に通信可能に結合されているとしてよい。信号パス212は、信号パス208と同様に、メモリデバイス202とプロセッサ200との間の通信を円滑に実行可能な任意の種類の信号パスとして具現化されているとしてよい。例えば、任意の数のバス経路、プリント配線基板の配線、ワイヤ、ビア、中間デバイスおよび/またはその他のインターコネクトとして具現化されているとしてよい。
【0019】
コンピューティングデバイス102、110はさらに、ネットワーク106を介して互いに通信するべく、通信回路220を有する。通信回路220は、コンピューティングデバイス102、110間の通信を可能にする任意の数のデバイスおよび回路として具現化されるとしてよい。例えば、通信回路220は、1以上の有線方式または無線方式のネットワークインターフェースカード(NIC)またはその他のネットワーク通信カード、モジュール、または、アクセスポイントの108を介して他のコンピューティングデバイス102、110と通信するための回路として具現化されているとしてよい。
【0020】
コンピューティングデバイス102、110はさらに、追加で周辺デバイス、例えば、データストレージ222、表示デバイス224、および、その他の周辺デバイス226等を有するとしてよい。通信回路220、データストレージ222、表示デバイス224、および、その他の周辺デバイス226はそれぞれ、信号パス230を介して、チップセット204に通信可能に結合されている。繰り返しになるが、信号パス230は、信号パス208と同様に、チップセット204と、通信回路220、データストレージ222、表示デバイス224、および、その他の周辺デバイス226との間の通信を円滑に実行可能な任意の種類の信号パスとして具現化されているとしてよい。例えば、任意の数のバス経路、プリント配線基板の配線、ワイヤ、ビア、中間デバイスおよび/またはその他のインターコネクトとして具現化されているとしてよい。
【0021】
データストレージデバイス222は、短期データ格納媒体または長期データ格納媒体として構成されている任意の種類のデバイスとして具現化されるとしてよい。例えば、メモリデバイスおよびメモリ回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、または、その他のデータストレージデバイスとして具現化されるとしてよい。表示デバイス224は、コンピューティングデバイス102、110のユーザにデータを表示する任意の種類の表示デバイスとして具現化されるとしてよい。例えば、液晶ディスプレイ(LCD)、陰極線管(CRT)ディスプレイ、発光ダイオード(LED)ディスプレイ、または、その他の表示デバイスとして具現化されるとしてよい。周辺デバイス226は、任意の数の追加で設けられる周辺デバイス、例えば、入力デバイス、出力デバイス、および、その他のインターフェースデバイスを含むとしてよい。例えば、周辺デバイス226は、コンピューティングデバイス102、110に入力を供給するキーボードおよび/またはマウスを含むとしてよい。周辺デバイス226に含まれるデバイスの具体的な数および種類は、例えば、コンピューティングデバイス102、110の使用目的に応じて決まるとしてよい。
【0022】
以下で図3を参照しつつ説明すると、複数のコンピューティングデバイス110にデータを分配する方法300は、ソースコンピューティングデバイス102がデータ送信セッションを初期化するブロック302から開始される。ブロック302では、ソースコンピューティングデバイス102は、任意の数のキャリブレーション手順および初期化手順を実行するとしてよい。さらに、一部の実施形態では、ブロック304において、ソースコンピューティングデバイス102は、各シンクコンピューティングデバイス110との間でハンドシェイクを実行する。このようなハンドシェイク処理によって、シンクコンピューティングデバイス110に対してデータを送信するために用いられる通信プロトコル、および/または、データ送信内容を受信するようにシンクコンピューティングデバイス110の準備を整えるための他の情報またはデータを構築するとしてよい。例えば、一実施形態によると、ソースコンピューティングデバイス102は、シンクコンピューティングデバイス110に送信されるデータファイルについて、シンクコンピューティングデバイス110に通知する。このような情報(例えば、シンクコンピューティングデバイス110が受信すべきデータブロック数)は、シンクコンピューティングデバイス110によって、損失データブロック(つまり、受信されなかったデータブロックまたは破損状態で受信したデータブロック)を判断するために用いられるとしてよい。
【0023】
上述したように、ソースコンピューティングデバイス102は、1回以上のデータ送信によって、シンクコンピューティングデバイス110にデータファイルまたはその他のデータを転送する。第1回目のデータ送信の後のデータ送信は、シンクコンピューティングデバイス110からのフィードバックに基づいて行われる。ソースコンピューティングデバイス102は、データファイルまたはその他のデータをシンクコンピューティングデバイス110へと問題なく転送するために必要な回数だけデータ送信を行うとしてよい。したがって、ブロック306において、ソースコンピューティングデバイスは、次の回のデータ送信を開始する。例えば、方法300の第1回目において、ソースコンピューティングデバイス102は、シンクコンピューティングデバイス110に対する第1回目のデータ送信を開始する(つまり、X=1)。ブロック306において、ソースコンピューティングデバイス102は、例えば、今回のデータ送信が始まっている旨を示す通知をシンクコンピューティングデバイス110に送信するとしてよい。一部の実施形態によると、ソースコンピューティングデバイス102はさらに、特定の回のデータ送信に関するデータ、例えば、期待すべきデータブロック数を、シンクコンピューティングデバイス110に送信するとしてよい。これに基づいて、シンクコンピューティングデバイス110は任意のデータブロックが失われたか否かを判断するとしてよい。
【0024】
ソースコンピューティングデバイス102は、今回のデータ送信を開始した後、ブロック308において、今回のデータ送信用のデータブロックをシンクコンピューティングデバイス110に送信する。第1回目のデータ送信において、シンクコンピューティングデバイス110に送信されるべきデータファイルまたはその他のデータを含むデータブロックは全て、デバイス110に送信される。しかし、より詳細に後述するが、後続の回のデータ送信で送信されるのは、1以上のシンクコンピューティングデバイスによって損失が認められたデータブロックのみである。このように、ブロック308において、例えば、より詳細に後述するが、送信すべきデータファイルのサイズ、前回のデータ送信、シンクコンピューティングデバイス110からのフィードバック、および/または、その他の基準に応じて、任意の数のデータブロックを送信するとしてよい。
【0025】
ソースコンピューティングデバイス102は、任意の適切なネットワーク通信技術を用いてシンクコンピューティングデバイス110にデータブロックを転送するとしてよい。例えば、一部の実施形態によると、ソースコンピューティングデバイス102は、マルチキャストデータ送信またはブロードキャストデータ送信を利用して、データブロックをシンクコンピューティングデバイス110に転送するとしてよい。これに代えて、特定の一実施形態によると、ソースコンピューティングデバイス102は、米国特許出願第XX/XXXXXX(発明の名称:「複数のコンピューティングデバイスに対する一対多データ送信を円滑化する方法およびシステム」、ジャスティン・リップマン(Justin Lipman)、出願日:2009年12月XX日)に記載されている一対多データ送信を利用するとしてよい。このような実施形態によると、ソースコンピューティングデバイス102は、コンピューティングデバイス110のうち1つを、「シンク」コンピューティングデバイスとして選択する。残りのコンピューティングデバイス110は、混合通信モードに構成される。ソースコンピューティングデバイス102は、ユニキャストデータ送信を選択シンクコンピューティングデバイス110に送信することによって、選択シンクコンピューティングデバイス110にデータブロックを転送する。しかし、ユニキャストデータ送信は選択シンクコンピューティングデバイス110にアドレス指定されているが、当該ユニキャストデータ送信は、他の選択されていないコンピューティングデバイス110のそれぞれでも受信される。選択されていないコンピューティングデバイス110は混合通信モードに構成されているので、選択されていないコンピューティングデバイス110もまた、ユニキャストデータ送信に対してフィルタリングおよび処理を行う。このように、一対多データ送信は、ユニキャストデータ送信を用いて実現される。
【0026】
ソースコンピューティングデバイス102は、今回のデータ送信用のデータブロックを転送した後、各シンクコンピューティングデバイス110に、今回のデータ送信が完了した旨をデバイス110に通知する通知を送信する(ブロック310)。この後、ブロック312において、ソースコンピューティングデバイス102は、シンクコンピューティングデバイス110が送信したバケットリストを受信する。より詳細に後述するが、バケットリストでは、報告する各シンクコンピューティングデバイス110で失われた今回のデータブロックが特定されている。
【0027】
ブロック312において特定のシンクコンピューティングデバイス110がソースコンピューティングデバイス102にバケットリストを送信するか否かは、1以上の基準に基づいて判断される。例えば、一実施形態によると、ブロック312において、対応するバケットリストに少なくとも1つの損失データブロックを含むシンクコンピューティングデバイス110はいずれも、今回終了通知を受信すると、または、当該通知を受信した後、バケットリストをソースコンピューティングデバイスに送信する。しかし、他の実施形態では、シンクコンピューティングデバイス110は、今回終了通知を受信した後の遅延期間に応じて、対応するバケットリストを送信するとしてもよい。このような実施形態では、ブロック314において、ソースコンピューティングデバイス102が、各シンクコンピューティングデバイス110に、デフォルト遅延値を送信する。シンクコンピューティングデバイス110は、より詳細に後述するが、回が終了した時点での通知の後、デフォルト遅延値に基づき、対応する遅延期間を決定する。これに代えて、または、これに加えて、他の実施形態では、シンクコンピューティングデバイス110は、対応するバケットリストのサイズに基づき、バケットリストを送信するとしてよい。このような実施形態によると、ブロック316において、ソースコンピューティングデバイス102は、各シンクコンピューティングデバイス110に所定のバケットリストサイズしきい値を送信する。シンクコンピューティングデバイス110は、より詳細に後述するが、しきい値に基づいてバケットリストを送信するか否かを判断する。
【0028】
ソースコンピューティングデバイス102がシンクコンピューティングデバイス110から今回のバケットリストを受信した後、ブロック318において、ソースコンピューティングデバイス102は、これら複数のバケットリストをまとめて一のマスターバケットリストを生成する。マスターバケットリストは、その回のデータ送信で失われたと1以上のシンクコンピューティングデバイス110が報告されているデータブロックを示す指標または識別情報を含む。ブロック320において、マスターバケットリストが空である(つまり、少なくとも1つのデータブロックを含むバケットリストを送ったシンクコンピューティングデバイス110はない)と判断されると、ソースコンピューティングデバイス102は、ブロック322において、データ送信セッションが完了した旨の通知を各シンクコンピューティングデバイス110に送信する。
【0029】
しかし、ブロック316においてソースコンピューティングデバイス102がバケットリストサイズしきい値をシンクコンピューティングデバイス110に送信する実施形態では、シンクコンピューティングデバイス110から受信するバケットリストがない場合には、ソースコンピューティングデバイス102が所定量だけしきい値を小さくしてしきい値をシンクコンピューティングデバイス110に再送するとしてもよいと考えられたい。このような構成では、ソースコンピューティングデバイス102は、しきい値がゼロになるまで、毎回しきい値を小さくするとしてもよい。
【0030】
ブロック320に戻って、マスターバケットリストが空でない場合、方法300はブロック306に戻って、次の回のデータ送信を開始する。次の回のデータ送信では、上述したように、マスターバケットリストで特定されているデータブロックをシンクコンピューティングデバイス110に再送する。このようにして、ソースコンピューティングデバイス102は、1回以上のデータ送信を実行して、シンクコンピューティングデバイス110にデータファイルまたはその他のデータを送信する。一般的に、連続して行われる各回のデータ送信では、ソースコンピューティングデバイス102が再送するデータブロックの数が少なくなっていく。
【0031】
以下で図4を参照しつつ説明するが、ソースコンピューティングデバイス102からデータを受信する方法は、各シンクコンピューティングデバイス110がソースコンピューティングデバイス102との間でハンドシェイクを行うブロック402から開始される。ブロック402において、コンピューティングデバイス102、110は、上述したように、シンクコンピューティングデバイス110にデータを送信するために用いられる通信プロトコル、および/または、データ送信を受信させるべくシンクコンピューティングデバイス110を準備するための他の情報またはデータを構築するとしてよい。例えば、一部の実施形態によると、シンクコンピューティングデバイス110は、例えば、各シンクコンピューティングデバイス110が受信すべきデータブロックの数等、ソースコンピューティングデバイス102が送信するデータファイルに関する情報を受信するとしてよい。
【0032】
ブロック404において、シンクコンピューティングデバイスは、今回のデータ送信が開始されたか否かを判断する。方法300に関連して上述したように、ソースコンピューティングデバイス102は、シンクコンピュータ110に対して、データ送信の開始を示す通知および/または他のデータを送信するとしてよい。一部の実施形態では、今回のデータ送信に関するデータ、例えば、この回で送信されるデータブロックの数を送信するとしてよい。
【0033】
複数のシンクコンピューティングデバイス110は、ブロック406において、ソースコンピューティングデバイス102が送信したデータブロックを受信して、ブロック408において、損失データブロックのバケットリストを更新する。各シンクコンピューティングデバイス110は、今回においてソースコンピューティングデバイス102が送信したが、シンクコンピューティングデバイス110が受信しなかったか、または、破損状態で受信されたので、シンクコンピューティングデバイス110に再送する必要があるデータブロックのリスト、または、その指標を生成および/または更新する。シンクコンピューティングデバイス110は、対応するメモリ202および/またはデータストレージ222にバケットリストを格納するとしてよい。各バケットリストは、様々なリストであるとしてよく、今回のデータ送信に基づきデータブロックを1以上含むとしてもよいし、含まないとしてもよい。データブロックに格納されている、当該データブロックが失われている旨を示す特定のデータは、特定の実施形態および実施例に応じて、さまざまなデータであるとしてよい。例えば、一実施形態によると、シンクコンピューティングデバイス110は、今回で失われたと判断された各データブロックのパケット識別番号を格納する。
【0034】
ブロック410において、シンクコンピューティングデバイス110は、今回のデータ送信が完了したか否かを判断する。完了していなければ、方法400はブロック406および408に戻って、各シンクコンピューティングデバイス110が受信処理を継続して行うか、または、ソースコンピューティングデバイス102からデータブロックを受信するまで待機して、損失データブロックのバケットリストを更新する。しかし、シンクコンピューティングデバイス110がソースコンピューティングデバイス102から今回終了通知を受信すると、方法400は、ブロック412に進み、各シンクコンピューティングデバイス110は、バケットリストが空であるか否か(つまり、今回のデータ送信セッションのデータブロックをすべて受信したか否か)を判断する。空であれば、ブロック414において、特定のシンクコンピューティングデバイス110は、ソースコンピューティングデバイス102からセッション終了通知を受け取るまで待機する。しかし、シンクコンピューティングデバイス110の損失データブロックを示すバケットリストにおいて少なくとも1つの損失データブロックがある場合、方法400はブロック416に進み、シンクコンピューティングデバイス110は、特定の基準に基づいて、ソースコンピューティングデバイスに損失データブロックのバケットリストを送信する。
【0035】
上述したように、一部の実施形態では、シンクコンピューティングデバイス110は、ソースコンピューティングデバイス102から、今回終了通知を受信すると、または、当該通知を受信した後で、バケットリストを送信するとしてよい。しかし、他の実施形態によると、シンクコンピューティングデバイス110は、ブロック418において、デフォルト遅延値に基づいて、損失データブロックのバケットリストを送信するとしてよい。この場合、シンクコンピューティングデバイス110は、図5に示すバケットリストを送信する方法500を実行するとしてよい。方法500は、シンクコンピューティングデバイス110がソースコンピューティングデバイス102からデフォルト遅延値を受信するブロック502で開始される。デフォルト遅延値は、今回のデータ送信が完了した後(例えば、今回終了通知を受信した後)のデフォルト期間を定義している。このデフォルト期間が経過すると、シンクコンピューティングデバイス110は対応するバケットリストを送信する。デフォルト遅延値は、マイクロ秒、秒、分またはその他の時間単位で表現されるとしてよい。ブロック504において、シンクコンピューティングデバイス110は、特定のバケットリストのサイズに基づき、遅延期間を決定する。例えば、特定の一実施形態によると、各シンクコンピューティングデバイス110の遅延期間は、デフォルト遅延値を各バケットリストのサイズ(例えば、バケットリストで特定されるデータブロック数)で除算することで算出される。シンクコンピューティングデバイス110はこの後、算出された遅延期間が経過すると、または、当該遅延期間が経過した後で、対応するバケットリストを送信する。このように、バケットリストが大きいシンクコンピューティングデバイスは、バケットリストが小さいシンクコンピューティングデバイスよりも前にバケットリストを送信する。また、複数のシンクコンピューティングデバイス110の送信期間を分散することで、ネットワーク「内部崩壊」の可能性および総遅延量を低減するとしてよい。
【0036】
方法400のブロック416を再度参照すると、他の実施形態において、シンクコンピューティングデバイスは、ブロック420において、バケットリストのサイズに基づきバケットリストを送信するとしてよい。この場合、シンクコンピューティングデバイス110は、図6に示すバケットリストを送信する方法600を実行するとしてよい。方法600は、シンクコンピューティングデバイス110が所定のバケットリストサイズしきい値を受信するブロック602から開始される。上述したように、所定のしきい値は、最少データブロック数を定義しているとしてよい。ブロック604において、シンクコンピューティングデバイス110は、バケットリストがしきい値との間で所定の関係を満たしているか否かを判断する。例えば、図6の実施形態例において、シンクコンピューティングデバイス110は、バケットリストがしきい値よりも大きいか否かを判断する。しかし、他の実施形態では、シンクコンピューティングデバイス110は、ブロック604において、バケットリストがしきい値と等しいか否か、または、しきい値より小さいか否かを判断するとしてよい。当該実施形態例では、シンクコンピューティングデバイス110のバケットリストサイズがしきい値より大きい場合、シンクコンピューティングデバイス110は、ブロック606において、ソースコンピューティングデバイス102にバケットリストを送信する。しかし、シンクコンピューティングデバイス110のバケットリストがしきい値以下である場合、シンクコンピューティングデバイス110は今回のバケットリストを送信しない。シンクコンピューティングデバイス110は、特定された損失データブロックをバケットリストに保持して、次回のデータ送信時に適宜更新する。この場合、しきい値よりも大きいバケットリストを持つシンクコンピューティングデバイス110のみが、対応するバケットリストを送信する。したがって、シンクコンピューティングデバイス110によるバケットリストの送信が分散され、または、各回において低減されることにより、ネットワーク「内部崩壊」の可能性および総遅延量が低減され得る。
【0037】
以下で図7から図9を参照すると、一例として、ソースコンピューティングデバイス102から4つのシンクコンピューティングデバイス110への第1回目および第2回目のデータ送信を図示している。図7では、ソースコンピューティングデバイス102が、複数のデータブロックB1−Bnとして具現化されているデータファイルを、シンクコンピューティングデバイス110に送信している。第1回目のデータ送信において、第1のシンクコンピューティングデバイス110はデータブロックB1およびB2を受信したが、データブロックB3、B4およびB5については、受信しなかったか、破損状態で受信した。これらのブロックはそれぞれ、図7ではデータブロックX3、X4およびX5と示されており、第1のシンクコンピューティングデバイス110に関して失われたデータブロックである旨を示している。第2のシンクコンピューティングデバイス110は、データブロックB1、B2、B4およびB5を受信したが、データブロックB3が失われた。第3のシンクコンピューティングデバイス110は、データブロックB2、B3およびB5を受信したが、データブロックB1およびB4は失われた。また、第4のシンクコンピューティングデバイス110は、第1回目のデータ送信のデータブロックはすべて受信した。
【0038】
第1回目のデータ送信の後の各シンクコンピューティングデバイス110のそれぞれのバケットリストを図8に図示する。第1のコンピューティングデバイス110のバケットリスト801は、データブロックB3(X3)、B4(X4)、B5(X5)、および、第1のコンピューティングデバイス110が第1回目のデータ送信において失われたと判断したその他のデータブロックXnの指標または識別情報を含む。同様に、第2のコンピューティングデバイスのバケットリスト802は、データブロックB3、および、第2のシンクコンピューティングデバイス110が失われたと判断したその他のデータブロックの指標または識別情報を含む。第3のシンクコンピューティングデバイス110のバケットリスト803は、データブロックB1およびB4、および、第3のコンピューティングデバイス110が失われたと判断したその他のデータブロックの指標または識別情報を含む。第4のコンピューティングデバイス110のバケットリスト804は、空である。バケットリストが空ではない各コンピューティングデバイス110は、上述した1以上の基準(例えば、今回終了通知の受信、デフォルト遅延、デフォルト値、バケットリストのサイズ等)に基づき、対応するバケットリストをソースコンピューティングデバイス102に送信する。
【0039】
この後、図9に示すように、ソースコンピューティングデバイス102は、コンピューティングデバイス110から受信したバケットリストをまとめて、第2回目のデータ送信を開始する。第2回目のデータ送信は、バケットリストをまとめた結果に基づいて行われる。例えば、図示している実施形態では、ソースコンピューティングデバイス102がデータブロックB1、B3、B4、B5等を再送する。このように、ソースコンピューティングデバイス102は、報告をしたシンクコンピューティングデバイス110のうち1以上が失ったと特定しているデータブロックのみを再送する。再送されたデータブロックは、シンクコンピューティングデバイス110によって受信される。シンクコンピューティングデバイス110は、特定のデータブロックを受信したか、または、受信しなかったかに基づいて対応するバケットリストを更新する。ソースコンピューティングデバイス102は、各シンクコンピューティングデバイス110が有効なデータブロックをすべて受信して、各シンクコンピューティングデバイス110へのデータファイルの送信が成功した旨を示すまで、データ送信を連続して行うとしてよい。
【0040】
本開示は添付図面および上記の説明において詳細に図示および記載してきたが、図示内容および記載内容は、例示的なものであって本質的に本開示を制限するものではないと考えられたい。図示および記載した実施形態は例示的なものに過ぎず、本開示が意図する範囲内に入る全ての変更および変形は保護の対象となる旨理解されたい。例えば、システム100は「一対多」データ通信で用いるものとして概略を上述したが、上記のシステム、デバイスおよび方法は「一対一」データ通信にも等しく適用可能であると考えられたい。このような実施形態によると、コンピューティングデバイス群104は、本明細書で説明した方法およびデバイスを用いてソースコンピューティングデバイス102から「一対一」データ通信を受信する一のシンクコンピューティングデバイス110を含むとしてよい。

【特許請求の範囲】
【請求項1】
一のソースコンピューティングデバイスから複数のシンクコンピューティングデバイスへの第1の回のデータ送信を開始して、複数のデータブロックを前記複数のシンクコンピューティングデバイスに送信する段階と、
前記複数のシンクコンピューティングデバイスのそれぞれにおいて、前記複数のデータブロックのうち失われたデータブロックのリストを生成する段階と、
前記第1の回のデータ送信が完了した後、前記複数のシンクコンピューティングデバイスのそれぞれから前記ソースコンピューティングデバイスへと前記失われたデータブロックのリストを送信する段階と、
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスへと第2の回のデータ送信を開始して、前記複数のシンクコンピューティングデバイスから受信した複数の前記失われたデータブロックのリストで特定されているデータブロックを再送する段階と
を備える方法。
【請求項2】
前記失われたデータブロックのリストを生成する段階は、前記複数のデータブロックのうち、前記複数のシンクコンピューティングデバイスのそれぞれが受信しなかった、または、破損状態で受信したデータブロックの識別情報の指標を含むリストを生成する段階を有する請求項1に記載の方法。
【請求項3】
前記失われたデータブロックのリストを送信する段階は、前記失われたデータブロックのリストが空でない場合に限り、前記失われたデータブロックのリストを送信する段階を有する請求項1に記載の方法。
【請求項4】
前記失われたデータブロックのリストを送信する段階は、1回のデータ送信が完了した後の遅延期間に基づき、前記失われたデータブロックのリストを送信する段階を有する請求項1に記載の方法。
【請求項5】
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスのそれぞれへとデフォルト遅延値を送信する段階をさらに備える請求項4に記載の方法。
【請求項6】
前記複数のシンクコンピューティングデバイスのそれぞれにおいて、前記デフォルト遅延値に基づき、前記複数のシンクコンピューティングデバイスのそれぞれの前記遅延期間を決定する段階をさらに備える請求項5に記載の方法。
【請求項7】
前記遅延期間は、前記デフォルト遅延値を、前記複数のシンクコンピューティングデバイスのそれぞれの前記失われたデータブロックのリストに含まれるデータブロック数で除算した結果に等しい請求項6に記載の方法。
【請求項8】
前記失われたデータブロックのリストを送信する段階は、前記複数のシンクコンピューティングデバイスのそれぞれの前記失われたデータブロックのリストで特定されるデータブロック数に基づき、前記失われたデータブロックのリストを送信する段階を有する請求項1に記載の方法。
【請求項9】
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスのそれぞれに対して、所定の最小リストサイズを定義しているしきい値を送信する段階をさらに備える請求項8に記載の方法。
【請求項10】
前記失われたデータブロックのリストを送信する段階は、前記失われたデータブロックのリストで特定されているデータブロック数が前記しきい値より大きい場合に限り、前記複数のシンクコンピューティングデバイスのそれぞれから、前記失われたデータブロックのリストを送信する段階を有する請求項9に記載の方法。
【請求項11】
前記第1の回のデータ送信が完了すると、前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスのそれぞれへと、今回終了通知を送信する段階をさらに備える請求項1に記載の方法。
【請求項12】
前記複数のシンクコンピューティングデバイスのうち第1のシンクコンピューティングデバイスで、前記複数のデータブロックのうち少なくとも1つのデータブロックを受信する段階をさらに備え、
前記失われたデータブロックのリストを生成する段階は、前記第1のシンクコンピューティングデバイスにおいて、前記少なくとも1つのデータブロックに基づき前記失われたデータブロックのリストを更新する段階を有する請求項1に記載の方法。
【請求項13】
前記ソースコンピューティングデバイスにおいて、前記複数のシンクコンピューティングデバイスから受信した前記複数の失われたデータブロックのリストをまとめることで、失われたデータブロックのマスターリストを生成する段階をさらに備える請求項1に記載の方法。
【請求項14】
前記複数のシンクコンピューティングデバイスのそれぞれについて、前記失われたデータブロックのリストが空になるまで、
前記複数のシンクコンピューティングデバイスのそれぞれにおいて、前記複数のデータブロックのうち失われたデータブロックの新しいリストを生成する段階と、
前記失われたデータブロックの新しいリストが空でない場合、前記複数のシンクコンピューティングデバイスから、複数の前記失われたデータブロックの新しいリストを送信する段階と、
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスへの新しい回のデータ送信を開始して、前記複数の失われたデータブロックの新しいリストが特定しているデータブロックを再送する段階と
を繰り返し実行する段階をさらに備える請求項1に記載の方法。
【請求項15】
プロセッサと、
複数の命令を格納しているメモリデバイスと
を備えるコンピューティングデバイスであって、
前記プロセッサは、前記複数の命令を実行すると、
ソースコンピューティングデバイスから第1の回のデータ送信の通知を受信して、
前記第1の回のデータ送信に基づいて、前記ソースコンピューティングデバイスが送信したデータブロックのうち、前記第1の回のデータ送信において前記コンピューティングデバイスが受信しなかったか、または、破損状態で受信したデータブロックを特定する、失われたデータブロックのリストを生成して、
前記第1の回のデータ送信が完了した旨の通知を受信することに応じて、前記ソースコンピューティングデバイスに前記失われたデータブロックのリストを送信して、
前記ソースコンピューティングデバイスから、前記失われたデータブロックのリストに基づいて行われる第2の回のデータ送信の通知を受信するコンピューティングデバイス。
【請求項16】
前記複数の命令によって前記プロセッサはさらに、
前記第1の回のデータ送信において送信された第1のデータブロックを受信して、
前記第1のデータブロックを受信したことに応じて前記ソースコンピューティングデバイスに確認応答を送信することなく、前記第1の回のデータ送信において送信された第2のデータブロックを受信する請求項15に記載のコンピューティングデバイス。
【請求項17】
前記失われたデータブロックのリストを送信することは、前記第1の回のデータ送信が完了した旨の通知を受信した後に始まる遅延期間が経過した後で、前記失われたデータブロックのリストを送信することを含む請求項15に記載のコンピューティングデバイス。
【請求項18】
前記複数の命令によって前記プロセッサはさらに、
前記ソースコンピューティングデバイスからデフォルト遅延値を受信して、
前記デフォルト遅延値を前記失われたデータブロックのリストに含まれるデータブロック数で除算することによって、前記遅延期間を算出する請求項17に記載のコンピューティングデバイス。
【請求項19】
前記失われたデータブロックのリストを送信することは、前記失われたデータブロックのリストに含まれるデータブロック数に基づき、前記失われたデータブロックのリストを送信することを含む請求項15に記載のコンピューティングデバイス。
【請求項20】
前記複数の命令によって前記プロセッサはさらに、
前記ソースコンピューティングデバイスから、最少データブロック数を定義しているしきい値を受信して、
前記失われたデータブロックのリストを送信することは、前記失われたデータブロックのリストに含まれるデータブロック数が前記しきい値との間で所定の関係を満たしている場合に限って、前記失われたデータブロックのリストを送信することを含む請求項19に記載のコンピューティングデバイス。
【請求項21】
複数の命令を備える機械可読有形媒体であって、
前記複数の命令がコンピューティングデバイスで実行されると、前記コンピューティングデバイスは、
ソースコンピューティングデバイスからの1回のデータ送信に基づき、前記ソースコンピューティングデバイスに確認応答を送信することなく、前記1回のデータ送信において前記ソースコンピューティングデバイスが送信したデータブロックのうち、前記コンピューティングデバイスが受信しなかったか、または、破損状態で受信したデータブロックを特定する失われたデータブロックのリストを生成し、
前記1回のデータ送信が完了した後、前記ソースコンピューティングデバイスに前記失われたデータブロックのリストを送信して、前記ソースコンピューティングデバイスに、前記失われたデータブロックのリストで特定されているデータブロックを再送させる機械可読有形媒体。
【請求項22】
前記失われたデータブロックのリストを送信することは、前記1回のデータ送信が完了した後、算出した遅延期間に基づき前記失われたデータブロックのリストを送信することを含む請求項21に記載の機械可読有形媒体。
【請求項23】
前記失われたデータブロックのリストを送信することは、前記失われたデータブロックのリストに含まれているデータブロック数が所定の最小しきい値よりも大きいことに応じて、前記失われたデータブロックのリストを送信することを含む請求項21に記載の機械可読有形媒体。
【請求項24】
シンクコンピューティングデバイスにおいて、複数のデータブロックを含む第1の回のデータ送信をソースコンピューティングデバイスから受信する段階と、
前記シンクコンピューティングデバイスにおいて、前記複数のデータブロックに基づいて失われたデータブロックのリストを生成する段階と、
前記第1の回のデータ送信が完了した後、前記ソースコンピューティングデバイスに前記失われたデータブロックのリストを送信する段階と、
前記シンクコンピューティングデバイスにおいて、前記失われたデータブロックのリストに少なくとも部分的に基づいて行われる、前記ソースコンピューティングデバイスからの第2の回のデータ送信を受信する段階と
を備える方法。
【請求項25】
前記失われたデータブロックのリストを送信する段階は、前記失われたデータブロックのリストで特定されているデータブロック数に基づいて、前記失われたデータブロックのリストを送信する段階を有する請求項24に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公表番号】特表2013−512628(P2013−512628A)
【公表日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願番号】特願2012−541294(P2012−541294)
【出願日】平成21年12月17日(2009.12.17)
【国際出願番号】PCT/CN2009/001479
【国際公開番号】WO2011/072422
【国際公開日】平成23年6月23日(2011.6.23)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】