(57)【要約】クライアント及びコンテンツプロバイダは複数の同時トランスポート接続により接続される。データを転送するために使用されるトランスポート接続の数は、転送されるデータのサイズに基づいて選択され、残存するデータの量と、トランスポート接続の属性とに基づいて、データの転送が開始された後に変更され得る。別の側面では、トランスポート接続経由で送信されるデータは、各フレームが唯一つのデータストリームからのデータを含むようにフレーム中に組織化される。フレームは、それらが送信されるトランスポート接続の制御ウィンドウ以下であるようにサイズ化される。各フレームは、ラウンドロビンの仕方で、又はフレームのサイズとトランスポート接続の制御ウィンドウのサイズとに基づいてトランスポート接続に割り当てられ得る。【選択図】図１
2019520745.tif 000002
【特許請求の範囲】
【請求項１】
総スループットを増加させるためのシステムであって、
第２のコンピュータへの複数の同時トランスポート接続を確立することと、
前記複数の同時トランスポート接続の内の少なくとも一部の各接続に対する所望のデータグループサイズを判定することと、
リクエストされたデータに対する１つ以上のリクエストを第２のコンピュータから受信することと、
前記１つ以上のリクエストに対応するリクエストされたデータを取得することと、
リクエストされた前記データの転送が、少なくとも１つの他のリクエストを前記第２のコンピュータから受信する前に終了しなければならないように、リクエストされた前記データを、第１のコンピュータと前記第２のコンピュータとの間で前記複数の同時トランスポート接続を通じて前記第１のコンピュータから前記第２のコンピュータへ転送することと
をするようにプログラムされた１つ以上の処理デバイスを含む前記第１のコンピュータを含み、
前記１つ以上の処理デバイスは、
前記１つ以上のリクエストの内の同じリクエストに応じて受信されたリクエストされた前記データの一部を２つ以上のグループに分割することであって、前記２つ以上のグループの内の各グループは、前記複数の同時トランスポート接続の内の対応する単一の接続に割り当てられ、対応する前記単一の接続の前記所望のデータグループサイズに対応するデータサイズを有する、分割することと、
対応する前記単一の接続を経由して前記２つ以上のグループの内の各グループを送信することと
によって、リクエストされた前記データを前記第１のコンピュータから前記第２のコンピュータへ転送するようにプログラムされる、
システム。
【請求項２】
前記１つ以上の処理デバイスは、
前記複数の同時トランスポート接続の内の利用可能なトランスポート接続の最大数を判定することと、
前記複数の同時トランスポート接続の内の１つ以上の接続の属性に従って、前記複数の同時トランスポート接続の内の各接続の前記所望のデータグループサイズを判定することと、
リクエストされた前記データの前記サイズが前記複数の同時トランスポート接続の前記所望のデータグループサイズの和よりも小さい場合に、使用される前記複数の同時トランスポート接続の数が前記最大数未満であるように、（ａ）使用される前記複数の同時トランスポート接続の前記数が前記最大数に到達する、及び（ｂ）リクエストされた前記データの配信が完了する、の内の少なくとも１つまで、前記２つ以上のグループの内の各データグループを前記複数の同時トランスポート接続の内の異なる接続へ送付することによって、リクエストされた前記データを前記第１のコンピュータから前記第２のコンピュータへ転送することと
をするように更にプログラムされる、請求項１に記載のシステム。
【請求項３】
前記１つ以上の処理デバイスは、
利用可能なトランスポート接続の前記最大数を、前記第１のコンピュータと前記第２のコンピュータとの間で現在開通されている同時トランスポート接続の数に設定することと、
現在開通されている前記同時トランスポート接続の内の少なくとも１つをリクエストされた前記データの配信のために使用しないことと
をするように更にプログラムされる、請求項２に記載のシステム。
【請求項４】
前記１つ以上の処理デバイスは、リクエストされた前記データの前記サイズの増加と共に、リクエストされた前記データの配信に使用される前記複数の同時トランスポート接続の前記数を増加させるように更にプログラムされる、請求項３に記載のシステム。
【請求項５】
前記１つ以上の処理デバイスは、
少なくとも２つの異なる前記リクエストの内の１つのリクエストに応じて取得されたデータのみを少なくとも１つの前記グループが含むように２つ以上の前記グループの内の少なくとも１つのデータグループを形成することと、
前記少なくとも１つのデータグループを前記複数のトランスポート接続の内のトランスポート接続に分散することと
をするように更にプログラムされる、請求項１に記載のシステム。
【請求項６】
前記１つ以上の処理デバイスは、前記少なくとも１つのデータグループのデータを順序付けられた順番で提供することによって、前記少なくとも１つのデータグループを前記複数のトランスポート接続の内の前記トランスポート接続に分散するように更にプログラムされる、請求項５に記載のシステム。
【請求項７】
前記１つ以上の処理デバイスは、前記１つのリクエストに応じて取得された前記データの識別子と前記少なくとも１つのデータグループのサイズとを含む少なくとも１つのヘッダを、前記複数の同時トランスポート接続の内の前記トランスポート接続に分散された前記少なくとも１つのデータグループに付加するように更にプログラムされる、請求項５に記載のシステム。
【請求項８】
前記２つ以上のグループは、ハイパーテキストトランスポートプロトコル（ＨＴＴＰ）バージョン２以上に従ってフォーマット化される、請求項７に記載のシステム。
【請求項９】
前記１つ以上の処理デバイスは、前記２つ以上のグループの内の各データグループを前記複数の同時トランスポート接続の内の異なる接続へ順番に送付するようにプログラムされる、請求項１に記載のシステム。
【請求項１０】
前記１つ以上の処理デバイスは、前記複数の同時トランスポート接続の内の少なくとも２つに対する前記所望のデータグループサイズが異なるように、各接続の属性に従って前記複数の同時トランスポート接続の内の前記少なくとも一部の各接続の前記所望のデータグループサイズを判定するように更にプログラムされる、請求項１に記載のシステム。
【請求項１１】
前記１つ以上の処理デバイスは、前記複数の同時トランスポート接続に対するトランスポートプロトコルであって、トラフィックの内の少なくとも幾つかに対する肯定的応答を受信する前に送信され得る前記トラフィックの量を制限する制御ウィンドウを課す前記トランスポートプロトコルを実装するように更にプログラムされ、
前記１つ以上の処理デバイスは、
各接続に対する前記制御ウィンドウのサイズの増加と共に増加する各接続の所望のデータグループサイズの範囲内から各接続の前記所望のデータグループサイズを選択すること
によって、各接続の属性に従って前記複数の同時トランスポート接続の内の前記少なくとも一部の各接続の前記所望のデータグループサイズを判定するように更にプログラムされる、
請求項１に記載のシステム。
【請求項１２】
前記トランスポートプロトコルはトランスポートコントロールプロトコル（ＴＣＰ）であり、前記制御ウィンドウは、受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである、請求項１１に記載のシステム。
【請求項１３】
各接続の所望のデータグループサイズの前記範囲の最大値は、各接続に対する前記制御ウィンドウの前記サイズ以下に設定される、請求項１１に記載のシステム。
【請求項１４】
各接続の所望のデータグループサイズの前記範囲の最小値は、各接続に対する前記制御ウィンドウの前記サイズの半分以上に設定される、請求項１１に記載のシステム。
【請求項１５】
前記１つ以上の処理デバイスは、
前記複数の同時トランスポート接続に対するトランスポートプロトコルであって、トラフィックの内の少なくとも幾つかに対する肯定的応答を受信する前に各接続を通じて送信し得る前記トラフィックの量を制限する各接続に対する制御ウィンドウを課す前記トラフィックプロトコルを実装することと、
前記データグループサイズを有するグループ全体が、肯定的応答を受信することなく各接続を通じて送信され得るように、各接続の前記所望のデータグループサイズを設定することによって、各接続の属性に従って前記複数の同時トランスポート接続の内の前記少なくとも一部の各接続の前記所望のデータグループサイズを判定することと
をするように更にプログラムされる、請求項１に記載のシステム。
【請求項１６】
前記１つ以上の処理デバイスは、各接続のラウンドトリップタイム中に各接続を通じて送信され得るデータの量に、各接続の前記所望のデータグループサイズを設定することによって、各接続の属性に従って前記複数の同時トランスポート接続の内の前記少なくとも一部の各接続の前記所望のデータグループサイズを判定するように更にプログラムされる、請求項１に記載のシステム。
【請求項１７】
前記１つ以上の処理デバイスは、同じ物理的データリンクを経由して前記複数の同時トランスポート接続の内の少なくとも２つを確立するように更にプログラムされる、請求項１に記載のシステム。
【請求項１８】
前記複数の同時トランスポート接続の内の少なくとも２つの接続は、同じ送信元ネットワークアドレス及び宛先ネットワークアドレスを有する、請求項１７に記載のシステム。
【請求項１９】
前記第１のコンピュータは、プロキシ及び仮想プライベートネットワーク（ＶＰＮ）サーバの内の少なくとも１つを実行する、請求項１に記載のシステム。
【請求項２０】
スループットを増加させるための方法であって、
コンピュータネットワークを経由して第１のコンピュータと第２のコンピュータとの間に複数の同時トランスポート接続を前記第２のコンピュータにより確立することと、
データ転送に対する２つ以上のリクエストを前記第２のコンピュータから前記第１のコンピュータにより受信することと、
前記２つ以上のリクエストの内の各リクエストに応じてリクエストされたデータを前記第１のコンピュータにより取得することと、
２つ以上のデータフレームを前記第１のコンピュータにより形成することであって、前記２つ以上のデータフレームの内の各フレームは、前記２つ以上のリクエストの内の唯一つのリクエストに対応するリクエストされた前記データを含み、前記２つ以上のデータフレームは、前記２つ以上のリクエストの内の２つの異なるリクエストに対応するデータを含む、形成することと、
前記２つ以上のデータフレームの内の各フレームの全てのデータが前記複数の同時トランスポート接続の内の同じトランスポート接続へ送付されるように、前記複数の同時トランスポート接続の内の２つ以上の異なるトランスポート接続へ前記２つ以上のデータフレームを前記第１のコンピュータにより送付することと、
前記２つ以上の異なるトランスポート接続の内の前記トランスポート接続の１つを通じて、前記２つ以上のリクエストの内の同じリクエストに対応するデータを含む前記２つ以上のデータフレームの内の少なくとも１つのデータフレームを前記第１のコンピュータにより転送することと
を含む、方法。
【請求項２１】
前記２つ以上のリクエストの内の２つの異なるリクエストに対応するデータを含む前記２つ以上のデータフレームを同じ一時的バッファ中に前記第１のコンピュータにより格納することと、
前記複数の同時トランスポート接続の内の異なるトランスポート接続へ各フレームを送付する前に、前記２つ以上のデータフレームの内の各フレームを前記同じ一時的バッファから前記第１のコンピュータにより検索することと
を更に含む、請求項２０に記載の方法。
【請求項２２】
リクエストされた前記データの量の増加と共に、前記２つ以上のデータフレームを搬送するために使用される前記２つ以上の異なるトランスポート接続の数を前記第１のコンピュータにより増加することを更に含む、請求項２０に記載の方法。
【請求項２３】
２つ以上の第１のリクエストの後に受信された２つ以上の第２のリクエストの内の１つ以上の第２のリクエストに応じて、リクエストされた前記データを配信する前に、前記複数の同時トランスポート接続を経由して、前記２つ以上のリクエストの内の前記２つ以上の第１のリクエストの内の各リクエストに応じて、リクエストされた前記データを前記第１のコンピュータにより配信することと、
前記第１のリクエストに応じて、リクエストされた前記データの配信されなければならないデータ残量の減少と共に、前記２つ以上のデータフレームのサイズを前記第１のコンピュータにより増加させることと
を更に含む、請求項２０に記載の方法。
【請求項２４】
前記複数の同時トランスポート接続の内の１つ以上のトランスポート接続のスループットの増加と共に、前記２つ以上のデータフレームのサイズを前記第１のコンピュータにより増加させることを更に含む、請求項２０に記載の方法。
【請求項２５】
前記複数の同時トランスポート接続の内の前記１つ以上のトランスポート接続に対するトラフィックの内の少なくとも一部に対する肯定的応答を受信する前に送信可能な前記トラフィックの量の増加と、パケットロス率の減少との内の少なくとも１つを検出することによって、前記スループットの増加を前記第１のコンピュータにより検出することを更に含む、請求項２４に記載の方法。
【請求項２６】
プロキシ及び仮想プライベートネットワーク（ＶＰＮ）サーバの内の少なくとも１つを前記第１のコンピュータにより実行することを更に含む、請求項２０に記載の方法。
【請求項２７】
ハイパーテキストトランスポートプロトコルバージョン２以上の仕様に従って前記２つ以上のデータフレームを前記第１のコンピュータにより形成することを更に含む、請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
＜関連出願＞
本出願は、同時接続の総スループットを改善するためのシステム及び方法という名称で２０１６年５月３１日に出願した米国特許仮出願番号６２／３４３,６９７の利益を主張し、該仮出願は、参照によりその全体が本明細書にこれにより組み込まれる。
【０００２】
本出願は、同時接続の総スループットを改善するためのシステム及び方法という名称で２０１６年９月１日に出願した米国特許出願番号１５／２５４,５８３（代理人案件番号ＡＮＣＨ−００５０１）を参照によりその全体を更に組み込む。
【背景技術】
【０００３】
コンピュータネットワーク経由でダウンロードされるオンラインコンテンツの量は、オンラインビデオストリーミング及びユーザが生成したコンテンツの普及、ソーシャルネットワーク及びメディアを駆使したメッセージングの急増、クラウドベースのストレージ等、多数の要因に起因して時間と共に急速に増加している。
【０００４】
リクエストされたコンテンツは、しばしば、長距離を経由して配信されなければならない。最も好まれるビデオのみがユーザの近くにキャッシングされ得る。ＨＴＴＰＳのようなセキュアなプロトコルを使用するコンテンツは、少なくとも幾つかの暗号化キーを第三者に開示することなくキャッシングすることはできない。スポーツ及びニュース等のリアルタイムでストリーミングされたイベントの遠隔での視聴にはキャッシングが使用できない。ローカルなコンテンツは、しばしば、原産国を除いてキャッシングされない。
【０００５】
データ走行距離の増加は、パケットロスの比率をしばしば増加させる。トランスポートコントロールプロトコル（ＴＣＰ）等の配信保証プロトコルが接続に使用される場合には、これらのロスは、ラストワンマイルの輻輳として一般的に解釈され、接続パイプの各セグメントが飽和点から遠方にある場合であってもスループットに著しい減少をもたらす。
【０００６】
送信者と受信者との間で多数の同時の配信保証トランスポート接続を越えてデータ転送を拡散することは、総スループットを一般的に増加させ、新たな各接続を追加することは、受信者ウィンドウ及び輻輳ウィンドウの両者の総サイズを増加させ、各ラウンドトリップ間隔中により多くのデータを配信可能にする。長距離経由の大きなデータファイルの転送速度は、接続パイプの少なくとも１つのセグメントが輻輳するまで、又はサーバ及びクライアントのコンピュータのリソース（メモリ、ＣＰＵ負荷、入出力容量）が過負荷（overstrain）になるまで、同時接続の数と共に増加する。
【０００７】
したがって、制限されたサイズのデータファイルのバーストを含む、実際のシナリオのために、多数の同時接続経由のデータ転送の速度を増加させる必要がある。
【発明の概要】
【課題を解決するための手段】
【０００８】
発明の一側面において、総スループットを増加させるためのシステムであって、該システムは、
第２のコンピュータへの複数の同時トランスポート接続を確立することと、
複数の同時トランスポート接続の内の少なくとも一部の各接続に対する所望のデータグループサイズを判定することと、
リクエストされたデータに対する１つ以上のリクエストを第２のコンピュータから受信することと、
１つ以上のリクエストに対応するリクエストされたデータを取得することと、
リクエストされたデータの転送が、少なくとも１つの他のリクエストを第２のコンピュータから受信する前に終了しなければならないように、リクエストされたデータを、第１のコンピュータと第２のコンピュータとの間の複数の同時トランスポート接続を通じて第１のコンピュータから第２のコンピュータへ転送することと
をするようにプログラムされた１つ以上の処理デバイスを含む第１のコンピュータを含む。
【０００９】
幾つかの実施形態では、１つ以上の処理デバイスは、
１つ以上のリクエストの内の同じリクエストに応じて受信されたリクエストされたデータの一部を２つ以上のグループに分割することであって、２つ以上のグループの内の各グループは、複数の同時トランスポート接続の内の対応する単一の接続に割り当てられ、対応する単一の接続の所望のデータグループサイズに対応するデータサイズを有する、分割することと、
対応する単一の接続を経由して２つ以上のグループの内の各グループを送信することと
によって、リクエストされたデータを第１のコンピュータから第２のコンピュータへ転送するようにプログラムされる。
【００１０】
幾つかの実施形態では、１つ以上の処理デバイスは、
複数の同時トランスポート接続の内の利用可能なトランスポート接続の最大数を判定することと、
複数の同時トランスポート接続の内の１つ以上の接続の属性に従って、複数の同時トランスポート接続の内の各接続の所望のデータグループサイズを判定することと、
リクエストされたデータのサイズが複数の同時トランスポート接続の所望のデータグループサイズの和よりも小さい場合に、使用される複数の同時トランスポート接続の数が最大数未満であるように、（ａ）使用される複数の同時トランスポート接続の数が最大数に到達する、及び（ｂ）リクエストされたデータの配信が完了する、の内の少なくとも１つまで、２つ以上のグループの内の各データグループを複数の同時トランスポート接続の内の異なる接続へ送付することによって、リクエストされたデータを第１のコンピュータから第２のコンピュータへ転送することと
をするように更にプログラムされる。
【００１１】
幾つかの実施形態では、１つ以上の処理デバイスは、利用可能なトランスポート接続の最大数を、第１のコンピュータと第２のコンピュータとの間で現在開通されている同時トランスポート接続の数に設定することと、現在開通されているトランスポート接続の内の少なくとも１つをリクエストされたデータの配信のために使用しないこととをするように更にプログラムされる。
【００１２】
幾つかの実施形態では、１つ以上の処理デバイスは、リクエストされたデータのサイズの増加と共に、リクエストされたデータの配信に使用される複数の同時トランスポート接続の数を増加させるように更にプログラムされる。
【００１３】
幾つかの実施形態では、１つ以上の処理デバイスは、少なくとも２つの異なるリクエストの内の１つのリクエストに応じて取得されたデータのみを少なくとも１つのグループが含むように２つ以上のグループの内の少なくとも１つのデータグループを形成することと、少なくとも１つのデータグループを複数のトランスポート接続の内のトランスポート接続に分散することとをするように更にプログラムされる。
【００１４】
幾つかの実施形態では、１つ以上の処理デバイスは、少なくとも１つのデータグループのデータを順序付けられた順番で提供することによって、少なくとも１つのデータグループを複数のトランスポート接続の内のトランスポート接続に分散するように更にプログラムされる。
【００１５】
幾つかの実施形態では、１つ以上の処理デバイスは、１つのリクエストに応じて取得されたデータの識別子と少なくとも１つのデータグループのサイズとを含む少なくとも１つのヘッダを、複数の同時トランスポート接続の内のトランスポート接続に分散された少なくとも１つのデータグループに付加するように更にプログラムされる。
【００１６】
幾つかの実施形態では、２つ以上のグループは、ハイパーテキストトランスポートプロトコル（ＨＴＴＰ）バージョン２以上に従ってフォーマット化される。
【００１７】
幾つかの実施形態では、１つ以上の処理デバイスは、２つ以上のグループの内の各データグループを複数の同時トランスポート接続の内の異なる接続へ順番に送付するようにプログラムされる。
【００１８】
幾つかの実施形態では、１つ以上の処理デバイスは、複数の同時トランスポート接続の内の少なくとも２つに対する所望のデータグループサイズが異なるように、各接続の属性に従って複数の同時トランスポート接続の内の少なくとも一部の各接続の所望のデータグループサイズを判定するように更にプログラムされる。
【００１９】
幾つかの実施形態では、１つ以上の処理デバイスは、複数の同時トランスポート接続に対するトランスポートプロトコルであって、トラフィックの少なくとも幾つかに対する肯定的応答（acknowledgement）を受信する前に送信され得るトラフィックの量を制限する制御ウィンドウを課すトランスポートプロトコルを実装するように更にプログラムされる。
【００２０】
幾つかの実施形態では、１つ以上の処理デバイスは、各接続に対する制御ウィンドウのサイズの増加と共に増加する各接続の所望のデータグループサイズの範囲内から各接続の所望のデータグループサイズを選択することによって、各接続の属性に従って複数の同時トランスポート接続の内の少なくとも一部の各接続の所望のデータグループサイズを判定するように更にプログラムされる。
【００２１】
幾つかの実施形態では、トランスポートプロトコルはトランスポートコントロールプロトコル（ＴＣＰ）であり、制御ウィンドウは、受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。
【００２２】
幾つかの実施形態では、各接続の所望のデータグループサイズの範囲の最大値は、各接続に対する制御ウィンドウのサイズ以下に設定される。
【００２３】
幾つかの実施形態では、各接続の所望のデータグループサイズの範囲の最小値は、各接続に対する制御ウィンドウのサイズの半分以上に設定される。
【００２４】
幾つかの実施形態では、１つ以上の処理デバイスは、
複数の同時トランスポート接続に対するトランスポートプロトコルであって、トラフィックの内の少なくとも幾つかに対する肯定的応答を受信する前に各接続を通じて送信し得るトラフィックの量を制限する各接続に対する制御ウィンドウを課すトラフィックプロトコルを実装することと、
データグループサイズを有するグループ全体が、肯定的応答を受信することなく各接続を通じて送信され得るように、各接続の所望のデータグループサイズを設定することによって、各接続の属性に従って複数の同時トランスポート接続の内の少なくとも一部の各接続の所望のデータグループサイズを判定することと
をするように更にプログラムされる。
【００２５】
幾つかの実施形態では、１つ以上の処理デバイスは、各接続のラウンドトリップタイム中に各接続を通じて送信され得るデータの量に、各接続の所望のデータグループサイズを設定することによって、各接続の属性に従って複数の同時トランスポート接続の内の少なくとも一部の各接続の所望のデータグループサイズを判定するように更にプログラムされる。
【００２６】
幾つかの実施形態では、１つ以上の処理デバイスは、同じ物理的データリンクを経由して複数の同時トランスポート接続の内の少なくとも２つを確立するように更にプログラムされる。
【００２７】
幾つかの実施形態では、複数の同時トランスポート接続の内の少なくとも２つの接続は、同じ送信元ネットワークアドレス及び宛先ネットワークアドレスを有する。
【００２８】
幾つかの実施形態では、第１のコンピュータは、プロキシ及び仮想プライベートネットワーク（ＶＰＮ）サーバの内の少なくとも１つを実行する。
【００２９】
幾つかの実施形態では、スループットを増加させるための方法は、
コンピュータネットワークを経由して第１のコンピュータと第２のコンピュータとの間に複数の同時トランスポート接続を第２のコンピュータにより確立することと、
データ転送に対する２つ以上のリクエストを第２のコンピュータから第１のコンピュータにより受信することと、
２つ以上のリクエストの内の各リクエストに応じてリクエストされたデータを第１のコンピュータにより取得することと、
２つ以上のデータフレームを第１のコンピュータにより形成することであって、２つ以上のデータフレームの内の各フレームは、２つ以上のリクエストの内の唯一つのリクエストに対応するリクエストされたデータを含み、２つ以上のデータフレームは、２つ以上のリクエストの内の２つの異なるリクエストに対応するデータを含む、ことと、
２つ以上のデータフレームの内の各フレームの全てのデータが複数の同時トランスポート接続の内の同じトランスポート接続へ送付されるように、複数の同時トランスポート接続の内の２つ以上の異なるトランスポート接続へ２つ以上のデータフレームを第１のコンピュータにより送付することと、
２つ以上の異なるトランスポート接続の内のトランスポート接続の１つを通じて、２つ以上のリクエストの内の同じリクエストに対応するデータを含む２つ以上のデータフレームの内の少なくとも１つのデータフレームを第１のコンピュータにより転送することと
を含む。
【００３０】
幾つかの実施形態では、方法は、
２つ以上のリクエストの内の２つの異なるリクエストに対応するデータを含む２つ以上のデータフレームを同じ一時的バッファ中に第１のコンピュータにより格納することと、
複数の同時トランスポート接続の内の異なるトランスポート接続へ各フレームを送付する前に、２つ以上のデータフレームの内の各フレームを同じ一時的バッファから第１のコンピュータにより検索することと
を更に含む。
【００３１】
幾つかの実施形態では、方法は、リクエストされたデータの量の増加と共に、２つ以上のデータフレームを搬送するために使用される２つ以上の異なるトランスポート接続の数を第１のコンピュータにより増加することを含む。
【００３２】
幾つかの実施形態では、方法は、
２つ以上の第１のリクエストの後に受信された２つ以上の第２のリクエストの内の１つ以上の第２のリクエストに応じて、リクエストされたデータを配信する前に、複数の同時トランスポート接続を経由して、２つ以上のリクエストの内の２つ以上の第１のリクエストの内の各リクエストに応じて、リクエストされたデータを第１のコンピュータにより配信することと、
第１のリクエストに応じて、リクエストされたデータの配信されなければならないデータ残量の減少と共に、２つ以上のデータフレームのサイズを第１のコンピュータにより増加させることと
を更に含む。
【００３３】
幾つかの実施形態では、方法は、複数の同時トランスポート接続の内の１つ以上のトランスポート接続のスループットの増加と共に、２つ以上のデータフレームのサイズを第１のコンピュータにより増加させることを更に含む。
【００３４】
幾つかの実施形態では、方法は、複数の同時トランスポート接続の内の１つ以上のトランスポート接続に対するトラフィックの内の少なくとも一部に対する肯定的応答を受信する前に送信可能なトラフィックの量の増加と、パケットロス率の減少との内の少なくとも１つを検出することによって、スループットの増加を第１のコンピュータにより検出することを更に含む。
【００３５】
幾つかの実施形態では、方法は、プロキシ又は仮想プライベートネットワーク（ＶＰＮ）サーバの内の１つを第１のコンピュータにより実行することを更に含む。
【００３６】
幾つかの実施形態では、方法は、ハイパーテキストトランスポートプロトコルバージョン２以上の仕様に従って２つ以上のデータフレームを第１のコンピュータにより形成することを更に含む。
【００３７】
発明の利点が容易に理解されるようにするために、簡単に上述された発明のより具体的な説明は、添付の図面で説明される特定の実施形態を参照しながら与えられるであろう。これらの図面は、発明の典型的な実施形態のみを説明し、それ故、その範囲を制限するものと考えるべきではないと理解され、発明は、添付の図面の使用を通じて付加的な特殊性と詳細が記述及び説明されるであろう。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施形態に従った、多数の同時トランスポート接続を通じてデータを転送することによりスループットを増加させるために使用され得る第１のネットワーク環境の概略的ブロック図である。
【図２】本発明の実施形態に従った、本発明の実施形態に従って同時トランスポート接続の数を増加させるために使用される第２のネットワーク環境の概略的ブロック図である。
【図３】本発明の実施形態に従った、同時トランスポート接続の数を変更するために使用される第３のネットワーク環境の概略的ブロック図である。
【図４ａ】本発明の実施形態により実現され得るスループットの改善を説明するグラフである。
【図４ｂ】本発明の実施形態により実現され得るスループットの改善を説明するグラフである。
【図５】本発明の実施形態に従った、同時トランスポート接続の数を変更する方法の処理フロー図である。
【図６】本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するために使用される第４のネットワーク環境の図である。
【図７】本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するための方法の処理フロー図である。
【図８】本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するために使用される第５のネットワーク環境の概略的ブロック図である。
【図９】本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するために使用される第６のネットワーク環境の概略的ブロック図である。
【図１０】本明細書に開示されるシステム及び方法を実装するのに適するコンピュータの概略的ブロック図である。
【発明を実施するための形態】
【００３９】
本発明の図中に概して記述及び説明されるような発明のコンポーネントは、多種多様な異なる構成で配置及び設計され得ることは容易に理解されるであろう。したがって、図に表されるような以下の発明の実施形態のより詳細な説明は、請求されるような発明の範囲を制限することを意図せず、発明に従ってここで考慮される実施形態の幾つかの例を表すにすぎない。ここで記述される実施形態は、全体を通して同様の部分が同様の数字により指し示される図面を参照することによって最も理解されるであろう。
【００４０】
発明に従った実施形態は、装置、方法、又はコンピュータプログラム製品として具体化され得る。したがって、発明は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又は“モジュール”若しくは“システム”として本明細書で概して全て称され得るソフトウェア及びハードウェアの側面の組み合わせの実施形態の形式を取り得る。更に、発明は、媒体中に具体化されたコンピュータ使用可能なプログラムコードを有する表現の任意の有形媒体中に具体化されたコンピュータプログラム製品の形式を取り得る。
【００４１】
１つ以上のコンピュータ使用可能な又はコンピュータ可読の媒体の任意の組み合わせが利用され得る。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）デバイス、リードオンリメモリ（ＲＯＭ）デバイス、消去可能プログラム可能リードオンリメモリ（ＥＰＲＯＭ若しくはフラッシュメモリ）デバイス、ポータブルコンパクトディスクリードオンリメモリ（ＣＤＲＯＭ）、光ストレージデバイス、及び磁気ストレージデバイスの内の１つ以上を含み得る。選りすぐりの実施形態では、コンピュータ可読媒体は、命令実行システム、装置、又はデバイスにより、又はそれらと接続して使用するためのプログラムを含み得、格納し得、通信し得、伝搬し得、又は搬送し得る任意の非一時的媒体を含み得る。
【００４２】
発明の動作を実行するためのコンピュータプログラムコードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、若しくはＣ＋＋等のオブジェクト指向プログラミング言語、及び“Ｃ”プログラミング言語若しくは同様のプログラミング言語等の従来の手続型プログラミング言語を含む１つ以上のプログラミング言語の任意の組み合わせで書き込まれ得、ＨＴＭＬ、ＸＭＬ、及びＪＳＯＮ等の記述型言語又はマークアップ言語をも使用し得る。プログラムコードは、スタンドアローンなソフトウェアパッケージとしてコンピュータシステム上で全体的に、スタンドアローンなハードウェアユニット上で、コンピュータから幾らか離間したリモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で全体的に、実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）若しくは広域エリアネットワーク（ＷＡＮ）を含む任意の種類のネットワークを通じてコンピュータに接続され得、或いは、該接続は、（例えば、インターネットサービスプロバイダを使用するインターネットを通じて）外部のコンピュータに作り出され得る。コンピュータネットワークは、インターネットプロトコル以外のトランスポートプロトコルを使用し得る。それに応じて、本発明は、ＩＰアドレス以外の種類のネットワークアドレス用に実装され得る。
【００４３】
発明は、発明の実施形態に従った方法、装置（システム）、及びコンピュータプログラム製品のフローチャートの説明及び／又はブロック図を参照しながら以下に記述される。フローチャートの説明及び／又はブロック図の各ブロック、並びにフローチャートの説明及び／又はブロック図中のブロックの組み合わせは、コンピュータプログラム命令又はコードにより実装され得ることは理解されるであろう。これらのコンピュータプログラム命令は、コンピュータ又はその他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャート及び／又はブロック図の１つ以上のブロック中に指定された機能／作用を実装するための手段を作り出すようにマシンを生み出すための汎用コンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッサに提供され得る。
【００４４】
これらのコンピュータプログラム命令は、フローチャート及び／又はブロック図の１つ以上のブロック中で指定された機能／作用を実装する命令手段を含む製品をコンピュータ可読媒体中に格納された命令が生み出すように、コンピュータ又はその他のプログラム可能データ処理装置を特定の方法で機能させるように指示し得る非一時的コンピュータ可読媒体中にも格納され得る。
【００４５】
コンピュータプログラム命令は、コンピュータ又はその他のプログラム可能装置上で実行する命令が、フローチャート及び／又はブロック図の１つ以上のブロック中で指定された機能／作用を実装するためのプロセスを提供するようなコンピュータ実装プロセスを、コンピュータ又はその他のプログラム可能装置上で実行される一連の動作可能なステップに生み出させるために、コンピュータ又はその他のプログラム可能データ処理装置上にもロードされ得る。
【００４６】
十分な帯域幅の容量がある（輻輳が発生しない）場合、長距離を経由する同時接続の数は、一般的に、サーバ及びクライアントのコンピュータのリソースを圧倒することなく維持され得る最大値に予め設定される。しかしながら、典型的なコンピュータネットワークを経由して転送されるデータファイルの多くは、比較的小さいサイズを有する。そうした転送は、爆発的にしばしば発生するが、不活動期間が続く（例えば、ウェブサイトのダウンロード）。同時接続の数を増加させることは、輻輳が存在しない場合でも、そうした制限されたデータ転送に対して効果が小さくなり得る。本明細書に開示される実施形態は、データの転送に使用される同時接続の数を設定するためのアプローチの改善を提供する。
【００４７】
発明の一側面において、第１のコンピュータは、第１のコンピュータとの複数の同時トランスポート接続を通じた第２のコンピュータへのデータ配信に対するリクエストの２つ以上のグループを受信し、ここで、リクエストされた配信の第１のグループは、リクエストの第２のグループを提示する前に終了しなければならない。幾つかの実施形態では、第１のコンピュータは、リクエストされたデータの配信が終了したことを判定するための手段と、リクエストされたデータを第１のコンピュータへ配信するために使用される同時接続の数を設定するための手段と、リクエストされたデータの第２のグループを配信するために使用される同時接続の数とは異なる、リクエストされたデータの第１のグループを配信するために使用される同時接続の数を設定するための手段とを含む。
【００４８】
幾つかの実施形態では、２つ以上の同時トランスポート接続の内の各々は、データ配信を確認するための肯定的応答を生成するトランスポートプロトコルを使用し、リクエストされたデータの配信は、リクエストされたデータが配信されたことの肯定的応答を受信した後に終了したと判定される。幾つかの例では、このプロトコルはトランスポートコントロールプロトコル（ＴＣＰ）である。
【００４９】
本発明の実施形態では、第１及び第２のコンピュータは、これらのコンピュータ間に多数の同時接続を確立可能なトラフィック分散モジュールを含み、データ配信リクエストは、第２のコンピュータと第１のコンピュータとの間の同時接続を通じてデータをリクエスト及び受信するための１つ以上のトランスポート接続を開通するクライアントコンピュータにより生成される。この実施形態に従うと、リクエストされたデータの配信は、データをリクエスト及び受信するために開通されたその接続をクライアントコンピュータが不通にした後に終了したと判定される。幾つかの例では、クライアントコンピュータは第２のコンピュータである。１つ以上の例では、第２のコンピュータは、クライアントコンピュータにより開通されたトランスポート接続の終端を可能にするプロキシを含む。
【００５０】
幾つかの実施形態では、同時トランスポート接続の内の少なくとも２つは、同じ物理的データリンクを経由して開通される。幾つかの例では、これらの接続は、同じ送信元ネットワークアドレス及び宛先ネットワークアドレスを共有する。
【００５１】
幾つかの実施形態では、第１のコンピュータは、第１又は第２のデータ配信の内の少なくとも１つのサイズの見積もりを取得し、見積もりサイズの増加と共に、対応する配信に使用される同時ネットワーク接続の数を増加させる。幾つかの例では、データ配信のサイズは、１つ以上のネットワーク識別子をリクエストの第１のグループから取得することにより見積もられ、各識別子は、ドメイン名及び宛先ネットワークアドレスの内の少なくとも１つを含む。
【００５２】
別の実施形態では、同時に開通された１つ以上の接続の内の各々が、少なくとも幾つかのデータが配信されたことの肯定的応答を受信する前に送信され得るトラフィックの量を制限する制御ウィンドウと関連付けられる場合に、第１のコンピュータは、１つ以上の制御ウィンドウの見積もりサイズを取得し、該サイズの増加と共に、データ配信に使用される同時ネットワーク接続の数を減少させる。幾つかの例では、制御ウィンドウは、トランスポートプロトコルにより使用される受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。
【００５３】
幾つかの実施形態では、データ配信に使用される同時接続の数は、リクエストされたデータの第１のグループの配信を終了した後で、且つリクエストの第２のグループが提示される前に変更される。幾つかの例では、データ配信に使用される同時接続の数は、リクエストされた第１のデータの配信に続いて予め定義された時間間隔を越える不活動期間があった後で、且つデータリクエストの第２のグループが提示される前に減少させられる。
【００５４】
他の実施形態では、データ配信に使用される同時接続の数は、既存の接続を不通にすること、又は新たな接続を開通することなく、以前に開通された１つ以上の同時接続を通じて、少なくとも幾つかのリクエストされたデータの配信を一時休止又は再開することによって変更される。幾つかの例では、第１のサーバから第２のサーバへのデータ転送に使用される同時接続の数は、第２のサーバから第１のサーバへのデータ転送に使用される同時接続の数とは異なるように変更される。幾つかの実装では、第２のサーバから第１のサーバへのデータ転送に使用される同時接続の数が同じ数に維持されながら、第１のサーバから第２のサーバへのデータ転送に使用される同時接続の数のみが変更される。
【００５５】
幾つかの実施形態では、第１のコンピュータは、プロキシサーバ及びＶＰＮサーバの内の少なくとも１つを含む。
【００５６】
本発明の一側面において、第１のコンピュータは、複数の同時トランスポート接続を通じた第２のコンピュータへのデータ配信に対する１つ以上のリクエストのグループを受信し、リクエストされたデータの配信は、少なくとも１つの他のリクエストを提示する前に終了しなければならない。第１のコンピュータは、リクエストされたデータの配信を開始し、リクエストされたデータの配信が終了する前に、データ配信に使用される同時接続の数をその後変更する。
【００５７】
幾つかの実施形態では、第１のコンピュータは、配信されるデータの残量の内の少なくも１つと、該配信に使用される同時トランスポート接続の内の少なくも１つを通じたデータ転送の少なくとも１つのパラメータとの見積もりを取得し、見積もり値の変更と共に、同時接続の数をその後変更する。幾つかの例では、第１のコンピュータは、データの残量を配信するために使用される同時接続の数を、この量の減少と共に減少させる。幾つかの例では、配信されるデータの残量は、第２のコンピュータへ送信される前に第１のコンピュータ上の１つ以上のバッファ中に格納された、リクエストされたデータの量から見積もられる。幾つかの実装では、第１のコンピュータは、プロキシ及びＶＰＮサーバの内の少なくとも１つを含み、上記バッファは、一時的なデータ格納のためにプロキシ又はＶＰＮサーバにより使用される。
【００５８】
別の例では、トランスポート接続を通じたデータ転送のパラメータの内の少なくも１つは、少なくとも幾つかのデータが配信されたことの肯定的応答を受信する前に送信され得るトラフィックの量を制限する制御ウィンドウであり、残部のデータを配信するために使用される同時接続の数は、これらのウィンドウの内の１つ以上のサイズの増加と共に減少させられる。
【００５９】
幾つかの例では、トランスポート接続を通じたデータ転送のパラメータの内の少なくも１つは、該接続を経由したデータロスの量であり、残部のデータを配信するために使用される同時接続の数は、１つ以上のトランスポート接続を経由したデータロスの比率と共に増加させられる。
【００６０】
幾つかの実施形態では、データ配信に使用される同時接続の数は、既存の接続を不通にすること、又は新たな接続を開通することなく、以前に開通された１つ以上の同時接続を通じてデータ配信を一時休止又は再開することによって、リクエストのグループが提示された後に変更される。幾つかの例では、第１のサーバから第２のサーバへのデータ転送に使用される同時接続の数は、第２のサーバから第１のサーバへのデータ転送に使用される同時接続の数とは異なるように変更される。幾つかの実装では、第２のサーバから第１のサーバへのデータ転送に使用される同時接続の数を同じ数に維持しながら、第１のサーバから第２のサーバへのデータ転送に使用される同時接続の数のみが変更される。
【００６１】
幾つかの実施形態では、同時トランスポート接続の内の少なくとも２つは、同じ物理的データリンクを経由して開通され、使用される同時接続の数を変更することは、該データリンクを経由したデータ配信に使用される同時接続の数を変更することを含む。
【００６２】
本発明の別の側面において、第１のコンピュータは、第１のコンピュータとの複数の同時トランスポート接続を通じた第２のコンピュータへのデータ配信に対するリクエストの２つ以上のグループを受信し、ここで、リクエストされた配信の第１のグループは、リクエストの第２のグループを提示する前に終了しなければならない。第１のコンピュータは、第１のコンピュータとの複数の同時トランスポート接続を通じた第３のコンピュータへのデータ配信に対するリクエストの２つ以上のグループをも受信し、ここで、リクエストされた配信の第１のグループは、リクエストの第２のグループを提示する前に終了しなければならない。この側面では、第１のコンピュータから第２のコンピュータへの接続の１つ以上のパラメータと第１のコンピュータから第３のコンピュータへの接続の１つ以上のパラメータとの間に相違がある場合、第１のコンピュータは、第３のコンピュータへの同時接続の数とは異なる第２のコンピュータへの同時接続の数を使用する。
【００６３】
幾つかの実施形態では、これは、第１のコンピュータからの距離、ラウンドトリップタイム、及びネットワークの品質の内の少なくとも１つの相違である。幾つかの例では、同時に使用される接続の数は、第１のコンピュータへの距離の増加と共に、又は第１のコンピュータへのラウンドトリップタイムの増加と共に増加させられる。別の例では、同時に使用される接続の数は、第３のコンピュータと第１のコンピュータとの間のネットワークの品質と比較した、第２のコンピュータと第１のコンピュータとの間のネットワークの品質の増加と共に減少させられる。他の例では、同時に使用される接続の数は、１つ以上のトランスポート接続を経由したデータロスの比率の減少と共に減少させられる。
【００６４】
幾つかの実装では、１つ以上のトランスポート接続は、送信されたデータの内の少なくも幾つかに対する肯定的応答を受信する前に送信され得るデータの量を制限するための制御ウィンドウを設定するトランスポートプロトコルを使用し、同時に使用される接続の数は、制御ウィンドウの内の１つ以上のサイズの増加と共に減少させられる。幾つかの実施形態では、トランスポートプロトコルはトランスポートコントロールプロトコル（ＴＣＰ）であり、制御ウィンドウは、受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。
【００６５】
本発明の一側面において、コンピュータネットワーク経由のコンピュータ間の多数の同時トランスポート接続の総スループットを増加させるためのシステムは、第１のコンピュータと第２のコンピュータとの間の複数の同時トランスポート接続を通じた第１のコンピュータから第２のコンピュータへの転送に対する１つ以上のリクエストを受信し、リクエストされたデータを取得することが可能なトラフック管理モジュールであって、ここで、リクエストされたデータの転送は、第２のコンピュータから少なくとも１つの他のリクエストを受信する前に終了しなければならい、トラフック管理モジュールと、リクエストされたデータを２つ以上のグループ中に分割し、該データグループの内の２つ以上を異なるトランスポート接続へ送付することが可能なトラフィック分散モジュールと、使用される１つ以上の接続に対するデータグループサイズの所望範囲を取得し、使用される１つ以上の接続に対するデータグループサイズを所望範囲内で設定することが可能なトラフィック調整モジュールとを含む。
【００６６】
幾つかの実施形態では、リクエストされたデータの配信が完了するまで、又は使用されるトランスポート接続の数が利用可能な接続の最大数に到達するまで、トラフィック分散モジュールは各データグループを異なるトランスポート接続へ送付する一方で、トラフィック調整モジュールは、利用可能なトランスポート接続の最大数を取得し、使用される各接続に対するデータグループサイズを設定し、これにより、リクエストされた配信のサイズが、利用可能な接続に対する所望のグループサイズの和を下回る場合に、利用可能な接続の最大数よりも少ない数のトランスポート接続を使用する。幾つかの例では、利用可能なトランスポート接続の最大数は、第１のコンピュータと第２のコンピュータとの間で現在開通されている同時接続の数に設定され、現在開通されている接続の内の少なくも１つは、リクエストされたデータの配信に使用されない。幾つかの実装では、使用されるトランスポート接続の数は、第２のコンピュータへ配信されるデータの量の増加と共に増加する。
【００６７】
別の実施形態では、トラフィック分散モジュールは、少なくとも２つの異なるリクエストに応じて受信されたデータを１つ以上の一時的バッファから取得し、同じリクエストに応じて取得されたデータのみを含む少なくとも１つのデータグループを形成し、該データグループを単一のトランスポート接続にその後分散する。幾つかの実装では、単一のリクエストに応じて単一の接続へ送信されるデータグループは、順序付けられた順番で提供される。幾つかの実施形態では、トラフィック分散モジュールは、異なるトランスポート接続へ送信されるデータグループにヘッダを付加し、少なくとも１つのヘッダは、単一のリクエストに対応するデータの識別子とデータグループのサイズとを含む。幾つかの例では、１つ以上のデータグループは、ハイバーテキストトランスポートプロトコル（ＨＴＴＰ）バージョン２以上に従ってフォーマット化される。
【００６８】
別の実施形態では、リクエストされた全てのデータが同時トランスポート接続へ送付されるまで、各データグループは、次のデータグループが次のトランスポート接続へ送付される前に１つのトランスポート接続へ送付される。
【００６９】
他の実施形態では、データグループサイズの所望範囲は、同時に使用される少なくとも２つの異なる接続に対して異なるように設定される。
【００７０】
更に別の実施形態では、１つ以上のトランスポート接続は、送信されたデータの内の少なくも幾つかに対する肯定的応答を受信する前に送信され得るデータの量を制限するための制御ウィンドウを設定するトランスポートプロトコルを使用し、所望のデータグループサイズの範囲は、制御ウィンドウの内の１つ以上のサイズの増加と共に増加する。幾つかの例では、トランスポートプロトコルはトランスポートコントロールプロトコル（ＴＣＰ）であり、制御ウィンドウは、受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。別の例では、少なくとも１つの接続に対する所望範囲の最大値は、該接続に対する制御ウィンドウのサイズ以下であるように設定される。他の例では、少なくとも１つの接続に対する所望範囲の最小値は、該接続に対する制御ウィンドウのサイズの半分よりも大きいように設定される。
【００７１】
他の実施形態では、１つ以上のトランスポート接続は、以前に送信された少なくとも幾つかのデータの肯定的応答を受信することなく接続を通じて送信され得るデータの量を制限するトランスポートプロトコルを使用し、所望のデータサイズの範囲は、以前に送信されたデータに対する肯定的応答を受信する前に少なくとも１つの接続を通じてデータのグループを送信するように設定される。
【００７２】
他の実施形態では、所望のデータサイズの範囲は、第１のコンピュータと第２のコンピュータとの間の１ラウンドトリップの時間中に少なくとも１つの接続を通じてデータのグループを送信するように設定される。
【００７３】
別の実施形態では、同時トランスポート接続の内の少なくとも２つは、同じ物理的データリンクを経由して開通される。幾つかの例では、同時トランスポート接続の少なくとも２つは、同じ送信元ネットワークアドレス及び宛先ネットワークアドレスを有する。
【００７４】
幾つかの実施形態では、トラフィック管理モジュールは、プロキシ及びＶＰＮの内の少なくとも１つを含む。
【００７５】
本発明の別の側面において、コンピュータネットワーク経由のコンピュータ間の多数の同時トランスポート接続の総スループットを増加させるためのシステムは、少なくともトラフィック管理モジュール及びトラフィック分散モジュールを含む。トラフィック管理モジュールは、同時に開通された複数の接続を経由した第１のコンピュータから第２のコンピュータへのデータ転送に対する２つ以上のリクエストを受信し、２つの異なるリクエストに応じてデータを取得し、異なるリクエストへの応答を含む２つ以上のデータフレームをその後形成し、各データフレームは、単一のリクエストに対応するデータを含む。トラフィック分散モジュールは、データフレームを２つ以上の異なるトランスポート接続へ送付し、少なくとも２つのデータフレームの各々は、単一のトランスポート接続に送付され、それにより、各トランスポート接続を通じて少なくとも１つのデータフレームを転送する。
【００７６】
幾つかの実施形態では、トラフィック管理モジュールは、２つ以上のデータフレームを同じキュー中に多重化し、一連の２つ以上のデータフレームを格納し、その後トラフィック分散モジュールは、同じキューからの少なくとも２つのデータフレームの各々を、それらを別個のトランスポート接続へ送付する前に取得する。
【００７７】
他の実施形態では、使用されるトランスポート接続の数は、第２のコンピュータへ配信されるリクエストされたデータの量の増加と共に増加する。
【００７８】
別の実施形態では、リクエストされたデータは、データ配信に対する少なくとも１つの他のリクエストを受信する前に、同時トランスポート接続を経由して配信されなければならず、１つ以上のデータフレームのサイズは、配信されなければならないデータの残量の減少と共に増加させられる。
【００７９】
他の実施形態では、１つ以上のデータフレームのサイズは、第１のコンピュータと第２のコンピュータとの間の１つ以上のトランスポート接続のスループットの増加と共に増加させられる。幾つかの例では、スループットの増加は、パケットロス率の減少、及び使用される１つ以上のトランスポート接続から、以前に送信されたデータに対する肯定的応答を受信する前に送信可能なデータの量の増加の内の少なくとも１つの検出により判定される。
【００８０】
図１は、本発明の例示的実装を説明する。クライアントコンピュータ１１０は、データ配信に対するリクエストの２つ以上のグループを近傍のプロキシ又はＶＰＮ１２０を通じて遠方のプロキシ又はＶＰＮ１７０へ発行し、遠方のプロキシ又はＶＰＮ１７０は、高帯域パイプ１８０を通じてコンテンツプロバイダ１９０へ該リクエストを通過させる。提示される例では、近傍のプロキシ又はＶＰＮ１２０は、遠方のプロキシ又はＶＰＮ１７０から非常に長距離に配置され、２つのコンピュータ間のパケットロスの比率を増加させる。これらのロスがスループットを低下させることを阻止するために、近傍のプロキシ又はＶＰＮ１２０は、近傍のマルチパストランスポートマネージャ１３０と結合され得る。遠方のプロキシ又はＶＰＮ１７０も遠方のマルチパストランスポートマネージャ１６０と結合され得、近傍のトランスポートマネージャと遠方のトランスポートマネージャとの間のトラフィックは、多数の同時接続１４０、１５０を通じて分散される。
【００８１】
説明される実施形態では、トランスポート接続１５０は、開通を維持されるが、リクエストされたデータを搬送するために使用されない一方で、同時トランスポート接続１４０は、リクエストされたデータを搬送するために使用される。このことは、新たな接続を開通するため、又は古い接続を不通にするために時間を費やすことなく、使用される接続１４０の数の変更を増加又は減少させることを可能にする。別の実施形態では、トランスポート接続は、データ転送に直ちに使用すること又は使用しないことに伴い、いつでも不通にされ得又は開通され得る。
【００８２】
幾つかの実装では、トランスポート接続１４０、１５０の内の少なくとも幾つかは、近傍のコンピュータ１１０と遠方のコンピュータ１９０との間の経路の内の少なくとも一部をカバーする同じ物理的データリンクを経由して開通される。例えば、同じラストマイルのＩＳＰ（インターネットサービスプロバイダ）又は無線サービスプロバイダを使用することにより多数の接続が開通され得る。幾つかの実施形態では、多数の接続の間を区別するための送信元ポートのみを使用して、同じ送信元ＩＰアドレスと宛先ＩＰアドレスとの間に多数の接続が開通される。この実装は、多数の接続が同じ中継ルータを通過してクライアントとコンテンツプロバイダとの間で同じ経路を使用する確率を増加させる。幾つかの例では、このアプローチは、ラウンドトリップタイム若しくはパケットロス率等の新たな接続のネットワーク特性を既に開通された接続のネットワーク特性から推定するために、又は新たな接続の制御ウィンドウを既存の接続から取得される制御ウィンドウから予め設定するために使用される。
【００８３】
別の実装では、２つ以上の同時接続は、異なるデータリンク（例えば、Ｗｉ−Ｆｉ及びセルラ接続の両者）を通じて開通され得、又は宛先ＩＰアドレスの相違に起因して異なる経路を通過し得る。このことは、（複数の）接続の個々のパラメータに従ってデータ転送のための一組の改善した接続を選択することに役立ち得、同じラストマイルのＩＳＰを経由して同じ遠くのサーバへ多数の接続が確立される場合であっても、同じサーバを指し示す異なる宛先ＩＰアドレスを使用することは、２つのコンピュータ１１０、１９０間のパケットにより取られる異なる経路に起因して、各接続のネットワークパラメータを変更し得る。
【００８４】
幾つかの実装では、モジュール１２０及び１７０は、それに応じて、プロキシクライアント及びプロキシサーバである。クライアント１１０により開通された接続は、近傍のプロキシクライアント１２０により終端され、近傍のプロキシクライアント１２０は、遠方のプロキシサーバ１７０との、トランスポートマネージャ１３０、１６０間に確立された多数のトランスポート接続を通じて、リクエストされたペイロードを送信し、応答のペイロードを受信する。幾つかの実施形態では、トランスポート接続１４０、１５０は、トランスポートコントロールプロトコル（ＴＣＰ）等の信頼性のある配信プロトコルを使用し、配信プロトコルは、ペイロードの配信保証を提供し、総制御ウィンドウを増加させるために同時トランスポート接続を使用することからの便益を得る。
【００８５】
別の実装では、モジュール１２０及び１７０は、それに応じて、仮想プライベートネットワーク（ＶＰＮ）クライアント及びＶＰＮサーバである。クライアント１１０により生成されたデータパケットは、近傍のＶＰＮクライアント１２０によってユーザ空間へ移される。近傍のトラフィックマネージャ１２０は、出力されるパケットを同時トランスポート接続１４０中にカプセル化する。遠方のトラフィックマネージャ１６０は元のパケットを抽出し、遠方のＶＰＮサーバ１７０と共にそれらをコンテンツプロバイダ１９０へ送信する。コンテンツプロバイダ１９０により返送されたデータは、逆の順序で処理される。この場合、同時トランスポート接続は、主に、任意の中継ルータ上のキューサイズを減少させること、及びデータリンクセグメント間の帯域幅の変化を緩和することによって、スループットの改善に役立つ。具体的には、そうした中継ルータは、一般的に、接続毎に１つのキューを維持し、各キューサイズを減少させることは、オーバフローに起因する遅延及びパケットロスの減少に役立つ。クライアント１１０が信頼性のある配信プロトコルを使用して多数の接続を開通する場合、ＶＰＮクライアント１２０とＶＰＮサーバ１７０との間の多数の同時接続は、全てのクライアント接続を単一のキュー中に集中させることにより生じる性能低下の防止に役立つ。
【００８６】
幾つかの実装は、並行して使用される、プロキシクライアント及びＶＰＮクライアント１２０とプロキシサーバ及びＶＰＮサーバ１７０との両方を含み得る。幾つかの実施形態では、クライアント１１０から開始する全てのＴＣＰトラフィックはクライアントプロキシ１２０により終端され、そのペイロードは多数のＴＣＰトランスポート接続１４０を通じて送信される。そうした実施形態では、クライアント１１０から開始する全てのＵＤＰ（ユーザデータグラムプロトコル）トラフィックは、ＶＰＮクライアント１２０によりカプセル化され、多数のＵＤＰ接続を通じて送信される。
【００８７】
幾つかの実装では、近傍のプロキシ又はＶＰＮ１２０は、マルチパストランスポートマネージャ１３０と同じコンピュータ上に存在する。幾つかの実施形態では、それらは、クライアント１１０と同じコンピュータ上に存在する。別の実装では、これらのコンポーネント１１０、１２０、１３０の内の何れか１つ又は２つは、異なるコンピュータ上に存在し得る。
【００８８】
幾つかの実装では、遠方のプロキシ又はＶＰＮ１７０は、遠方のマルチパストランスポートマネージャ１６０と同じコンピュータ上に存在し、別の実装では、それらは異なるコンピュータ上に存在し得る。
【００８９】
プロキシ又はＶＰＮモジュール１２０、１７０は、コンテンツサーバ１９０が多数の並列接続を通じた同じデータファイルの配信をサポートしない場合に有用である。
【００９０】
コンテンツサーバ１９０がそうしたサポートをできる代替的な実施形態では、クライアント１１０は、プロキシ又はＶＰＮクライアント１２０を使用することなく、近傍のマルチパストランスポートマネージャ１３０へトラフィックを直接送信する。そうした実施形態では、コンテンツサーバ１９０は、プロキシ又はＶＰＮサーバ１７０を使用することなく、遠方のマルチパストランスポートマネージャ１６０からリクエストを受信し、遠方のマルチパストランスポートマネージャ１６０へデータを送信する。この実施形態は、例えば、クライアント１１０及びコンテンツプロバイダ１９０の両者がマルチパスＴＣＰプロトコルエクステンションをサポートする場合に実現され得る。
【００９１】
図２は、近傍のマルチパストランスポートマネージャ１３０の例示的実装を説明する。この実装では、近傍のマルチパストランスポートマネージャ１３０は、マルチパストラフィックディストリビュータ２２０及びマルチパストランスポートチューナ２３０を含み、両者は、近傍のプロキシ又はＶＰＮ１２０に接続され、クライアント１１０と通信する。近傍のマルチパストランスポートマネージャ１３０は、遠方のマルチパストランスポートマネージャ１６０との同時トランスポート接続を維持するＴＣＰスタック２１０とデータを交換する。図示された実施形態では、マルチパストラフィックディストリビュータ２２０は、接続を開通若しくは不通にするための、又はマルチパストランスポートチューナ２３０からの既存の接続を通じたトラフィックを一時休止若しくは再開するためのコマンドを受信する。新たな接続が開通又は不通にされなければならない場合、マルチパストラフィックディストリビュータ２２０は、該コマンドをＴＣＰスタック２１０へ送信し、既存の接続の使用が一時休止又は再開されなければならない場合、マルチパストラフィックディストリビュータは、ＴＣＰスタック２１０に通知する必要なく、分散アルゴリズムを変更する。
【００９２】
記述される実装では、マルチパストランスポートチューナ２３０は、使用される同時接続の数をそれが変更することに役立つデータからの情報をプロキシ又はＶＰＮ１２０から取得する。この例では、それは、ドメイン（ホスト名）、ＩＰアドレス、ポート、及びＨＴＴＰヘッダを含むがそれらに限定されない、クライアント１１０により発行されたリクエストについての情報を受信する。幾つかの実施形態では、この情報は、周知のサイズのウェブサイトのダウンロードを示すリクエストのパターンを検出するために使用される。サイズ見積もりは、以下で記述されるように、接続の数を変更するために使用される。付加的な情報は、コンテンツリクエストに応じて提供されるコンテンツサイズ、又はＴＣＰスタック２１０等のその他の送信元からの情報（近傍のマルチパストランスポートマネージャが十分なシステム特権を有する場合にのみ可能である）をも含み得る。
【００９３】
代替的な実装では、マルチパストランスポートチューナ２３０は、遠方のマルチパストランスポートマネージャ１６０へのラウンドトリップタイム、又は遠方のトランスポートマネージャ１６０のＡＰＩへの呼び出し後に配信された第１バイトまでの時間を観察することによって、使用される接続１４０の数の設定又は変更を決定する。
【００９４】
更に別の実装では、マルチパストランスポートチューナ２３０は、例えば、ネットワークの輻輳の周知のパターンとそれが相関がある場合には、接続セッションの開始までの経過時間、ユーザステータス、又は時刻に基づいて、使用される接続の数を設定又は変更し得る。
【００９５】
使用される同時接続の数を増加又は減少させるか否かを判定するために必要なデータを受信することに加えて、マルチパストランスポートチューナ２３０は、遠方のマルチパストランスポートマネージャ１６０により明らかにされたＡＰＩ（アプリケーションプログラムインタフェース）への持続的なＴＣＰ接続を通じてフィードバックを受信すること等により、遠方のマルチパストランスポートマネージャ１６０からの制御情報をもプロキシ又はＶＰＮ１２０から受信する。マルチパストランスポートチューナ２３０はまた、トランスポート接続の開通又は不通、及び一時休止又は再開の決定について、遠方のマルチパストランスポートマネージャ１６０に通知する。また、このことは、遠方のマルチパストランスポートマネージャ１６０を参照する周知のネットワークアドレスへのＡＰＩ呼び出しを発行することを含み得る。幾つかの実施形態では、近傍のマルチパストランスポートマネージャ１３０によってのみ接続が開通され得る。しかしながら、典型的な実施形態では、近傍のマルチパストランスポートマネージャ１３０及び遠方のマルチパストランスポートマネージャ１６０の両者は、接続を一時休止又は再開し得る。
【００９６】
幾つかの実装では、近傍のマルチパストランスポートマネージャは、そのデータを送信するために、遠方のマルチパストランスポートマネージャとは異なる接続を使用する。この実装では、ある方向に使用されるトランスポート接続の数は、別方向に使用されるトランスポート接続の数とは異なり、他の接続が、ある方向のトラフィックを交換するためにのみ使用されつつ、幾つかの接続は、双方向のトラフィックを交換するために使用される。
【００９７】
別の実施形態では、マルチパストラフィックディストリビュータ２２０は、マルチパストランスポートチューナ２３０と結合され得、又は（一般的にルートアクセスの許可を要する）ＴＣＰスタックの変形として実装され得る。プロキシ又はＶＰＮ１２０を通じた通信の代わりに、近傍のマルチパストラフィックマネージャ１３０は、クライアント１１０と一体化され得る。
【００９８】
図３は、遠方のマルチパストランスポートマネージャ１６０の例示的実装を説明する。この実装では、遠方のマルチパストランスポートマネージャ１６０は、マルチパストラフィックディストリビュータ３２０及びマルチパストランスポートチューナ３３０を含み、両者は、コンテンツプロバイダ１９０と通信する遠方のプロキシ又はＶＰＮ１７０に接続される。遠方のマルチパストランスポートマネージャ１６０は、近傍のマルチパストランスポートマネージャ１３０との同時トランスポート接続を維持するＴＣＰスタック３１０とデータを交換する。図示される実施形態では、マルチパストラフィックディストリビュータ３２０は、既に開通された接続を通じたマルチパストランスポートチューナ３３０からのトラフィックを一時休止及び再開するためのコマンドを受信する。しかしながら、近傍のマルチパストラフィックディストリビュータ２２０とは対照的に、マルチパストラフィックディストリビュータ３２０は、幾つかの実施形態ではトランスポート接続を開通又は不通にせず、むしろ、開通又は不通にされる接続についての情報をＴＣＰスタック３１０から受信して、この情報をマルチパストランスポートチューナ３３０へ伝達するのみである。このことは、クライアント１１０の近傍のモジュール１３０により新たなトランスポート接続が開始される場合を反映する。マルチパストランスポートチューナ３３０が１つ以上の接続を開通又は不通にすることを判定する場合、それは、この情報をプロキシ又はＶＰＮ１７０を通じて近傍のマルチパストランスポートマネージャ１３０へ伝達する。
【００９９】
マルチパストランスポートチューナ３３０はまた、近傍のトランスポートマネージャ１３０により開通又は不通にされた、一時休止又は再開された接続についてのフィードバックを受信し、リクエストされたドメイン又はＩＰアドレスのパターン等の情報を、使用されるトランスポート接続１４０の数をそれが設定又は変更することに役立てるために使用する。幾つかの実施形態では、マルチパストランスポートチューナ３３０は、クライアント１１０が既に開通した１つ以上のトランスポート接続の不通を求めているとの判定に応じて、リクエストのグループに対応するリクエストされたデータの配信を終了したことを判定する。
【０１００】
幾つかの実施形態では、プロキシ又はＶＰＮ１７０は、少なくとも単一の接続に対して、遠方のトラフィックトランスポートマネージャと近傍のトラフィックトランスポートマネージャとの間のパイプよりも高いスループットを有し得るパイプ１８０を通じてコンテンツプロバイダ１９０に接続される。これは、例えば、遠方のプロキシ又はＶＰＮ１７０が近傍のプロキシ又はＶＰＮ１２０よりもコンテンツプロバイダ１９０に遥かに近接して配置される場合であり得る。記述される実施形態では、スループットの相違は、受信キュー３４０により緩和される。受信キュー３４０は、コンテンツプロバイダ１９０からダウンロードされたデータを、該データがクライアント１１０へ転送される前に格納するバッファとして具体化され得る。マルチパストラフィックディストリビュータ３２０は、多数の同時接続１４０間でデータを分散する前に、受信キュー３４０からデータを読み出す。
【０１０１】
記述される実施形態では、マルチパストランスポートチューナ３３０は、受信キュー３４０中に格納されたデータのサイズによって、クライアントへ依然として配信されるデータのサイズを見積もる。例えば、単一のファイルが高スループットのパイプ１８０を通じてコンテンツプロバイダ１９０からロードされ、受信キュー３４０中に格納されたデータのサイズが時間と共に減少し始める場合、これはリクエストされた配信に対する最後の残存データであるとの指標として解釈することができる。マルチパストランスポートチューナ３３０は、使用される同時トランスポート接続１４０の数を配信が開始された後に変更するためにこの情報を使用し得る。
【０１０２】
別の例では、クライアント１１０は、クライアント１１０へ転送される前に１つ以上の受信キュー３４０中に格納されている応答と共に、多数のリクエストを異なるコンテンツプロバイダ１９０に発行し得る。この場合、マルチパストラフィックチューナ３３０は、これらのキュー３４０の各々の中に格納されたデータについての情報を受信し得、キュー３４０の各々がその最大バッファサイズよりも小さいデータを有し、格納されたデータの総量が時間と共に減少する場合、コンテンツプロバイダ１９０からのデータ配信の完了を検討し得る。
【０１０３】
図示される実施形態の別の側面において、マルチパストランスポートチューナ３３０は、制御ウィンドウのサイズＷ（若しくは例えば、ＴＣＰトランスポートプロトコルにより使用される、受信者ウィンドウ及び輻輳ウィンドウの両方のサイズ）、近傍のＴＣＰスタック２１０へのラウンドトリップタイム、並びにパケットロスの比率等の、既に開通されたトランスポート接続の１つ以上のパラメータをＴＣＰスタック３１０から受信する。この情報は、開通された１つ以上のトランスポート接続に対して収集され得る。システム管理者は、セキュアなサーバ環境においてより高レベルのアクセス特権を設定し得るので、この情報は、一般的にサーバ側で利用可能である。
【０１０４】
幾つかの実装では、同じ遠方のマルチパストランスポートマネージャ１６０は、異なるクライアント１１０に接続される２つ以上の近傍のマルチパストランスポートマネージャ１３０により開通された接続を受信する。この場合、マルチパストラフィックチューナ３３０は、各クライアント１１０への接続と関連付けられたパラメータ、例えば、ラウンドトリップタイムを評価し、異なる数の同時接続を開通するように、又は異なるクライアント１１０との既に開通された異なる数の接続を使用するように、異なる近傍のトランスポートマネージャ１３０に助言する。各クライアント１１０との接続の最初の数が設定された後、それは、（例えば、制御ウィンドウの変更サイズＷ、又は受信キュー３４０に残存するデータのサイズに基づいて）データ配信が完了する前に変更され得る。
【０１０５】
代替的な実装では、マルチパストラフィックディストリビュータ３２０は、遠方のプロキシ又はＶＰＮ１７０を通じてコンテンツプロバイダのサーバ１９０に接続されることなく、コンテンツプロバイダのサーバ１９０と一体化され得る。この場合、コンテンツプロバイダのサーバは、マルチパストラフィックディストリビュータ３２０に届くデータが暗号化される場合であっても、リクエストされた配信のサイズについてのより精密な情報を提供し得る。
【０１０６】
別の実装では、遠方のマルチパストラフィックマネージャ１６０は、マルチパストラフィックディストリビュータ３２０及びマルチパストランスポートチューナ３３０を別個に実装することなく、ＴＣＰスタック３１０と一体化され得る。
【０１０７】
記述される実施形態に従えば、リクエストの異なるグループに対するデータを配信するために、又はそれらが同じコンテンツをリクエストした場合であっても異なるクライアント１１０に配信するために、異なる数の同時トランスポート接続１４０が使用され得る。更に、各場合において使用される接続１４０の数は、リクエストのグループが発行された後ではあるが、リクエストのグループに対応するデータ配信が完了する前に変更され得る。
【０１０８】
これらの実施形態は、多数の目的のために、例えば、異なるユーザ及び異なるコンテンツリクエストに対して異なる接続パターンを作り出すことによりプロキシ又はＶＰＮのトラフィックを外部のセンサ（ｃｅｎｓｏｒ）から難読化するための手段として、使用され得る。
【０１０９】
別の例では、トランスポート接続１４０の数を変更することは、共有される帯域幅のボトルネック経由の帯域幅の消費の公正を図るために使用され得、接続の数は、他のユーザにより利用されない帯域幅容量がある場合、又は帯域幅が他のユーザと共有されない専用リソースである場合にのみ増加させられる。
【０１１０】
幾つかの実施形態では、多数の接続を経由して同じファイルが転送される場合であっても、使用される接続１４０の数は、リクエストされたファイルの数と共に変更される。このことは、プロキシ又はＶＰＮの単一の接続を経由して多数のファイルが転送される場合と比較して、プロキシ又はＶＰＮのユーザに対してそれをより公正にさせる。
【０１１１】
開示される実施形態の一機能は、クライアント１１０とコンテンツプロバイダ１９０との間の長距離経由のスループットを調整することである。送信者と受信者との間の多数の配信保証トランスポート接続１４０を越えてデータ転送を分散することは、特に、トランスポートコントロールプロトコル（ＴＣＰ）等の配信保証を確実にするトランスポートプロトコルを接続が使用する場合に総スループットを一般的に増加させ、該トランスポートプロトコルは、送信者と受信者との間の転送中（in-flight）のデータの量を制御ウィンドウのサイズに制限し、該制御ウィンドウは、典型的には、受信者ウィンドウ（受信者により受け入れ可能なデータの量）及び（過度なトラフィックを伴う過負荷が送信者と受信者との間のリンクにかかることを止めるために送信者により計算された）輻輳ウィンドウとの内の最小のものである。
【０１１２】
この場合、新たな各接続１４０を追加することは、少なくとも、共有リンク上のパケットロスの増加により総輻輳ウィンドウが制限されるまで、受信者ウィンドウ及び輻輳ウィンドウの両者の総サイズを増加させる。輻輳ウィンドウを総和することは、ランダムなパケットロスの影響を緩和する付加的な便益をも有する。例えば、１つの接続に対する輻輳ウィンドウがパケットロス後に５０％に低下する場合、１０個の並列接続に対する総輻輳ウィンドウは５％のみ減少する。
【０１１３】
接続１４０がデータの搬送で完全に占められる場合、その平均スループットはＴ＝Ｗ／ＲＴＴと見積もられ得、ここで、Ｗは制御ウィンドウのサイズであり、ＲＴＴは平均ラウンドトリップタイムである。
【０１１４】
制御ウィンドウＷを有する接続１４０を経由してデータ量Ｓが転送され、Ｓ＝Ｎ＊ＭＳＳ）であるように最大セグメントサイズＭＳＳ〜＝１５００Ｂを各々有するＮ個のパケットとしてこの量が送信されると仮定する場合、この接続経由でこれらのデータを配信するための時間ｔ１は、
ｔ１＝（Ｎ／Ｗ）＊ＲＴＴ        （１）
と見積もられ得る。
【０１１５】
Ｍ個の並列接続を経由して同じデータ量が転送され、単に（Ｗ＊Ｍの制御ウィンドウを使用する総接続に等しい）Ｎ／Ｍ個のパケットを各接続が転送しなければならない場合、これらのデータを配信するための時間ｔＭはＭ倍小さくなり、
ｔＭ＝（１／Ｍ）＊（Ｎ／＊Ｗ）＊ＲＴＴ        （２）
である。
【０１１６】
総輻輳ウィンドウが共有リンクにより制限されず、全ての並列接続が安定したスループットに到達する（各並列接続に対する平均Ｗが単一の接続に対するものと同じである）限り、任意のＭ＞１に対して、Ｍ個の並列接続を通じたデータ転送は、単一の接続よりも常に速いと当業者であれば結論付け得る。
【０１１７】
しかしながら、この結論は、（安定したスループットを維持するための輻輳制御アルゴリズムを可能にする）パイプを通じてＮ個のパケットが送信された後にデータ転送が継続することを暗に仮定している。実際には、リクエストされたデータの配信は、追加のデータ転送に進む前にしばしば確認されなければならない。例えば、
【０１１８】
（１）リクエストされたファイルは、次のファイルを自動的にリクエストする前に完全にダウンロードされなければならず、処理されなければならない（例えば、ブラウザは、ＪａｖａＳｃｒｉｐｔファイルを受信し、そのコードを実行し、該コードにより生成されたリクエストをその後発行する）。
【０１１９】
（２）ユーザは、以前にリクエストされたコンテンツを再調査した後に、次のファイル又はファイルのグループに対するリクエストを発行する（例えば、ウェブサイトのロードに続いて、ユーザがリンク上でクリックするまで不活動期間がある）。
【０１２０】
（３）データの量は、次の転送に進む前に確認されなければならず、リクエストされたコンテンツの種類に一般的に依存する。例えば、単一のＪａｖａＳｃｒｉｐｔファイル〜１０から１００ＫＢ、ニュースのウェブサイト〜０．５から５ＭＢ、ビデオ〜＝２０から２０００ＭＢ。
【０１２１】
次のデータ転送に進む前にＮ個のパケットの配信を確認する条件は、２つの方法で配信時間を変化させる。
【０１２２】
第１に、接続パイプは、転送中のパケットの最大数（Ｗ）で常に充足されるわけではないかもしれない。例えば、Ｗ＝１００であるが、１０個のパケットのみが１つの接続を通じて送信される場合には、それらを配信及び確認するために１００個のパケットに対する時間と同じ時間（ＲＴＴ）がかかるであろう。並列接続の数の増加は、各接続を通じて送信されるパケットの数をＷ未満に低下させ得、そのスループットを減少させる。
【０１２３】
第２に、何れかの接続で最後のパケットをロスする確率は、並列接続の数と共に増加する。Ｍ個の接続の内の何れかがその最後のパケットをロスした場合、該パケットが回復するまで、Ｎ個全てのパケットが配信されたことの確認は遅延する。
【０１２４】
ＴＣＰの一部として実装された輻輳制御プロトコルを含む、輻輳制御プロトコルの多くは、トランスポート接続を通じた最後のパケットがロスされた場合に追加の遅延を招く。輻輳制御プロトコルは、一般的に、ロスされたそうしたパケットを再送する前に追加の時間の間、待機する（テールロス遅延）。最後のパケットが最初の再送後に再格納された場合、最後のパケットを再配信するための総時間は、テールロス遅延＋ＲＴＴ＝ＴＬＤＦ＊ＲＴＴ（ＴＬＤＦは、１よりも大きい時間ロス遅延要因である）として見積もられ得る。
【０１２５】
Ｌｉｎｕｘオペレーティングシステムの幾つかの実装では、時間ロス遅延は、再送タイムアウト（ＲＴＯ）に等しく、最初の再送に対して、時間ロス遅延〜＝ＳＲＴＴ＋４＊ＲＴＴＶＡＲであり、ここで、ＳＲＴＴ及びＲＴＴＶＡＲは夫々、多数のＡＣＫに渡り平均化した、ＲＴＴ値及びその変量である。例えば、ＲＴＴＶＡＲ／ＳＲＴＴ＝０．５である場合、ＴＬＤＦ〜＝４である。
【０１２６】
Ｌｉｎｕｘオペレーティングシステムで実装された周知の一改善では、送信者は、テールロスプローブ（ＴＬＰ）として周知の最後のパケットの複写を発行し、最初の再送に対する時間ロス遅延を２＊ＳＲＴＴ（ＴＬＤＦ〜＝３）に減少させる。
【０１２７】
これらの例では、ＴＬＤＦは、ロスしたパケットが最初の再送信の試み後に再配信されるものと仮定して見積もられる。再送されたパケットもロスされた場合、それは、次のＲＴＯを増加させ得、又はＴＬＰからＲＴＯへの切り替えを生じさせ得、次の再送信の試みを更に遅延させ、平均ＴＬＤＦを増加させる。
【０１２８】
任意の接続における任意のパケットに対して単一のパケットロスの確率（ｐ）が同じであると仮定すると、Ｍ個の接続の内の少なくとも１つがその最後のパケットをロスする確率は、Ｐ＝１−（１−ｐ）＾Ｍ（〜＝ｐ＊Ｍ（ｐ＊Ｍ＜０．５に対して））である。
【０１２９】
不完全に充足された接続パイプとテールロス遅延とを構成した後、単一の接続を通じたＮ個のパケットの配信を転送及び確認するための時間（ｔ１）と、Ｍ個の並列接続を通じたＮ個のパケットの配信を転送及び確認するための時間（ｔＭ）とは、
ｔ１＝ｃｅｉｌｉｎｇ（Ｎ／Ｗ）＊ＲＴＴ＋ｐ＊ＴＬＤＦ＊ＲＴＴと、    （３）
ｔＭ＝ｃｅｉｌｉｎｇ（１／Ｍ）＊（Ｎ＊Ｗ））＊ＲＴＴ＋（１−（１−ｐ）＾Ｍ）＊ＴＬＤＦ＊ＲＴＴ        （４）
とであり、ここで、ｃｅｉｌｉｎｇ（Ｘ）は、最も近い整数Ｋ＞＝Ｘを返す関数である。
【０１３０】
パケットロスがない場合（ｐ＝０）、Ｍは、小さいＮ／Ｍに対してであっても総スループットを減少させることなく大きな数に予め設定され得、任意のＭ＞Ｎ／Ｗに対してｔＭ＝ＲＴＴである（単一のパケットの配信及び確認には、Ｗ個のパケットに対する時間と同じ時間がかかる）。
【０１３１】
しかしながら、パケットロスの存在（ｐ＞０）は、見積もり最適値（Ｍ＿ｏｐｔ）よりもＭが大きくなった場合にＭ個の並列接続の総スループットを減少させ、多数の接続を通じたデータ転送の拡散は、少なくとも１つの最後のパケットがロスする確率を増加させ、テールロス遅延を生じさせる。
【０１３２】
図４ａ及び図４ｂは、本発明からもたらされるスループットの改善を説明するグラフである。
【０１３３】
図４ａは、Ｎ／Ｗ＝１０で、ｐ及びＴＬＤＦの３つの組み合わせに対して式（３、４）から計算された、接続毎の充足率（Ｎ／（Ｍ＊Ｗ））の増加を伴うスループットの増加割合（ｔＭ／ｔｌ）の変化を図示する。各接続を通じて送信されたデータの量が、１  ＲＴＴ（Ｎ／（Ｍ＊Ｗ）〜＝１）で配信され得る最大量に等しい場合、ｐ及びＴＬＤＦの実際値に対して、最良のスループットの増加割合が実現されることを説明する。例えば、ｐ＝０．０１でＴＬＤＦ＝３に対して、最良のスループットの増加割合は、Ｍ＝１０で実現され、それは、より大きな値のＭに対してよりも最大２倍よい。
【０１３４】
ｐ＝０．０５でＴＬＤＦ＝４に対するグラフは、Ｎ／（Ｍ＊Ｗ）〜＝２で極小値を示し、ｐ及びＴＬＤＦの更なる増加と共に最小値になり、パケットロスが高い（例えば、ネットワーク品質が低い）場合、２ＲＴＴで配信され得る接続単位のデータの最大量を送信することによって最良の性能が実現され得、平均時間は低下するがテールロスの確率は減少する。
【０１３５】
図４ｂは、ｐ＝０．００２、ＴＬＤＦ＝３で、Ｎ／Ｗの３つの値に対して式（３、４）から計算された、各接続に対する充足率（Ｎ／（Ｍ＊Ｗ））の増加を伴うスループットの増加割合（ｔＭ／ｔ１）の変化を図示する。広範囲のＮ／Ｗに対して、Ｎ／（Ｍ＊Ｗ）〜＝１である場合に最良のスループットの増加割合が継続して実現されることを説明する。Ｗが変わらない場合、少なくとも図示されたＮ／Ｗの範囲に対しては、Ｍの見積もり最適値はＮと共に比例的に増加することを意味する。
【０１３６】
受信者ウィンドウが輻輳ウィンドウよりも大きい場合、Ｗは、マティス式（Ｃ〜＝ｓｑｒｔ（３／２））からＷ＝Ｃ／ｓｑｒｔ（ｐ）と見積もられ得る。例えば、ｐ＝０．００２はＷ＝２７に対応し、Ｎ／Ｗ＝１００はファイルサイズ〜４ＭＢに対応する。
【０１３７】
接続の見積もり最適数を記述する式は、多数の要因に依存して（３−４）とは異なり得る。例えば、パケットロスの異なる比率によって、別個の接続を通じて以前に送信されたデータの異なる量によって、又は異なる接続の可変のラウンドトリップタイムによって生じた（例えば、ラストマイルの無線リンク内のランダムな再送によって生じた）異なる接続間のＷ値の変動。
【０１３８】
式は、データ分散アルゴリズムによって生じた異なる並列接続を通じて送信されたデータの量の変動と共に、更に異なり得る。例えば、ラウンドロビン分散を使用する代わりに、各接続を通じて送信されたデータの量を、以前に観察されたそのスループットに比例させることによって。
【０１３９】
本明細書に開示される実施形態は、式（３−４）の正確な形式に依存しない。これらの式は、本発明の実施形態の内の幾つかにより使用される仮定を検証するために、及び実施形態が特に効果的であり得る条件を確立するために含まれる。例えば、他のデータ転送に進む前に、以前にリクエストされたデータの配信が確認されなければならない場合には、パケットロスが存在する場合に配信を完了及び確認するための時間を削減する並列接続の最適数がある。同様に、並列接続の最適数は、配信を完了及び確認するために必要なデータの量と共に増加する。並列接続の最適数は、単一のラウンドトリップサイクル中に送信及び確認され得るデータの最大量を配信するために、又は２つのラウンドトリップサイクル中に特に高率のパケットロスに対して、各並列接続がリクエストされた場合に一般的には実現される。
【０１４０】
図５は、データトラフィックのパラメータを監視することによって多数の同時接続のスループットを最適化し、例えば、著しく改善し、接続の見積もり最適数を設定するためにこれらのパラメータを使用する方法の処理フロー図を図示する。図５の方法は、検索されているデータのサイズと、近傍のマルチパストランスポートマネージャ１３０と遠方のマルチパストランスポートマネージャ１６０との間の接続の属性とに依存して、異なるコンピュータが異なる数の接続１４０を使用し得るように、遠方のマルチパストランスポートマネージャ１６０に結合された各々の近傍のマルチパストランスポートマネージャ１３０に関して実行され得る。
【０１４１】
記述される方法では、マルチパストランスポートマネージャ１３０、１６０は、受信キュー中のデータサイズＲ、及び既存のトランスポート接続の平均制御ウィンドウのサイズＷ等のデータ転送のパラメータを取得する（ステップ５１０）。Ｗのサイズは、ラウンドトリップタイム、パケットロスの比率、ＴＣＰを実装する２つのコンピュータ間のネットワーク接続の距離、又はネットワーク接続の品質を記述するその他の要因等の要因に従ってＴＣＰプロトコルによって判定されることに留意されたい。マルチパストランスポートマネージャ１３０、１６０は、これが、事前に定義した期間、例えば、１秒間のトラフィック量の開始、一時休止、停止、又は急な減少（例えば、５０〜９０％の減少）の後の最初のデータ転送であるか否かを更に判定する（ステップ５２０）。
【０１４２】
ステップ５２０の開始又は一時休止が検出された後に、クライアント１１０からのリクエストの新たなグループが受信された場合（ステップ５４０）、リクエストの新たなグループのパターン又はリクエストされたドメイン及びリクエストヘッダから、配信サイズＮが見積もられる（ステップ５６０）。Ｒ、Ｓ、及びＷの見積もり値に対して、リクエストの新たなグループに対応するリクエストされた配信の時間を最適化する、例えば、著しく改善するように、同時トランスポート接続の数がその後設定される（ステップ５７０）。
【０１４３】
リクエストされた配信のデータ転送が継続されながら、マルチパストランスポートマネージャ１３０、１６０の内の少なくとも１つは、Ｒ及びＷ等のトランスポートパラメータの評価を継続する（ステップ５２０）。ｃｅｉｌｉｎｇ（Ｒ／（Ｍ＊Ｗ））と見積もられる、リクエストされた配信のデータの残部を配信するために使用されるラウンドトリップサイクルの数の増加をそれが検出した場合（ステップ５３０）、リクエストされた配信が完了するまでの時間を減少させるために、使用される接続１４０の数が増加させられる（ステップ５５０）。各マルチパストランスポートマネージャ１３０、１６０は独立して動作するので、クライアント１１０からコンテンツプロバイダ１９０へデータを転送するために使用されるトランスポート接続１４０の数は、コンテンツプロバイダからクライアント１１０へデータを転送するために使用されるトランスポート接続１４０の数とは異なり得ることに留意されたい。同様に、クライアント１１０からコンテンツプロバイダ１９０へデータを転送するために使用されるトランスポート接続１４０の数は、コンテンツプロバイダからクライアント１１０へデータを転送するために使用されるトランスポート接続１４０の数を一定に維持しながら変更し得、その逆もしかりであり得る。
【０１４４】
上述したように、使用されるトランスポート接続１４０の数は、パケットロス、スループット、制御ウィンドウ、輻輳ウィンドウ、受信者ウィンドウ、及び値Ｒ／Ｍ＊Ｗに影響を及ぼすその他のパラメータを含む、トランスポート接続の属性に依存する（ステップ５３０）。具体的には、制御ウィンドウのサイズＷは、これらの属性の影響を受ける。したがって、マルチパストランスポートマネージャ１３０、１６０によって検出された、クライアントからコンテンツプロバイダへの接続１４０に対するこれらの属性と、コンテンツプロバイダからクライアントへの接続１４０に対するこれらの属性との相違は、コンテンツプロバイダからクライアントへの接続１４０に対する、クライアントからコンテンツプロバイダへの使用される接続１４０の数の相違をもたらし得る。
【０１４５】
制御ウィンドウの現在のサイズを使用することに代わり、一実装は、（例えば、制御ウィンドウのサイズが各ラウンドトリップと共に継続して増加するであろうと仮定することによって）、又は観察されたパケットロスの比率から制御ウィンドウの平均サイズを得るためにマティス式を使用することによって、制御ウィンドウの見積もりサイズを後で使用し得る。
【０１４６】
使用される接続の数を増加させるためにデータ転送の１つ以上のパラメータを見積もる方法のその他の実装は、制限された新たなデータ配信の開始を検出するために、又はそのサイズを見積もるために、異なる一連のステップ、異なる方法を使用し得る。
【０１４７】
したがって、この実装及びその他の実装は、トラフィックの開始又は一時休止を検出した後にトラフィックパラメータを評価し、リクエストの異なるグループに対して、若しくは異なるユーザからの同じリクエストに対して、使用される同時接続の数を異なる値に設定する共通の機構を有する。また、リクエストされた配信中にトラフィックパラメータを再評価する実装は、リクエストされた配信が完了する前に、使用される同時接続の数を変更する共通の機構を有する。
【０１４８】
図６は、本発明の別の側面に従った、同時トランスポート接続を通じた単一のファイル転送のトラフィック分散を最適化する、例えば、著しく改善するために使用されるネットワーク環境の図である。
【０１４９】
この側面において、遠方のマルチパストランスポートマネージャ１６０は、一組の送信バッファ６２０を含み、各送信バッファは、ＴＣＰスタック３１０により確立された別個のトランスポート接続１４０を供給している。これらの送信バッファは、ユーザ空間中に実装され得、又はＴＣＰスタックにより提供されたトランスポート接続の送信バッファと統合され得る。マルチパストランスポートマネージャは、少なくとも１つのローダ６３０と受信キュー６４０とを更に含み、コンテンツプロバイダ１９０から高帯域パイプ１８０を通じ、遠方のプロキシ又はＶＰＮ１７０を通じて送信されたデータを格納する。
【０１５０】
記述される実装では、ローダ６３０は、一組の送信バッファ６２０を順番に充足する。各接続に対してデータを送信する前に、それは、制御ウィンドウのサイズＷを取得し、受信者キュー６４０からＷと等しい量のデータを抽出し、受信キューを通じて更に進む前に、それを現在の送信バッファへ転送する。受信キュー６４０から空けられた空間は、例えば、リングバッファ中のポインタをシフトすることによって、次のデータを受信するための準備としてマークされる。図６は、第１のトランスポート接続に対する送信バッファがその制御ウィンドウのサイズ（Ｗ１）と等しい量のデータを既に受信し、ローダ６３０が第２のトランスポート接続に対する制御ウィンドウのサイズ（Ｗ２）を取得し、次の送信バッファ（説明の例ではＷ３）に進む前に、受信キュー６４０から第２の送信バッファへ対応する量のデータを転送するために準備する場合を図示する。受信キュー６４０中に残るデータの量が制御ウィンドウのサイズ（Ｗ３に対して示される例示のようなもの）よりも小さい場合、ローダ６３０は利用可能な量を転送する。
【０１５１】
幾つかの実装では、多数のローダ６３０は、多数の送信バッファ６２０を供給するために並行して使用され得る。同様に、ラウンドロビンの代わりに、異なる配信アルゴリズムが使用され得る（例えば、制御ウィンドウの内で最大サイズを有する接続が最初にアドレス指定され得る）。ローダ６３０は、各送信バッファに送信されるべき量を特定するために、制御ウィンドウのサイズ以外のパラメータを使用し得る。例えば、近時の時間間隔（例えば、０．１から１０秒）中の現在の接続の平均スループットに比例した値。
【０１５２】
本発明に従うと、図示される実装、及び上述したようなその変形は、所望の範囲内、例えば、対応する接続に対する制御ウィンドウのサイズに可能な限り近くに設定されている各データグループのサイズで、データのグループを異なるトランスポート接続へ送信する共通の機構を有する。
【０１５３】
このことは、使用される接続の数を、配信のために残存するデータの量に自動的に調節することを可能にする。例えば、受信キュー６４０は、３つの送信バッファ６２０をそれらの制御ウィンドウサイズＷ１〜Ｗ３に対応する量で充足するのに十分なデータのみを含む場合、その他のトランスポート接続はもはやデータを受信しないであろう。この方法では、使用される接続１４０の数は、配信されなければならないデータの量の増加と共に、又はランダムなパケットロスに起因する１つ以上の制御ウィンドウのサイズの減少と共に上昇し得る。
【０１５４】
幾つかの実装では、所望の範囲は、現在の制御ウィンドウのサイズ等、最大値のみを含み得る。他の実装では、それは、最小値をも含み得る。例えば、受信キュー６４０が現在の制御ウィンドウのサイズの５０％未満を含む場合、単一のラウンドトリップタイム中に最大量のデータが送信される確率を増加させるために、ローダ６３０は、受信キュー６４０から次のデータを受信するために１つ以上のラウンドトリップタイムを待機する。最小値を判定するために、４０％から６０％の値等の５０％以外の値が使用され得る。
【０１５５】
受信キュー６４０中のデータの残量が全ての制御ウィンドウ（説明された例のＷ１からＷ４）の和よりも大きい場合、事前に定義された制限を越えないように、同時接続の最大数が設定され得る。
【０１５６】
図示される実施形態では、第１のトランスポート接続１４０が第２の接続１４０等よりも早いデータを受信する等、受信キュー６４０からのデータは、送信バッファ６２０の各々に順番にロードされる。現在の接続１４０の制御ウィンドウのサイズを越えないサイズを有する各データグループは、現在の接続を経由して、単一のラウンドトリップ中に配信され得る。ある順番で連続的なデータグループを送信することは、受信側で行われなければならない並べ替えの量を削減する更なる便益を有する。
【０１５７】
図示される実装では、受信側は、ＴＣＰスタック３１０を通じて多数のトランスポート接続１４０から受信されたデータがプロキシ又はＶＰＮ１７０へ正しい順序で配信され得るまで該データを格納する順序付けキュー６５０を含む。各接続１４０は、各ラウンドトリップ中に連続的な一組のデータを配信し、（例えば、第３の接続が第２の接続よりも速くデータを配信した場合）又は幾つかのデータパケットがロスされ再送されなければならない場合、データのグループ間でのみ並び替えが必要である。これが実装されない場合、例えば、連続したデータパケットが多数の接続の間で拡散された場合、現在のサイクル中に全ての接続が全てのデータを配信するまで、順序付けキュー６５０中にパケットが留まる必要があり得、それによりレイテンシを増加させる。
【０１５８】
図７は、各接続を通じて所望サイズのデータグループを送信することに基づいて、同時トランスポート接続を通じたトラフィック分散を改善するための方法を説明する処理フロー図である。
【０１５９】
受信キューが空ではない場合（ステップ７１０）、データグループを受信するために次のトランスポート接続が選択される（ステップ７２０）。図示される場合では、接続の最大数に到達した場合に第１の接続にオーバラップ（wrap over）すると共に、次の接続が順次選択される。代替的な実装では、例えば、その送信バッファ６２０中に残存するデータの量と、その制御ウィンドウのサイズとに基づいて、次の接続が選択され得る（７２０）。具体的には、空の送信バッファ６２０と大きな制御ウィンドウとを有する接続１４０が最初に選択される。選択された接続に対する制御ウィンドウのサイズを取得した後（ステップ７３０）、制御ウィンドウのサイズ（Ｗ）と受信キュー中の残量（Ｒ）との内の最小のものが、選択された接続の送信バッファ６２０へ移される（ステップ７４０）。受信キュー６４０中に残存するデータのサイズは、次のデータのために空間を自由にするために、それに応じて調節される。
【０１６０】
上で概説したように、制御ウィンドウ（Ｗ）がスループットに依存する限り、データフレームのサイズはＷのサイズに依存する。フレームのサイズは、それ故、Ｗの増加と共に増加するであろう。スループット及び制御ウィンドウはパケットロス率にも依存する。したがって、スループットの増加又は減少は、パケットロス率の増加又は減少に夫々基づいて見積もられ得る。
【０１６１】
図８は、本発明の実施形態に従った、同時トランスポート接続を通じた多数の並列ファイル転送のトラフィック分散を改善するために使用されるネットワーク環境の図である。
【０１６２】
この側面において、クライアント１１０は、多数のコンテンツプロバイダ１９０からファイルのグループをリクエストする。これらのファイルは、プロキシ又はＶＰＮサーバ１７０を通じて並行してダウンロードされる。記述した実装において、遠方のマルチパストランスポートマネージャ１６０に提示される前に、多数のダウンロードストリームは、フレームアセンブラ８６０を通じて送信され、フレームアセンブラ８６０は、これらのデータストリームを単一の受信キュー６４０中に多重化する。幾つかの例では、該アセンブリは一連のフレームを作り出すことを含み、各フレームは、単一のデータストリームに対応するヘッダ及びペイロードを有する。ヘッダは、データストリームの識別子とペイロードのサイズとを含み得る。ヘッダは、フレームタイプ（制御又はデータ、チェックサム、又は付加的オプション）等の付加的パラメータをも含み得る。幾つかの実施形態では、各フレームは、ハイパーテキストトランスポートプロトコル（ＨＴＴＰ）バージョン２以降の仕様に従ってフォーマット化され得る。
【０１６３】
本発明の一側面に従うと、ローダ６３０は、受信キュー６４０からの連続的な各フレームを、ＴＣＰスタック３１０により維持される異なるトランスポート接続の送信バッファ６２０中へ転送する。幾つかの例では、フレームアセンブラ８６０は、各フレームに対して同じフレームサイズを使用する。ローダ６３０は、各フレームが唯一つの接続１４０の送信バッファ６２０へ転送されることを確認する。この方法では、使用されるトランスポート接続の数は、受信キュー６４０中のデータの量と共に増加し、ファイルのグループのリクエストされた配信が完了に近づくと下げられる。
【０１６４】
幾つかの実装では、フレームアセンブラ６８０は、予測される配信サイズについての情報（例えば、リクエストされたドメインに対するパターンから取得された情報）又は（例えば、多くのフレームが単一の制御ウィンドウ中に適合することを確認するために）トランスポート接続１４０により使用される制御ウィンドウのサイズに基づいて、フレームサイズを予め設定する。幾つかの実施形態では、予め設定されるフレームサイズは、同じユーザからのリクエストの異なるグループに対して、又はリクエストの同じグループを送信する場合であっても異なるユーザに対して異なる。フレームサイズは、データ配信中にも変化し得る。例えば、制御ウィンドウの平均サイズが時間と共に減少する場合、フレームアセンブラ８６０はフレームサイズを減少させ得る。
【０１６５】
幾つかの実施形態では、フレームアセンブラ８６０は、配信されるデータの残量の減少と共に、１つ以上のデータフレームのサイズを増加させる。このアプローチは、異なる接続に切り替える前に最大又はほぼ最大の量のデータを各接続１４０が送信することを確実にし、ここで、データの最大量は、データの内の少なくとも幾つかの肯定的応答を受信する前に送信可能なデータの量である。異なるフレームが異なる接続を通じて送信される場合、各データフレームのサイズの増加は、データの転送に活発に使用される同時接続の数を減少させる。上述したように、小さいファイルに対しては、このことは、配信保証プロトコルが使用された場合にスループットを実際に増加させる。
【０１６６】
幾つかの実施形態では、フレームアセンブラ８６０は、パケットロス率の減少と共にデータフレームのサイズを増加させる。他の実施形態では、フレームアセンブラ８６０は、データの内の少なくとも幾つかの肯定的応答を受信する前に送信可能なデータの量の増加と共に、データフレームのサイズを増加させる。このアプローチは、異なる接続に切り替える前に最大量又はほぼ最大量のデータを各接続が送信することを確実にし、ここで、最大量は、データの内の少なくとも幾つかの肯定的応答を待機する前に送信可能なデータの量である。データロス率の減少、又は肯定的応答を受信する前に送信可能なデータの量の増加（制御ウィンドウの増加）は、図５の方法に従って使用される同時接続の数の減少をもたらす。各データフレームのサイズの増加は、同様の結果を実現し、特に小さいファイルに対して、各データフレームのサイズの増加に対応して、データの転送に活発に使用される同時接続１４０の数が減少させられるように、異なるフレームは異なる接続を通じて送信される。
【０１６７】
幾つかの例では、ローダ６３０は、受信キュー６４０中の次のフレームに対する次の接続１４０を順次選択する。別の例では、それは、単一のラウンドトリップの時間中に単一のフレームを転送する接続の数を増加させるために、次の接続１４０をその制御ウィンドウのサイズに基づいて選択し得る。このことは、フレームアセンブラ８６０が例えば、高優先度のデータ（ウェブサイトのレンダリングを機能停止し得るＪａｖａＳｃｒｉｐｔ等）に対して、それらの配信を高速化するために、より小さなフレームを使用することによって、異なるサイズのフレームを形成する場合に有益になる。
【０１６８】
説明される実装及び上述したその変形に従うと、各フレームが単一のデータストリームからのデータのみを含むデータフレームを形成することによって、多数のトランスポート接続１４０を通じた多数のデータストリームのデータ転送を順序付け、唯一つのトランスポート接続１４０を通じて各データフレームを送信する共通の機構を有する。同じデータストリームからのデータフレームは、多数の同時トランスポート接続１４０を通じて送信され得るが、各データフレームは、単一のトランスポート接続のみを通じて送信され得る。
【０１６９】
使用される接続の数を自動的に調節することに加えて、この実装は、受信側におけるデータの並び替えの必要性をも減少させる。図示される実施形態では、受信側は、順序付けキュー６５０を含む。それは、一連のフレームをフレームディスアセンブラ８７０へ送信し、フレームディスアセンブラ８７０は、それらを、プロキシ又はＶＰＮ１７０を通じて多数のコンテンツサーバ１９０へ送信された別個のデータストリーム中に多重分離する。順序付けキュー６５０は、各フレームがその全てのデータを含むことを確認さえすればよい。フレームの全てのパケットが単一のトランスポート接続により配信されると直ぐに、該フレームは、フレームディスアセンブラ８７０へ直ちに送信され得る。この場合、順序付けキュー６５０は、個々のデータフレームを配信する前に２つ以上のトランスポート接続１４０を待機する必要がない。
【０１７０】
図９は、本発明の別の実施形態に従った、同時トランスポート接続を通じた多数の並列ファイル転送のトラフィック分散を最適化する、例えば、著しく改善するために使用されるネットワーク環境の図である。
【０１７１】
この実施形態では、マルチパストランスポートマネージャ１６０は、プロキシ又はＶＰＮ１７０を通じて対応するコンテンツプロバイダ１９０からロードされた単一のデータストリームに対するデータを格納するために各々使用される多数の受信キュー６４０を含む。この実施形態では、ローダ６３０は、フレームアセンブラの機能をも実行する。具体的には、ローダ６３０は、次の受信キュー６４０から取り出さなければならないデータの量を選択し、それをフレームとしてフォーマット化し、該フレームを次の送信バッファ６２０中にロードし、次の送信バッファ６２０は、対応するトランスポート接続１４０を通じてデータを転送するためにＴＣＰスタック３１０により使用される。ローダ６３０は、別の受信キュー６４０及びトランスポート接続１４０に関してこの機能をその後実行する。
【０１７２】
記述される実施形態では、フレームアセンブラ及びローダ６３０は、各トランスポート接続１４０に対する制御ウィンドウのサイズＷを取得し、それをフレームサイズを最適化するために、例えば、改善された結果を提供するフレームサイズを選択するために使用する。例えば、各フレームサイズは、該フレームが単一のラウンドトリップの時間中に配信される確率を最大にする、又は少なくとも増加させる、対応する制御ウィンドウのサイズにできる限り近く設定される。図示される実施形態では、サイズＷ１のフレーム１は、第１の受信キュー６４０から第１の送信バッファ６２０へ既にロードされている。第１の受信キュー６４０の利用可能な空間は、例えば、リングバッファのポインタを変更することによってその後調節される。フレームアセンブラ及びローダ６３０は、第２の受信キュー６４０からのサイズＷ２のフレームを組み立て、第３の受信キュー６４０にその後進む準備をその後する。トランスポート接続１４０の数が受信キュー６４０の数よりも多い場合、キュー６４０は、初めから循環して開始され得る。説明される例では、第４の送信バッファ６２０は、残部のデータを第１の受信キュー６４０等から受信するであろう。
【０１７３】
別の実装では、ローダ６３０は、送信バッファ６２０に対応するトランスポート接続１４０の以前に測定されたスループットに基づいて、送信バッファ６２０中にロードされたデータに対するフレームサイズを設定する。別の例では、ローダ６３０は、接続１４０の種類（例えば、有線対無線）に基づいてフレームサイズを設定する。
【０１７４】
別の実装では、次のトランスポート接続１４０は、ラウンドロビンアルゴリズムとは異なるアルゴリズムを使用して、次のフレームを受信するために、ローダ６３０により選択され得る。例えば、空の送信バッファ６２０を有するそれらの接続１４０の内、近時の時間間隔（例えば、０．１から１０秒）に渡り最大サイズの制御ウィンドウ又は最大スループットを有する接続１４０を、次の接続１４０として選択することによって。次の受信キュー６４０は、異なるアルゴリズムを使用することによっても選択され得る。例えば、異なる受信キュー６４０には異なる優先度が割り当てられ得、より高い優先度のデータがより高い優先度のキュー６４０に割り当てられるようにキューにデータが割り当てられ得る。例えば、ウェブサイトのロードを機能停止し得るＪａｖａＳｃｒｉｐｔファイルは、より高い優先度のキュー６４０に割り当てられ得る。別の例では、バックグランドで大規模なダウンロードが存在する時に小さなファイルのダウンロードを高速化するために、データの残量が最も少ないキュー６４０に、より高い優先度が割り当てられ得る。
【０１７５】
図示される実装及び上述したようなその変形は、各フレームが単一のデータストリームからのデータのみを含むデータフレームを形成することによって、多数のトランスポート接続１４０を通じた多数のデータストリームのデータ転送を順序付ける共通の機構を有する。各データフレームは、唯一つのトランスポート接続１４０通じて送信され、そのサイズは、その他の可能なサイズの範囲と比較して（例えば、各フレームが単一のラウンドトリップ中に送出される確率を改善することによって）スループットを増加させるために該接続に対して選択される。
【０１７６】
異なる接続を通じて異なるサイズのデータフレームを送信することは、受信側での並び替えを簡易化する便益をも提供する。記述される実装では、各トランスポート接続１４０からのデータは、別個の並び替えキュー６５０中に格納される。図示される例では、別のトランスポート接続が未使用にされながら、３つのトランスポート接続のみが上流のデータを搬送する。各データフレームは、単一のトランスポート接続１４０を通じてのみ送信され得るが、各トランスポート接続１４０は、２つの以上データストリームからのデータフレームを搬送し得る。
【０１７７】
図示される実施形態は、同じトランスポート接続１４０を通じて送信されるデータフレームが同じ又は同様のサイズを有するという事実からの便益を有し得、それは、接続が特定される並び替えバッファに対してどの程度のメモリが要求されるかを予測することを容易にし、それによりメモリ割り当ての効率を増加させる。それは、多数の接続からのフレームを並行して並び替えるためのリソース消費をも少なくさせる。任意の順序付けキュー中の任意のフレームからの全てのパケットが配信されると直ぐに、それらはフレームディスアセンブラ８７０へ送信され、フレームディスアセンブラ８７０は、それらを別個のデータストリーム中に多重分離し、各データストリームをプロキシ又はＶＰＮ１７０を通じて、対応するコンテンツプロバイダ１９０へ送付する。
【０１７８】
図示される実施形態は、多数の同時接続経由のデータ配信保証のための手段として、トランスポートコントロールプロトコル（ＴＣＰ）及びＴＣＰスタック３１０に言及する。他の実施形態は、異なる配信プロトコル、例えば、追加のユーザ空間フロー制御及び輻輳制御モジュールを有するユーザデータグラムプロトコル（ＵＤＰ）、又はストリームコントロールトランスミッションプロトコル（ＳＣＴＰ）を使用し得る。
【０１７９】
他の実施形態では、マルチパストラフィックマネージャ１３０、１６０は、クライアント１１０及びコンテンツプロバイダのサーバ１９０上で夫々実行するクライアントアプリケーションと夫々一体化され得、それにより別個のプロキシ又はＶＰＮモジュール１２０、１７０を不要にする。例えば、本明細書に開示される実施形態は、クライアント１１０及びコンテンツプロバイダ１９０の両者によりそれがサポートされている場合には、マルチパスＴＣＰプロトコルエクステンションのスループットを加速するために使用され得る。
【０１８０】
幾つかの実施形態では、異なるデータフレームは、同じ物理的データリンク又は同じ経路上の全てのデータリンクを共有する異なるトランスポート接続１４０を通じて送信される。他の実施形態では、異なるトランスポート接続は、有線及び無線、又は多数のＩＰアドレスを有する同じサーバへの異なる経路等の、異なるデータリンクを使用し得る。
【０１８１】
多数の同時接続は、クライアント１１０からプロキシ若しくはＶＰＮサーバ１２０への全てのトラフィック、又は該トラフィックの内の一部のみを転送するために使用され得る。幾つかの実施形態では、多数の接続１４０を越えて同じファイルのロードを拡散することなく、ユーザに近いコンテンツが直接アクセスされる一方で、ランダムなデータロスの影響を緩和するために、長距離のコンテンツのみが多数の同時接続１４０を通じてアクセスされる。
【０１８２】
図１０は、本明細書に開示されるコンピュータ及びサーバの内の何れかを具体化し得る例示的コンピューティングデバイス１０００を説明するブロック図である。コンピューティングデバイス１０００は、本明細書で論じられるプロシージャ等の様々なプロシージャを実行するために使用され得る。コンピューティングデバイス１０００は、サーバ、クライアント、又は任意のその他のコンピューティングエンティティとして機能し得る。コンピューティングデバイスは、本明細書で論じられるような様々な監視機能を実行し得、本明細書に記述されるアプリケーションプログラム等の１つ以上のアプリケーションプログラムを実行し得る。コンピューティングデバイス１０００は、デスクトップコンピュータ、ノートブックコンピュータ、サーバコンピュータ、携帯型コンピュータ、及びタブレットコンピュータ等の多種多様なコンピューティングデバイスの内の何れかであり得る。
【０１８３】
コンピューティングデバイス１０００は、１つ以上のプロセッサ１００２、１つ以上のメモリデバイス１００４、１つ以上のインタフェース１００６、１つ以上の大容量ストレージデバイス１００８、１つ以上の入出力（Ｉ／Ｏ）デバイス１０１０、及び表示デバイス１０３０を含み、それらの全てはバス１０１２に結合される。プロセッサ１００２は、メモリデバイス１００４及び／又は大容量ストレージデバイス１００８中に格納された命令を実行する１つ以上のプロセッサ若しくはコントローラを含む。プロセッサ１００２は、キャッシュメモリ等の様々な種類のコンピュータ可読媒体をも含み得る。
【０１８４】
メモリデバイス１００４は、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）１０１４）及び／又は不揮発性メモリ（例えば、リードオンリメモリ（ＲＯＭ）１０１６）等の様々なコンピュータ可読媒体を含む。メモリデバイス１００４は、フラッシュメモリ等の再書き込み可能なＲＯＭをも含み得る。
【０１８５】
大容量ストレージデバイス１００８は、磁気テープ、磁気ディスク、光ディスク、及び固体状態メモリ（例えば、フラッシュメモリ）等の様々なコンピュータ可読媒体を含む。図１０に示すように、具体的な大容量ストレージデバイスはハードディスクドライブ１０２４である。様々なコンピュータ可読媒体からの読み出しを可能にし、及び／又は様々なコンピュータ可読媒体への書き込みを可能にするために、大容量ストレージデバイス１００８には様々なドライブも含まれ得る。大容量ストレージデバイス１００８は、取り外し可能媒体１０２６及び／又は非取り外し可能媒体を含む。
【０１８６】
入出力デバイス１０１０は、データ及び／又はその他の情報がコンピューティングデバイス１０００に入力されること、又はコンピューティングデバイス１０００から検索されることを可能にする様々なデバイスを含む。例示的な入出力デバイス１０１０は、カーソル制御デバイス、キーボード、キーパッド、マイクロフォン、モニタ若しくはその他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、及びＣＣＤ若しくはその他の画像取込デバイス等を含む。
【０１８７】
表示デバイス１０３０は、コンピューティングデバイス１０００の１人以上のユーザに情報を表示可能な任意の種類のデバイスを含む。表示デバイス１０３０の例には、モニタ、表示端末、及びビデオ投影デバイス等が挙げられる。
【０１８８】
インタフェース１００６は、コンピューティングデバイス１０００がその他のシステム、デバイス、又はコンピューティング環境と相互作用することを可能にする様々なインタフェースを含む。例示的インタフェース１００６は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、無線ネットワーク、及びインターネットへのインタフェース等の、任意の数の異なるネットワークインタフェース１０２０を含む。その他のインタフェースは、ユーザインタフェース１０１８及び周辺デバイスインタフェース１０２２を含む。インタフェース１００６は、１つ以上のユーザインタフェース素子１０１８をも含む。インタフェース１００６は、プリンタ、ポインティングデバイス（マウス、トラックパッド等）、及びキーボード等に対するインタフェース等の、１つ以上の周辺インタフェースをも含み得る。
【０１８９】
バス１０１２は、プロセッサ１００２、メモリデバイス１００４、インタフェース１００６、大容量ストレージデバイス１００８、及び入出力デバイス１０１０が、バス１０１２に結合されたその他のデバイス若しくはコンポーネントと共に、相互に通信することを可能にする。バス１０１２は、システムバス、ＰＣＩバス、ＩＥＥＥ１３９４バス、及びＵＳＢバス等の幾つかの種類のバス構造の内の１つ以上を表す。
【０１９０】
プログラム及びその他の実行可能なプログラムコンポーネントは、そうしたプログラム及びコンポーネントがコンピューティングデバイス１０００の異なるストレージコンポーネント中に様々な時間に存在し得、プロセッサ１００２により実行されるものと理解されるが、説明の目的のために、別々のブロックとして本明細書に示される。或いは、本明細書に記述されるシステム及びプロシージャは、ハードウェア中に、又はハードウェア、ソフトウェア、及び／若しくはファームウェアの組み合わせ中に実装され得る。例えば、本明細書に記述されるシステム及びプロシージャの内の１つ以上を実行するように、１つ以上の特定用途向け集積回路（ＡＳＩＣ）はプログラムされ得る。
【０１９１】
この明細書全体を通じて“一実施形態”、“実施形態”、“一例”、又は“例”との言及は、実施形態又は例に関連して記述される特定の機構、構造、又は特徴が本開示の少なくとも１つの実施形態に含まれることを意味する。したがって、この明細書全体を通じて様々な場所の句“一実施形態では”、“実施形態では”、“一例”、又は“例”は、全てが同じ実施形態又は例に必ずしも言及していない。更に、特定の機構、構造、又は特徴は、１つ以上の実施形態又は例において任意の適切な組み合わせ及び／又は部分的組み合わせに組み込まれ得る。また、本明細書と共に提供される図は当業者への説明目的のためのものであること、並びに図面は必ずしも縮尺通りに図示されていないことを認識すべきである。
【０１９２】
本発明は、その精神又は本質的特徴から逸脱することなくその他の特定の形式で具体化され得る。記述される実施形態は、全ての点で説明としてのみ考慮されるべきであり、限定的ではない。本発明の範囲は、それ故、上述の説明によるよりもむしろ、添付の請求項によって示される。請求項の意義及び均等物の範囲内にある全ての変更がそれらの範囲内に含まれるべきである。
【図１】
2019520745.tif 000003
【図２】
2019520745.tif 000004
【図３】
2019520745.tif 000005
【図４Ａ】
2019520745.tif 000006
【図４Ｂ】
2019520745.tif 000007
【図５】
2019520745.tif 000008
【図６】
2019520745.tif 000009
【図７】
2019520745.tif 000010
【図８】
2019520745.tif 000011
【図９】
2019520745.tif 000012
【図１０】
2019520745.tif 000013
【国際調査報告】
2019520745.tif 000014