(57)【要約】【解決手段】  ネットワークオーバーヘッドを低減しつつ、一対多データ送信を円滑化する方法およびシステムは、一のソースコンピューティングデバイスから複数のシンクコンピューティングデバイスへの１回のデータ送信を実行することを含む。各シンクコンピューティングデバイスは、今回のデータ送信について失われたデータブロックのバケットリストを生成して、ソースコンピューティングデバイスに当該バケットリストを送信する。ソースコンピューティングデバイスは、当該バケットリストに基づいて、次回のデータ送信を実行する。１以上の後続の回のデータ送信は、各シンクコンピューティングデバイスのバケットリストが空になるまで、実行されるとしてよい。【選択図】  図３
2013512628.tif 000002
【特許請求の範囲】
【請求項１】
一のソースコンピューティングデバイスから複数のシンクコンピューティングデバイスへの第１の回のデータ送信を開始して、複数のデータブロックを前記複数のシンクコンピューティングデバイスに送信する段階と、
前記複数のシンクコンピューティングデバイスのそれぞれにおいて、前記複数のデータブロックのうち失われたデータブロックのリストを生成する段階と、
前記第１の回のデータ送信が完了した後、前記複数のシンクコンピューティングデバイスのそれぞれから前記ソースコンピューティングデバイスへと前記失われたデータブロックのリストを送信する段階と、
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスへと第２の回のデータ送信を開始して、前記複数のシンクコンピューティングデバイスから受信した複数の前記失われたデータブロックのリストで特定されているデータブロックを再送する段階と
を備える方法。
【請求項２】
前記失われたデータブロックのリストを生成する段階は、前記複数のデータブロックのうち、前記複数のシンクコンピューティングデバイスのそれぞれが受信しなかった、または、破損状態で受信したデータブロックの識別情報の指標を含むリストを生成する段階を有する請求項１に記載の方法。
【請求項３】
前記失われたデータブロックのリストを送信する段階は、前記失われたデータブロックのリストが空でない場合に限り、前記失われたデータブロックのリストを送信する段階を有する請求項１に記載の方法。
【請求項４】
前記失われたデータブロックのリストを送信する段階は、１回のデータ送信が完了した後の遅延期間に基づき、前記失われたデータブロックのリストを送信する段階を有する請求項１に記載の方法。
【請求項５】
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスのそれぞれへとデフォルト遅延値を送信する段階をさらに備える請求項４に記載の方法。
【請求項６】
前記複数のシンクコンピューティングデバイスのそれぞれにおいて、前記デフォルト遅延値に基づき、前記複数のシンクコンピューティングデバイスのそれぞれの前記遅延期間を決定する段階をさらに備える請求項５に記載の方法。
【請求項７】
前記遅延期間は、前記デフォルト遅延値を、前記複数のシンクコンピューティングデバイスのそれぞれの前記失われたデータブロックのリストに含まれるデータブロック数で除算した結果に等しい請求項６に記載の方法。
【請求項８】
前記失われたデータブロックのリストを送信する段階は、前記複数のシンクコンピューティングデバイスのそれぞれの前記失われたデータブロックのリストで特定されるデータブロック数に基づき、前記失われたデータブロックのリストを送信する段階を有する請求項１に記載の方法。
【請求項９】
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスのそれぞれに対して、所定の最小リストサイズを定義しているしきい値を送信する段階をさらに備える請求項８に記載の方法。
【請求項１０】
前記失われたデータブロックのリストを送信する段階は、前記失われたデータブロックのリストで特定されているデータブロック数が前記しきい値より大きい場合に限り、前記複数のシンクコンピューティングデバイスのそれぞれから、前記失われたデータブロックのリストを送信する段階を有する請求項９に記載の方法。
【請求項１１】
前記第１の回のデータ送信が完了すると、前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスのそれぞれへと、今回終了通知を送信する段階をさらに備える請求項１に記載の方法。
【請求項１２】
前記複数のシンクコンピューティングデバイスのうち第１のシンクコンピューティングデバイスで、前記複数のデータブロックのうち少なくとも１つのデータブロックを受信する段階をさらに備え、
前記失われたデータブロックのリストを生成する段階は、前記第１のシンクコンピューティングデバイスにおいて、前記少なくとも１つのデータブロックに基づき前記失われたデータブロックのリストを更新する段階を有する請求項１に記載の方法。
【請求項１３】
前記ソースコンピューティングデバイスにおいて、前記複数のシンクコンピューティングデバイスから受信した前記複数の失われたデータブロックのリストをまとめることで、失われたデータブロックのマスターリストを生成する段階をさらに備える請求項１に記載の方法。
【請求項１４】
前記複数のシンクコンピューティングデバイスのそれぞれについて、前記失われたデータブロックのリストが空になるまで、
前記複数のシンクコンピューティングデバイスのそれぞれにおいて、前記複数のデータブロックのうち失われたデータブロックの新しいリストを生成する段階と、
前記失われたデータブロックの新しいリストが空でない場合、前記複数のシンクコンピューティングデバイスから、複数の前記失われたデータブロックの新しいリストを送信する段階と、
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスへの新しい回のデータ送信を開始して、前記複数の失われたデータブロックの新しいリストが特定しているデータブロックを再送する段階と
を繰り返し実行する段階をさらに備える請求項１に記載の方法。
【請求項１５】
プロセッサと、
複数の命令を格納しているメモリデバイスと
を備えるコンピューティングデバイスであって、
前記プロセッサは、前記複数の命令を実行すると、
ソースコンピューティングデバイスから第１の回のデータ送信の通知を受信して、
前記第１の回のデータ送信に基づいて、前記ソースコンピューティングデバイスが送信したデータブロックのうち、前記第１の回のデータ送信において前記コンピューティングデバイスが受信しなかったか、または、破損状態で受信したデータブロックを特定する、失われたデータブロックのリストを生成して、
前記第１の回のデータ送信が完了した旨の通知を受信することに応じて、前記ソースコンピューティングデバイスに前記失われたデータブロックのリストを送信して、
前記ソースコンピューティングデバイスから、前記失われたデータブロックのリストに基づいて行われる第２の回のデータ送信の通知を受信するコンピューティングデバイス。
【請求項１６】
前記複数の命令によって前記プロセッサはさらに、
前記第１の回のデータ送信において送信された第１のデータブロックを受信して、
前記第１のデータブロックを受信したことに応じて前記ソースコンピューティングデバイスに確認応答を送信することなく、前記第１の回のデータ送信において送信された第２のデータブロックを受信する請求項１５に記載のコンピューティングデバイス。
【請求項１７】
前記失われたデータブロックのリストを送信することは、前記第１の回のデータ送信が完了した旨の通知を受信した後に始まる遅延期間が経過した後で、前記失われたデータブロックのリストを送信することを含む請求項１５に記載のコンピューティングデバイス。
【請求項１８】
前記複数の命令によって前記プロセッサはさらに、
前記ソースコンピューティングデバイスからデフォルト遅延値を受信して、
前記デフォルト遅延値を前記失われたデータブロックのリストに含まれるデータブロック数で除算することによって、前記遅延期間を算出する請求項１７に記載のコンピューティングデバイス。
【請求項１９】
前記失われたデータブロックのリストを送信することは、前記失われたデータブロックのリストに含まれるデータブロック数に基づき、前記失われたデータブロックのリストを送信することを含む請求項１５に記載のコンピューティングデバイス。
【請求項２０】
前記複数の命令によって前記プロセッサはさらに、
前記ソースコンピューティングデバイスから、最少データブロック数を定義しているしきい値を受信して、
前記失われたデータブロックのリストを送信することは、前記失われたデータブロックのリストに含まれるデータブロック数が前記しきい値との間で所定の関係を満たしている場合に限って、前記失われたデータブロックのリストを送信することを含む請求項１９に記載のコンピューティングデバイス。
【請求項２１】
複数の命令を備える機械可読有形媒体であって、
前記複数の命令がコンピューティングデバイスで実行されると、前記コンピューティングデバイスは、
ソースコンピューティングデバイスからの１回のデータ送信に基づき、前記ソースコンピューティングデバイスに確認応答を送信することなく、前記１回のデータ送信において前記ソースコンピューティングデバイスが送信したデータブロックのうち、前記コンピューティングデバイスが受信しなかったか、または、破損状態で受信したデータブロックを特定する失われたデータブロックのリストを生成し、
前記１回のデータ送信が完了した後、前記ソースコンピューティングデバイスに前記失われたデータブロックのリストを送信して、前記ソースコンピューティングデバイスに、前記失われたデータブロックのリストで特定されているデータブロックを再送させる機械可読有形媒体。
【請求項２２】
前記失われたデータブロックのリストを送信することは、前記１回のデータ送信が完了した後、算出した遅延期間に基づき前記失われたデータブロックのリストを送信することを含む請求項２１に記載の機械可読有形媒体。
【請求項２３】
前記失われたデータブロックのリストを送信することは、前記失われたデータブロックのリストに含まれているデータブロック数が所定の最小しきい値よりも大きいことに応じて、前記失われたデータブロックのリストを送信することを含む請求項２１に記載の機械可読有形媒体。
【請求項２４】
シンクコンピューティングデバイスにおいて、複数のデータブロックを含む第１の回のデータ送信をソースコンピューティングデバイスから受信する段階と、
前記シンクコンピューティングデバイスにおいて、前記複数のデータブロックに基づいて失われたデータブロックのリストを生成する段階と、
前記第１の回のデータ送信が完了した後、前記ソースコンピューティングデバイスに前記失われたデータブロックのリストを送信する段階と、
前記シンクコンピューティングデバイスにおいて、前記失われたデータブロックのリストに少なくとも部分的に基づいて行われる、前記ソースコンピューティングデバイスからの第２の回のデータ送信を受信する段階と
を備える方法。
【請求項２５】
前記失われたデータブロックのリストを送信する段階は、前記失われたデータブロックのリストで特定されているデータブロック数に基づいて、前記失われたデータブロックのリストを送信する段階を有する請求項２４に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コラボレーションコンピュータ環境では通常、一のソースコンピューティングデバイスから、複数のデスティネーションコンピューティングデバイスまたはシンクコンピューティングデバイスへのデータ転送を利用している。例えば、教育環境において、「学級コラボレーション」では、教師のコンピューティングデバイスから各生徒のコンピューティングデバイスへのファイル、ビデオおよびその他のデータの転送を利用している。また、シンクコンピューティングデバイス（例えば、生徒のコンピューティングデバイス）の管理では、更新、新アプリケーションまたはその他の管理ソフトウェアまたは管理サービスを各デスティネーションコンピューティングデバイスまたは各シンクコンピューティングデバイスに送信する必要があるとしてよい。通常、マルチキャストデータ送信、ブロードキャストデータ送信等の一対多データ送信を用いて、複数のシンクコンピューティングデバイスへのデータ転送を実現する。
【０００２】
通常の一対多データ送信技術、例えば、マルチキャスト方式およびブロードキャスト方式は、各デスティネーションコンピューティングデバイスまたは各シンクコンピューティングデバイスからの確認応答フィードバックを利用している。このような確認応答は通常、各シンクコンピューティングデバイスからソースコンピューティングデバイスに送られるユニキャストデータ送信として具現化される。当該ユニキャストデータ送信は、ソースコンピューティングデバイスに、データパケットまたはデータブロックの受信がエラー無しで完了した旨を通知するものである。このように、多数のデスティネーションコンピューティングデバイスまたはシンクコンピューティングデバイス（例えば、学級コラボレーション環境では６０人以上の生徒が含まれるとしてよい）を含むネットワークでは、多数の確認応答送信が生成されるとしてよい。このような多数のユニキャスト確認応答送信は、デスティネーションコンピューティングデバイスが略同時に確認応答を送信しようとすると、ネットワークの「内部崩壊」が発生する原因となる可能性がある。一部のネットワークではネットワーク内部崩壊を回避または低減するための「バックオフ」機構を含むが、このような機構は、ネットワークにおいて通信遅延を増加させる可能性がある。また、デスティネーションコンピュータが用いるユニキャスト通信技術（例えば、ユーザデータグラムプロトコル（ＵＤＰ）または送信制御プロトコル（ＴＣＰ））ではさらに、ソースコンピューティングデバイスからリンクレイヤの確認応答を必要とするとしてよい。このような確認応答のやり取りおよびネットワーク遅延は、ネットワーク内で同時に発生する可能性があるので、ネットワークのオーバーヘッドが増加する傾向にある。
【図面の簡単な説明】
【０００３】
本発明を制限するものとしてではなく一例として、本明細書で説明するシステム、デバイスおよび方法を添付図面に図示している。図示を簡単かつ分かりやすいものにするべく、図面に図示している構成要素は必ずしも実寸に即したものではない。例えば、分かりやすいように、一部の構成要素の寸法は他の構成要素に比べて、強調しているとしてよい。また、適切だと考えられる場合には、複数の図面にわたって同じ参照番号を繰り返し用いて、対応する構成要素または同様の構成要素を特定している。
【図１】ネットワークオーバーヘッドを低減しつつ１以上のコンピューティングデバイスへのデータ送信を円滑化するためのシステムの一実施形態を示す簡略ブロック図である。
【図２】図１のシステムが備えるコンピューティングデバイスの一実施形態を示す簡略ブロック図である。
【図３】図１のシステムが備えるソースコンピューティングデバイスが実行する複数のコンピューティングデバイスへとデータを送信する方法の一実施形態を説明するための簡略フローチャートである。
【図４】図１のシステムが備える複数のコンピューティングデバイスが実行するソースコンピューティングデバイスからデータを受信する方法の一実施形態を説明するための簡略フローチャートである。
【図５】バケットリストをソースコンピューティングデバイスに送信する方法の一実施形態を示す簡略フローチャートである。
【図６】バケットリストをソースコンピューティングデバイスに送信する方法の別の実施形態を示す簡略フローチャートである。
【図７】図５に示した方法において、複数のコンピューティングデバイスに対する第１回目のデータ送信を説明するための簡略図である。
【図８】図７に示したデータ送信の後の、複数のコンピューティングデバイスのバケットリストを示す簡略図である。
【図９】図５に示した方法において、複数のコンピューティングデバイスに対する第２回目のデータ送信を示す簡略図である。
【発明を実施するための形態】
【０００４】
本開示の概念はさまざまな点で変形および変更し得るものであるが、本開示の具体的な実施形態例を、図面で一例として図示すると共に本明細書で詳細に説明する。しかし、本開示の概念を開示している具体的な形態に限定する意図はなく、逆に、変形例、均等例および代替例は全て、請求項で定義している本発明の意図および範囲内に含まれるものと理解されたい。
【０００５】
以下に記載する説明では、論理の実施例、オペコード、オペランド指定手段、リソースのパーティション化／共有化／複製の実施例、システム構成要素の種類および相関関係、ならびに、論理のパーティション化／集積化に関する選択肢等、具体的且つ詳細な内容を数多く記載して、本開示をより深く理解していただきたい。しかし、当業者であれば、本開示の実施形態はこのような具体的且つ詳細な内容を採用せずとも実施し得ることに想到するであろう。また、制御構造、ゲートレベル回路および完全なソフトウェア命令列は、本開示をあいまいにすることを避けるべく、詳細な説明を省略している場合があるとしてよい。当業者であれば、本明細書に記載する説明を参照することで、過度の実験を行わなくとも適切な機能を実現可能である。
【０００６】
本明細書において「一実施形態」、「ある実施形態」、「実施形態例」等の記載は、説明している実施形態が特定の特徴、構造または特性を持つことを意味しているが、各実施形態が必ずしもその特定の特徴、構造または特性を持つものではない。また、これらの記載は、必ずしも同じ実施形態を意味しているものではない。また、ある実施形態に関連付けて特定の特徴、構造または特性が説明されている場合、明示的に説明されていてもいなくても、この特徴、構造または特性を他の実施形態に関連付けて実現することは当業者の知識の範囲内であると考えられる。
【０００７】
本開示の一部の実施形態は、ハードウェア、ファームウェア、ソフトウェア、または、これらを任意に組み合わせて実現するとしてよい。コンピュータシステムで実現する本開示の実施形態は、構成要素間に設けられている１以上のバスインターコネクト、および／または、構成要素間に設けられている１以上のポイント・ツー・ポイント・インターコネクトを備えるとしてよい。本発明の実施形態はさらに、機械可読有形媒体に格納されている命令として実現されるとしてもよい。当該命令は、１以上のプロセッサによって読み出されて実行されるとしてよい。機械可読有形媒体は、機械（例えば、コンピューティングデバイス）読み出し可能な形式で情報を格納または送信する任意の有形メカニズムを含むとしてよい。例えば、機械可読有形媒体は、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク格納媒体、光学格納媒体、フラッシュメモリデバイス、および、その他の有形媒体を含むとしてよい。
【０００８】
図１を参照しつつ説明すると、ネットワークオーバーヘッドを低減しつつ複数のコンピューティングデバイスに対するデータ送信を円滑化するシステム１００は、ソースコンピューティングシステムまたはサーバコンピューティングデバイス１０２、および、受信側コンピューティングデバイス群またはクライアントコンピューティングデバイス群１０４を備える。コンピューティングデバイス１０２、１０４は、アクセスポイント１０８を介してネットワーク１０６で互いに通信可能に結合されている。ソースコンピューティングデバイス１０２は、本明細書で説明する機能を実行可能な任意の種類のコンピューティングデバイスとして具現化されるとしてよい。例えば、一部の実施形態によると、ソースコンピューティングデバイス１０２は、デスクトップコンピュータ、ラップトップコンピュータ、モバイルインターネットデバイス（ＭＩＤ）、または、その他のネットワークでの利用が可能なコンピューティングデバイスとして具現化されるとしてよい。
【０００９】
コンピューティングデバイス群１０４は、１以上のデスティネーションコンピューティングデバイスまたはシンクコンピューティングデバイス１１０を有する。各シンクコンピューティングデバイス１１０は、ソースコンピューティングデバイス１０２と同様に、本明細書に記載している機能を実行可能な任意の種類のコンピューティングデバイスとして具現化されるとしてよい。例えば、各シンクコンピューティングデバイス１１０は、デスクトップコンピュータ、ラップトップコンピュータ、モバイルインターネットデバイス（ＭＩＤ）、または、その他のネットワークでの利用が可能なコンピューティングデバイスとして具現化されるとしてよい。
【００１０】
アクセスポイント１０８は、コンピューティングデバイス１０２、１１０の間の通信を円滑化する。アクセスポイント１０８は、任意の種類の有線形式または無線形式のネットワーク通信ルーティングデバイスとして具現化されるとしてよく、例えば、有線形式または無線形式のルーター、スイッチ、ハブ、または、通信可能にコンピューティングデバイス１０２、１１０を結合することが可能なその他のネットワーク通信デバイスであってよい。一部の実施形態によると、アクセスポイント１０８はさらに、通信リンク１２４を介して外部ネットワーク１３０に通信可能に結合されている。ネットワーク１３０は、任意の種類の有線形式および／または無線形式のネットワークとして具現化されるとしてよく、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、公的に利用可能なグローバルネットワーク（例えば、インターネット）またはその他のネットワークであってよい。同様に、通信リンク１２４は、アクセスポイント１０８と外部ネットワーク１３０との間の通信を円滑化することが可能な任意の種類の有線形式または無線形式の通信リンクとして具現化されるとしてよく、例えば、任意の数の無線接続あるいは物理的接続、配線、ケーブル、および／または、その他の相互接続リンクまたは相互接続パスであってよい。さらに、ネットワーク１３０は、任意の数のデバイスを追加で含むとしてよく、例えば、コンピューティングデバイス１０２、１１０とリモートコンピューティングデバイスとの間の通信を円滑に行うルーター、スイッチ、中間コンピュータ等を含むとしてよい。
【００１１】
一部の実施形態によると、ソースコンピューティングデバイス１０２およびコンピューティングデバイス群１０４は、１つの部屋の内部に設けられているか、または、互いにローカルに設けられている。例えば、特定の一実施形態によると、システム１００は教室に組み込まれている。このような実施形態によると、ソースコンピューティングデバイス１０２は、教師または指導者のコンピューティングデバイスとして具現化されるとしてよく、シンクコンピューティングデバイス１１０は生徒のコンピューティングデバイスとして具現化されるとしてよい。言うまでもなく、システム１００は、一対多データ送信が必要となる他の環境または実施例でも利用するとしてよい。
【００１２】
どのように利用するのか説明すると、ソースコンピューティングデバイス１０２は、ファイル、動画、画像、テキストおよび／またはその他のデータ等のデータを、各シンクコンピューティングデバイス１１０に送信する。この送信は、複数のデータブロックがシンクコンピューティングデバイス１１０に送信されるデータ送信を複数回行うことによって実行される。各回のデータ送信では、シンクコンピューティングデバイス１１０が、破損状態で受信したブロックまたは受信されなかったデータブロックを、損失データブロックのバケットリストとして記録する。各回のデータ送信が完了した後、シンクコンピューティングデバイス１１０はそれぞれ、バケットリストをソースコンピューティングデバイス１０２に送信する。一部の実施形態によると、以下でより詳細に説明するが、シンクコンピューティングデバイス１１０は、遅延期間またはバケットリストのサイズ（つまり、バケットリストに含まれるデータブロックの数）等の基準に基づき、バケットリストを送信するとしてよい。ソースコンピューティングデバイス１０２は、各シンクコンピューティングデバイス１１０から受信したバケットリストをまとめた後、まとめたバケットリストで特定されたデータブロックをシンクコンピューティングデバイス１１０に再送するデータ送信を実行する。このような後続データ送信を１回以上実行するとしてよい。この間、シンクコンピューティングデバイス１１０は、各シンクコンピューティングデバイス１１０のバケットリストが空になるまでソースコンピューティングデバイス１０２に損失データブロックを報告し続ける。
【００１３】
特定の一実施形態によると、シンクコンピューティングデバイス１１０は、ソースコンピューティングデバイス１０２から一のデータブロックを受信した後に確認応答を送信しない。このような実施形態では、ソースコンピューティングデバイス１０２はこれに対応して、データブロック送信の度にコンピューティングデバイス１１０から確認応答が送信されるまで待機しない。このような構成とすることによって、合計ネットワークトラフィック量、ならびに、このようにネットワークトラフィックが増加することに起因するエラーおよび遅延が低減されるとしてよい。
【００１４】
以下で図２を参照しつつ説明すると、一実施形態において、コンピューティングデバイス１０２、１１０はそれぞれ、プロセッサ２００、チップセット２０４、および、メモリ２０２を有するとしてよい。コンピューティングデバイス１０２、１１０は、本明細書で説明する各機能を実行可能な任意の種類のコンピューティングデバイスとして具現化されるとしてよい。例えば、上述したように、コンピューティングデバイス１０２、１１０は、デスクトップコンピュータ、ラップトップコンピュータ、モバイルインターネットデバイス（ＭＩＤ）またはその他のネットワークでの利用が可能なコンピューティングデバイスとして具現化されているとしてよい。
【００１５】
プロセッサ２００は、一例として、プロセッサコア２０６を持つシングルコアプロセッサとして具現化されている。しかし、他の実施形態では、プロセッサ２００は、複数のプロセッサコア２０６を持つマルチコアプロセッサとして具現化するとしてもよい。また、コンピューティングデバイス１０２、１１０は、１以上のプロセッサコア２０６を持つプロセッサ２００をさらに有するとしてもよい。プロセッサ２００は、複数の信号パス２０８を介して、チップセット２０４に通信可能に結合されている。信号パス２０８は、プロセッサ２００とチップセット２０４との間の通信を円滑化に実行可能な任意の種類の信号パスとして具現化されているとしてよい。例えば、信号パス２０８は、任意の数のバス経路、プリント配線基板の配線、ワイヤ、ビア、中間デバイス、および／または、その他のインターコネクトとして具現化されるとしてよい。
【００１６】
メモリ２０２は、１以上のメモリデバイスまたはデータ格納位置として具現化されるとしてよい。例えば、ダイナミックランダムアクセスメモリデバイス（ＤＲＡＭ）、シンクロナスダイナミックランダムアクセスメモリデバイス（ＳＤＲＡＭ）、ダブルデータレートダイナミックランダムアクセスメモリデバイス（ＤＤＲ  ＳＤＲＡＭ）および／またはその他の揮発性メモリデバイスとして具現化されるとしてよい。また、図２に図示しているメモリデバイス２０２は１つのみであるが、他の実施形態では、コンピューティングデバイス１０２、１１０は、さらにメモリデバイスを有するとしてよい。
【００１７】
チップセット２０４は、メモリコントローラハブ（ＭＣＨ）またはノースブリッジ、入出力コントローラハブ（ＩＣＨ）またはサウスブリッジ、および、ファームウェアデバイスを含むとしてよい。このような実施形態によると、ファームウェアデバイスは、ベーシック・インプット／アウトプット・システム（ＢＩＯＳ）データおよび／または命令および／またはその他の情報を格納するメモリストレージデバイスとして具現化されるとしてよい。チップセット２０４は、複数の信号パス２１０を介して、メモリ２０２に通信可能に結合されている。信号パス２１０は、信号パス２０８と同様に、チップセット２０４とメモリデバイス２０２との間の通信を円滑に実行可能な任意の種類の信号パスとして具現化されているとしてよい。例えば、任意の数のバス経路、プリント配線基板の配線、ワイヤ、ビア、中間デバイスおよび／またはその他のインターコネクトとして具現化されているとしてよい。
【００１８】
他の実施形態によると、チップセット２０４は、プラットフォームコントローラハブ（ＰＣＨ）として具現化されるとしてよい。このような実施形態によると、メモリコントローラハブ（ＭＣＨ）は、プロセッサ２００に組み込まれているか、または、プロセッサ２００に対応付けられているとしてよい。また、このような実施形態によると、メモリデバイス２０２は、複数の信号パス２１２を介して、チップセット２０４（つまり、プラットフォームコントローラハブ）ではなく、プロセッサ２００に通信可能に結合されているとしてよい。信号パス２１２は、信号パス２０８と同様に、メモリデバイス２０２とプロセッサ２００との間の通信を円滑に実行可能な任意の種類の信号パスとして具現化されているとしてよい。例えば、任意の数のバス経路、プリント配線基板の配線、ワイヤ、ビア、中間デバイスおよび／またはその他のインターコネクトとして具現化されているとしてよい。
【００１９】
コンピューティングデバイス１０２、１１０はさらに、ネットワーク１０６を介して互いに通信するべく、通信回路２２０を有する。通信回路２２０は、コンピューティングデバイス１０２、１１０間の通信を可能にする任意の数のデバイスおよび回路として具現化されるとしてよい。例えば、通信回路２２０は、１以上の有線方式または無線方式のネットワークインターフェースカード（ＮＩＣ）またはその他のネットワーク通信カード、モジュール、または、アクセスポイントの１０８を介して他のコンピューティングデバイス１０２、１１０と通信するための回路として具現化されているとしてよい。
【００２０】
コンピューティングデバイス１０２、１１０はさらに、追加で周辺デバイス、例えば、データストレージ２２２、表示デバイス２２４、および、その他の周辺デバイス２２６等を有するとしてよい。通信回路２２０、データストレージ２２２、表示デバイス２２４、および、その他の周辺デバイス２２６はそれぞれ、信号パス２３０を介して、チップセット２０４に通信可能に結合されている。繰り返しになるが、信号パス２３０は、信号パス２０８と同様に、チップセット２０４と、通信回路２２０、データストレージ２２２、表示デバイス２２４、および、その他の周辺デバイス２２６との間の通信を円滑に実行可能な任意の種類の信号パスとして具現化されているとしてよい。例えば、任意の数のバス経路、プリント配線基板の配線、ワイヤ、ビア、中間デバイスおよび／またはその他のインターコネクトとして具現化されているとしてよい。
【００２１】
データストレージデバイス２２２は、短期データ格納媒体または長期データ格納媒体として構成されている任意の種類のデバイスとして具現化されるとしてよい。例えば、メモリデバイスおよびメモリ回路、メモリカード、ハードディスクドライブ、ソリッドステートドライブ、または、その他のデータストレージデバイスとして具現化されるとしてよい。表示デバイス２２４は、コンピューティングデバイス１０２、１１０のユーザにデータを表示する任意の種類の表示デバイスとして具現化されるとしてよい。例えば、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）ディスプレイ、発光ダイオード（ＬＥＤ）ディスプレイ、または、その他の表示デバイスとして具現化されるとしてよい。周辺デバイス２２６は、任意の数の追加で設けられる周辺デバイス、例えば、入力デバイス、出力デバイス、および、その他のインターフェースデバイスを含むとしてよい。例えば、周辺デバイス２２６は、コンピューティングデバイス１０２、１１０に入力を供給するキーボードおよび／またはマウスを含むとしてよい。周辺デバイス２２６に含まれるデバイスの具体的な数および種類は、例えば、コンピューティングデバイス１０２、１１０の使用目的に応じて決まるとしてよい。
【００２２】
以下で図３を参照しつつ説明すると、複数のコンピューティングデバイス１１０にデータを分配する方法３００は、ソースコンピューティングデバイス１０２がデータ送信セッションを初期化するブロック３０２から開始される。ブロック３０２では、ソースコンピューティングデバイス１０２は、任意の数のキャリブレーション手順および初期化手順を実行するとしてよい。さらに、一部の実施形態では、ブロック３０４において、ソースコンピューティングデバイス１０２は、各シンクコンピューティングデバイス１１０との間でハンドシェイクを実行する。このようなハンドシェイク処理によって、シンクコンピューティングデバイス１１０に対してデータを送信するために用いられる通信プロトコル、および／または、データ送信内容を受信するようにシンクコンピューティングデバイス１１０の準備を整えるための他の情報またはデータを構築するとしてよい。例えば、一実施形態によると、ソースコンピューティングデバイス１０２は、シンクコンピューティングデバイス１１０に送信されるデータファイルについて、シンクコンピューティングデバイス１１０に通知する。このような情報（例えば、シンクコンピューティングデバイス１１０が受信すべきデータブロック数）は、シンクコンピューティングデバイス１１０によって、損失データブロック（つまり、受信されなかったデータブロックまたは破損状態で受信したデータブロック）を判断するために用いられるとしてよい。
【００２３】
上述したように、ソースコンピューティングデバイス１０２は、１回以上のデータ送信によって、シンクコンピューティングデバイス１１０にデータファイルまたはその他のデータを転送する。第１回目のデータ送信の後のデータ送信は、シンクコンピューティングデバイス１１０からのフィードバックに基づいて行われる。ソースコンピューティングデバイス１０２は、データファイルまたはその他のデータをシンクコンピューティングデバイス１１０へと問題なく転送するために必要な回数だけデータ送信を行うとしてよい。したがって、ブロック３０６において、ソースコンピューティングデバイスは、次の回のデータ送信を開始する。例えば、方法３００の第１回目において、ソースコンピューティングデバイス１０２は、シンクコンピューティングデバイス１１０に対する第１回目のデータ送信を開始する（つまり、Ｘ＝１）。ブロック３０６において、ソースコンピューティングデバイス１０２は、例えば、今回のデータ送信が始まっている旨を示す通知をシンクコンピューティングデバイス１１０に送信するとしてよい。一部の実施形態によると、ソースコンピューティングデバイス１０２はさらに、特定の回のデータ送信に関するデータ、例えば、期待すべきデータブロック数を、シンクコンピューティングデバイス１１０に送信するとしてよい。これに基づいて、シンクコンピューティングデバイス１１０は任意のデータブロックが失われたか否かを判断するとしてよい。
【００２４】
ソースコンピューティングデバイス１０２は、今回のデータ送信を開始した後、ブロック３０８において、今回のデータ送信用のデータブロックをシンクコンピューティングデバイス１１０に送信する。第１回目のデータ送信において、シンクコンピューティングデバイス１１０に送信されるべきデータファイルまたはその他のデータを含むデータブロックは全て、デバイス１１０に送信される。しかし、より詳細に後述するが、後続の回のデータ送信で送信されるのは、１以上のシンクコンピューティングデバイスによって損失が認められたデータブロックのみである。このように、ブロック３０８において、例えば、より詳細に後述するが、送信すべきデータファイルのサイズ、前回のデータ送信、シンクコンピューティングデバイス１１０からのフィードバック、および／または、その他の基準に応じて、任意の数のデータブロックを送信するとしてよい。
【００２５】
ソースコンピューティングデバイス１０２は、任意の適切なネットワーク通信技術を用いてシンクコンピューティングデバイス１１０にデータブロックを転送するとしてよい。例えば、一部の実施形態によると、ソースコンピューティングデバイス１０２は、マルチキャストデータ送信またはブロードキャストデータ送信を利用して、データブロックをシンクコンピューティングデバイス１１０に転送するとしてよい。これに代えて、特定の一実施形態によると、ソースコンピューティングデバイス１０２は、米国特許出願第ＸＸ／ＸＸＸＸＸＸ（発明の名称：「複数のコンピューティングデバイスに対する一対多データ送信を円滑化する方法およびシステム」、ジャスティン・リップマン（Ｊｕｓｔｉｎ  Ｌｉｐｍａｎ）、出願日：２００９年１２月ＸＸ日）に記載されている一対多データ送信を利用するとしてよい。このような実施形態によると、ソースコンピューティングデバイス１０２は、コンピューティングデバイス１１０のうち１つを、「シンク」コンピューティングデバイスとして選択する。残りのコンピューティングデバイス１１０は、混合通信モードに構成される。ソースコンピューティングデバイス１０２は、ユニキャストデータ送信を選択シンクコンピューティングデバイス１１０に送信することによって、選択シンクコンピューティングデバイス１１０にデータブロックを転送する。しかし、ユニキャストデータ送信は選択シンクコンピューティングデバイス１１０にアドレス指定されているが、当該ユニキャストデータ送信は、他の選択されていないコンピューティングデバイス１１０のそれぞれでも受信される。選択されていないコンピューティングデバイス１１０は混合通信モードに構成されているので、選択されていないコンピューティングデバイス１１０もまた、ユニキャストデータ送信に対してフィルタリングおよび処理を行う。このように、一対多データ送信は、ユニキャストデータ送信を用いて実現される。
【００２６】
ソースコンピューティングデバイス１０２は、今回のデータ送信用のデータブロックを転送した後、各シンクコンピューティングデバイス１１０に、今回のデータ送信が完了した旨をデバイス１１０に通知する通知を送信する（ブロック３１０）。この後、ブロック３１２において、ソースコンピューティングデバイス１０２は、シンクコンピューティングデバイス１１０が送信したバケットリストを受信する。より詳細に後述するが、バケットリストでは、報告する各シンクコンピューティングデバイス１１０で失われた今回のデータブロックが特定されている。
【００２７】
ブロック３１２において特定のシンクコンピューティングデバイス１１０がソースコンピューティングデバイス１０２にバケットリストを送信するか否かは、１以上の基準に基づいて判断される。例えば、一実施形態によると、ブロック３１２において、対応するバケットリストに少なくとも１つの損失データブロックを含むシンクコンピューティングデバイス１１０はいずれも、今回終了通知を受信すると、または、当該通知を受信した後、バケットリストをソースコンピューティングデバイスに送信する。しかし、他の実施形態では、シンクコンピューティングデバイス１１０は、今回終了通知を受信した後の遅延期間に応じて、対応するバケットリストを送信するとしてもよい。このような実施形態では、ブロック３１４において、ソースコンピューティングデバイス１０２が、各シンクコンピューティングデバイス１１０に、デフォルト遅延値を送信する。シンクコンピューティングデバイス１１０は、より詳細に後述するが、回が終了した時点での通知の後、デフォルト遅延値に基づき、対応する遅延期間を決定する。これに代えて、または、これに加えて、他の実施形態では、シンクコンピューティングデバイス１１０は、対応するバケットリストのサイズに基づき、バケットリストを送信するとしてよい。このような実施形態によると、ブロック３１６において、ソースコンピューティングデバイス１０２は、各シンクコンピューティングデバイス１１０に所定のバケットリストサイズしきい値を送信する。シンクコンピューティングデバイス１１０は、より詳細に後述するが、しきい値に基づいてバケットリストを送信するか否かを判断する。
【００２８】
ソースコンピューティングデバイス１０２がシンクコンピューティングデバイス１１０から今回のバケットリストを受信した後、ブロック３１８において、ソースコンピューティングデバイス１０２は、これら複数のバケットリストをまとめて一のマスターバケットリストを生成する。マスターバケットリストは、その回のデータ送信で失われたと１以上のシンクコンピューティングデバイス１１０が報告されているデータブロックを示す指標または識別情報を含む。ブロック３２０において、マスターバケットリストが空である（つまり、少なくとも１つのデータブロックを含むバケットリストを送ったシンクコンピューティングデバイス１１０はない）と判断されると、ソースコンピューティングデバイス１０２は、ブロック３２２において、データ送信セッションが完了した旨の通知を各シンクコンピューティングデバイス１１０に送信する。
【００２９】
しかし、ブロック３１６においてソースコンピューティングデバイス１０２がバケットリストサイズしきい値をシンクコンピューティングデバイス１１０に送信する実施形態では、シンクコンピューティングデバイス１１０から受信するバケットリストがない場合には、ソースコンピューティングデバイス１０２が所定量だけしきい値を小さくしてしきい値をシンクコンピューティングデバイス１１０に再送するとしてもよいと考えられたい。このような構成では、ソースコンピューティングデバイス１０２は、しきい値がゼロになるまで、毎回しきい値を小さくするとしてもよい。
【００３０】
ブロック３２０に戻って、マスターバケットリストが空でない場合、方法３００はブロック３０６に戻って、次の回のデータ送信を開始する。次の回のデータ送信では、上述したように、マスターバケットリストで特定されているデータブロックをシンクコンピューティングデバイス１１０に再送する。このようにして、ソースコンピューティングデバイス１０２は、１回以上のデータ送信を実行して、シンクコンピューティングデバイス１１０にデータファイルまたはその他のデータを送信する。一般的に、連続して行われる各回のデータ送信では、ソースコンピューティングデバイス１０２が再送するデータブロックの数が少なくなっていく。
【００３１】
以下で図４を参照しつつ説明するが、ソースコンピューティングデバイス１０２からデータを受信する方法は、各シンクコンピューティングデバイス１１０がソースコンピューティングデバイス１０２との間でハンドシェイクを行うブロック４０２から開始される。ブロック４０２において、コンピューティングデバイス１０２、１１０は、上述したように、シンクコンピューティングデバイス１１０にデータを送信するために用いられる通信プロトコル、および／または、データ送信を受信させるべくシンクコンピューティングデバイス１１０を準備するための他の情報またはデータを構築するとしてよい。例えば、一部の実施形態によると、シンクコンピューティングデバイス１１０は、例えば、各シンクコンピューティングデバイス１１０が受信すべきデータブロックの数等、ソースコンピューティングデバイス１０２が送信するデータファイルに関する情報を受信するとしてよい。
【００３２】
ブロック４０４において、シンクコンピューティングデバイスは、今回のデータ送信が開始されたか否かを判断する。方法３００に関連して上述したように、ソースコンピューティングデバイス１０２は、シンクコンピュータ１１０に対して、データ送信の開始を示す通知および／または他のデータを送信するとしてよい。一部の実施形態では、今回のデータ送信に関するデータ、例えば、この回で送信されるデータブロックの数を送信するとしてよい。
【００３３】
複数のシンクコンピューティングデバイス１１０は、ブロック４０６において、ソースコンピューティングデバイス１０２が送信したデータブロックを受信して、ブロック４０８において、損失データブロックのバケットリストを更新する。各シンクコンピューティングデバイス１１０は、今回においてソースコンピューティングデバイス１０２が送信したが、シンクコンピューティングデバイス１１０が受信しなかったか、または、破損状態で受信されたので、シンクコンピューティングデバイス１１０に再送する必要があるデータブロックのリスト、または、その指標を生成および／または更新する。シンクコンピューティングデバイス１１０は、対応するメモリ２０２および／またはデータストレージ２２２にバケットリストを格納するとしてよい。各バケットリストは、様々なリストであるとしてよく、今回のデータ送信に基づきデータブロックを１以上含むとしてもよいし、含まないとしてもよい。データブロックに格納されている、当該データブロックが失われている旨を示す特定のデータは、特定の実施形態および実施例に応じて、さまざまなデータであるとしてよい。例えば、一実施形態によると、シンクコンピューティングデバイス１１０は、今回で失われたと判断された各データブロックのパケット識別番号を格納する。
【００３４】
ブロック４１０において、シンクコンピューティングデバイス１１０は、今回のデータ送信が完了したか否かを判断する。完了していなければ、方法４００はブロック４０６および４０８に戻って、各シンクコンピューティングデバイス１１０が受信処理を継続して行うか、または、ソースコンピューティングデバイス１０２からデータブロックを受信するまで待機して、損失データブロックのバケットリストを更新する。しかし、シンクコンピューティングデバイス１１０がソースコンピューティングデバイス１０２から今回終了通知を受信すると、方法４００は、ブロック４１２に進み、各シンクコンピューティングデバイス１１０は、バケットリストが空であるか否か（つまり、今回のデータ送信セッションのデータブロックをすべて受信したか否か）を判断する。空であれば、ブロック４１４において、特定のシンクコンピューティングデバイス１１０は、ソースコンピューティングデバイス１０２からセッション終了通知を受け取るまで待機する。しかし、シンクコンピューティングデバイス１１０の損失データブロックを示すバケットリストにおいて少なくとも１つの損失データブロックがある場合、方法４００はブロック４１６に進み、シンクコンピューティングデバイス１１０は、特定の基準に基づいて、ソースコンピューティングデバイスに損失データブロックのバケットリストを送信する。
【００３５】
上述したように、一部の実施形態では、シンクコンピューティングデバイス１１０は、ソースコンピューティングデバイス１０２から、今回終了通知を受信すると、または、当該通知を受信した後で、バケットリストを送信するとしてよい。しかし、他の実施形態によると、シンクコンピューティングデバイス１１０は、ブロック４１８において、デフォルト遅延値に基づいて、損失データブロックのバケットリストを送信するとしてよい。この場合、シンクコンピューティングデバイス１１０は、図５に示すバケットリストを送信する方法５００を実行するとしてよい。方法５００は、シンクコンピューティングデバイス１１０がソースコンピューティングデバイス１０２からデフォルト遅延値を受信するブロック５０２で開始される。デフォルト遅延値は、今回のデータ送信が完了した後（例えば、今回終了通知を受信した後）のデフォルト期間を定義している。このデフォルト期間が経過すると、シンクコンピューティングデバイス１１０は対応するバケットリストを送信する。デフォルト遅延値は、マイクロ秒、秒、分またはその他の時間単位で表現されるとしてよい。ブロック５０４において、シンクコンピューティングデバイス１１０は、特定のバケットリストのサイズに基づき、遅延期間を決定する。例えば、特定の一実施形態によると、各シンクコンピューティングデバイス１１０の遅延期間は、デフォルト遅延値を各バケットリストのサイズ（例えば、バケットリストで特定されるデータブロック数）で除算することで算出される。シンクコンピューティングデバイス１１０はこの後、算出された遅延期間が経過すると、または、当該遅延期間が経過した後で、対応するバケットリストを送信する。このように、バケットリストが大きいシンクコンピューティングデバイスは、バケットリストが小さいシンクコンピューティングデバイスよりも前にバケットリストを送信する。また、複数のシンクコンピューティングデバイス１１０の送信期間を分散することで、ネットワーク「内部崩壊」の可能性および総遅延量を低減するとしてよい。
【００３６】
方法４００のブロック４１６を再度参照すると、他の実施形態において、シンクコンピューティングデバイスは、ブロック４２０において、バケットリストのサイズに基づきバケットリストを送信するとしてよい。この場合、シンクコンピューティングデバイス１１０は、図６に示すバケットリストを送信する方法６００を実行するとしてよい。方法６００は、シンクコンピューティングデバイス１１０が所定のバケットリストサイズしきい値を受信するブロック６０２から開始される。上述したように、所定のしきい値は、最少データブロック数を定義しているとしてよい。ブロック６０４において、シンクコンピューティングデバイス１１０は、バケットリストがしきい値との間で所定の関係を満たしているか否かを判断する。例えば、図６の実施形態例において、シンクコンピューティングデバイス１１０は、バケットリストがしきい値よりも大きいか否かを判断する。しかし、他の実施形態では、シンクコンピューティングデバイス１１０は、ブロック６０４において、バケットリストがしきい値と等しいか否か、または、しきい値より小さいか否かを判断するとしてよい。当該実施形態例では、シンクコンピューティングデバイス１１０のバケットリストサイズがしきい値より大きい場合、シンクコンピューティングデバイス１１０は、ブロック６０６において、ソースコンピューティングデバイス１０２にバケットリストを送信する。しかし、シンクコンピューティングデバイス１１０のバケットリストがしきい値以下である場合、シンクコンピューティングデバイス１１０は今回のバケットリストを送信しない。シンクコンピューティングデバイス１１０は、特定された損失データブロックをバケットリストに保持して、次回のデータ送信時に適宜更新する。この場合、しきい値よりも大きいバケットリストを持つシンクコンピューティングデバイス１１０のみが、対応するバケットリストを送信する。したがって、シンクコンピューティングデバイス１１０によるバケットリストの送信が分散され、または、各回において低減されることにより、ネットワーク「内部崩壊」の可能性および総遅延量が低減され得る。
【００３７】
以下で図７から図９を参照すると、一例として、ソースコンピューティングデバイス１０２から４つのシンクコンピューティングデバイス１１０への第１回目および第２回目のデータ送信を図示している。図７では、ソースコンピューティングデバイス１０２が、複数のデータブロックＢ１−Ｂｎとして具現化されているデータファイルを、シンクコンピューティングデバイス１１０に送信している。第１回目のデータ送信において、第１のシンクコンピューティングデバイス１１０はデータブロックＢ１およびＢ２を受信したが、データブロックＢ３、Ｂ４およびＢ５については、受信しなかったか、破損状態で受信した。これらのブロックはそれぞれ、図７ではデータブロックＸ３、Ｘ４およびＸ５と示されており、第１のシンクコンピューティングデバイス１１０に関して失われたデータブロックである旨を示している。第２のシンクコンピューティングデバイス１１０は、データブロックＢ１、Ｂ２、Ｂ４およびＢ５を受信したが、データブロックＢ３が失われた。第３のシンクコンピューティングデバイス１１０は、データブロックＢ２、Ｂ３およびＢ５を受信したが、データブロックＢ１およびＢ４は失われた。また、第４のシンクコンピューティングデバイス１１０は、第１回目のデータ送信のデータブロックはすべて受信した。
【００３８】
第１回目のデータ送信の後の各シンクコンピューティングデバイス１１０のそれぞれのバケットリストを図８に図示する。第１のコンピューティングデバイス１１０のバケットリスト８０１は、データブロックＢ３（Ｘ３）、Ｂ４（Ｘ４）、Ｂ５（Ｘ５）、および、第１のコンピューティングデバイス１１０が第１回目のデータ送信において失われたと判断したその他のデータブロックＸｎの指標または識別情報を含む。同様に、第２のコンピューティングデバイスのバケットリスト８０２は、データブロックＢ３、および、第２のシンクコンピューティングデバイス１１０が失われたと判断したその他のデータブロックの指標または識別情報を含む。第３のシンクコンピューティングデバイス１１０のバケットリスト８０３は、データブロックＢ１およびＢ４、および、第３のコンピューティングデバイス１１０が失われたと判断したその他のデータブロックの指標または識別情報を含む。第４のコンピューティングデバイス１１０のバケットリスト８０４は、空である。バケットリストが空ではない各コンピューティングデバイス１１０は、上述した１以上の基準（例えば、今回終了通知の受信、デフォルト遅延、デフォルト値、バケットリストのサイズ等）に基づき、対応するバケットリストをソースコンピューティングデバイス１０２に送信する。
【００３９】
この後、図９に示すように、ソースコンピューティングデバイス１０２は、コンピューティングデバイス１１０から受信したバケットリストをまとめて、第２回目のデータ送信を開始する。第２回目のデータ送信は、バケットリストをまとめた結果に基づいて行われる。例えば、図示している実施形態では、ソースコンピューティングデバイス１０２がデータブロックＢ１、Ｂ３、Ｂ４、Ｂ５等を再送する。このように、ソースコンピューティングデバイス１０２は、報告をしたシンクコンピューティングデバイス１１０のうち１以上が失ったと特定しているデータブロックのみを再送する。再送されたデータブロックは、シンクコンピューティングデバイス１１０によって受信される。シンクコンピューティングデバイス１１０は、特定のデータブロックを受信したか、または、受信しなかったかに基づいて対応するバケットリストを更新する。ソースコンピューティングデバイス１０２は、各シンクコンピューティングデバイス１１０が有効なデータブロックをすべて受信して、各シンクコンピューティングデバイス１１０へのデータファイルの送信が成功した旨を示すまで、データ送信を連続して行うとしてよい。
【００４０】
本開示は添付図面および上記の説明において詳細に図示および記載してきたが、図示内容および記載内容は、例示的なものであって本質的に本開示を制限するものではないと考えられたい。図示および記載した実施形態は例示的なものに過ぎず、本開示が意図する範囲内に入る全ての変更および変形は保護の対象となる旨理解されたい。例えば、システム１００は「一対多」データ通信で用いるものとして概略を上述したが、上記のシステム、デバイスおよび方法は「一対一」データ通信にも等しく適用可能であると考えられたい。このような実施形態によると、コンピューティングデバイス群１０４は、本明細書で説明した方法およびデバイスを用いてソースコンピューティングデバイス１０２から「一対一」データ通信を受信する一のシンクコンピューティングデバイス１１０を含むとしてよい。
【図１】
2013512628.tif 000003
【図２】
2013512628.tif 000004
【図３】
2013512628.tif 000005
【図４】
2013512628.tif 000006
【図５】
2013512628.tif 000007
【図６】
2013512628.tif 000008
【図７】
2013512628.tif 000009
【図８】
2013512628.tif 000010
【図９】
2013512628.tif 000011
【手続補正書】
【提出日】平成24年6月1日(2012.6.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
一のソースコンピューティングデバイスから複数のシンクコンピューティングデバイスへの第１の回のデータ送信を開始して、複数のデータブロックを前記複数のシンクコンピューティングデバイスに送信する段階と、
前記複数のシンクコンピューティングデバイスのそれぞれにおいて、前記複数のデータブロックのうち失われたデータブロックのリストを生成する段階と、
前記第１の回のデータ送信が完了した後、前記複数のシンクコンピューティングデバイスのそれぞれから前記ソースコンピューティングデバイスへと前記失われたデータブロックのリストを送信する段階と、
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスへと第２の回のデータ送信を開始して、前記複数のシンクコンピューティングデバイスから受信した複数の前記失われたデータブロックのリストで特定されているデータブロックを再送する段階と
を備える方法。
【請求項２】
前記失われたデータブロックのリストを生成する段階は、前記複数のデータブロックのうち、前記複数のシンクコンピューティングデバイスのそれぞれが受信しなかった、または、破損状態で受信したデータブロックの識別情報の指標を含むリストを生成する段階を有する請求項１に記載の方法。
【請求項３】
前記失われたデータブロックのリストを送信する段階は、前記失われたデータブロックのリストが空でない場合に限り、前記失われたデータブロックのリストを送信する段階を有する請求項１に記載の方法。
【請求項４】
前記失われたデータブロックのリストを送信する段階は、１回のデータ送信が完了した後の遅延期間に基づき、前記失われたデータブロックのリストを送信する段階を有する請求項１に記載の方法。
【請求項５】
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスのそれぞれへとデフォルト遅延値を送信する段階をさらに備える請求項４に記載の方法。
【請求項６】
前記複数のシンクコンピューティングデバイスのそれぞれにおいて、前記デフォルト遅延値に基づき、前記複数のシンクコンピューティングデバイスのそれぞれの前記遅延期間を決定する段階をさらに備える請求項５に記載の方法。
【請求項７】
前記遅延期間は、前記デフォルト遅延値を、前記複数のシンクコンピューティングデバイスのそれぞれの前記失われたデータブロックのリストに含まれるデータブロック数で除算した結果に等しい請求項６に記載の方法。
【請求項８】
前記失われたデータブロックのリストを送信する段階は、前記複数のシンクコンピューティングデバイスのそれぞれの前記失われたデータブロックのリストで特定されるデータブロック数に基づき、前記失われたデータブロックのリストを送信する段階を有する請求項１に記載の方法。
【請求項９】
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスのそれぞれに対して、所定の最小リストサイズを定義しているしきい値を送信する段階をさらに備える請求項８に記載の方法。
【請求項１０】
前記失われたデータブロックのリストを送信する段階は、前記失われたデータブロックのリストで特定されているデータブロック数が前記しきい値より大きい場合に限り、前記複数のシンクコンピューティングデバイスのそれぞれから、前記失われたデータブロックのリストを送信する段階を有する請求項９に記載の方法。
【請求項１１】
前記第１の回のデータ送信が完了すると、前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスのそれぞれへと、今回終了通知を送信する段階をさらに備える請求項１に記載の方法。
【請求項１２】
前記複数のシンクコンピューティングデバイスのうち第１のシンクコンピューティングデバイスで、前記複数のデータブロックのうち少なくとも１つのデータブロックを受信する段階をさらに備え、
前記失われたデータブロックのリストを生成する段階は、前記第１のシンクコンピューティングデバイスにおいて、前記少なくとも１つのデータブロックに基づき前記失われたデータブロックのリストを更新する段階を有する請求項１に記載の方法。
【請求項１３】
前記ソースコンピューティングデバイスにおいて、前記複数のシンクコンピューティングデバイスから受信した前記複数の失われたデータブロックのリストをまとめることで、失われたデータブロックのマスターリストを生成する段階をさらに備える請求項１に記載の方法。
【請求項１４】
前記複数のシンクコンピューティングデバイスのそれぞれについて、前記失われたデータブロックのリストが空になるまで、
前記複数のシンクコンピューティングデバイスのそれぞれにおいて、前記複数のデータブロックのうち失われたデータブロックの新しいリストを生成する段階と、
前記失われたデータブロックの新しいリストが空でない場合、前記複数のシンクコンピューティングデバイスから、複数の前記失われたデータブロックの新しいリストを送信する段階と、
前記ソースコンピューティングデバイスから前記複数のシンクコンピューティングデバイスへの新しい回のデータ送信を開始して、前記複数の失われたデータブロックの新しいリストが特定しているデータブロックを再送する段階と
を繰り返し実行する段階をさらに備える請求項１に記載の方法。
【請求項１５】
プロセッサと、
複数の命令を格納しているメモリデバイスと
を備えるコンピューティングデバイスであって、
前記プロセッサは、前記複数の命令を実行すると、
ソースコンピューティングデバイスから第１の回のデータ送信の通知を受信して、
前記第１の回のデータ送信に基づいて、前記ソースコンピューティングデバイスが送信したデータブロックのうち、前記第１の回のデータ送信において前記コンピューティングデバイスが受信しなかったか、または、破損状態で受信したデータブロックを特定する、失われたデータブロックのリストを生成して、
前記第１の回のデータ送信が完了した旨の通知を受信することに応じて、前記ソースコンピューティングデバイスに前記失われたデータブロックのリストを送信して、
前記ソースコンピューティングデバイスから、前記失われたデータブロックのリストに基づいて行われる第２の回のデータ送信の通知を受信するコンピューティングデバイス。
【請求項１６】
前記複数の命令によって前記プロセッサはさらに、
前記第１の回のデータ送信において送信された第１のデータブロックを受信して、
前記第１のデータブロックを受信したことに応じて前記ソースコンピューティングデバイスに確認応答を送信することなく、前記第１の回のデータ送信において送信された第２のデータブロックを受信する請求項１５に記載のコンピューティングデバイス。
【請求項１７】
前記失われたデータブロックのリストを送信することは、前記第１の回のデータ送信が完了した旨の通知を受信した後に始まる遅延期間が経過した後で、前記失われたデータブロックのリストを送信することを含む請求項１５に記載のコンピューティングデバイス。
【請求項１８】
前記複数の命令によって前記プロセッサはさらに、
前記ソースコンピューティングデバイスからデフォルト遅延値を受信して、
前記デフォルト遅延値を前記失われたデータブロックのリストに含まれるデータブロック数で除算することによって、前記遅延期間を算出する請求項１７に記載のコンピューティングデバイス。
【請求項１９】
前記失われたデータブロックのリストを送信することは、前記失われたデータブロックのリストに含まれるデータブロック数に基づき、前記失われたデータブロックのリストを送信することを含む請求項１５に記載のコンピューティングデバイス。
【請求項２０】
前記複数の命令によって前記プロセッサはさらに、
前記ソースコンピューティングデバイスから、最少データブロック数を定義しているしきい値を受信して、
前記失われたデータブロックのリストを送信することは、前記失われたデータブロックのリストに含まれるデータブロック数が前記しきい値との間で所定の関係を満たしている場合に限って、前記失われたデータブロックのリストを送信することを含む請求項１９に記載のコンピューティングデバイス。
【請求項２１】
コンピューティングデバイスに、
ソースコンピューティングデバイスからの１回のデータ送信に基づき、前記ソースコンピューティングデバイスに確認応答を送信することなく、前記１回のデータ送信において前記ソースコンピューティングデバイスが送信したデータブロックのうち、前記コンピューティングデバイスが受信しなかったか、または、破損状態で受信したデータブロックを特定する失われたデータブロックのリストを生成する段階と、
前記１回のデータ送信が完了した後、前記ソースコンピューティングデバイスに前記失われたデータブロックのリストを送信して、前記ソースコンピューティングデバイスに、前記失われたデータブロックのリストで特定されているデータブロックを再送する段階と
を実行させるためのプログラム。
【請求項２２】
前記失われたデータブロックのリストを送信することは、前記１回のデータ送信が完了した後、算出した遅延期間に基づき前記失われたデータブロックのリストを送信することを含む請求項２１に記載のプログラム。
【請求項２３】
前記失われたデータブロックのリストを送信することは、前記失われたデータブロックのリストに含まれているデータブロック数が所定の最小しきい値よりも大きいことに応じて、前記失われたデータブロックのリストを送信することを含む請求項２１に記載のプログラム。
【請求項２４】
シンクコンピューティングデバイスにおいて、複数のデータブロックを含む第１の回のデータ送信をソースコンピューティングデバイスから受信する段階と、
前記シンクコンピューティングデバイスにおいて、前記複数のデータブロックに基づいて失われたデータブロックのリストを生成する段階と、
前記第１の回のデータ送信が完了した後、前記ソースコンピューティングデバイスに前記失われたデータブロックのリストを送信する段階と、
前記シンクコンピューティングデバイスにおいて、前記失われたデータブロックのリストに少なくとも部分的に基づいて行われる、前記ソースコンピューティングデバイスからの第２の回のデータ送信を受信する段階と
を備える方法。
【請求項２５】
前記失われたデータブロックのリストを送信する段階は、前記失われたデータブロックのリストで特定されているデータブロック数に基づいて、前記失われたデータブロックのリストを送信する段階を有する請求項２４に記載の方法。
【国際調査報告】
2013512628.tif 000012
2013512628.tif 000013