<関連出願>
本出願は、同時接続の総スループットを改善するためのシステム及び方法という名称で2016年5月31日に出願した米国特許仮出願番号62/343,697の利益を主張し、該仮出願は、参照によりその全体が本明細書にこれにより組み込まれる。
本出願は、同時接続の総スループットを改善するためのシステム及び方法という名称で2016年9月1日に出願した米国特許出願番号15/254,732(代理人案件番号ANCH−00502)を参照によりその全体を更に組み込む。
コンピュータネットワーク経由でダウンロードされるオンラインコンテンツの量は、オンラインビデオストリーミング及びユーザが生成したコンテンツの普及、ソーシャルネットワーク及びメディアを駆使したメッセージングの急増、クラウドベースのストレージ等、多数の要因に起因して時間と共に急速に増加している。
リクエストされたコンテンツは、しばしば、長距離を経由して配信されなければならない。最も好まれるビデオのみがユーザの近くにキャッシングされ得る。HTTPSのようなセキュアなプロトコルを使用するコンテンツは、少なくとも幾つかの暗号化キーを第三者に開示することなくキャッシングすることはできない。スポーツ及びニュース等のリアルタイムでストリーミングされたイベントの遠隔での視聴にはキャッシングが使用できない。ローカルなコンテンツは、しばしば、原産国を除いてキャッシングされない。
データ走行距離の増加は、パケットロスの比率をしばしば増加させる。トランスポートコントロールプロトコル(TCP)等の配信保証プロトコルが接続に使用される場合には、これらのロスは、ラストワンマイルの輻輳として一般的に解釈され、接続パイプの各セグメントが飽和点から遠方にある場合であってもスループットに著しい減少をもたらす。
送信者と受信者との間で多数の同時の配信保証トランスポート接続を越えてデータ転送を拡散することは、総スループットを一般的に増加させ、新たな各接続を追加することは、受信者ウィンドウ及び輻輳ウィンドウの両者の総サイズを増加させ、各ラウンドトリップ間隔中により多くのデータを配信可能にする。長距離経由の大きなデータファイルの転送速度は、接続パイプの少なくとも1つのセグメントが輻輳するまで、又はサーバ及びクライアントのコンピュータのリソース(メモリ、CPU負荷、入出力容量)が過負荷(overstrain)になるまで、同時接続の数と共に増加する。
したがって、制限されたサイズのデータファイルのバーストを含む、実際のシナリオのために、多数の同時接続経由のデータ転送の速度を増加させる必要がある。
発明の一側面において、総スループットを増加させる方法は、コンピュータネットワーク経由で第1のコンピュータと第2のコンピュータとの間に複数の同時トランスポート接続を確立することを含む。方法は、リクエストの2つ以上のグループの内の第1のグループがリクエストの2つ以上のグループの内の第2のグループよりも前に終了せざるを得ないように、第1のコンピュータとの複数の同時トランスポート接続を通じた第2のコンピュータへのデータ配信に対するリクエストの2つ以上のグループを第2のコンピュータから第1のコンピュータによって受信することを更に含む。第1のコンピュータは、リクエストの第1のグループのデータ配信に対する各リクエストに対応するリクエストされたデータの配信が終了したか否かを判定する。終了したと判定した場合、リクエストの第1のグループのデータ配信に対する各リクエストに対応するリクエストされたデータを配信するために使用される同時トランスポート接続の数が、リクエストの第2のグループのデータ配信に対する各リクエストに対応するリクエストされたデータを配信するために使用される複数の同時トランスポート接続の数とは異なるように設定されるように、第1のコンピュータは、リクエストの第2のグループのデータ配信に対する各リクエストに対応するリクエストされたデータを第1のコンピュータへ配信するために使用される複数の同時トランスポート接続の数を設定する。
幾つかの実施形態では、複数の同時トランスポート接続の内の各トランスポート接続は、リクエストの第1及び第2のグループのデータ配信に対する各リクエストに対応するリクエストされたデータの配信を確認するための1つ以上の肯定的応答(acknowledgement)を生成することを含むトランスポートプロトコルを使用する。方法は、同じグループ中の各リクエストに対応するリクエストされたデータが配信されたことの1つ以上の肯定的応答を受信することに応じて、リクエストの2つ以上のグループの内の同じグループのデータ配信に対する各リクエストに対応するリクエストされたデータの配信が終了したことを判定することを更に含み得る。
幾つかの実施形態では、複数の同時トランスポート接続の内の各トランスポート接続はトランスポートコントロールプロトコル(TCP)を使用する。
幾つかの実施形態では、方法は、第1のコンピュータと第2のコンピュータとの間の複数の同時トランスポート接続を確立するようにプログラムされたトラフィック分散モジュールを第1及び第2のコンピュータにより実行することを更に含む。方法は、第2のコンピュータと第1のコンピュータとの間に開通された複数の同時トランスポート接続を通じてリクエストの2つ以上のグループの内の各グループの各リクエストに対応するリクエストされたデータをリクエスト及び受信するための1つ以上のクライアントトランスポート接続をクライアントコンピュータにより開通することを含み得る。クライアントは、第1のコンピュータと第2のコンピュータとの間の複数の同時トランスポート接続を不通にさせることなく、クライアントトランスポート接続を不通にし得る。方法は、クライアントコンピュータが1つ以上のクライアントトランスポート接続を不通にしたことを判定することにより、リクエストの2つ以上のグループの内の同じグループのデータ配信に対する各リクエストに対応するリクエストされたデータの配信が終了したことを判定することを更に含み得る。クライアントコンピュータは、第2のコンピュータであり得る。
幾つかの実施形態では、第2のコンピュータは、クライアントトランスポート接続を終端するようにプログラムされたプロキシを務める。幾つかの実施形態では、複数の同時トランスポート接続の内の少なくとも2つは、同じ物理的データリンクを経由して開通される。幾つかの実施形態では、複数の同時トランスポート接続の内の少なくとも2つは、同じ送信元ネットワークアドレス及び宛先ネットワークアドレスを有する。
幾つかの実施形態では、方法は、リクエストの2つ以上のグループの内の少なくとも1つのグループに対するデータ配信の見積もりサイズを、第1のコンピュータ及び第2のコンピュータの内の1つにより判定することと、リクエストの同じグループのリクエストに対応するリクエストされたデータを搬送するために使用される同時トランスポート接続の数が見積もりサイズの増加と共に増加するように、リクエストの2つ以上のグループの内のリクエストの同じグループのリクエストに対応するリクエストされたデータを搬送するために使用される同時ネットワーク接続の数を、第1のコンピュータ及び第2のコンピュータの内の1つにより設定することとを含む。
幾つかの実施形態では、見積もりサイズは、リクエストの同じグループのリクエストから1つ以上のネットワーク識別子を取得することによって判定され、各識別子は、ドメイン名及び宛先ネットワークアドレスの内の少なくとも1つを含む。
幾つかの実施形態では、複数の同時トランスポート接続の内の各々は、トラフィックに含まれる少なくとも幾つかのデータが配信されたことの肯定的応答を受信する前に送信され得るトラフィックの量を制限する制御ウィンドウと関連付けられる。方法は、複数の同時トランスポート接続の1つ以上の制御ウィンドウの見積もりサイズを、第1のコンピュータ及び第2のコンピュータの内の1つにより判定することと、1つ以上の制御ウィンドウの見積もりサイズの増加と共に、リクエストの2つ以上のグループの内のリクエストの同じグループに対応するリクエストされたデータの配信に使用される複数の同時ネットワーク接続の数を、第1及び第2のコンピュータの内の1つにより減少させることとを更に含み得る。幾つかの実施形態では、制御ウィンドウは、トランスポートプロトコルにより使用される受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。
幾つかの実施形態では、方法は、リクエストの第1のグループの各リクエストに対応するリクエストされたデータの配信を完了した後で、且つリクエストの第2のグループを受信する前に、第2のグループのデータ配信に対する各リクエストに対応するリクエストされたデータを配信するために使用される複数の同時トランスポート接続の数を変更することを含む。
幾つかの実施形態では、リクエストの第2のグループの各リクエストに対応するリクエストされたデータを配信するために使用される複数の同時トランスポート接続の数は、リクエストの第1のグループに対応するリクエストされたデータの配信に続いて、予め定義された時間間隔を越える不活動期間があった後で、且つリクエストの第2のグループが提示される前に減少させられる。
幾つかの実施形態では、方法は、既存の接続を不通にする、又は新たな接続を開通することなく、以前に開通された1つ以上の同時接続を通じて、リクエストの同じグループに対応するリクエストされたデータの内の少なくとも幾つかの配信を一時休止すること又は再開することの内の少なくとも1つによって、2つ以上のリクエストの内のリクエストの同じグループに対応するリクエストされたデータを配信するために使用される複数の同時接続の数を変更することを含む。
幾つかの実施形態では、方法は、第2のコンピュータから第1のコンピュータへのデータ転送に使用される複数の同時トランスポート接続の数とは異なるように、第1のコンピュータから第2のコンピュータへのデータ転送に使用される複数の同時トランスポート接続の数を設定することを含む。
幾つかの実施形態では、第2のコンピュータから第1のコンピュータへのデータ転送に使用される複数の同時トランスポート接続の数を一定に維持しながら、第1のコンピュータから第2のコンピュータへのデータ転送に使用される複数の同時トランスポート接続の数を変更する。
幾つかの実施形態では、第1のコンピュータは、プロキシサーバ及びVPNサーバの内の少なくとも1つを含む。
発明の別の側面は、コンピュータネットワーク経由のコンピュータ間の総スループットを増加させるためのシステムを含む。該システムは、
第1のコンピュータと第2のコンピュータとの間の複数の同時トランスポート接続を通じた第2のコンピュータへのデータ配信に対する1つ以上のリクエストのグループを受信することと、
1つ以上のリクエストの内の各リクエストに対応するリクエストされたデータの配信が、1つ以上のリクエストの内の後続のリクエストに対応するリクエストされたデータの配信の前に終了しなければならないように、複数の同時トランスポート接続の内の少なくとも一部を通じて、データ配信に対する1つ以上のリクエストに対応するリクエストされたデータを配信することと、
1つ以上のリクエストが第1のコンピュータにより受信された後であるが、該1つ以上のリクエストに対応するリクエストされたデータの配信の前に、利用数が変更されるように、1つ以上のリクエストに対応するリクエストされたデータの配信に使用される複数の同時トランスポート接続の利用数を変更することと
をするようにプログラムされた1つ以上の処理デバイスを含む第1のコンピュータを含む。
幾つかの実施形態では、1つ以上の処理デバイスは、
データ配信に対する1つ以上のリクエストに対応するリクエストされたデータの配信中に、(a)配信される1つ以上のリクエストに対応するリクエストされたデータのデータ残量と、(b)配信に使用される複数の同時トランスポート接続の内の少なくとも1つのトランスポート接続を通じたデータ転送のパラメータとの内の少なくとも1つに従って、少なくとも1つの見積もり値を生成することと、
少なくとも1つの見積もり値の変更に従って利用数を変更することと
をするように更にプログラムされる。
幾つかの実施形態では、1つ以上の処理デバイスは、データ残量の減少と共に利用数を減少させるように更にプログラムされる。幾つかの実施形態では、1つ以上の処理デバイスは、第2のコンピュータへ送信される前に第1のコンピュータ上の1つ以上のバッファ中に格納された1つ以上のリクエストに対応するリクエストされたデータの量に従って、データ残量を見積もるように更にプログラムされる。
幾つかの実施形態では、第1のコンピュータは、プロキシサーバ及びVPNサーバの内の少なくとも1つを含み、該バッファは、一時的なデータ格納のためにプロキシ又はVPNサーバにより使用されるバッファである。
幾つかの実施形態では、少なくとも1つのトランスポート接続を通じたデータ転送のパラメータは、トラフィックの内の少なくとも幾つかが配信されたことの肯定的応答を受信する前に送信し得るトラフィックの量を制限する制御ウィンドウのサイズである。1つ以上の処理デバイスは、複数の同時トランスポート接続の内の1つ以上のトランスポート接続の制御ウィンドウのサイズの増加と共に利用数を減少させるように更にプログラムされ得る。
幾つかの実施形態では、少なくとも1つのトランスポート接続を通じたデータ転送のパラメータは、少なくとも1つのトランスポート接続経由のデータロスの比率である。1つ以上の処理デバイスは、少なくとも1つのトランスポート接続経由のデータロスの比率の増加と共に利用数を増加させるように更にプログラムされ得る。
幾つかの実施形態では、1つ以上の処理デバイスは、複数の同時トランスポート接続の内の何れかを不通にすること、又は新たなトランスポート接続を開通することなく、複数の同時トランスポート接続の内の少なくとも一部を通じて、リクエストされたデータの内の少なくも幾つかの配信を一時休止すること及び再開することの内の1つによって、1つ以上のリクエストのグループを受信した後に利用数を変更するように更にプログラムされる。
幾つかの実施形態では、利用数は第1の利用数を含み、1つ以上の処理デバイスは、第2のコンピュータから第1のコンピュータへのデータ転送に使用される複数の同時トランスポート接続の第2の利用数とは無関係に第1の利用数を変更するように更にプログラムされる。
幾つかの実施形態では、1つ以上の処理デバイスは、第2の利用数を一定に維持しながら、第1の利用数のみを変更するように更にプログラムされる。
幾つかの実施形態では、複数の同時トランスポート接続の内の少なくとも2つのトランスポート接続は、単一の物理的データリンクを経由して開通される。幾つかの実施形態では、1つ以上の処理デバイスは、単一の物理的データリンクを経由して開通された少なくとも2つのトランスポート接続の数を変更することによって、利用数を変更するように更にプログラムされる。
発明の一側面において、コンピュータネットワーク経由のコンピュータ間の多数の同時トランスポート接続の総スループットを増加させるための方法を含む。該方法は、
第2のコンピュータへの第1の複数の同時接続と、第3のコンピュータへの第2の複数の同時トランスポート接続とを第1のコンピュータにより維持することと、
第2のコンピュータとの第1の複数の同時トランスポート接続を経由した第2のコンピュータへのデータ配信に対する1つ以上のリクエストの第1のグループを第1のコンピュータにより受信することと、
第2のコンピュータへ後続のリクエストに対応するデータを配信する前に、1つ以上のリクエストの第1のグループの各リクエストに対応するデータの配信が終了しなければならないように、1つ以上のリクエストの第1のグループに対応するリクエストされたデータを第1のコンピュータにより配信することと、
第3のコンピュータとの第2の複数の同時トランスポート接続を経由した第3のコンピュータへのデータ配信に対する1つ以上のリクエストの第2のグループを第1のコンピュータにより受信することと、
第3のコンピュータへ後続のリクエストに対応するデータを配信する前に、1つ以上のリクエストの第2のグループの各リクエストに対応するデータの配信が終了しなければならないように、1つ以上のリクエストの第2のグループに対応するリクエストされたデータを第1のコンピュータにより配信することと、
1つ以上のリクエストの第1のグループに対応するリクエストされたデータを配信するために使用される第1の複数の同時トランスポート接続の第1の数を第1のコンピュータにより設定することと、
1つ以上のリクエストの第2のグループに対応するリクエストされたデータを配信するために使用される第2の複数の同時トランスポート接続の第2の数を第1のコンピュータにより設定することと、
第1の複数の同時トランスポート接続の1つ以上の第1のパラメータと第2の複数の同時トランスポート接続の1つ以上の第2のパラメータとの間の相違を第1のコンピュータにより検出することと、
1つ以上の第1のパラメータと1つ以上の第2のパラメータとの相違に従って、第1の数及び第2の数を異なるように第1のコンピュータにより設定することと
を含み得る。
幾つかの実施形態では、1つ以上の第1のパラメータと1つ以上の第2のパラメータとの相違を検出することは、第1のコンピュータから第2のコンピュータまでの距離及び第1のコンピュータから第3のコンピュータまでの距離、第1のコンピュータと第2のコンピュータとの間のラウンドトリップタイム及び第1のコンピュータと第3のコンピュータとの間のラウンドトリップタイム、並びに第1のコンピュータと第2のコンピュータとを接続するネットワークの品質及び第1のコンピュータと第3のコンピュータとを接続するネットワークの品質の内の少なくとも1つの相違を検出することを含む。
幾つかの実施形態では、第1の数を設定することは、第1のコンピュータと第2のコンピュータとの間の距離、及び第1のコンピュータと第2のコンピュータとの間のラウンドトリップタイム、の増加の内の少なくとも1つと共に第1の数を増加させることを含む。幾つかの実施形態では、第2の数を設定することは、第1のコンピュータと第3のコンピュータとの間の距離、及び第1のコンピュータと第3のコンピュータとの間のラウンドトリップタイム、の増加の内の少なくとも1つと共に第2の数を増加させることを含む。
幾つかの実施形態では、第1の数を設定することは、第1のコンピュータと第3のコンピュータとを接続するネットワークの品質と比較した、第1のコンピュータと第2のコンピュータとを接続するネットワークの品質の増加と共に第1の数を減少させることを含む。幾つかの実施形態では、第1の数を設定することは、第1の複数の同時トランスポート接続経由のデータロスの比率の減少と共に第1の数を減少させることを含み、幾つかの実施形態では、第2の数を設定することは、第2の複数の同時トランスポート接続経由のデータロスの比率の減少と共に第2の数を減少させることを含む。
幾つかの実施形態では、第1の複数のトランスポート接続及び第2の複数のトランスポート接続の内の各々は、トラフィックの内の少なくも幾つかの肯定的応答が受信される前に送信され得るトラフィックの量を制限する制御ウィンドウを定義するトランスポートプロトコルを実装する。第1の数を設定することは、第1の複数のトランスポート接続に対する制御ウィンドウのサイズの増加と共に第1の数を減少させることを含み得る。第2の数を設定することは、第2の複数のトランスポート接続に対する制御ウィンドウのサイズの増加と共に第2の数を減少させることを含み得る。
幾つかの実施形態では、トランスポートプロトコルはトランスポートコントロールプロトコル(TCP)であり、制御ウィンドウは、受信者ウィンドウ及び輻輳ウィンドウの内のより小さいものである。
発明の利点が容易に理解されるように、簡単に上述された発明のより具体的な説明は、添付の図面で説明される特定の実施形態を参照しながら与えられるであろう。これらの図面は、発明の典型的な実施形態のみを説明し、それ故、その範囲を制限するものと考えるべきではないことが理解され、発明は、添付の図面の使用を通じて付加的な特殊性と詳細が記述及び説明されるであろう。
本発明の実施形態に従った、多数の同時トランスポート接続を通じてデータを転送することによりスループットを増加させるために使用され得る第1のネットワーク環境の概略的ブロック図である。
本発明の実施形態に従った、本発明の実施形態に従って同時トランスポート接続の数を変更するために使用される第2のネットワーク環境の概略的ブロック図である。
本発明の実施形態に従った、同時トランスポート接続の数を変更するために使用される第3のネットワーク環境の概略的ブロック図である。
本発明の実施形態により実現され得るスループットの改善を説明するグラフである。
本発明の実施形態により実現され得るスループットの改善を説明するグラフである。
本発明の実施形態に従った、同時トランスポート接続の数を変更する方法の処理フロー図である。
本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するために使用される第4のネットワーク環境の図である。
本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するための方法の処理フロー図である。
本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するために使用される第5のネットワーク環境の概略的ブロック図である。
本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するために使用される第6のネットワーク環境の概略的ブロック図である。
本明細書に開示されるシステム及び方法を実装するのに適するコンピュータの概略的ブロック図である。
本発明の図中に概して記述及び説明されるような発明のコンポーネントは、多種多様な異なる構成で配置及び設計され得ることは容易に理解されるであろう。したがって、図に表されるような以下の発明の実施形態のより詳細な説明は、請求されるような発明の範囲を制限することを意図せず、発明に従ってここで考慮される実施形態の幾つかの例を表すにすぎない。ここで記述される実施形態は、全体を通して同様の部分が同様の数字により指し示される図面を参照することによって最も理解されるであろう。
発明に従った実施形態は、装置、方法、又はコンピュータプログラム製品として具体化され得る。したがって、発明は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又は“モジュール”若しくは“システム”として本明細書で概して全て称され得るソフトウェア及びハードウェアの側面の組み合わせの実施形態の形式を取り得る。更に、発明は、媒体中に具体化されたコンピュータ使用可能なプログラムコードを有する表現の任意の有形媒体中に具体化されたコンピュータプログラム製品の形式を取り得る。
1つ以上のコンピュータ使用可能な又はコンピュータ可読の媒体の任意の組み合わせが利用され得る。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)デバイス、リードオンリメモリ(ROM)デバイス、消去可能プログラム可能リードオンリメモリ(EPROM若しくはフラッシュメモリ)デバイス、ポータブルコンパクトディスクリードオンリメモリ(CDROM)、光ストレージデバイス、及び磁気ストレージデバイスの内の1つ以上を含み得る。選りすぐりの実施形態では、コンピュータ可読媒体は、命令実行システム、装置、又はデバイスにより、又はそれらと接続して使用するためのプログラムを含み得、格納し得、通信し得、伝搬し得、又は搬送し得る任意の非一時的媒体を含み得る。
発明の動作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、若しくはC++等のオブジェクト指向プログラミング言語、及び“C”プログラミング言語若しくは同様のプログラミング言語等の従来の手続型プログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書き込まれ得、HTML、XML、及びJSON等の記述型言語又はマークアップ言語をも使用し得る。プログラムコードは、スタンドアローンなソフトウェアパッケージとしてコンピュータシステム上で全体的に、スタンドアローンなハードウェアユニット上で、コンピュータから幾らか離間したリモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で全体的に、実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)若しくは広域エリアネットワーク(WAN)を含む任意の種類のネットワークを通じてコンピュータに接続され得、或いは、該接続は、(例えば、インターネットサービスプロバイダを使用するインターネットを通じて)外部のコンピュータに作り出され得る。コンピュータネットワークは、インターネットプロトコル以外のトランスポートプロトコルを使用し得る。それに応じて、本発明は、IPアドレス以外の種類のネットワークアドレス用に実装され得る。
発明は、発明の実施形態に従った方法、装置(システム)、及びコンピュータプログラム製品のフローチャートの説明及び/又はブロック図を参照しながら以下に記述される。フローチャートの説明及び/又はブロック図の各ブロック、並びにフローチャートの説明及び/又はブロック図中のブロックの組み合わせは、コンピュータプログラム命令又はコードにより実装され得ることは理解されるであろう。これらのコンピュータプログラム命令は、コンピュータ又はその他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャート及び/又はブロック図の1つ以上のブロック中に指定された機能/作用を実装するための手段を作り出すようにマシンを生み出すための汎用コンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッサに提供され得る。
これらのコンピュータプログラム命令は、フローチャート及び/又はブロック図の1つ以上のブロック中で指定された機能/作用を実装する命令手段を含む製品をコンピュータ可読媒体中に格納された命令が生み出すように、コンピュータ又はその他のプログラム可能データ処理装置を特定の方法で機能させるように指示し得る非一時的コンピュータ可読媒体中にも格納され得る。
コンピュータプログラム命令は、コンピュータ又はその他のプログラム可能装置上で実行する命令が、フローチャート及び/又はブロック図の1つ以上のブロック中で指定された機能/作用を実装するためのプロセスを提供するようなコンピュータ実装プロセスを、コンピュータ又はその他のプログラム可能装置上で実行される一連の動作可能なステップに生み出させるために、コンピュータ又はその他のプログラム可能データ処理装置上にもロードされ得る。
十分な帯域幅の容量がある(輻輳が発生しない)場合、長距離を経由する同時接続の数は、一般的に、サーバ及びクライアントのコンピュータのリソースを圧倒することなく維持され得る最大値に予め設定される。しかしながら、典型的なコンピュータネットワークを経由して転送されるデータファイルの多くは、比較的小さいサイズを有する。そうした転送は、爆発的にしばしば発生するが、不活動期間が続く(例えば、ウェブサイトのダウンロード)。同時接続の数を増加させることは、輻輳が存在しない場合でも、そうした制限されたデータ転送に対して効果が小さくなり得る。本明細書に開示される実施形態は、データの転送に使用される同時接続の数を設定するためのアプローチの改善を提供する。
発明の一側面において、第1のコンピュータは、第1のコンピュータとの複数の同時トランスポート接続を通じた第2のコンピュータへのデータ配信に対するリクエストの2つ以上のグループを受信し、ここで、リクエストされた配信の第1のグループは、リクエストの第2のグループを提示する前に終了しなければならない。幾つかの実施形態では、第1のコンピュータは、リクエストされたデータの配信が終了したことを判定するための手段と、リクエストされたデータを第1のコンピュータへ配信するために使用される同時接続の数を設定するための手段と、リクエストされたデータの第2のグループを配信するために使用される同時接続の数とは異なる、リクエストされたデータの第1のグループを配信するために使用される同時接続の数を設定するための手段とを含む。
幾つかの実施形態では、2つ以上の同時トランスポート接続の内の各々は、データ配信を確認するための肯定的応答を生成するトランスポートプロトコルを使用し、リクエストされたデータの配信は、リクエストされたデータが配信されたことの肯定的応答を受信した後に終了したと判定される。幾つかの例では、このプロトコルはトランスポートコントロールプロトコル(TCP)である。
本発明の実施形態では、第1及び第2のコンピュータは、これらのコンピュータ間に多数の同時接続を確立可能なトラフィック分散モジュールを含み、データ配信リクエストは、第2のコンピュータと第1のコンピュータとの間の同時接続を通じてデータをリクエスト及び受信するための1つ以上のトランスポート接続を開通するクライアントコンピュータにより生成される。この実施形態に従うと、リクエストされたデータの配信は、データをリクエスト及び受信するために開通されたその接続をクライアントコンピュータが不通にした後に終了したと判定される。幾つかの例では、クライアントコンピュータは第2のコンピュータである。1つ以上の例では、第2のコンピュータは、クライアントコンピュータにより開通されたトランスポート接続の終端を可能にするプロキシを含む。
幾つかの実施形態では、同時トランスポート接続の内の少なくとも2つは、同じ物理的データリンクを経由して開通される。幾つかの例では、これらの接続は、同じ送信元ネットワークアドレス及び宛先ネットワークアドレスを共有する。
幾つかの実施形態では、第1のコンピュータは、第1又は第2のデータ配信の内の少なくとも1つのサイズの見積もりを取得し、見積もりサイズの増加と共に、対応する配信に使用される同時ネットワーク接続の数を増加させる。幾つかの例では、データ配信のサイズは、1つ以上のネットワーク識別子をリクエストの第1のグループから取得することにより見積もられ、各識別子は、ドメイン名及び宛先ネットワークアドレスの内の少なくとも1つを含む。
別の実施形態では、同時に開通された1つ以上の接続の内の各々が、少なくとも幾つかのデータが配信されたことの肯定的応答を受信する前に送信され得るトラフィックの量を制限する制御ウィンドウと関連付けられる場合に、第1のコンピュータは、1つ以上の制御ウィンドウの見積もりサイズを取得し、該サイズの増加と共に、データ配信に使用される同時ネットワーク接続の数を減少させる。幾つかの例では、制御ウィンドウは、トランスポートプロトコルにより使用される受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。
幾つかの実施形態では、データ配信に使用される同時接続の数は、リクエストされたデータの第1のグループの配信を終了した後で、且つリクエストの第2のグループが提示される前に変更される。幾つかの例では、データ配信に使用される同時接続の数は、リクエストされた第1のデータの配信に続いて予め定義された時間間隔を越える不活動期間があった後で、且つデータリクエストの第2のグループが提示される前に減少させられる。
他の実施形態では、データ配信に使用される同時接続の数は、既存の接続を不通にすること、又は新たな接続を開通することなく、以前に開通された1つ以上の同時接続を通じて、少なくとも幾つかのリクエストされたデータの配信を一時休止又は再開することによって変更される。幾つかの例では、第1のサーバから第2のサーバへのデータ転送に使用される同時接続の数は、第2のサーバから第1のサーバへのデータ転送に使用される同時接続の数とは異なるように変更される。幾つかの実装では、第2のサーバから第1のサーバへのデータ転送に使用される同時接続の数が同じ数に維持されながら、第1のサーバから第2のサーバへのデータ転送に使用される同時接続の数のみが変更される。
幾つかの実施形態では、第1のコンピュータは、プロキシサーバ及びVPNサーバの内の少なくとも1つを含む。
本発明の一側面において、第1のコンピュータは、複数の同時トランスポート接続を通じた第2のコンピュータへのデータ配信に対する1つ以上のリクエストのグループを受信し、リクエストされたデータの配信は、少なくとも1つの他のリクエストを提示する前に終了しなければならない。第1のコンピュータは、リクエストされたデータの配信を開始し、リクエストされたデータの配信が終了する前に、データ配信に使用される同時接続の数をその後変更する。
幾つかの実施形態では、第1のコンピュータは、配信されるデータの残量の内の少なくも1つと、該配信に使用される同時トランスポート接続の内の少なくも1つを通じたデータ転送の少なくとも1つのパラメータとの見積もりを取得し、見積もり値の変更と共に、同時接続の数をその後変更する。幾つかの例では、第1のコンピュータは、データの残量を配信するために使用される同時接続の数を、この量の減少と共に減少させる。幾つかの例では、配信されるデータの残量は、第2のコンピュータへ送信される前に第1のコンピュータ上の1つ以上のバッファ中に格納された、リクエストされたデータの量から見積もられる。幾つかの実装では、第1のコンピュータは、プロキシ及びVPNサーバの内の少なくとも1つを含み、上記バッファは、一時的なデータ格納のためにプロキシ又はVPNサーバにより使用される。
別の例では、トランスポート接続を通じたデータ転送のパラメータの内の少なくも1つは、少なくとも幾つかのデータが配信されたことの肯定的応答を受信する前に送信され得るトラフィックの量を制限する制御ウィンドウであり、残部のデータを配信するために使用される同時接続の数は、これらのウィンドウの内の1つ以上のサイズの増加と共に減少させられる。
幾つかの例では、トランスポート接続を通じたデータ転送のパラメータの内の少なくも1つは、該接続を経由したデータロスの量であり、残部のデータを配信するために使用される同時接続の数は、1つ以上のトランスポート接続を経由したデータロスの比率と共に増加させられる。
幾つかの実施形態では、データ配信に使用される同時接続の数は、既存の接続を不通にすること、又は新たな接続を開通することなく、以前に開通された1つ以上の同時接続を通じてデータ配信を一時休止又は再開することによって、リクエストのグループが提示された後に変更される。幾つかの例では、第1のサーバから第2のサーバへのデータ転送に使用される同時接続の数は、第2のサーバから第1のサーバへのデータ転送に使用される同時接続の数とは異なるように変更される。幾つかの実装では、第2のサーバから第1のサーバへのデータ転送に使用される同時接続の数を同じ数に維持しながら、第1のサーバから第2のサーバへのデータ転送に使用される同時接続の数のみが変更される。
幾つかの実施形態では、同時トランスポート接続の内の少なくとも2つは、同じ物理的データリンクを経由して開通され、使用される同時接続の数を変更することは、該データリンクを経由したデータ配信に使用される同時接続の数を変更することを含む。
本発明の別の側面において、第1のコンピュータは、第1のコンピュータとの複数の同時トランスポート接続を通じた第2のコンピュータへのデータ配信に対するリクエストの2つ以上のグループを受信し、ここで、リクエストされた配信の第1のグループは、リクエストの第2のグループを提示する前に終了しなければならない。第1のコンピュータは、第1のコンピュータとの複数の同時トランスポート接続を通じた第3のコンピュータへのデータ配信に対するリクエストの2つ以上のグループをも受信し、ここで、リクエストされた配信の第1のグループは、リクエストの第2のグループを提示する前に終了しなければならない。この側面では、第1のコンピュータから第2のコンピュータへの接続の1つ以上のパラメータと第1のコンピュータから第3のコンピュータへの接続の1つ以上のパラメータとの間に相違がある場合、第1のコンピュータは、第3のコンピュータへの同時接続の数とは異なる第2のコンピュータへの同時接続の数を使用する。
幾つかの実施形態では、これは、第1のコンピュータからの距離、ラウンドトリップタイム、及びネットワークの品質の内の少なくとも1つの相違である。幾つかの例では、同時に使用される接続の数は、第1のコンピュータへの距離の増加と共に、又は第1のコンピュータへのラウンドトリップタイムの増加と共に増加させられる。別の例では、同時に使用される接続の数は、第3のコンピュータと第1のコンピュータとの間のネットワークの品質と比較した、第2のコンピュータと第1のコンピュータとの間のネットワークの品質の増加と共に減少させられる。他の例では、同時に使用される接続の数は、1つ以上のトランスポート接続を経由したデータロスの比率の減少と共に減少させられる。
幾つかの実装では、1つ以上のトランスポート接続は、送信されたデータの内の少なくも幾つかに対する肯定的応答を受信する前に送信され得るデータの量を制限するための制御ウィンドウを設定するトランスポートプロトコルを使用し、同時に使用される接続の数は、制御ウィンドウの内の1つ以上のサイズの増加と共に減少させられる。幾つかの実施形態では、トランスポートプロトコルはトランスポートコントロールプロトコル(TCP)であり、制御ウィンドウは、受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。
本発明の一側面において、コンピュータネットワーク経由のコンピュータ間の多数の同時トランスポート接続の総スループットを増加させるためのシステムは、第1のコンピュータと第2のコンピュータとの間の複数の同時トランスポート接続を通じた第1のコンピュータから第2のコンピュータへの転送に対する1つ以上のリクエストを受信し、リクエストされたデータを取得することが可能なトラフィック管理モジュールであって、ここで、リクエストされたデータの転送は、第2のコンピュータから少なくとも1つの他のリクエストを受信する前に終了しなければならい、トラフィック管理モジュールと、リクエストされたデータを2つ以上のグループ中に分割し、該データグループの内の2つ以上を異なるトランスポート接続へ送付することが可能なトラフィック分散モジュールと、使用される1つ以上の接続に対するデータグループサイズの所望範囲を取得し、使用される1つ以上の接続に対するデータグループサイズを所望範囲内で設定することが可能なトラフィック調整モジュールとを含む。
幾つかの実施形態では、リクエストされたデータの配信が完了するまで、又は使用されるトランスポート接続の数が利用可能な接続の最大数に到達するまで、トラフィック分散モジュールは各データグループを異なるトランスポート接続へ送付する一方で、トラフィック調整モジュールは、利用可能なトランスポート接続の最大数を取得し、使用される各接続に対するデータグループサイズを設定し、これにより、リクエストされた配信のサイズが、利用可能な接続に対する所望のグループサイズの和を下回る場合に、利用可能な接続の最大数よりも少ない数のトランスポート接続を使用する。幾つかの例では、利用可能なトランスポート接続の最大数は、第1のコンピュータと第2のコンピュータとの間で現在開通されている同時接続の数に設定され、現在開通されている接続の内の少なくも1つは、リクエストされたデータの配信に使用されない。幾つかの実装では、使用されるトランスポート接続の数は、第2のコンピュータへ配信されるデータの量の増加と共に増加する。
別の実施形態では、トラフィック分散モジュールは、少なくとも2つの異なるリクエストに応じて受信されたデータを1つ以上の一時的バッファから取得し、同じリクエストに応じて取得されたデータのみを含む少なくとも1つのデータグループを形成し、該データグループを単一のトランスポート接続にその後分散する。幾つかの実装では、単一のリクエストに応じて単一の接続へ送信されるデータグループは、順序付けられた順番で提供される。幾つかの実施形態では、トラフィック分散モジュールは、異なるトランスポート接続へ送信されるデータグループにヘッダを付加し、少なくとも1つのヘッダは、単一のリクエストに対応するデータの識別子とデータグループのサイズとを含む。幾つかの例では、1つ以上のデータグループは、ハイバーテキストトランスポートプロトコル(HTTP)バージョン2以上に従ってフォーマット化される。
別の実施形態では、リクエストされた全てのデータが同時トランスポート接続へ送付されるまで、各データグループは、次のデータグループが次のトランスポート接続へ送付される前に1つのトランスポート接続へ送付される。
他の実施形態では、データグループサイズの所望範囲は、同時に使用される少なくとも2つの異なる接続に対して異なるように設定される。
更に別の実施形態では、1つ以上のトランスポート接続は、送信されたデータの内の少なくも幾つかに対する肯定的応答を受信する前に送信され得るデータの量を制限するための制御ウィンドウを設定するトランスポートプロトコルを使用し、所望のデータグループサイズの範囲は、制御ウィンドウの内の1つ以上のサイズの増加と共に増加する。幾つかの例では、トランスポートプロトコルはトランスポートコントロールプロトコル(TCP)であり、制御ウィンドウは、受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。別の例では、少なくとも1つの接続に対する所望範囲の最大値は、該接続に対する制御ウィンドウのサイズ以下であるように設定される。他の例では、少なくとも1つの接続に対する所望範囲の最小値は、該接続に対する制御ウィンドウのサイズの半分よりも大きいように設定される。
他の実施形態では、1つ以上のトランスポート接続は、以前に送信された少なくとも幾つかのデータの肯定的応答を受信することなく接続を通じて送信され得るデータの量を制限するトランスポートプロトコルを使用し、所望のデータサイズの範囲は、以前に送信されたデータに対する肯定的応答を受信する前に少なくとも1つの接続を通じてデータのグループを送信するように設定される。
他の実施形態では、所望のデータサイズの範囲は、第1のコンピュータと第2のコンピュータとの間の1ラウンドトリップの時間中に少なくとも1つの接続を通じてデータのグループを送信するように設定される。
別の実施形態では、同時トランスポート接続の内の少なくとも2つは、同じ物理的データリンクを経由して開通される。幾つかの例では、同時トランスポート接続の少なくとも2つは、同じ送信元ネットワークアドレス及び宛先ネットワークアドレスを有する。
幾つかの実施形態では、トラフィック管理モジュールは、プロキシ及びVPNの内の少なくとも1つを含む。
本発明の別の側面において、コンピュータネットワーク経由のコンピュータ間の多数の同時トランスポート接続の総スループットを増加させるためのシステムは、少なくともトラフィック管理モジュール及びトラフィック分散モジュールを含む。トラフィック管理モジュールは、同時に開通された複数の接続を経由した第1のコンピュータから第2のコンピュータへのデータ転送に対する2つ以上のリクエストを受信し、2つの異なるリクエストに応じてデータを取得し、異なるリクエストへの応答を含む2つ以上のデータフレームをその後形成し、各データフレームは、単一のリクエストに対応するデータを含む。トラフィック分散モジュールは、データフレームを2つ以上の異なるトランスポート接続へ送付し、少なくとも2つのデータフレームの各々は、単一のトランスポート接続に送付され、それにより、各トランスポート接続を通じて少なくとも1つのデータフレームを転送する。
幾つかの実施形態では、トラフィック管理モジュールは、2つ以上のデータフレームを同じキュー中に多重化し、一連の2つ以上のデータフレームを格納し、その後トラフィック分散モジュールは、同じキューからの少なくとも2つのデータフレームの各々を、それらを別個のトランスポート接続へ送付する前に取得する。
他の実施形態では、使用されるトランスポート接続の数は、第2のコンピュータへ配信されるリクエストされたデータの量の増加と共に増加する。
別の実施形態では、リクエストされたデータは、データ配信に対する少なくとも1つの他のリクエストを受信する前に、同時トランスポート接続を経由して配信されなければならず、1つ以上のデータフレームのサイズは、配信されなければならないデータの残量の減少と共に増加させられる。
他の実施形態では、1つ以上のデータフレームのサイズは、第1のコンピュータと第2のコンピュータとの間の1つ以上のトランスポート接続のスループットの増加と共に増加させられる。幾つかの例では、スループットの増加は、パケットロス率の減少、及び使用される1つ以上のトランスポート接続から、以前に送信されたデータに対する肯定的応答を受信する前に送信可能なデータの量の増加の内の少なくとも1つの検出により判定される。
図1は、本発明の例示的実装を説明する。クライアントコンピュータ110は、データ配信に対するリクエストの2つ以上のグループを近傍のプロキシ又はVPN120を通じて遠方のプロキシ又はVPN170へ発行し、遠方のプロキシ又はVPN170は、高帯域パイプ180を通じてコンテンツプロバイダ190へ該リクエストを通過させる。提示される例では、近傍のプロキシ又はVPN120は、遠方のプロキシ又はVPN170から非常に長距離に配置され、2つのコンピュータ間のパケットロスの比率を増加させる。これらのロスがスループットを低下させることを阻止するために、近傍のプロキシ又はVPN120は、近傍のマルチパストランスポートマネージャ130と結合され得る。遠方のプロキシ又はVPN170も遠方のマルチパストランスポートマネージャ160と結合され得、近傍のトランスポートマネージャと遠方のトランスポートマネージャとの間のトラフィックは、多数の同時接続140、150を通じて分散される。
説明される実施形態では、トランスポート接続150は、開通を維持されるが、リクエストされたデータを搬送するために使用されない一方で、同時トランスポート接続140は、リクエストされたデータを搬送するために使用される。このことは、新たな接続を開通するため、又は古い接続を不通にするために時間を費やすことなく、使用される接続140の数の変更を増加又は減少させることを可能にする。別の実施形態では、トランスポート接続は、データ転送に直ちに使用すること又は使用しないことに伴い、いつでも不通にされ得又は開通され得る。
幾つかの実装では、トランスポート接続140、150の内の少なくとも幾つかは、近傍のコンピュータ110と遠方のコンピュータ190との間の経路の内の少なくとも一部をカバーする同じ物理的データリンクを経由して開通される。例えば、同じラストマイルのISP(インターネットサービスプロバイダ)又は無線サービスプロバイダを使用することにより多数の接続が開通され得る。幾つかの実施形態では、多数の接続の間を区別するための送信元ポートのみを使用して、同じ送信元IPアドレスと宛先IPアドレスとの間に多数の接続が開通される。この実装は、多数の接続が同じ中継ルータを通過してクライアントとコンテンツプロバイダとの間で同じ経路を使用する確率を増加させる。幾つかの例では、このアプローチは、ラウンドトリップタイム若しくはパケットロス率等の新たな接続のネットワーク特性を既に開通された接続のネットワーク特性から推定するために、又は新たな接続の制御ウィンドウを既存の接続から取得される制御ウィンドウから予め設定するために使用される。
別の実装では、2つ以上の同時接続は、異なるデータリンク(例えば、Wi−Fi及びセルラ接続の両者)を通じて開通され得、又は宛先IPアドレスの相違に起因して異なる経路を通過し得る。このことは、(複数の)接続の個々のパラメータに従ってデータ転送のための一組の改善した接続を選択することに役立ち得、同じラストマイルのISPを経由して同じ遠くのサーバへ多数の接続が確立される場合であっても、同じサーバを指し示す異なる宛先IPアドレスを使用することは、2つのコンピュータ110、190間のパケットにより取られる異なる経路に起因して、各接続のネットワークパラメータを変更し得る。
幾つかの実装では、モジュール120及び170は、それに応じて、プロキシクライアント及びプロキシサーバである。クライアント110により開通された接続は、近傍のプロキシクライアント120により終端され、近傍のプロキシクライアント120は、遠方のプロキシサーバ170との、トランスポートマネージャ130、160間に確立された多数のトランスポート接続を通じて、リクエストされたペイロードを送信し、応答のペイロードを受信する。幾つかの実施形態では、トランスポート接続140、150は、トランスポートコントロールプロトコル(TCP)等の信頼性のある配信プロトコルを使用し、配信プロトコルは、ペイロードの配信保証を提供し、総制御ウィンドウを増加させるために同時トランスポート接続を使用することからの便益を得る。
別の実装では、モジュール120及び170は、それに応じて、仮想プライベートネットワーク(VPN)クライアント及びVPNサーバである。クライアント110により生成されたデータパケットは、近傍のVPNクライアント120によってユーザ空間へ移される。近傍のトラフィックマネージャ120は、出力されるパケットを同時トランスポート接続140中にカプセル化する。遠方のトラフィックマネージャ160は元のパケットを抽出し、遠方のVPNサーバ170と共にそれらをコンテンツプロバイダ190へ送信する。コンテンツプロバイダ190により返送されたデータは、逆の順序で処理される。この場合、同時トランスポート接続は、主に、任意の中継ルータ上のキューサイズを減少させること、及びデータリンクセグメント間の帯域幅の変化を緩和することによって、スループットの改善に役立つ。具体的には、そうした中継ルータは、一般的に、接続毎に1つのキューを維持し、各キューサイズを減少させることは、オーバフローに起因する遅延及びパケットロスの減少に役立つ。クライアント110が信頼性のある配信プロトコルを使用して多数の接続を開通する場合、VPNクライアント120とVPNサーバ170との間の多数の同時接続は、全てのクライアント接続を単一のキュー中に集中させることにより生じる性能低下の防止に役立つ。
幾つかの実装は、並行して使用される、プロキシクライアント及びVPNクライアント120とプロキシサーバ及びVPNサーバ170との両方を含み得る。幾つかの実施形態では、クライアント110から開始する全てのTCPトラフィックはクライアントプロキシ120により終端され、そのペイロードは多数のTCPトランスポート接続140を通じて送信される。そうした実施形態では、クライアント110から開始する全てのUDP(ユーザデータグラムプロトコル)トラフィックは、VPNクライアント120によりカプセル化され、多数のUDP接続を通じて送信される。
幾つかの実装では、近傍のプロキシ又はVPN120は、マルチパストランスポートマネージャ130と同じコンピュータ上に存在する。幾つかの実施形態では、それらは、クライアント110と同じコンピュータ上に存在する。別の実装では、これらのコンポーネント110、120、130の内の何れか1つ又は2つは、異なるコンピュータ上に存在し得る。
幾つかの実装では、遠方のプロキシ又はVPN170は、遠方のマルチパストランスポートマネージャ160と同じコンピュータ上に存在し、別の実装では、それらは異なるコンピュータ上に存在し得る。
プロキシ又はVPNモジュール120、170は、コンテンツサーバ190が多数の並列接続を通じた同じデータファイルの配信をサポートしない場合に有用である。
コンテンツサーバ190がそうしたサポートをできる代替的な実施形態では、クライアント110は、プロキシ又はVPNクライアント120を使用することなく、近傍のマルチパストランスポートマネージャ130へトラフィックを直接送信する。そうした実施形態では、コンテンツサーバ190は、プロキシ又はVPNサーバ170を使用することなく、遠方のマルチパストランスポートマネージャ160からリクエストを受信し、遠方のマルチパストランスポートマネージャ160へデータを送信する。この実施形態は、例えば、クライアント110及びコンテンツプロバイダ190の両者がマルチパスTCPプロトコルエクステンションをサポートする場合に実現され得る。
図2は、近傍のマルチパストランスポートマネージャ130の例示的実装を説明する。この実装では、近傍のマルチパストランスポートマネージャ130は、マルチパストラフィックディストリビュータ220及びマルチパストランスポートチューナ230を含み、両者は、近傍のプロキシ又はVPN120に接続され、クライアント110と通信する。近傍のマルチパストランスポートマネージャ130は、遠方のマルチパストランスポートマネージャ160との同時トランスポート接続を維持するTCPスタック210とデータを交換する。図示された実施形態では、マルチパストラフィックディストリビュータ220は、接続を開通若しくは不通にするための、又はマルチパストランスポートチューナ230からの既存の接続を通じたトラフィックを一時休止若しくは再開するためのコマンドを受信する。新たな接続が開通又は不通にされなければならない場合、マルチパストラフィックディストリビュータ220は、該コマンドをTCPスタック210へ送信し、既存の接続の使用が一時休止又は再開されなければならない場合、マルチパストラフィックディストリビュータは、TCPスタック210に通知する必要なく、分散アルゴリズムを変更する。
記述される実装では、マルチパストランスポートチューナ230は、使用される同時接続の数をそれが変更することに役立つデータからの情報をプロキシ又はVPN120から取得する。この例では、それは、ドメイン(ホスト名)、IPアドレス、ポート、及びHTTPヘッダを含むがそれらに限定されない、クライアント110により発行されたリクエストについての情報を受信する。幾つかの実施形態では、この情報は、周知のサイズのウェブサイトのダウンロードを示すリクエストのパターンを検出するために使用される。サイズ見積もりは、以下で記述されるように、接続の数を変更するために使用される。付加的な情報は、コンテンツリクエストに応じて提供されるコンテンツサイズ、又はTCPスタック210等のその他の送信元からの情報(近傍のマルチパストランスポートマネージャが十分なシステム特権を有する場合にのみ可能である)をも含み得る。
代替的な実装では、マルチパストランスポートチューナ230は、遠方のマルチパストランスポートマネージャ160へのラウンドトリップタイム、又は遠方のトランスポートマネージャ160のAPIへの呼び出し後に配信された第1バイトまでの時間を観察することによって、使用される接続140の数の設定又は変更を決定する。
更に別の実装では、マルチパストランスポートチューナ230は、例えば、ネットワークの輻輳の周知のパターンとそれが相関がある場合には、接続セッションの開始までの経過時間、ユーザステータス、又は時刻に基づいて、使用される接続の数を設定又は変更し得る。
使用される同時接続の数を増加又は減少させるか否かを判定するために必要なデータを受信することに加えて、マルチパストランスポートチューナ230は、遠方のマルチパストランスポートマネージャ160により明らかにされたAPI(アプリケーションプログラムインタフェース)への持続的なTCP接続を通じてフィードバックを受信すること等により、遠方のマルチパストランスポートマネージャ160からの制御情報をもプロキシ又はVPN120から受信する。マルチパストランスポートチューナ230はまた、トランスポート接続の開通又は不通、及び一時休止又は再開の決定について、遠方のマルチパストランスポートマネージャ160に通知する。また、このことは、遠方のマルチパストランスポートマネージャ160を参照する周知のネットワークアドレスへのAPI呼び出しを発行することを含み得る。幾つかの実施形態では、近傍のマルチパストランスポートマネージャ130によってのみ接続が開通され得る。しかしながら、典型的な実施形態では、近傍のマルチパストランスポートマネージャ130及び遠方のマルチパストランスポートマネージャ160の両者は、接続を一時休止又は再開し得る。
幾つかの実装では、近傍のマルチパストランスポートマネージャは、そのデータを送信するために、遠方のマルチパストランスポートマネージャとは異なる接続を使用する。この実装では、ある方向に使用されるトランスポート接続の数は、別方向に使用されるトランスポート接続の数とは異なり、他の接続が、ある方向のトラフィックを交換するためにのみ使用されつつ、幾つかの接続は、双方向のトラフィックを交換するために使用される。
別の実施形態では、マルチパストラフィックディストリビュータ220は、マルチパストランスポートチューナ230と結合され得、又は(一般的にルートアクセスの許可を要する)TCPスタックの変形として実装され得る。プロキシ又はVPN120を通じた通信の代わりに、近傍のマルチパストラフィックマネージャ130は、クライアント110と一体化され得る。
図3は、遠方のマルチパストランスポートマネージャ160の例示的実装を説明する。この実装では、遠方のマルチパストランスポートマネージャ160は、マルチパストラフィックディストリビュータ320及びマルチパストランスポートチューナ330を含み、両者は、コンテンツプロバイダ190と通信するプロキシ又はVPN170に接続される。遠方のマルチパストランスポートマネージャ160は、近傍のマルチパストランスポートマネージャ130との同時トランスポート接続を維持するTCPスタック310とデータを交換する。図示される実施形態では、マルチパストラフィックディストリビュータ320は、既に開通された接続を通じたマルチパストランスポートチューナ330からのトラフィックを一時休止及び再開するためのコマンドを受信する。しかしながら、近傍のマルチパストラフィックディストリビュータ220とは対照的に、マルチパストラフィックディストリビュータ320は、幾つかの実施形態ではトランスポート接続を開通又は不通にせず、むしろ、開通又は不通にされる接続についての情報をTCPスタック310から受信して、この情報をマルチパストランスポートチューナ330へ伝達するのみである。このことは、クライアント110の近傍のモジュール130により新たなトランスポート接続が開始される場合を反映する。マルチパストランスポートチューナ330が1つ以上の接続を開通又は不通にすることを判定する場合、それは、この情報をプロキシ又はVPN170を通じて近傍のマルチパストランスポートマネージャ130へ伝達する。
マルチパストランスポートチューナ330はまた、近傍のトランスポートマネージャ130により開通又は不通にされた、一時休止又は再開された接続についてのフィードバックを受信し、リクエストされたドメイン又はIPアドレスのパターン等の情報を、使用されるトランスポート接続140の数をそれが設定又は変更することに役立てるために使用する。幾つかの実施形態では、マルチパストランスポートチューナ330は、クライアント110が既に開通した1つ以上のトランスポート接続の不通を求めているとの判定に応じて、リクエストのグループに対応するリクエストされたデータの配信を終了したことを判定する。
幾つかの実施形態では、プロキシ又はVPN170は、少なくとも単一の接続に対して、遠方のトラフィックトランスポートマネージャと近傍のトラフィックトランスポートマネージャとの間のパイプよりも高いスループットを有し得るパイプ180を通じてコンテンツプロバイダ190に接続される。これは、例えば、遠方のプロキシ又はVPN170が近傍のプロキシ又はVPN120よりもコンテンツプロバイダ190に遥かに近接して配置される場合であり得る。記述される実施形態では、スループットの相違は、受信キュー340により緩和される。受信キュー340は、コンテンツプロバイダ190からダウンロードされたデータを、該データがクライアント110へ転送される前に格納するバッファとして具体化され得る。マルチパストラフィックディストリビュータ320は、多数の同時接続140間でデータを分散する前に、受信キュー340からデータを読み出す。
記述される実施形態では、マルチパストランスポートチューナ330は、受信キュー340中に格納されたデータのサイズによって、クライアントへ依然として配信されるデータのサイズを見積もる。例えば、単一のファイルが高スループットのパイプ180を通じてコンテンツプロバイダ190からロードされ、受信キュー340中に格納されたデータのサイズが時間と共に減少し始める場合、これはリクエストされた配信に対する最後の残存データであるとの指標として解釈することができる。マルチパストランスポートチューナ330は、使用される同時トランスポート接続140の数を配信が開始された後に変更するためにこの情報を使用し得る。
別の例では、クライアント110は、クライアント110へ転送される前に1つ以上の受信キュー340中に格納されている応答と共に、多数のリクエストを異なるコンテンツプロバイダ190に発行し得る。この場合、マルチパストラフィックチューナ330は、これらのキュー340の各々の中に格納されたデータについての情報を受信し得、キュー340の各々がその最大バッファサイズよりも小さいデータを有し、格納されたデータの総量が時間と共に減少する場合、コンテンツプロバイダ190からのデータ配信の完了を検討し得る。
図示される実施形態の別の側面において、マルチパストランスポートチューナ330は、制御ウィンドウのサイズW(若しくは例えば、TCPトランスポートプロトコルにより使用される、受信者ウィンドウ及び輻輳ウィンドウの両方のサイズ)、近傍のTCPスタック210へのラウンドトリップタイム、並びにパケットロスの比率等の、既に開通されたトランスポート接続の1つ以上のパラメータをTCPスタック310から受信する。この情報は、開通された1つ以上のトランスポート接続に対して収集され得る。システム管理者は、セキュアなサーバ環境においてより高レベルのアクセス特権を設定し得るので、この情報は、一般的にサーバ側で利用可能である。
幾つかの実装では、同じ遠方のマルチパストランスポートマネージャ160は、異なるクライアント110に接続される2つ以上の近傍のマルチパストランスポートマネージャ130により開通された接続を受信する。この場合、マルチパストラフィックチューナ330は、各クライアント110への接続と関連付けられたパラメータ、例えば、ラウンドトリップタイムを評価し、異なる数の同時接続を開通するように、又は異なるクライアント110との既に開通された異なる数の接続を使用するように、異なる近傍のトランスポートマネージャ130に助言する。各クライアント110との接続の最初の数が設定された後、それは、(例えば、制御ウィンドウの変更サイズW、又は受信キュー340に残存するデータのサイズに基づいて)データ配信が完了する前に変更され得る。
代替的な実装では、マルチパストラフィックディストリビュータ320は、遠方のプロキシ又はVPN170を通じてコンテンツプロバイダのサーバ190に接続されることなく、コンテンツプロバイダのサーバ190と一体化され得る。この場合、コンテンツプロバイダのサーバは、マルチパストラフィックディストリビュータ320に届くデータが暗号化される場合であっても、リクエストされた配信のサイズについてのより精密な情報を提供し得る。
別の実装では、遠方のマルチパストラフィックマネージャ160は、マルチパストラフィックディストリビュータ320及びマルチパストランスポートチューナ330を別個に実装することなく、TCPスタック310と一体化され得る。
記述される実施形態に従えば、リクエストの異なるグループに対するデータを配信するために、又はそれらが同じコンテンツをリクエストした場合であっても異なるクライアント110に配信するために、異なる数の同時トランスポート接続140が使用され得る。更に、各場合において使用される接続140の数は、リクエストのグループが発行された後ではあるが、リクエストのグループに対応するデータ配信が完了する前に変更され得る。
これらの実施形態は、多数の目的のために、例えば、異なるユーザ及び異なるコンテンツリクエストに対して異なる接続パターンを作り出すことによりプロキシ又はVPNのトラフィックを外部のセンサ(censor)から難読化するための手段として、使用され得る。
別の例では、トランスポート接続140の数を変更することは、共有される帯域幅のボトルネック経由の帯域幅の消費の公正を図るために使用され得、接続の数は、他のユーザにより利用されない帯域幅容量がある場合、又は帯域幅が他のユーザと共有されない専用リソースである場合にのみ増加させられる。
幾つかの実施形態では、多数の接続を経由して同じファイルが転送される場合であっても、使用される接続140の数は、リクエストされたファイルの数と共に変更される。このことは、プロキシ又はVPNの単一の接続を経由して多数のファイルが転送される場合と比較して、プロキシ又はVPNのユーザに対してそれをより公正にさせる。
開示される実施形態の一機能は、クライアント110とコンテンツプロバイダ190との間の長距離経由のスループットを調整することである。送信者と受信者との間の多数の配信保証トランスポート接続140を越えてデータ転送を分散することは、特に、トランスポートコントロールプロトコル(TCP)等の配信保証を確実にするトランスポートプロトコルを接続が使用する場合に総スループットを一般的に増加させ、該トランスポートプロトコルは、送信者と受信者との間の転送中(in-flight)のデータの量を制御ウィンドウのサイズに制限し、該制御ウィンドウは、典型的には、受信者ウィンドウ(受信者により受け入れ可能なデータの量)及び(過度なトラフィックを伴う過負荷が送信者と受信者との間のリンクにかかることを止めるために送信者により計算された)輻輳ウィンドウとの内の最小のものである。
この場合、新たな各接続140を追加することは、少なくとも、共有リンク上のパケットロスの増加により総輻輳ウィンドウが制限されるまで、受信者ウィンドウ及び輻輳ウィンドウの両者の総サイズを増加させる。輻輳ウィンドウを総和することは、ランダムなパケットロスの影響を緩和する付加的な便益をも有する。例えば、1つの接続に対する輻輳ウィンドウがパケットロス後に50%に低下する場合、10個の並列接続に対する総輻輳ウィンドウは5%のみ減少する。
接続140がデータの搬送で完全に占められる場合、その平均スループットはT=W/RTTと見積もられ得、ここで、Wは制御ウィンドウのサイズであり、RTTは平均ラウンドトリップタイムである。
制御ウィンドウWを有する接続140を経由してデータ量Sが転送され、S=N*MSS)であるように最大セグメントサイズMSS〜=1500Bを各々有するN個のパケットとしてこの量が送信されると仮定する場合、この接続経由でこれらのデータを配信するための時間t1は、
t1=(N/W)*RTT (1)
と見積もられ得る。
M個の並列接続を経由して同じデータ量が転送され、単に(W*Mの制御ウィンドウを使用する総接続に等しい)N/M個のパケットを各接続が転送しなければならない場合、これらのデータを配信するための時間tMはM倍小さくなり、
tM=(1/M)*(N/*W)*RTT (2)
である。
総輻輳ウィンドウが共有リンクにより制限されず、全ての並列接続が安定したスループットに到達する(各並列接続に対する平均Wが単一の接続に対するものと同じである)限り、任意のM>1に対して、M個の並列接続を通じたデータ転送は、単一の接続よりも常に速いと当業者であれば結論付け得る。
しかしながら、この結論は、(安定したスループットを維持するための輻輳制御アルゴリズムを可能にする)パイプを通じてN個のパケットが送信された後にデータ転送が継続することを暗に仮定している。実際には、リクエストされたデータの配信は、追加のデータ転送に進む前にしばしば確認されなければならない。例えば、
(1)リクエストされたファイルは、次のファイルを自動的にリクエストする前に完全にダウンロードされなければならず、処理されなければならない(例えば、ブラウザは、JavaScriptファイルを受信し、そのコードを実行し、該コードにより生成されたリクエストをその後発行する)。
(2)ユーザは、以前にリクエストされたコンテンツを再調査した後に、次のファイル又はファイルのグループに対するリクエストを発行する(例えば、ウェブサイトのロードに続いて、ユーザがリンク上でクリックするまで不活動期間がある)。
(3)データの量は、次の転送に進む前に確認されなければならず、リクエストされたコンテンツの種類に一般的に依存する。例えば、単一のJavaScriptファイル〜10から100KB、ニュースのウェブサイト〜0.5から5MB、ビデオ〜=20から2000MB。
次のデータ転送に進む前にN個のパケットの配信を確認する条件は、2つの方法で配信時間を変化させる。
第1に、接続パイプは、転送中のパケットの最大数(W)で常に充足されるわけではないかもしれない。例えば、W=100であるが、10個のパケットのみが1つの接続を通じて送信される場合には、それらを配信及び確認するために100個のパケットに対する時間と同じ時間(RTT)がかかるであろう。並列接続の数の増加は、各接続を通じて送信されるパケットの数をW未満に低下させ得、そのスループットを減少させる。
第2に、何れかの接続で最後のパケットをロスする確率は、並列接続の数と共に増加する。M個の接続の内の何れかがその最後のパケットをロスした場合、該パケットが回復するまで、N個全てのパケットが配信されたことの確認は遅延する。
TCPの一部として実装された輻輳制御プロトコルを含む、輻輳制御プロトコルの多くは、トランスポート接続を通じた最後のパケットがロスされた場合に追加の遅延を招く。輻輳制御プロトコルは、一般的に、ロスされたそうしたパケットを再送する前に追加の時間の間、待機する(テールロス遅延)。最後のパケットが最初の再送後に再格納された場合、最後のパケットを再配信するための総時間は、テールロス遅延+RTT=TLDF*RTT(TLDFは、1よりも大きい時間ロス遅延要因である)として見積もられ得る。
Linuxオペレーティングシステムの幾つかの実装では、時間ロス遅延は、再送タイムアウト(RTO)に等しく、最初の再送に対して、時間ロス遅延〜=SRTT+4*RTTVARであり、ここで、SRTT及びRTTVARは夫々、多数のACKに渡り平均化した、RTT値及びその変量である。例えば、RTTVAR/SRTT=0.5である場合、TLDF〜=4である。
Linuxオペレーティングシステムで実装された周知の一改善では、送信者は、テールロスプローブ(TLP)として周知の最後のパケットの複写を発行し、最初の再送に対する時間ロス遅延を2*SRTT(TLDF〜=3)に減少させる。
これらの例では、TLDFは、ロスしたパケットが最初の再送信の試み後に再配信されるものと仮定して見積もられる。再送されたパケットもロスされた場合、それは、次のRTOを増加させ得、又はTLPからRTOへの切り替えを生じさせ得、次の再送信の試みを更に遅延させ、平均TLDFを増加させる。
任意の接続における任意のパケットに対して単一のパケットロスの確率(p)が同じであると仮定すると、M個の接続の内の少なくとも1つがその最後のパケットをロスする確率は、P=1−(1−p)^M(〜=p*M(p*M<0.5に対して))である。
不完全に充足された接続パイプとテールロス遅延とを構成した後、単一の接続を通じたN個のパケットの配信を転送及び確認するための時間(t1)と、M個の並列接続を通じたN個のパケットの配信を転送及び確認するための時間(tM)とは、
t1=ceiling(N/W)*RTT+p*TLDF*RTTと、 (3)
tM=ceiling(1/M)*(N*W))*RTT+(1−(1−p)^M)*TLDF*RTT (4)
とであり、ここで、ceiling(X)は、最も近い整数K>=Xを返す関数である。
パケットロスがない場合(p=0)、Mは、小さいN/Mに対してであっても総スループットを減少させることなく大きな数に予め設定され得、任意のM>N/Wに対してtM=RTTである(単一のパケットの配信及び確認には、W個のパケットに対する時間と同じ時間がかかる)。
しかしながら、パケットロスの存在(p>0)は、見積もり最適値(M_opt)よりもMが大きくなった場合にM個の並列接続の総スループットを減少させ、多数の接続を通じたデータ転送の拡散は、少なくとも1つの最後のパケットがロスする確率を増加させ、テールロス遅延を生じさせる。
図4a及び図4bは、本発明からもたらされるスループットの改善を説明するグラフである。
図4aは、N/W=10で、p及びTLDFの3つの組み合わせに対して式(3、4)から計算された、接続毎の充足率(N/(M*W))の増加を伴うスループットの増加割合(tM/tl)の変化を図示する。各接続を通じて送信されたデータの量が、1 RTT(N/(M*W)〜=1)で配信され得る最大量に等しい場合、p及びTLDFの実際値に対して、最良のスループットの増加割合が実現されることを説明する。例えば、p=0.01でTLDF=3に対して、最良のスループットの増加割合は、M=10で実現され、それは、より大きな値のMに対してよりも最大2倍よい。
p=0.05でTLDF=4に対するグラフは、N/(M*W)〜=2で極小値を示し、p及びTLDFの更なる増加と共に最小値になり、パケットロスが高い(例えば、ネットワーク品質が低い)場合、2RTTで配信され得る接続単位のデータの最大量を送信することによって最良の性能が実現され得、平均時間は低下するがテールロスの確率は減少する。
図4bは、p=0.002、TLDF=3で、N/Wの3つの値に対して式(3、4)から計算された、各接続に対する充足率(N/(M*W))の増加を伴うスループットの増加割合(tM/t1)の変化を図示する。広範囲のN/Wに対して、N/(M*W)〜=1である場合に最良のスループットの増加割合が継続して実現されることを説明する。Wが変わらない場合、少なくとも図示されたN/Wの範囲に対しては、Mの見積もり最適値はNと共に比例的に増加することを意味する。
受信者ウィンドウが輻輳ウィンドウよりも大きい場合、Wは、マティス式(C〜=sqrt(3/2))からW=C/sqrt(p)と見積もられ得る。例えば、p=0.002はW=27に対応し、N/W=100はファイルサイズ〜4MBに対応する。
接続の見積もり最適数を記述する式は、多数の要因に依存して(3−4)とは異なり得る。例えば、パケットロスの異なる比率によって、別個の接続を通じて以前に送信されたデータの異なる量によって、又は異なる接続の可変のラウンドトリップタイムによって生じた(例えば、ラストマイルの無線リンク内のランダムな再送によって生じた)異なる接続間のW値の変動。
式は、データ分散アルゴリズムによって生じた異なる並列接続を通じて送信されたデータの量の変動と共に、更に異なり得る。例えば、ラウンドロビン分散を使用する代わりに、各接続を通じて送信されたデータの量を、以前に観察されたそのスループットに比例させることによって。
本明細書に開示される実施形態は、式(3−4)の正確な形式に依存しない。これらの式は、本発明の実施形態の内の幾つかにより使用される仮定を検証するために、及び実施形態が特に効果的であり得る条件を確立するために含まれる。例えば、他のデータ転送に進む前に、以前にリクエストされたデータの配信が確認されなければならない場合には、パケットロスが存在する場合に配信を完了及び確認するための時間を削減する並列接続の最適数がある。同様に、並列接続の最適数は、配信を完了及び確認するために必要なデータの量と共に増加する。並列接続の最適数は、単一のラウンドトリップサイクル中に送信及び確認され得るデータの最大量を配信するために、又は2つのラウンドトリップサイクル中に特に高率のパケットロスに対して、各並列接続がリクエストされた場合に一般的には実現される。
図5は、データトラフィックのパラメータを監視することによって多数の同時接続のスループットを最適化し、例えば、著しく改善し、接続の見積もり最適数を設定するためにこれらのパラメータを使用する方法の処理フロー図を図示する。図5の方法は、検索されているデータのサイズと、近傍のマルチパストランスポートマネージャ130と遠方のマルチパストランスポートマネージャ160との間の接続の属性とに依存して、異なるコンピュータが異なる数の接続140を使用し得るように、遠方のマルチパストランスポートマネージャ160に結合された各々の近傍のマルチパストランスポートマネージャ130に関して実行され得る。
記述される方法では、マルチパストランスポートマネージャ130、160は、受信キュー中のデータサイズR、及び既存のトランスポート接続の平均制御ウィンドウのサイズW等のデータ転送のパラメータを取得する(ステップ510)。Wのサイズは、ラウンドトリップタイム、パケットロスの比率、TCPを実装する2つのコンピュータ間のネットワーク接続の距離、又はネットワーク接続の品質を記述するその他の要因等の要因に従ってTCPプロトコルによって判定されることに留意されたい。マルチパストランスポートマネージャ130、160は、これが、事前に定義した期間、例えば、1秒間のトラフィック量の開始、一時休止、停止、又は急な減少(例えば、50〜90%の減少)の後の最初のデータ転送であるか否かを更に判定する(ステップ520)。
ステップ520の開始又は一時休止が検出された後に、クライアント110からのリクエストの新たなグループが受信された場合(ステップ540)、リクエストの新たなグループのパターン又はリクエストされたドメイン及びリクエストヘッダから、配信サイズNが見積もられる(ステップ560)。R、S、及びWの見積もり値に対して、リクエストの新たなグループに対応するリクエストされた配信の時間を最適化する、例えば、著しく改善するように、同時トランスポート接続の数がその後設定される(ステップ570)。
リクエストされた配信のデータ転送が継続されながら、マルチパストランスポートマネージャ130、160の内の少なくとも1つは、R及びW等のトランスポートパラメータの評価を継続する(ステップ520)。ceiling(R/(M*W))と見積もられる、リクエストされた配信のデータの残部を配信するために使用されるラウンドトリップサイクルの数の増加をそれが検出した場合(ステップ530)、リクエストされた配信が完了するまでの時間を減少させるために、使用される接続140の数が増加させられる(ステップ550)。各マルチパストランスポートマネージャ130、160は独立して動作するので、クライアント110からコンテンツプロバイダ190へデータを転送するために使用されるトランスポート接続140の数は、コンテンツプロバイダからクライアント110へデータを転送するために使用されるトランスポート接続140の数とは異なり得ることに留意されたい。同様に、クライアント110からコンテンツプロバイダ190へデータを転送するために使用されるトランスポート接続140の数は、コンテンツプロバイダからクライアント110へデータを転送するために使用されるトランスポート接続140の数を一定に維持しながら変更し得、その逆もしかりであり得る。
上述したように、使用されるトランスポート接続140の数は、パケットロス、スループット、制御ウィンドウ、輻輳ウィンドウ、受信者ウィンドウ、及び値R/M*W(ステップ530)に影響を及ぼすその他のパラメータを含む、トランスポート接続の属性に依存する。具体的には、制御ウィンドウのサイズWは、これらの属性の影響を受ける。したがって、マルチパストランスポートマネージャ130、160によって検出された、クライアントからコンテンツプロバイダへの接続140に対するこれらの属性と、コンテンツプロバイダからクライアントへの接続140に対するこれらの属性との相違は、コンテンツプロバイダからクライアントへの接続140に対する、クライアントからコンテンツプロバイダへの使用される接続140の数の相違をもたらし得る。
制御ウィンドウの現在のサイズを使用することに代わり、一実装は、(例えば、制御ウィンドウのサイズが各ラウンドトリップと共に継続して増加するであろうと仮定することによって)、又は観察されたパケットロスの比率から制御ウィンドウの平均サイズを得るためにマティス式を使用することによって、制御ウィンドウの見積もりサイズを後で使用し得る。
使用される接続の数を増加させるためにデータ転送の1つ以上のパラメータを見積もる方法のその他の実装は、制限された新たなデータ配信の開始を検出するために、又はそのサイズを見積もるために、異なる一連のステップ、異なる方法を使用し得る。
したがって、この実装及びその他の実装は、トラフィックの開始又は一時休止を検出した後にトラフィックパラメータを評価し、リクエストの異なるグループに対して、若しくは異なるユーザからの同じリクエストに対して、使用される同時接続の数を異なる値に設定する共通の機構を有する。また、リクエストされた配信中にトラフィックパラメータを再評価する実装は、リクエストされた配信が完了する前に、使用される同時接続の数を変更する共通の機構を有する。
図6は、本発明の別の側面に従った、同時トランスポート接続を通じた単一のファイル転送のトラフィック分散を最適化する、例えば、著しく改善するために使用されるネットワーク環境の図である。
この側面において、遠方のマルチパストランスポートマネージャ160は、一組の送信バッファ620を含み、各送信バッファは、TCPスタック310により確立された別個のトランスポート接続140を供給している。これらの送信バッファは、ユーザ空間中に実装され得、又はTCPスタックにより提供されたトランスポート接続の送信バッファと統合され得る。マルチパストランスポートマネージャは、少なくとも1つのローダ630と受信キュー640とを更に含み、コンテンツプロバイダ190から高帯域パイプ180を通じ、遠方のプロキシ又はVPN170を通じて送信されたデータを格納する。
記述される実装では、ローダ630は、一組の送信バッファ620を順番に充足する。各接続に対してデータを送信する前に、それは、制御ウィンドウのサイズWを取得し、受信キュー640からWと等しい量のデータを抽出し、受信キューを通じて更に進む前に、それを現在の送信バッファへ転送する。受信キュー640から空けられた空間は、例えば、リングバッファ中のポインタをシフトすることによって、次のデータを受信するための準備としてマークされる。図6は、第1のトランスポート接続に対する送信バッファがその制御ウィンドウのサイズ(W1)と等しい量のデータを既に受信し、ローダ630が第2のトランスポート接続に対する制御ウィンドウのサイズ(W2)を取得し、次の送信バッファ(説明の例ではW3)に進む前に、受信キュー640から第2の送信バッファへ対応する量のデータを転送するために準備する場合を図示する。受信キュー640中に残るデータの量が制御ウィンドウのサイズ(W3に対して示される例示のようなもの)よりも小さい場合、ローダ630は利用可能な量を転送する。
幾つかの実装では、多数のローダ630は、多数の送信バッファ620を供給するために並行して使用され得る。同様に、ラウンドロビンの代わりに、異なる配信アルゴリズムが使用され得る(例えば、制御ウィンドウの内で最大サイズを有する接続が最初にアドレス指定され得る)。ローダ630は、各送信バッファに送信されるべき量を特定するために、制御ウィンドウのサイズ以外のパラメータを使用し得る。例えば、近時の時間間隔(例えば、0.1から10秒)中の現在の接続の平均スループットに比例した値。
本発明に従うと、図示される実装、及び上述したようなその変形は、所望の範囲内、例えば、対応する接続に対する制御ウィンドウのサイズに可能な限り近くに設定されている各データグループのサイズで、データのグループを異なるトランスポート接続へ送信する共通の機構を有する。
このことは、使用される接続の数を、配信のために残存するデータの量に自動的に調節することを可能にする。例えば、受信キュー640は、3つの送信バッファ620をそれらの制御ウィンドウサイズW1〜W3に対応する量で充足するのに十分なデータのみを含む場合、その他のトランスポート接続はもはやデータを受信しないであろう。この方法では、使用される接続140の数は、配信されなければならないデータの量の増加と共に、又はランダムなパケットロスに起因する1つ以上の制御ウィンドウのサイズの減少と共に上昇し得る。
幾つかの実装では、所望の範囲は、現在の制御ウィンドウのサイズ等、最大値のみを含み得る。他の実装では、それは、最小値をも含み得る。例えば、受信キュー640が現在の制御ウィンドウのサイズの50%未満を含む場合、単一のラウンドトリップタイム中に最大量のデータが送信される確率を増加させるために、ローダ630は、受信キュー640から次のデータを受信するために1つ以上のラウンドトリップタイムを待機する。最小値を判定するために、40%から60%の値等の50%以外の値が使用され得る。
受信キュー640中のデータの残量が全ての制御ウィンドウ(説明された例のW1からW4)の和よりも大きい場合、事前に定義された制限を越えないように、同時接続の最大数が設定され得る。
図示される実施形態では、第1のトランスポート接続140が第2の接続140等よりも早いデータを受信する等、受信キュー640からのデータは、送信バッファ620の各々に順番にロードされる。現在の接続140の制御ウィンドウのサイズを越えないサイズを有する各データグループは、現在の接続を経由して、単一のラウンドトリップ中に配信され得る。ある順番で連続的なデータグループを送信することは、受信側で行われなければならない並べ替えの量を削減する更なる便益を有する。
図示される実装では、受信側は、TCPスタック310を通じて多数のトランスポート接続140から受信されたデータがプロキシ又はVPN170へ正しい順序で配信され得るまで該データを格納する順序付けキュー650を含む。各接続140は、各ラウンドトリップ中に連続的な一組のデータを配信する場合、(例えば、第3の接続が第2の接続よりも速くデータを配信した場合)又は幾つかのデータパケットがロスされ再送されなければならない場合、データのグループ間でのみ並び替えが必要である。これが実装されない場合、例えば、連続したデータパケットが多数の接続の間で拡散された場合、現在のサイクル中に全ての接続が全てのデータを配信するまで、順序付けキュー650中にパケットが留まる必要があり得、それによりレイテンシを増加させる。
図7は、各接続を通じて所望サイズのデータグループを送信することに基づいて、同時トランスポート接続を通じたトラフィック分散を改善するための方法を説明する処理フロー図である。
受信キューが空ではない場合(ステップ710)、データグループを受信するために次のトランスポート接続が選択される(ステップ720)。図示される場合では、接続の最大数に到達した場合に第1の接続にオーバラップ(wrap over)すると共に、次の接続が順次選択される。代替的な実装では、例えば、その送信バッファ620中に残存するデータの量と、その制御ウィンドウのサイズとに基づいて、次の接続が選択され得る(720)。具体的には、空の送信バッファ620と大きな制御ウィンドウとを有する接続140が最初に選択される。選択された接続に対する制御ウィンドウのサイズを取得した後(ステップ730)、制御ウィンドウのサイズ(W)と受信キュー中の残量(R)との内の最小のものが、選択された接続の送信バッファ620へ移される(ステップ740)。受信キュー640中に残存するデータのサイズは、次のデータのために空間を自由にするために、それに応じて調節される。
上で概説したように、制御ウィンドウ(W)がスループットに依存する限り、データフレームのサイズはWのサイズに依存する。フレームのサイズは、それ故、Wの増加と共に増加するであろう。スループット及び制御ウィンドウはパケットロス率にも依存する。したがって、スループットの増加又は減少は、パケットロス率の増加又は減少に夫々基づいて見積もられ得る。
図8は、本発明の実施形態に従った、同時トランスポート接続を通じた多数の並列ファイル転送のトラフィック分散を改善するために使用されるネットワーク環境の図である。
この側面において、クライアント110は、多数のコンテンツプロバイダ190からファイルのグループをリクエストする。これらのファイルは、プロキシ又はVPNサーバ170を通じて並行してダウンロードされる。記述した実装において、遠方のマルチパストランスポートマネージャ160に提示される前に、多数のダウンロードストリームは、フレームアセンブラ860を通じて送信され、フレームアセンブラ860は、これらのデータストリームを単一の受信キュー640中に多重化する。幾つかの例では、該アセンブリは一連のフレームを作り出すことを含み、各フレームは、単一のデータストリームに対応するヘッダ及びペイロードを有する。ヘッダは、データストリームの識別子とペイロードのサイズとを含み得る。ヘッダは、フレームタイプ(制御又はデータ、チェックサム、又は付加的オプション)等の付加的パラメータをも含み得る。幾つかの実施形態では、各フレームは、ハイパーテキストトランスポートプロトコル(HTTP)バージョン2以降の仕様に従ってフォーマット化され得る。
本発明の一側面に従うと、ローダ630は、受信キュー640からの連続的な各フレームを、TCPスタック310により維持される異なるトランスポート接続の送信バッファ620中へ転送する。幾つかの例では、フレームアセンブラ860は、各フレームに対して同じフレームサイズを使用する。ローダ630は、各フレームが唯一つの接続140の送信バッファ620へ転送されることを確認する。この方法では、使用されるトランスポート接続の数は、受信キュー640中のデータの量と共に増加し、ファイルのグループのリクエストされた配信が完了に近づくと下げられる。
幾つかの実装では、フレームアセンブラ860は、予測される配信サイズについての情報(例えば、リクエストされたドメインに対するパターンから取得された情報)又は(例えば、多くのフレームが単一の制御ウィンドウ中に適合することを確認するために)トランスポート接続140により使用される制御ウィンドウのサイズに基づいて、フレームサイズを予め設定する。幾つかの実施形態では、予め設定されるフレームサイズは、同じユーザからのリクエストの異なるグループに対して、又はリクエストの同じグループを送信する場合であっても異なるユーザに対して異なる。フレームサイズは、データ配信中にも変化し得る。例えば、制御ウィンドウの平均サイズが時間と共に減少する場合、フレームアセンブラ860はフレームサイズを減少させ得る。
幾つかの実施形態では、フレームアセンブラ860は、配信されるデータの残量の減少と共に、1つ以上のデータフレームのサイズを増加させる。このアプローチは、異なる接続に切り替える前に最大又はほぼ最大の量のデータを各接続140が送信することを確実にし、ここで、データの最大量は、データの内の少なくとも幾つかの肯定的応答を受信する前に送信可能なデータの量である。異なるフレームが異なる接続を通じて送信される場合、各データフレームのサイズの増加は、データの転送に活発に使用される同時接続の数を減少させる。上述したように、小さいファイルに対しては、このことは、配信保証プロトコルが使用された場合にスループットを実際に増加させる。
幾つかの実施形態では、フレームアセンブラ860は、パケットロス率の減少と共にデータフレームのサイズを増加させる。他の実施形態では、フレームアセンブラ860は、データの内の少なくとも幾つかの肯定的応答を受信する前に送信可能なデータの量の増加と共に、データフレームのサイズを増加させる。このアプローチは、異なる接続に切り替える前に最大量又はほぼ最大量のデータを各接続が送信することを確実にし、ここで、最大量は、データの内の少なくとも幾つかの肯定的応答を待機する前に送信可能なデータの量である。データロス率の減少、又は肯定的応答を受信する前に送信可能なデータの量の増加(制御ウィンドウの増加)は、図5の方法に従って使用される同時接続の数の減少をもたらす。各データフレームのサイズの増加は、同様の結果を実現し、特に小さいファイルに対して、各データフレームのサイズの増加に対応して、データの転送に活発に使用される同時接続140の数が減少させられるように、異なるフレームは異なる接続を通じて送信される。
幾つかの例では、ローダ630は、受信キュー640中の次のフレームに対する次の接続140を順次選択する。別の例では、それは、単一のラウンドトリップの時間中に単一のフレームを転送する接続の数を増加させるために、次の接続140をその制御ウィンドウのサイズに基づいて選択し得る。このことは、フレームアセンブラ860が例えば、高優先度のデータ(ウェブサイトのレンダリングを機能停止し得るJavaScript等)に対して、それらの配信を高速化するために、より小さなフレームを使用することによって、異なるサイズのフレームを形成する場合に有益になる。
説明される実装及び上述したその変形に従うと、各フレームが単一のデータストリームからのデータのみを含むデータフレームを形成することによって、多数のトランスポート接続140を通じた多数のデータストリームのデータ転送を順序付け、唯一つのトランスポート接続140を通じて各データフレームを送信する共通の機構を有する。同じデータストリームからのデータフレームは、多数の同時トランスポート接続140を通じて送信され得るが、各データフレームは、単一のトランスポート接続のみを通じて送信され得る。
使用される接続の数を自動的に調節することに加えて、この実装は、受信側におけるデータの並び替えの必要性をも減少させる。図示される実施形態では、受信側は、順序付けキュー650を含む。それは、一連のフレームをフレームディスアセンブラ870へ送信し、フレームディスアセンブラ870は、それらを、プロキシ又はVPN170を通じて多数のコンテンツサーバ190へ送信された別個のデータストリーム中に多重分離する。順序付けキュー650は、各フレームがその全てのデータを含むことを確認さえすればよい。フレームの全てのパケットが単一のトランスポート接続により配信されると直ぐに、該フレームは、フレームディスアセンブラ870へ直ちに送信され得る。この場合、順序付けキュー650は、個々のデータフレームを配信する前に2つ以上のトランスポート接続140を待機する必要がない。
図9は、本発明の別の実施形態に従った、同時トランスポート接続を通じた多数の並列ファイル転送のトラフィック分散を最適化する、例えば、著しく改善するために使用されるネットワーク環境の図である。
この実施形態では、マルチパストランスポートマネージャ160は、プロキシ又はVPN170を通じて対応するコンテンツプロバイダ190からロードされた単一のデータストリームに対するデータを格納するために各々使用される多数の受信キュー640を含む。この実施形態では、ローダ630は、フレームアセンブラの機能をも実行する。具体的には、ローダ630は、次の受信キュー640から取り出さなければならないデータの量を選択し、それをフレームとしてフォーマット化し、該フレームを次の送信バッファ620中にロードし、次の送信バッファ620は、対応するトランスポート接続140を通じてデータを転送するためにTCPスタック310により使用される。ローダ630は、別の受信キュー640及びトランスポート接続140に関してこの機能をその後実行する。
記述される実施形態では、フレームアセンブラ及びローダ630は、各トランスポート接続140に対する制御ウィンドウのサイズWを取得し、それをフレームサイズを最適化するために、例えば、改善された結果を提供するフレームサイズを選択するために使用する。例えば、各フレームサイズは、該フレームが単一のラウンドトリップの時間中に配信される確率を最大にする、又は少なくとも増加させる、対応する制御ウィンドウのサイズにできる限り近く設定される。図示される実施形態では、サイズW1のフレーム1は、第1の受信キュー640から第1の送信バッファ620へ既にロードされている。第1の受信キュー640の利用可能な空間は、例えば、リングバッファのポインタを変更することによってその後調節される。フレームアセンブラ及びローダ630は、第2の受信キュー640からのサイズW2のフレームを組み立て、第3の受信キュー640にその後進む準備をその後する。トランスポート接続140の数が受信キュー640の数よりも多い場合、キュー640は、初めから循環して開始され得る。説明される例では、第4の送信バッファ620は、残部のデータを第1の受信キュー640等から受信するであろう。
別の実装では、ローダ630は、送信バッファ620に対応するトランスポート接続140の以前に測定されたスループットに基づいて、送信バッファ620中にロードされたデータに対するフレームサイズを設定する。別の例では、ローダ630は、接続140の種類(例えば、有線対無線)に基づいてフレームサイズを設定する。
別の実装では、次のトランスポート接続140は、ラウンドロビンアルゴリズムとは異なるアルゴリズムを使用して、次のフレームを受信するために、ローダ630により選択され得る。例えば、空の送信バッファ620を有するそれらの接続140の内、近時の時間間隔(例えば、0.1から10秒)に渡り最大サイズの制御ウィンドウ又は最大スループットを有する接続140を、次の接続140として選択することによる。次の受信キュー640は、異なるアルゴリズムを使用することによっても選択され得る。例えば、異なる受信キュー640には異なる優先度が割り当てられ得、より高い優先度のデータがより高い優先度のキュー640に割り当てられるようにキューにデータが割り当てられ得る。例えば、ウェブサイトのロードを機能停止し得るJavaScriptファイルは、より高い優先度のキュー640に割り当てられ得る。別の例では、バックグランドで大規模なダウンロードが存在する時に小さなファイルのダウンロードを高速化するために、データの残量が最も少ないキュー640に、より高い優先度が割り当てられ得る。
図示される実装及び上述したようなその変形は、各フレームが単一のデータストリームからのデータのみを含むデータフレームを形成することによって、多数のトランスポート接続140を通じた多数のデータストリームのデータ転送を順序付ける共通の機構を有する。各データフレームは、唯一つのトランスポート接続140通じて送信され、そのサイズは、その他の可能なサイズの範囲と比較して(例えば、各フレームが単一のラウンドトリップ中に送出される確率を改善することによって)スループットを増加させるために該接続に対して選択される。
異なる接続を通じて異なるサイズのデータフレームを送信することは、受信側での並び替えを簡易化する便益をも提供する。記述される実装では、各トランスポート接続140からのデータは、別個の並び替えキュー650中に格納される。図示される例では、別のトランスポート接続が未使用にされながら、3つのトランスポート接続のみが上流のデータを搬送する。各データフレームは、単一のトランスポート接続140を通じてのみ送信され得るが、各トランスポート接続140は、2つ以上のデータストリームからのデータフレームを搬送し得る。
図示される実施形態は、同じトランスポート接続140を通じて送信されるデータフレームが同じ又は同様のサイズを有するという事実からの便益を有し得、それは、接続が特定される並び替えバッファに対してどの程度のメモリが要求されるかを予測することを容易にし、それによりメモリ割り当ての効率を増加させる。それは、多数の接続からのフレームを並行して並び替えるためのリソース消費をも少なくさせる。任意の順序付けキュー中の任意のフレームからの全てのパケットが配信されると直ぐに、それらはフレームディスアセンブラ870へ送信され、フレームディスアセンブラ870は、それらを別個のデータストリーム中に多重分離し、各データストリームをプロキシ又はVPN170を通じて、対応するコンテンツプロバイダ190へ送付する。
図示される実施形態は、多数の同時接続経由のデータ配信保証のための手段として、トランスポートコントロールプロトコル(TCP)及びTCPスタック310に言及する。他の実施形態は、異なる配信プロトコル、例えば、追加のユーザ空間フロー制御及び輻輳制御モジュールを有するユーザデータグラムプロトコル(UDP)、又はストリームコントロールトランスミッションプロトコル(SCTP)を使用し得る。
他の実施形態では、マルチパストラフィックマネージャ130、160は、クライアント110及びコンテンツプロバイダのサーバ190上で夫々実行するクライアントアプリケーションと夫々一体化され得、それにより別個のプロキシ又はVPNモジュール120、170を不要にする。例えば、本明細書に開示される実施形態は、クライアント110及びコンテンツプロバイダ190の両者によりそれがサポートされている場合には、マルチパスTCPプロトコルエクステンションのスループットを加速するために使用され得る。
幾つかの実施形態では、異なるデータフレームは、同じ物理的データリンク又は同じ経路上の全てのデータリンクを共有する異なるトランスポート接続140を通じて送信される。他の実施形態では、異なるトランスポート接続は、有線及び無線、又は多数のIPアドレスを有する同じサーバへの異なる経路等の、異なるデータリンクを使用し得る。
多数の同時接続は、クライアント110からプロキシ若しくはVPNサーバ120への全てのトラフィック、又は該トラフィックの内の一部のみを転送するために使用され得る。幾つかの実施形態では、多数の接続140を越えて同じファイルのロードを拡散することなく、ユーザに近いコンテンツが直接アクセスされる一方で、ランダムなデータロスの影響を緩和するために、長距離のコンテンツのみが多数の同時接続140を通じてアクセスされる。
図10は、本明細書に開示されるコンピュータ及びサーバの内の何れかを具体化し得る例示的コンピューティングデバイス1000を説明するブロック図である。コンピューティングデバイス1000は、本明細書で論じられるプロシージャ等の様々なプロシージャを実行するために使用され得る。コンピューティングデバイス1000は、サーバ、クライアント、又は任意のその他のコンピューティングエンティティとして機能し得る。コンピューティングデバイスは、本明細書で論じられるような様々な監視機能を実行し得、本明細書に記述されるアプリケーションプログラム等の1つ以上のアプリケーションプログラムを実行し得る。コンピューティングデバイス1000は、デスクトップコンピュータ、ノートブックコンピュータ、サーバコンピュータ、携帯型コンピュータ、及びタブレットコンピュータ等の多種多様なコンピューティングデバイスの内の何れかであり得る。
コンピューティングデバイス1000は、1つ以上のプロセッサ1002、1つ以上のメモリデバイス1004、1つ以上のインタフェース1006、1つ以上の大容量ストレージデバイス1008、1つ以上の入出力(I/O)デバイス1010、及び表示デバイス1030を含み、それらの全てはバス1012に結合される。プロセッサ1002は、メモリデバイス1004及び/又は大容量ストレージデバイス1008中に格納された命令を実行する1つ以上のプロセッサ若しくはコントローラを含む。プロセッサ1002は、キャッシュメモリ等の様々な種類のコンピュータ可読媒体をも含み得る。
メモリデバイス1004は、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)1014)及び/又は不揮発性メモリ(例えば、リードオンリメモリ(ROM)1016)等の様々なコンピュータ可読媒体を含む。メモリデバイス1004は、フラッシュメモリ等の再書き込み可能なROMをも含み得る。
大容量ストレージデバイス1008は、磁気テープ、磁気ディスク、光ディスク、及び固体状態メモリ(例えば、フラッシュメモリ)等の様々なコンピュータ可読媒体を含む。図10に示すように、具体的な大容量ストレージデバイスはハードディスクドライブ1024である。様々なコンピュータ可読媒体からの読み出しを可能にし、及び/又は様々なコンピュータ可読媒体への書き込みを可能にするために、大容量ストレージデバイス1008には様々なドライブも含まれ得る。大容量ストレージデバイス1008は、取り外し可能媒体1026及び/又は非取り外し可能媒体を含む。
入出力デバイス1010は、データ及び/又はその他の情報がコンピューティングデバイス1000に入力されること、又はコンピューティングデバイス1000から検索されることを可能にする様々なデバイスを含む。例示的な入出力デバイス1010は、カーソル制御デバイス、キーボード、キーパッド、マイクロフォン、モニタ若しくはその他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、及びCCD若しくはその他の画像取込デバイス等を含む。
表示デバイス1030は、コンピューティングデバイス1000の1人以上のユーザに情報を表示可能な任意の種類のデバイスを含む。表示デバイス1030の例には、モニタ、表示端末、及びビデオ投影デバイス等が挙げられる。
インタフェース1006は、コンピューティングデバイス1000がその他のシステム、デバイス、又はコンピューティング環境と相互作用することを可能にする様々なインタフェースを含む。例示的インタフェース1006は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、無線ネットワーク、及びインターネットへのインタフェース等の、任意の数の異なるネットワークインタフェース1020を含む。その他のインタフェースは、ユーザインタフェース1018及び周辺デバイスインタフェース1022を含む。インタフェース1006は、1つ以上のユーザインタフェース素子1018をも含む。インタフェース1006は、プリンタ、ポインティングデバイス(マウス、トラックパッド等)、及びキーボード等に対するインタフェース等の、1つ以上の周辺インタフェースをも含み得る。
バス1012は、プロセッサ1002、メモリデバイス1004、インタフェース1006、大容量ストレージデバイス1008、及び入出力デバイス1010が、バス1012に結合されたその他のデバイス若しくはコンポーネントと共に、相互に通信することを可能にする。バス1012は、システムバス、PCIバス、IEEE1394バス、及びUSBバス等の幾つかの種類のバス構造の内の1つ以上を表す。
プログラム及びその他の実行可能なプログラムコンポーネントは、そうしたプログラム及びコンポーネントがコンピューティングデバイス1000の異なるストレージコンポーネント中に様々な時間に存在し得、プロセッサ1002により実行されるものと理解されるが、説明の目的のために、別々のブロックとして本明細書に示される。或いは、本明細書に記述されるシステム及びプロシージャは、ハードウェア中に、又はハードウェア、ソフトウェア、及び/若しくはファームウェアの組み合わせ中に実装され得る。例えば、本明細書に記述されるシステム及びプロシージャの内の1つ以上を実行するように、1つ以上の特定用途向け集積回路(ASIC)はプログラムされ得る。
この明細書全体を通じて“一実施形態”、“実施形態”、“一例”、又は“例”との言及は、実施形態又は例に関連して記述される特定の機構、構造、又は特徴が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、この明細書全体を通じて様々な場所の句“一実施形態では”、“実施形態では”、“一例”、又は“例”は、全てが同じ実施形態又は例に必ずしも言及していない。更に、特定の機構、構造、又は特徴は、1つ以上の実施形態又は例において任意の適切な組み合わせ及び/又は部分的組み合わせに組み込まれ得る。また、本明細書と共に提供される図は当業者への説明目的のためのものであること、並びに図面は必ずしも縮尺通りに図示されていないことを認識すべきである。
本発明は、その精神又は本質的特徴から逸脱することなくその他の特定の形式で具体化され得る。記述される実施形態は、全ての点で説明としてのみ考慮されるべきであり、限定的ではない。本発明の範囲は、それ故、上述の説明によるよりもむしろ、添付の請求項によって示される。請求項の意義及び均等物の範囲内にある全ての変更がそれらの範囲内に含まれるべきである。
<関連出願>
本出願は、同時接続の総スループットを改善するためのシステム及び方法という名称で2016年5月31日に出願した米国特許仮出願番号62/343,697の利益を主張し、該仮出願は、参照によりその全体が本明細書にこれにより組み込まれる。
本出願は、同時接続の総スループットを改善するためのシステム及び方法という名称で2016年9月1日に出願した米国特許出願番号15/254,732(代理人案件番号ANCH−00502)を参照によりその全体を更に組み込む。
コンピュータネットワーク経由でダウンロードされるオンラインコンテンツの量は、オンラインビデオストリーミング及びユーザが生成したコンテンツの普及、ソーシャルネットワーク及びメディアを駆使したメッセージングの急増、クラウドベースのストレージ等、多数の要因に起因して時間と共に急速に増加している。
リクエストされたコンテンツは、しばしば、長距離を経由して配信されなければならない。最も好まれるビデオのみがユーザの近くにキャッシングされ得る。HTTPSのようなセキュアなプロトコルを使用するコンテンツは、少なくとも幾つかの暗号化キーを第三者に開示することなくキャッシングすることはできない。スポーツ及びニュース等のリアルタイムでストリーミングされたイベントの遠隔での視聴にはキャッシングが使用できない。ローカルなコンテンツは、しばしば、原産国を除いてキャッシングされない。
データ走行距離の増加は、パケットロスの比率をしばしば増加させる。トランスポートコントロールプロトコル(TCP)等の配信保証プロトコルが接続に使用される場合には、これらのロスは、ラストワンマイルの輻輳として一般的に解釈され、接続パイプの各セグメントが飽和点から遠方にある場合であってもスループットに著しい減少をもたらす。
送信者と受信者との間で多数の同時の配信保証トランスポート接続を越えてデータ転送を拡散することは、総スループットを一般的に増加させ、新たな各接続を追加することは、受信者ウィンドウ及び輻輳ウィンドウの両者の総サイズを増加させ、各ラウンドトリップ間隔中により多くのデータを配信可能にする。長距離経由の大きなデータファイルの転送速度は、接続パイプの少なくとも1つのセグメントが輻輳するまで、又はサーバ及びクライアントのコンピュータのリソース(メモリ、CPU負荷、入出力容量)が過負荷(overstrain)になるまで、同時接続の数と共に増加する。
したがって、制限されたサイズのデータファイルのバーストを含む、実際のシナリオのために、多数の同時接続経由のデータ転送の速度を増加させる必要がある。
発明の一側面において、総スループットを増加させる方法は、コンピュータネットワーク経由で第1のコンピュータと第2のコンピュータとの間に複数の同時トランスポート接続を確立することを含む。方法は、リクエストの2つ以上のグループの内の第1のグループがリクエストの2つ以上のグループの内の第2のグループよりも前に終了せざるを得ないように、第1のコンピュータとの複数の同時トランスポート接続を通じた第2のコンピュータへのデータ配信に対するリクエストの2つ以上のグループを第2のコンピュータから第1のコンピュータによって受信することを更に含む。第1のコンピュータは、リクエストの第1のグループのデータ配信に対する各リクエストに対応するリクエストされたデータの配信が終了したか否かを判定する。終了したと判定した場合、リクエストの第1のグループのデータ配信に対する各リクエストに対応するリクエストされたデータを配信するために使用される同時トランスポート接続の数が、リクエストの第2のグループのデータ配信に対する各リクエストに対応するリクエストされたデータを配信するために使用される複数の同時トランスポート接続の数とは異なるように設定されるように、第1のコンピュータは、リクエストの第2のグループのデータ配信に対する各リクエストに対応するリクエストされたデータを第1のコンピュータへ配信するために使用される複数の同時トランスポート接続の数を設定する。
幾つかの実施形態では、複数の同時トランスポート接続の内の各トランスポート接続は、リクエストの第1及び第2のグループのデータ配信に対する各リクエストに対応するリクエストされたデータの配信を確認するための1つ以上の肯定的応答(acknowledgement)を生成することを含むトランスポートプロトコルを使用する。方法は、同じグループ中の各リクエストに対応するリクエストされたデータが配信されたことの1つ以上の肯定的応答を受信することに応じて、リクエストの2つ以上のグループの内の同じグループのデータ配信に対する各リクエストに対応するリクエストされたデータの配信が終了したことを判定することを更に含み得る。
幾つかの実施形態では、複数の同時トランスポート接続の内の各トランスポート接続はトランスポートコントロールプロトコル(TCP)を使用する。
幾つかの実施形態では、方法は、第1のコンピュータと第2のコンピュータとの間の複数の同時トランスポート接続を確立するようにプログラムされたトラフィック分散モジュールを第1及び第2のコンピュータにより実行することを更に含む。方法は、第2のコンピュータと第1のコンピュータとの間に開通された複数の同時トランスポート接続を通じてリクエストの2つ以上のグループの内の各グループの各リクエストに対応するリクエストされたデータをリクエスト及び受信するための1つ以上のクライアントトランスポート接続をクライアントコンピュータにより開通することを含み得る。クライアントは、第1のコンピュータと第2のコンピュータとの間の複数の同時トランスポート接続を不通にさせることなく、クライアントトランスポート接続を不通にし得る。方法は、クライアントコンピュータが1つ以上のクライアントトランスポート接続を不通にしたことを判定することにより、リクエストの2つ以上のグループの内の同じグループのデータ配信に対する各リクエストに対応するリクエストされたデータの配信が終了したことを判定することを更に含み得る。クライアントコンピュータは、第2のコンピュータであり得る。
幾つかの実施形態では、第2のコンピュータは、クライアントトランスポート接続を終端するようにプログラムされたプロキシを務める。幾つかの実施形態では、複数の同時トランスポート接続の内の少なくとも2つは、同じ物理的データリンクを経由して開通される。幾つかの実施形態では、複数の同時トランスポート接続の内の少なくとも2つは、同じ送信元ネットワークアドレス及び宛先ネットワークアドレスを有する。
幾つかの実施形態では、方法は、リクエストの2つ以上のグループの内の少なくとも1つのグループに対するデータ配信の見積もりサイズを、第1のコンピュータ及び第2のコンピュータの内の1つにより判定することと、リクエストの同じグループのリクエストに対応するリクエストされたデータを搬送するために使用される同時トランスポート接続の数が見積もりサイズの増加と共に増加するように、リクエストの2つ以上のグループの内のリクエストの同じグループのリクエストに対応するリクエストされたデータを搬送するために使用される同時トランスポート接続の数を、第1のコンピュータ及び第2のコンピュータの内の1つにより設定することとを含む。
幾つかの実施形態では、見積もりサイズは、リクエストの同じグループのリクエストから1つ以上のネットワーク識別子を取得することによって判定され、各識別子は、ドメイン名及び宛先ネットワークアドレスの内の少なくとも1つを含む。
幾つかの実施形態では、複数の同時トランスポート接続の内の各々は、トラフィックに含まれる少なくとも幾つかのデータが配信されたことの肯定的応答を受信する前に送信され得るトラフィックの量を制限する制御ウィンドウと関連付けられる。方法は、複数の同時トランスポート接続の1つ以上の制御ウィンドウの見積もりサイズを、第1のコンピュータ及び第2のコンピュータの内の1つにより判定することと、1つ以上の制御ウィンドウの見積もりサイズの増加と共に、リクエストの2つ以上のグループの内のリクエストの同じグループに対応するリクエストされたデータの配信に使用される複数の同時トランスポート接続の数を、第1及び第2のコンピュータの内の1つにより減少させることとを更に含み得る。幾つかの実施形態では、制御ウィンドウは、トランスポートプロトコルにより使用される受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。
幾つかの実施形態では、方法は、リクエストの第1のグループの各リクエストに対応するリクエストされたデータの配信を完了した後で、且つリクエストの第2のグループを受信する前に、第2のグループのデータ配信に対する各リクエストに対応するリクエストされたデータを配信するために使用される複数の同時トランスポート接続の数を変更することを含む。
幾つかの実施形態では、リクエストの第2のグループの各リクエストに対応するリクエストされたデータを配信するために使用される複数の同時トランスポート接続の数は、リクエストの第1のグループに対応するリクエストされたデータの配信に続いて、予め定義された時間間隔を越える不活動期間があった後で、且つリクエストの第2のグループが提示される前に減少させられる。
幾つかの実施形態では、方法は、既存の接続を不通にする、又は新たな接続を開通することなく、以前に開通された1つ以上の同時接続を通じて、リクエストの同じグループに対応するリクエストされたデータの内の少なくとも幾つかの配信を一時休止すること又は再開することの内の少なくとも1つによって、2つ以上のリクエストの内のリクエストの同じグループに対応するリクエストされたデータを配信するために使用される複数の同時接続の数を変更することを含む。
幾つかの実施形態では、方法は、第2のコンピュータから第1のコンピュータへのデータ転送に使用される複数の同時トランスポート接続の数とは異なるように、第1のコンピュータから第2のコンピュータへのデータ転送に使用される複数の同時トランスポート接続の数を設定することを含む。
幾つかの実施形態では、第2のコンピュータから第1のコンピュータへのデータ転送に使用される複数の同時トランスポート接続の数を一定に維持しながら、第1のコンピュータから第2のコンピュータへのデータ転送に使用される複数の同時トランスポート接続の数を変更する。
幾つかの実施形態では、第1のコンピュータは、プロキシサーバ及びVPNサーバの内の少なくとも1つを含む。
発明の別の側面は、コンピュータネットワーク経由のコンピュータ間の総スループットを増加させるためのシステムを含む。該システムは、
第1のコンピュータと第2のコンピュータとの間の複数の同時トランスポート接続を通じた第2のコンピュータへのデータ配信に対する1つ以上のリクエストのグループを受信することと、
1つ以上のリクエストの内の各リクエストに対応するリクエストされたデータの配信が、1つ以上のリクエストの内の後続のリクエストに対応するリクエストされたデータの配信の前に終了しなければならないように、複数の同時トランスポート接続の内の少なくとも一部を通じて、データ配信に対する1つ以上のリクエストに対応するリクエストされたデータを配信することと、
1つ以上のリクエストが第1のコンピュータにより受信された後であるが、該1つ以上のリクエストに対応するリクエストされたデータの配信の前に、利用数が変更されるように、1つ以上のリクエストに対応するリクエストされたデータの配信に使用される複数の同時トランスポート接続の利用数を変更することと
をするようにプログラムされた1つ以上の処理デバイスを含む第1のコンピュータを含む。
幾つかの実施形態では、1つ以上の処理デバイスは、
データ配信に対する1つ以上のリクエストに対応するリクエストされたデータの配信中に、(a)配信される1つ以上のリクエストに対応するリクエストされたデータのデータ残量と、(b)配信に使用される複数の同時トランスポート接続の内の少なくとも1つのトランスポート接続を通じたデータ転送のパラメータとの内の少なくとも1つに従って、少なくとも1つの見積もり値を生成することと、
少なくとも1つの見積もり値の変更に従って利用数を変更することと
をするように更にプログラムされる。
幾つかの実施形態では、1つ以上の処理デバイスは、データ残量の減少と共に利用数を減少させるように更にプログラムされる。幾つかの実施形態では、1つ以上の処理デバイスは、第2のコンピュータへ送信される前に第1のコンピュータ上の1つ以上のバッファ中に格納された1つ以上のリクエストに対応するリクエストされたデータの量に従って、データ残量を見積もるように更にプログラムされる。
幾つかの実施形態では、第1のコンピュータは、プロキシサーバ及びVPNサーバの内の少なくとも1つを含み、該バッファは、一時的なデータ格納のためにプロキシ又はVPNサーバにより使用されるバッファである。
幾つかの実施形態では、少なくとも1つのトランスポート接続を通じたデータ転送のパラメータは、トラフィックの内の少なくとも幾つかが配信されたことの肯定的応答を受信する前に送信し得るトラフィックの量を制限する制御ウィンドウのサイズである。1つ以上の処理デバイスは、複数の同時トランスポート接続の内の1つ以上のトランスポート接続の制御ウィンドウのサイズの増加と共に利用数を減少させるように更にプログラムされ得る。
幾つかの実施形態では、少なくとも1つのトランスポート接続を通じたデータ転送のパラメータは、少なくとも1つのトランスポート接続経由のデータロスの比率である。1つ以上の処理デバイスは、少なくとも1つのトランスポート接続経由のデータロスの比率の増加と共に利用数を増加させるように更にプログラムされ得る。
幾つかの実施形態では、1つ以上の処理デバイスは、複数の同時トランスポート接続の内の何れかを不通にすること、又は新たなトランスポート接続を開通することなく、複数の同時トランスポート接続の内の少なくとも一部を通じて、リクエストされたデータの内の少なくも幾つかの配信を一時休止すること及び再開することの内の1つによって、1つ以上のリクエストのグループを受信した後に利用数を変更するように更にプログラムされる。
幾つかの実施形態では、利用数は第1の利用数を含み、1つ以上の処理デバイスは、第2のコンピュータから第1のコンピュータへのデータ転送に使用される複数の同時トランスポート接続の第2の利用数とは無関係に第1の利用数を変更するように更にプログラムされる。
幾つかの実施形態では、1つ以上の処理デバイスは、第2の利用数を一定に維持しながら、第1の利用数のみを変更するように更にプログラムされる。
幾つかの実施形態では、複数の同時トランスポート接続の内の少なくとも2つのトランスポート接続は、単一の物理的データリンクを経由して開通される。幾つかの実施形態では、1つ以上の処理デバイスは、単一の物理的データリンクを経由して開通された少なくとも2つのトランスポート接続の数を変更することによって、利用数を変更するように更にプログラムされる。
発明の一側面において、コンピュータネットワーク経由のコンピュータ間の多数の同時トランスポート接続の総スループットを増加させるための方法を含む。該方法は、
第2のコンピュータへの第1の複数の同時トランスポート接続と、第3のコンピュータへの第2の複数の同時トランスポート接続とを第1のコンピュータにより維持することと、
第2のコンピュータとの第1の複数の同時トランスポート接続を経由した第2のコンピュータへのデータ配信に対する1つ以上のリクエストの第1のグループを第1のコンピュータにより受信することと、
第2のコンピュータへ後続のリクエストに対応するデータを配信する前に、1つ以上のリクエストの第1のグループの各リクエストに対応するデータの配信が終了しなければならないように、1つ以上のリクエストの第1のグループに対応するリクエストされたデータを第1のコンピュータにより配信することと、
第3のコンピュータとの第2の複数の同時トランスポート接続を経由した第3のコンピュータへのデータ配信に対する1つ以上のリクエストの第2のグループを第1のコンピュータにより受信することと、
第3のコンピュータへ後続のリクエストに対応するデータを配信する前に、1つ以上のリクエストの第2のグループの各リクエストに対応するデータの配信が終了しなければならないように、1つ以上のリクエストの第2のグループに対応するリクエストされたデータを第1のコンピュータにより配信することと、
1つ以上のリクエストの第1のグループに対応するリクエストされたデータを配信するために使用される第1の複数の同時トランスポート接続の第1の数を第1のコンピュータにより設定することと、
1つ以上のリクエストの第2のグループに対応するリクエストされたデータを配信するために使用される第2の複数の同時トランスポート接続の第2の数を第1のコンピュータにより設定することと、
第1の複数の同時トランスポート接続の1つ以上の第1のパラメータと第2の複数の同時トランスポート接続の1つ以上の第2のパラメータとの間の相違を第1のコンピュータにより検出することと、
1つ以上の第1のパラメータと1つ以上の第2のパラメータとの相違に従って、第1の数及び第2の数を異なるように第1のコンピュータにより設定することと
を含み得る。
幾つかの実施形態では、1つ以上の第1のパラメータと1つ以上の第2のパラメータとの相違を検出することは、第1のコンピュータから第2のコンピュータまでの距離及び第1のコンピュータから第3のコンピュータまでの距離、第1のコンピュータと第2のコンピュータとの間のラウンドトリップタイム及び第1のコンピュータと第3のコンピュータとの間のラウンドトリップタイム、並びに第1のコンピュータと第2のコンピュータとを接続するネットワークの品質及び第1のコンピュータと第3のコンピュータとを接続するネットワークの品質の内の少なくとも1つの相違を検出することを含む。
幾つかの実施形態では、第1の数を設定することは、第1のコンピュータと第2のコンピュータとの間の距離、及び第1のコンピュータと第2のコンピュータとの間のラウンドトリップタイム、の増加の内の少なくとも1つと共に第1の数を増加させることを含む。幾つかの実施形態では、第2の数を設定することは、第1のコンピュータと第3のコンピュータとの間の距離、及び第1のコンピュータと第3のコンピュータとの間のラウンドトリップタイム、の増加の内の少なくとも1つと共に第2の数を増加させることを含む。
幾つかの実施形態では、第1の数を設定することは、第1のコンピュータと第3のコンピュータとを接続するネットワークの品質と比較した、第1のコンピュータと第2のコンピュータとを接続するネットワークの品質の増加と共に第1の数を減少させることを含む。幾つかの実施形態では、第1の数を設定することは、第1の複数の同時トランスポート接続経由のデータロスの比率の減少と共に第1の数を減少させることを含み、幾つかの実施形態では、第2の数を設定することは、第2の複数の同時トランスポート接続経由のデータロスの比率の減少と共に第2の数を減少させることを含む。
幾つかの実施形態では、第1の複数のトランスポート接続及び第2の複数のトランスポート接続の内の各々は、トラフィックの内の少なくも幾つかの肯定的応答が受信される前に送信され得るトラフィックの量を制限する制御ウィンドウを定義するトランスポートプロトコルを実装する。第1の数を設定することは、第1の複数のトランスポート接続に対する制御ウィンドウのサイズの増加と共に第1の数を減少させることを含み得る。第2の数を設定することは、第2の複数のトランスポート接続に対する制御ウィンドウのサイズの増加と共に第2の数を減少させることを含み得る。
幾つかの実施形態では、トランスポートプロトコルはトランスポートコントロールプロトコル(TCP)であり、制御ウィンドウは、受信者ウィンドウ及び輻輳ウィンドウの内のより小さいものである。
発明の利点が容易に理解されるように、簡単に上述された発明のより具体的な説明は、添付の図面で説明される特定の実施形態を参照しながら与えられるであろう。これらの図面は、発明の典型的な実施形態のみを説明し、それ故、その範囲を制限するものと考えるべきではないことが理解され、発明は、添付の図面の使用を通じて付加的な特殊性と詳細が記述及び説明されるであろう。
本発明の実施形態に従った、多数の同時トランスポート接続を通じてデータを転送することによりスループットを増加させるために使用され得る第1のネットワーク環境の概略的ブロック図である。
本発明の実施形態に従った、本発明の実施形態に従って同時トランスポート接続の数を変更するために使用される第2のネットワーク環境の概略的ブロック図である。
本発明の実施形態に従った、同時トランスポート接続の数を変更するために使用される第3のネットワーク環境の概略的ブロック図である。
本発明の実施形態により実現され得るスループットの改善を説明するグラフである。
本発明の実施形態により実現され得るスループットの改善を説明するグラフである。
本発明の実施形態に従った、同時トランスポート接続の数を変更する方法の処理フロー図である。
本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するために使用される第4のネットワーク環境の図である。
本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するための方法の処理フロー図である。
本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するために使用される第5のネットワーク環境の概略的ブロック図である。
本発明の実施形態に従った、同時トランスポート接続を通じたトラフィック分散を改善するために使用される第6のネットワーク環境の概略的ブロック図である。
本明細書に開示されるシステム及び方法を実装するのに適するコンピュータの概略的ブロック図である。
本発明の図中に概して記述及び説明されるような発明のコンポーネントは、多種多様な異なる構成で配置及び設計され得ることは容易に理解されるであろう。したがって、図に表されるような以下の発明の実施形態のより詳細な説明は、請求されるような発明の範囲を制限することを意図せず、発明に従ってここで考慮される実施形態の幾つかの例を表すにすぎない。ここで記述される実施形態は、全体を通して同様の部分が同様の数字により指し示される図面を参照することによって最も理解されるであろう。
発明に従った実施形態は、装置、方法、又はコンピュータプログラム製品として具体化され得る。したがって、発明は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又は“モジュール”若しくは“システム”として本明細書で概して全て称され得るソフトウェア及びハードウェアの側面の組み合わせの実施形態の形式を取り得る。更に、発明は、媒体中に具体化されたコンピュータ使用可能なプログラムコードを有する表現の任意の有形媒体中に具体化されたコンピュータプログラム製品の形式を取り得る。
1つ以上のコンピュータ使用可能な又はコンピュータ可読の媒体の任意の組み合わせが利用され得る。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)デバイス、リードオンリメモリ(ROM)デバイス、消去可能プログラム可能リードオンリメモリ(EPROM若しくはフラッシュメモリ)デバイス、ポータブルコンパクトディスクリードオンリメモリ(CDROM)、光ストレージデバイス、及び磁気ストレージデバイスの内の1つ以上を含み得る。選りすぐりの実施形態では、コンピュータ可読媒体は、命令実行システム、装置、又はデバイスにより、又はそれらと接続して使用するためのプログラムを含み得、格納し得、通信し得、伝搬し得、又は搬送し得る任意の非一時的媒体を含み得る。
発明の動作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、若しくはC++等のオブジェクト指向プログラミング言語、及び“C”プログラミング言語若しくは同様のプログラミング言語等の従来の手続型プログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書き込まれ得、HTML、XML、及びJSON等の記述型言語又はマークアップ言語をも使用し得る。プログラムコードは、スタンドアローンなソフトウェアパッケージとしてコンピュータシステム上で全体的に、スタンドアローンなハードウェアユニット上で、コンピュータから幾らか離間したリモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で全体的に、実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)若しくは広域エリアネットワーク(WAN)を含む任意の種類のネットワークを通じてコンピュータに接続され得、或いは、該接続は、(例えば、インターネットサービスプロバイダを使用するインターネットを通じて)外部のコンピュータに作り出され得る。コンピュータネットワークは、インターネットプロトコル以外のトランスポートプロトコルを使用し得る。それに応じて、本発明は、IPアドレス以外の種類のネットワークアドレス用に実装され得る。
発明は、発明の実施形態に従った方法、装置(システム)、及びコンピュータプログラム製品のフローチャートの説明及び/又はブロック図を参照しながら以下に記述される。フローチャートの説明及び/又はブロック図の各ブロック、並びにフローチャートの説明及び/又はブロック図中のブロックの組み合わせは、コンピュータプログラム命令又はコードにより実装され得ることは理解されるであろう。これらのコンピュータプログラム命令は、コンピュータ又はその他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャート及び/又はブロック図の1つ以上のブロック中に指定された機能/作用を実装するための手段を作り出すようにマシンを生み出すための汎用コンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッサに提供され得る。
これらのコンピュータプログラム命令は、フローチャート及び/又はブロック図の1つ以上のブロック中で指定された機能/作用を実装する命令手段を含む製品をコンピュータ可読媒体中に格納された命令が生み出すように、コンピュータ又はその他のプログラム可能データ処理装置を特定の方法で機能させるように指示し得る非一時的コンピュータ可読媒体中にも格納され得る。
コンピュータプログラム命令は、コンピュータ又はその他のプログラム可能装置上で実行する命令が、フローチャート及び/又はブロック図の1つ以上のブロック中で指定された機能/作用を実装するためのプロセスを提供するようなコンピュータ実装プロセスを、コンピュータ又はその他のプログラム可能装置上で実行される一連の動作可能なステップに生み出させるために、コンピュータ又はその他のプログラム可能データ処理装置上にもロードされ得る。
十分な帯域幅の容量がある(輻輳が発生しない)場合、長距離を経由する同時接続の数は、一般的に、サーバ及びクライアントのコンピュータのリソースを圧倒することなく維持され得る最大値に予め設定される。しかしながら、典型的なコンピュータネットワークを経由して転送されるデータファイルの多くは、比較的小さいサイズを有する。そうした転送は、爆発的にしばしば発生するが、不活動期間が続く(例えば、ウェブサイトのダウンロード)。同時接続の数を増加させることは、輻輳が存在しない場合でも、そうした制限されたデータ転送に対して効果が小さくなり得る。本明細書に開示される実施形態は、データの転送に使用される同時接続の数を設定するためのアプローチの改善を提供する。
発明の一側面において、第1のコンピュータは、第1のコンピュータとの複数の同時トランスポート接続を通じた第2のコンピュータへのデータ配信に対するリクエストの2つ以上のグループを受信し、ここで、リクエストされた配信の第1のグループは、リクエストの第2のグループを提示する前に終了しなければならない。幾つかの実施形態では、第1のコンピュータは、リクエストされたデータの配信が終了したことを判定するための手段と、リクエストされたデータを第1のコンピュータへ配信するために使用される同時接続の数を設定するための手段と、リクエストされたデータの第2のグループを配信するために使用される同時接続の数とは異なる、リクエストされたデータの第1のグループを配信するために使用される同時接続の数を設定するための手段とを含む。
幾つかの実施形態では、2つ以上の同時トランスポート接続の内の各々は、データ配信を確認するための肯定的応答を生成するトランスポートプロトコルを使用し、リクエストされたデータの配信は、リクエストされたデータが配信されたことの肯定的応答を受信した後に終了したと判定される。幾つかの例では、このプロトコルはトランスポートコントロールプロトコル(TCP)である。
本発明の実施形態では、第1及び第2のコンピュータは、これらのコンピュータ間に多数の同時接続を確立可能なトラフィック分散モジュールを含み、データ配信リクエストは、第2のコンピュータと第1のコンピュータとの間の同時接続を通じてデータをリクエスト及び受信するための1つ以上のトランスポート接続を開通するクライアントコンピュータにより生成される。この実施形態に従うと、リクエストされたデータの配信は、データをリクエスト及び受信するために開通されたその接続をクライアントコンピュータが不通にした後に終了したと判定される。幾つかの例では、クライアントコンピュータは第2のコンピュータである。1つ以上の例では、第2のコンピュータは、クライアントコンピュータにより開通されたトランスポート接続の終端を可能にするプロキシを含む。
幾つかの実施形態では、同時トランスポート接続の内の少なくとも2つは、同じ物理的データリンクを経由して開通される。幾つかの例では、これらの接続は、同じ送信元ネットワークアドレス及び宛先ネットワークアドレスを共有する。
幾つかの実施形態では、第1のコンピュータは、第1又は第2のデータ配信の内の少なくとも1つのサイズの見積もりを取得し、見積もりサイズの増加と共に、対応する配信に使用される同時ネットワーク接続の数を増加させる。幾つかの例では、データ配信のサイズは、1つ以上のネットワーク識別子をリクエストの第1のグループから取得することにより見積もられ、各識別子は、ドメイン名及び宛先ネットワークアドレスの内の少なくとも1つを含む。
別の実施形態では、同時に開通された1つ以上の接続の内の各々が、少なくとも幾つかのデータが配信されたことの肯定的応答を受信する前に送信され得るトラフィックの量を制限する制御ウィンドウと関連付けられる場合に、第1のコンピュータは、1つ以上の制御ウィンドウの見積もりサイズを取得し、該サイズの増加と共に、データ配信に使用される同時ネットワーク接続の数を減少させる。幾つかの例では、制御ウィンドウは、トランスポートプロトコルにより使用される受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。
幾つかの実施形態では、データ配信に使用される同時接続の数は、リクエストされたデータの第1のグループの配信を終了した後で、且つリクエストの第2のグループが提示される前に変更される。幾つかの例では、データ配信に使用される同時接続の数は、リクエストされた第1のデータの配信に続いて予め定義された時間間隔を越える不活動期間があった後で、且つデータリクエストの第2のグループが提示される前に減少させられる。
他の実施形態では、データ配信に使用される同時接続の数は、既存の接続を不通にすること、又は新たな接続を開通することなく、以前に開通された1つ以上の同時接続を通じて、少なくとも幾つかのリクエストされたデータの配信を一時休止又は再開することによって変更される。幾つかの例では、第1のサーバから第2のサーバへのデータ転送に使用される同時接続の数は、第2のサーバから第1のサーバへのデータ転送に使用される同時接続の数とは異なるように変更される。幾つかの実装では、第2のサーバから第1のサーバへのデータ転送に使用される同時接続の数が同じ数に維持されながら、第1のサーバから第2のサーバへのデータ転送に使用される同時接続の数のみが変更される。
幾つかの実施形態では、第1のコンピュータは、プロキシサーバ及びVPNサーバの内の少なくとも1つを含む。
本発明の一側面において、第1のコンピュータは、複数の同時トランスポート接続を通じた第2のコンピュータへのデータ配信に対する1つ以上のリクエストのグループを受信し、リクエストされたデータの配信は、少なくとも1つの他のリクエストを提示する前に終了しなければならない。第1のコンピュータは、リクエストされたデータの配信を開始し、リクエストされたデータの配信が終了する前に、データ配信に使用される同時接続の数をその後変更する。
幾つかの実施形態では、第1のコンピュータは、配信されるデータの残量の内の少なくも1つと、該配信に使用される同時トランスポート接続の内の少なくも1つを通じたデータ転送の少なくとも1つのパラメータとの見積もりを取得し、見積もり値の変更と共に、同時接続の数をその後変更する。幾つかの例では、第1のコンピュータは、データの残量を配信するために使用される同時接続の数を、この量の減少と共に減少させる。幾つかの例では、配信されるデータの残量は、第2のコンピュータへ送信される前に第1のコンピュータ上の1つ以上のバッファ中に格納された、リクエストされたデータの量から見積もられる。幾つかの実装では、第1のコンピュータは、プロキシ及びVPNサーバの内の少なくとも1つを含み、上記バッファは、一時的なデータ格納のためにプロキシ又はVPNサーバにより使用される。
別の例では、トランスポート接続を通じたデータ転送のパラメータの内の少なくも1つは、少なくとも幾つかのデータが配信されたことの肯定的応答を受信する前に送信され得るトラフィックの量を制限する制御ウィンドウであり、残部のデータを配信するために使用される同時接続の数は、これらのウィンドウの内の1つ以上のサイズの増加と共に減少させられる。
幾つかの例では、トランスポート接続を通じたデータ転送のパラメータの内の少なくも1つは、該接続を経由したデータロスの量であり、残部のデータを配信するために使用される同時接続の数は、1つ以上のトランスポート接続を経由したデータロスの比率と共に増加させられる。
幾つかの実施形態では、データ配信に使用される同時接続の数は、既存の接続を不通にすること、又は新たな接続を開通することなく、以前に開通された1つ以上の同時接続を通じてデータ配信を一時休止又は再開することによって、リクエストのグループが提示された後に変更される。幾つかの例では、第1のサーバから第2のサーバへのデータ転送に使用される同時接続の数は、第2のサーバから第1のサーバへのデータ転送に使用される同時接続の数とは異なるように変更される。幾つかの実装では、第2のサーバから第1のサーバへのデータ転送に使用される同時接続の数を同じ数に維持しながら、第1のサーバから第2のサーバへのデータ転送に使用される同時接続の数のみが変更される。
幾つかの実施形態では、同時トランスポート接続の内の少なくとも2つは、同じ物理的データリンクを経由して開通され、使用される同時接続の数を変更することは、該データリンクを経由したデータ配信に使用される同時接続の数を変更することを含む。
本発明の別の側面において、第1のコンピュータは、第1のコンピュータとの複数の同時トランスポート接続を通じた第2のコンピュータへのデータ配信に対するリクエストの2つ以上のグループを受信し、ここで、リクエストされた配信の第1のグループは、リクエストの第2のグループを提示する前に終了しなければならない。第1のコンピュータは、第1のコンピュータとの複数の同時トランスポート接続を通じた第3のコンピュータへのデータ配信に対するリクエストの2つ以上のグループをも受信し、ここで、リクエストされた配信の第1のグループは、リクエストの第2のグループを提示する前に終了しなければならない。この側面では、第1のコンピュータから第2のコンピュータへの接続の1つ以上のパラメータと第1のコンピュータから第3のコンピュータへの接続の1つ以上のパラメータとの間に相違がある場合、第1のコンピュータは、第3のコンピュータへの同時接続の数とは異なる第2のコンピュータへの同時接続の数を使用する。
幾つかの実施形態では、これは、第1のコンピュータからの距離、ラウンドトリップタイム、及びネットワークの品質の内の少なくとも1つの相違である。幾つかの例では、同時に使用される接続の数は、第1のコンピュータへの距離の増加と共に、又は第1のコンピュータへのラウンドトリップタイムの増加と共に増加させられる。別の例では、同時に使用される接続の数は、第3のコンピュータと第1のコンピュータとの間のネットワークの品質と比較した、第2のコンピュータと第1のコンピュータとの間のネットワークの品質の増加と共に減少させられる。他の例では、同時に使用される接続の数は、1つ以上のトランスポート接続を経由したデータロスの比率の減少と共に減少させられる。
幾つかの実装では、1つ以上のトランスポート接続は、送信されたデータの内の少なくも幾つかに対する肯定的応答を受信する前に送信され得るデータの量を制限するための制御ウィンドウを設定するトランスポートプロトコルを使用し、同時に使用される接続の数は、制御ウィンドウの内の1つ以上のサイズの増加と共に減少させられる。幾つかの実施形態では、トランスポートプロトコルはトランスポートコントロールプロトコル(TCP)であり、制御ウィンドウは、受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。
本発明の一側面において、コンピュータネットワーク経由のコンピュータ間の多数の同時トランスポート接続の総スループットを増加させるためのシステムは、第1のコンピュータと第2のコンピュータとの間の複数の同時トランスポート接続を通じた第1のコンピュータから第2のコンピュータへの転送に対する1つ以上のリクエストを受信し、リクエストされたデータを取得することが可能なトラフィック管理モジュールであって、ここで、リクエストされたデータの転送は、第2のコンピュータから少なくとも1つの他のリクエストを受信する前に終了しなければならい、トラフィック管理モジュールと、リクエストされたデータを2つ以上のグループ中に分割し、該データグループの内の2つ以上を異なるトランスポート接続へ送付することが可能なトラフィック分散モジュールと、使用される1つ以上の接続に対するデータグループサイズの所望範囲を取得し、使用される1つ以上の接続に対するデータグループサイズを所望範囲内で設定することが可能なトラフィック調整モジュールとを含む。
幾つかの実施形態では、リクエストされたデータの配信が完了するまで、又は使用されるトランスポート接続の数が利用可能な接続の最大数に到達するまで、トラフィック分散モジュールは各データグループを異なるトランスポート接続へ送付する一方で、トラフィック調整モジュールは、利用可能なトランスポート接続の最大数を取得し、使用される各接続に対するデータグループサイズを設定し、これにより、リクエストされた配信のサイズが、利用可能な接続に対する所望のグループサイズの和を下回る場合に、利用可能な接続の最大数よりも少ない数のトランスポート接続を使用する。幾つかの例では、利用可能なトランスポート接続の最大数は、第1のコンピュータと第2のコンピュータとの間で現在開通されている同時接続の数に設定され、現在開通されている接続の内の少なくも1つは、リクエストされたデータの配信に使用されない。幾つかの実装では、使用されるトランスポート接続の数は、第2のコンピュータへ配信されるデータの量の増加と共に増加する。
別の実施形態では、トラフィック分散モジュールは、少なくとも2つの異なるリクエストに応じて受信されたデータを1つ以上の一時的バッファから取得し、同じリクエストに応じて取得されたデータのみを含む少なくとも1つのデータグループを形成し、該データグループを単一のトランスポート接続にその後分散する。幾つかの実装では、単一のリクエストに応じて単一の接続へ送信されるデータグループは、順序付けられた順番で提供される。幾つかの実施形態では、トラフィック分散モジュールは、異なるトランスポート接続へ送信されるデータグループにヘッダを付加し、少なくとも1つのヘッダは、単一のリクエストに対応するデータの識別子とデータグループのサイズとを含む。幾つかの例では、1つ以上のデータグループは、ハイバーテキストトランスポートプロトコル(HTTP)バージョン2以上に従ってフォーマット化される。
別の実施形態では、リクエストされた全てのデータが同時トランスポート接続へ送付されるまで、各データグループは、次のデータグループが次のトランスポート接続へ送付される前に1つのトランスポート接続へ送付される。
他の実施形態では、データグループサイズの所望範囲は、同時に使用される少なくとも2つの異なる接続に対して異なるように設定される。
更に別の実施形態では、1つ以上のトランスポート接続は、送信されたデータの内の少なくも幾つかに対する肯定的応答を受信する前に送信され得るデータの量を制限するための制御ウィンドウを設定するトランスポートプロトコルを使用し、所望のデータグループサイズの範囲は、制御ウィンドウの内の1つ以上のサイズの増加と共に増加する。幾つかの例では、トランスポートプロトコルはトランスポートコントロールプロトコル(TCP)であり、制御ウィンドウは、受信者ウィンドウ及び輻輳ウィンドウの内の最小のものである。別の例では、少なくとも1つの接続に対する所望範囲の最大値は、該接続に対する制御ウィンドウのサイズ以下であるように設定される。他の例では、少なくとも1つの接続に対する所望範囲の最小値は、該接続に対する制御ウィンドウのサイズの半分よりも大きいように設定される。
他の実施形態では、1つ以上のトランスポート接続は、以前に送信された少なくとも幾つかのデータの肯定的応答を受信することなく接続を通じて送信され得るデータの量を制限するトランスポートプロトコルを使用し、所望のデータサイズの範囲は、以前に送信されたデータに対する肯定的応答を受信する前に少なくとも1つの接続を通じてデータのグループを送信するように設定される。
他の実施形態では、所望のデータサイズの範囲は、第1のコンピュータと第2のコンピュータとの間の1ラウンドトリップの時間中に少なくとも1つの接続を通じてデータのグループを送信するように設定される。
別の実施形態では、同時トランスポート接続の内の少なくとも2つは、同じ物理的データリンクを経由して開通される。幾つかの例では、同時トランスポート接続の少なくとも2つは、同じ送信元ネットワークアドレス及び宛先ネットワークアドレスを有する。
幾つかの実施形態では、トラフィック管理モジュールは、プロキシ及びVPNの内の少なくとも1つを含む。
本発明の別の側面において、コンピュータネットワーク経由のコンピュータ間の多数の同時トランスポート接続の総スループットを増加させるためのシステムは、少なくともトラフィック管理モジュール及びトラフィック分散モジュールを含む。トラフィック管理モジュールは、同時に開通された複数の接続を経由した第1のコンピュータから第2のコンピュータへのデータ転送に対する2つ以上のリクエストを受信し、2つの異なるリクエストに応じてデータを取得し、異なるリクエストへの応答を含む2つ以上のデータフレームをその後形成し、各データフレームは、単一のリクエストに対応するデータを含む。トラフィック分散モジュールは、データフレームを2つ以上の異なるトランスポート接続へ送付し、少なくとも2つのデータフレームの各々は、単一のトランスポート接続に送付され、それにより、各トランスポート接続を通じて少なくとも1つのデータフレームを転送する。
幾つかの実施形態では、トラフィック管理モジュールは、2つ以上のデータフレームを同じキュー中に多重化し、一連の2つ以上のデータフレームを格納し、その後トラフィック分散モジュールは、同じキューからの少なくとも2つのデータフレームの各々を、それらを別個のトランスポート接続へ送付する前に取得する。
他の実施形態では、使用されるトランスポート接続の数は、第2のコンピュータへ配信されるリクエストされたデータの量の増加と共に増加する。
別の実施形態では、リクエストされたデータは、データ配信に対する少なくとも1つの他のリクエストを受信する前に、同時トランスポート接続を経由して配信されなければならず、1つ以上のデータフレームのサイズは、配信されなければならないデータの残量の減少と共に増加させられる。
他の実施形態では、1つ以上のデータフレームのサイズは、第1のコンピュータと第2のコンピュータとの間の1つ以上のトランスポート接続のスループットの増加と共に増加させられる。幾つかの例では、スループットの増加は、パケットロス率の減少、及び使用される1つ以上のトランスポート接続から、以前に送信されたデータに対する肯定的応答を受信する前に送信可能なデータの量の増加の内の少なくとも1つの検出により判定される。
図1は、本発明の例示的実装を説明する。クライアントコンピュータ110は、データ配信に対するリクエストの2つ以上のグループを近傍のプロキシ又はVPN120を通じて遠方のプロキシ又はVPN170へ発行し、遠方のプロキシ又はVPN170は、高帯域パイプ180を通じてコンテンツプロバイダ190へ該リクエストを通過させる。提示される例では、近傍のプロキシ又はVPN120は、遠方のプロキシ又はVPN170から非常に長距離に配置され、2つのコンピュータ間のパケットロスの比率を増加させる。これらのロスがスループットを低下させることを阻止するために、近傍のプロキシ又はVPN120は、近傍のマルチパストランスポートマネージャ130と結合され得る。遠方のプロキシ又はVPN170も遠方のマルチパストランスポートマネージャ160と結合され得、近傍のトランスポートマネージャと遠方のトランスポートマネージャとの間のトラフィックは、多数の同時接続140、150を通じて分散される。
説明される実施形態では、トランスポート接続150は、開通を維持されるが、リクエストされたデータを搬送するために使用されない一方で、同時トランスポート接続140は、リクエストされたデータを搬送するために使用される。このことは、新たな接続を開通するため、又は古い接続を不通にするために時間を費やすことなく、使用される接続140の数の変更を増加又は減少させることを可能にする。別の実施形態では、トランスポート接続は、データ転送に直ちに使用すること又は使用しないことに伴い、いつでも不通にされ得又は開通され得る。
幾つかの実装では、トランスポート接続140、150の内の少なくとも幾つかは、近傍のコンピュータ110と遠方のコンピュータ190との間の経路の内の少なくとも一部をカバーする同じ物理的データリンクを経由して開通される。例えば、同じラストマイルのISP(インターネットサービスプロバイダ)又は無線サービスプロバイダを使用することにより多数の接続が開通され得る。幾つかの実施形態では、多数の接続の間を区別するための送信元ポートのみを使用して、同じ送信元IPアドレスと宛先IPアドレスとの間に多数の接続が開通される。この実装は、多数の接続が同じ中継ルータを通過してクライアントとコンテンツプロバイダとの間で同じ経路を使用する確率を増加させる。幾つかの例では、このアプローチは、ラウンドトリップタイム若しくはパケットロス率等の新たな接続のネットワーク特性を既に開通された接続のネットワーク特性から推定するために、又は新たな接続の制御ウィンドウを既存の接続から取得される制御ウィンドウから予め設定するために使用される。
別の実装では、2つ以上の同時接続は、異なるデータリンク(例えば、Wi−Fi及びセルラ接続の両者)を通じて開通され得、又は宛先IPアドレスの相違に起因して異なる経路を通過し得る。このことは、(複数の)接続の個々のパラメータに従ってデータ転送のための一組の改善した接続を選択することに役立ち得、同じラストマイルのISPを経由して同じ遠くのサーバへ多数の接続が確立される場合であっても、同じサーバを指し示す異なる宛先IPアドレスを使用することは、2つのコンピュータ110、190間のパケットにより取られる異なる経路に起因して、各接続のネットワークパラメータを変更し得る。
幾つかの実装では、モジュール120及び170は、それに応じて、プロキシクライアント及びプロキシサーバである。クライアント110により開通された接続は、近傍のプロキシクライアント120により終端され、近傍のプロキシクライアント120は、遠方のプロキシサーバ170との、トランスポートマネージャ130、160間に確立された多数のトランスポート接続を通じて、リクエストされたペイロードを送信し、応答のペイロードを受信する。幾つかの実施形態では、トランスポート接続140、150は、トランスポートコントロールプロトコル(TCP)等の信頼性のある配信プロトコルを使用し、配信プロトコルは、ペイロードの配信保証を提供し、総制御ウィンドウを増加させるために同時トランスポート接続を使用することからの便益を得る。
別の実装では、モジュール120及び170は、それに応じて、仮想プライベートネットワーク(VPN)クライアント及びVPNサーバである。クライアント110により生成されたデータパケットは、近傍のVPNクライアント120によってユーザ空間へ移される。近傍のマルチパストランスポートマネージャ130は、出力されるパケットを同時トランスポート接続140中にカプセル化する。遠方のマルチパストランスポートマネージャ160は元のパケットを抽出し、遠方のVPNサーバ170と共にそれらをコンテンツプロバイダ190へ送信する。コンテンツプロバイダ190により返送されたデータは、逆の順序で処理される。この場合、同時トランスポート接続は、主に、任意の中継ルータ上のキューサイズを減少させること、及びデータリンクセグメント間の帯域幅の変化を緩和することによって、スループットの改善に役立つ。具体的には、そうした中継ルータは、一般的に、接続毎に1つのキューを維持し、各キューサイズを減少させることは、オーバフローに起因する遅延及びパケットロスの減少に役立つ。クライアント110が信頼性のある配信プロトコルを使用して多数の接続を開通する場合、VPNクライアント120とVPNサーバ170との間の多数の同時接続は、全てのクライアント接続を単一のキュー中に集中させることにより生じる性能低下の防止に役立つ。
幾つかの実装は、並行して使用される、プロキシクライアント及びVPNクライアント120とプロキシサーバ及びVPNサーバ170との両方を含み得る。幾つかの実施形態では、クライアント110から開始する全てのTCPトラフィックはクライアントプロキシ120により終端され、そのペイロードは多数のTCPトランスポート接続140を通じて送信される。そうした実施形態では、クライアント110から開始する全てのUDP(ユーザデータグラムプロトコル)トラフィックは、VPNクライアント120によりカプセル化され、多数のUDP接続を通じて送信される。
幾つかの実装では、近傍のプロキシ又はVPN120は、マルチパストランスポートマネージャ130と同じコンピュータ上に存在する。幾つかの実施形態では、それらは、クライアント110と同じコンピュータ上に存在する。別の実装では、これらのコンポーネント110、120、130の内の何れか1つ又は2つは、異なるコンピュータ上に存在し得る。
幾つかの実装では、遠方のプロキシ又はVPN170は、遠方のマルチパストランスポートマネージャ160と同じコンピュータ上に存在し、別の実装では、それらは異なるコンピュータ上に存在し得る。
プロキシ又はVPNモジュール120、170は、コンテンツサーバ190が多数の並列接続を通じた同じデータファイルの配信をサポートしない場合に有用である。
コンテンツサーバ190がそうしたサポートをできる代替的な実施形態では、クライアント110は、プロキシ又はVPNクライアント120を使用することなく、近傍のマルチパストランスポートマネージャ130へトラフィックを直接送信する。そうした実施形態では、コンテンツサーバ190は、プロキシ又はVPNサーバ170を使用することなく、遠方のマルチパストランスポートマネージャ160からリクエストを受信し、遠方のマルチパストランスポートマネージャ160へデータを送信する。この実施形態は、例えば、クライアント110及びコンテンツプロバイダ190の両者がマルチパスTCPプロトコルエクステンションをサポートする場合に実現され得る。
図2は、近傍のマルチパストランスポートマネージャ130の例示的実装を説明する。この実装では、近傍のマルチパストランスポートマネージャ130は、マルチパストラフィックディストリビュータ220及びマルチパストランスポートチューナ230を含み、両者は、近傍のプロキシ又はVPN120に接続され、クライアント110と通信する。近傍のマルチパストランスポートマネージャ130は、遠方のマルチパストランスポートマネージャ160との同時トランスポート接続を維持するTCPスタック210とデータを交換する。図示された実施形態では、マルチパストラフィックディストリビュータ220は、接続を開通若しくは不通にするための、又はマルチパストランスポートチューナ230からの既存の接続を通じたトラフィックを一時休止若しくは再開するためのコマンドを受信する。新たな接続が開通又は不通にされなければならない場合、マルチパストラフィックディストリビュータ220は、該コマンドをTCPスタック210へ送信し、既存の接続の使用が一時休止又は再開されなければならない場合、マルチパストラフィックディストリビュータは、TCPスタック210に通知する必要なく、分散アルゴリズムを変更する。
記述される実装では、マルチパストランスポートチューナ230は、使用される同時接続の数をそれが変更することに役立つデータからの情報をプロキシ又はVPN120から取得する。この例では、それは、ドメイン(ホスト名)、IPアドレス、ポート、及びHTTPヘッダを含むがそれらに限定されない、クライアント110により発行されたリクエストについての情報を受信する。幾つかの実施形態では、この情報は、周知のサイズのウェブサイトのダウンロードを示すリクエストのパターンを検出するために使用される。サイズ見積もりは、以下で記述されるように、接続の数を変更するために使用される。付加的な情報は、コンテンツリクエストに応じて提供されるコンテンツサイズ、又はTCPスタック210等のその他の送信元からの情報(近傍のマルチパストランスポートマネージャが十分なシステム特権を有する場合にのみ可能である)をも含み得る。
代替的な実装では、マルチパストランスポートチューナ230は、遠方のマルチパストランスポートマネージャ160へのラウンドトリップタイム、又は遠方のトランスポートマネージャ160のAPIへの呼び出し後に配信された第1バイトまでの時間を観察することによって、使用される接続140の数の設定又は変更を決定する。
更に別の実装では、マルチパストランスポートチューナ230は、例えば、ネットワークの輻輳の周知のパターンとそれが相関がある場合には、接続セッションの開始までの経過時間、ユーザステータス、又は時刻に基づいて、使用される接続の数を設定又は変更し得る。
使用される同時接続の数を増加又は減少させるか否かを判定するために必要なデータを受信することに加えて、マルチパストランスポートチューナ230は、遠方のマルチパストランスポートマネージャ160により明らかにされたAPI(アプリケーションプログラムインタフェース)への持続的なTCP接続を通じてフィードバックを受信すること等により、遠方のマルチパストランスポートマネージャ160からの制御情報をもプロキシ又はVPN120から受信する。マルチパストランスポートチューナ230はまた、トランスポート接続の開通又は不通、及び一時休止又は再開の決定について、遠方のマルチパストランスポートマネージャ160に通知する。また、このことは、遠方のマルチパストランスポートマネージャ160を参照する周知のネットワークアドレスへのAPI呼び出しを発行することを含み得る。幾つかの実施形態では、近傍のマルチパストランスポートマネージャ130によってのみ接続が開通され得る。しかしながら、典型的な実施形態では、近傍のマルチパストランスポートマネージャ130及び遠方のマルチパストランスポートマネージャ160の両者は、接続を一時休止又は再開し得る。
幾つかの実装では、近傍のマルチパストランスポートマネージャは、そのデータを送信するために、遠方のマルチパストランスポートマネージャとは異なる接続を使用する。この実装では、ある方向に使用されるトランスポート接続の数は、別方向に使用されるトランスポート接続の数とは異なり、他の接続が、ある方向のトラフィックを交換するためにのみ使用されつつ、幾つかの接続は、双方向のトラフィックを交換するために使用される。
別の実施形態では、マルチパストラフィックディストリビュータ220は、マルチパストランスポートチューナ230と結合され得、又は(一般的にルートアクセスの許可を要する)TCPスタックの変形として実装され得る。プロキシ又はVPN120を通じた通信の代わりに、近傍のマルチパストランスポートマネージャ130は、クライアント110と一体化され得る。
図3は、遠方のマルチパストランスポートマネージャ160の例示的実装を説明する。この実装では、遠方のマルチパストランスポートマネージャ160は、マルチパストラフィックディストリビュータ320及びマルチパストランスポートチューナ330を含み、両者は、コンテンツプロバイダ190と通信するプロキシ又はVPN170に接続される。遠方のマルチパストランスポートマネージャ160は、近傍のマルチパストランスポートマネージャ130との同時トランスポート接続を維持するTCPスタック310とデータを交換する。図示される実施形態では、マルチパストラフィックディストリビュータ320は、既に開通された接続を通じたマルチパストランスポートチューナ330からのトラフィックを一時休止及び再開するためのコマンドを受信する。しかしながら、近傍のマルチパストラフィックディストリビュータ220とは対照的に、マルチパストラフィックディストリビュータ320は、幾つかの実施形態ではトランスポート接続を開通又は不通にせず、むしろ、開通又は不通にされる接続についての情報をTCPスタック310から受信して、この情報をマルチパストランスポートチューナ330へ伝達するのみである。このことは、クライアント110の近傍のモジュール130により新たなトランスポート接続が開始される場合を反映する。マルチパストランスポートチューナ330が1つ以上の接続を開通又は不通にすることを判定する場合、それは、この情報をプロキシ又はVPN170を通じて近傍のマルチパストランスポートマネージャ130へ伝達する。
マルチパストランスポートチューナ330はまた、近傍のトランスポートマネージャ130により開通又は不通にされた、一時休止又は再開された接続についてのフィードバックを受信し、リクエストされたドメイン又はIPアドレスのパターン等の情報を、使用されるトランスポート接続140の数をそれが設定又は変更することに役立てるために使用する。幾つかの実施形態では、マルチパストランスポートチューナ330は、クライアント110が既に開通した1つ以上のトランスポート接続の不通を求めているとの判定に応じて、リクエストのグループに対応するリクエストされたデータの配信を終了したことを判定する。
幾つかの実施形態では、プロキシ又はVPN170は、少なくとも単一の接続に対して、遠方のマルチパストランスポートマネージャと近傍のマルチパストランスポートマネージャとの間のパイプよりも高いスループットを有し得るパイプ180を通じてコンテンツプロバイダ190に接続される。これは、例えば、遠方のプロキシ又はVPN170が近傍のプロキシ又はVPN120よりもコンテンツプロバイダ190に遥かに近接して配置される場合であり得る。記述される実施形態では、スループットの相違は、受信キュー340により緩和される。受信キュー340は、コンテンツプロバイダ190からダウンロードされたデータを、該データがクライアント110へ転送される前に格納するバッファとして具体化され得る。マルチパストラフィックディストリビュータ320は、多数の同時接続140間でデータを分散する前に、受信キュー340からデータを読み出す。
記述される実施形態では、マルチパストランスポートチューナ330は、受信キュー340中に格納されたデータのサイズによって、クライアントへ依然として配信されるデータのサイズを見積もる。例えば、単一のファイルが高スループットのパイプ180を通じてコンテンツプロバイダ190からロードされ、受信キュー340中に格納されたデータのサイズが時間と共に減少し始める場合、これはリクエストされた配信に対する最後の残存データであるとの指標として解釈することができる。マルチパストランスポートチューナ330は、使用される同時トランスポート接続140の数を配信が開始された後に変更するためにこの情報を使用し得る。
別の例では、クライアント110は、クライアント110へ転送される前に1つ以上の受信キュー340中に格納されている応答と共に、多数のリクエストを異なるコンテンツプロバイダ190に発行し得る。この場合、マルチパストランスポートチューナ330は、これらのキュー340の各々の中に格納されたデータについての情報を受信し得、キュー340の各々がその最大バッファサイズよりも小さいデータを有し、格納されたデータの総量が時間と共に減少する場合、コンテンツプロバイダ190からのデータ配信の完了を検討し得る。
図示される実施形態の別の側面において、マルチパストランスポートチューナ330は、制御ウィンドウのサイズW(若しくは例えば、TCPトランスポートプロトコルにより使用される、受信者ウィンドウ及び輻輳ウィンドウの両方のサイズ)、近傍のTCPスタック210へのラウンドトリップタイム、並びにパケットロスの比率等の、既に開通されたトランスポート接続の1つ以上のパラメータをTCPスタック310から受信する。この情報は、開通された1つ以上のトランスポート接続に対して収集され得る。システム管理者は、セキュアなサーバ環境においてより高レベルのアクセス特権を設定し得るので、この情報は、一般的にサーバ側で利用可能である。
幾つかの実装では、同じ遠方のマルチパストランスポートマネージャ160は、異なるクライアント110に接続される2つ以上の近傍のマルチパストランスポートマネージャ130により開通された接続を受信する。この場合、マルチパストランスポートチューナ330は、各クライアント110への接続と関連付けられたパラメータ、例えば、ラウンドトリップタイムを評価し、異なる数の同時接続を開通するように、又は異なるクライアント110との既に開通された異なる数の接続を使用するように、異なる近傍のトランスポートマネージャ130に助言する。各クライアント110との接続の最初の数が設定された後、それは、(例えば、制御ウィンドウの変更サイズW、又は受信キュー340に残存するデータのサイズに基づいて)データ配信が完了する前に変更され得る。
代替的な実装では、マルチパストラフィックディストリビュータ320は、遠方のプロキシ又はVPN170を通じてコンテンツプロバイダのサーバ190に接続されることなく、コンテンツプロバイダのサーバ190と一体化され得る。この場合、コンテンツプロバイダのサーバは、マルチパストラフィックディストリビュータ320に届くデータが暗号化される場合であっても、リクエストされた配信のサイズについてのより精密な情報を提供し得る。
別の実装では、遠方のマルチパストランスポートマネージャ160は、マルチパストラフィックディストリビュータ320及びマルチパストランスポートチューナ330を別個に実装することなく、TCPスタック310と一体化され得る。
記述される実施形態に従えば、リクエストの異なるグループに対するデータを配信するために、又はそれらが同じコンテンツをリクエストした場合であっても異なるクライアント110に配信するために、異なる数の同時トランスポート接続140が使用され得る。更に、各場合において使用される接続140の数は、リクエストのグループが発行された後ではあるが、リクエストのグループに対応するデータ配信が完了する前に変更され得る。
これらの実施形態は、多数の目的のために、例えば、異なるユーザ及び異なるコンテンツリクエストに対して異なる接続パターンを作り出すことによりプロキシ又はVPNのトラフィックを外部のセンサ(censor)から難読化するための手段として、使用され得る。
別の例では、トランスポート接続140の数を変更することは、共有される帯域幅のボトルネック経由の帯域幅の消費の公正を図るために使用され得、接続の数は、他のユーザにより利用されない帯域幅容量がある場合、又は帯域幅が他のユーザと共有されない専用リソースである場合にのみ増加させられる。
幾つかの実施形態では、多数の接続を経由して同じファイルが転送される場合であっても、使用される接続140の数は、リクエストされたファイルの数と共に変更される。このことは、プロキシ又はVPNの単一の接続を経由して多数のファイルが転送される場合と比較して、プロキシ又はVPNのユーザに対してそれをより公正にさせる。
開示される実施形態の一機能は、クライアント110とコンテンツプロバイダ190との間の長距離経由のスループットを調整することである。送信者と受信者との間の多数の配信保証トランスポート接続140を越えてデータ転送を分散することは、特に、トランスポートコントロールプロトコル(TCP)等の配信保証を確実にするトランスポートプロトコルを接続が使用する場合に総スループットを一般的に増加させ、該トランスポートプロトコルは、送信者と受信者との間の転送中(in-flight)のデータの量を制御ウィンドウのサイズに制限し、該制御ウィンドウは、典型的には、受信者ウィンドウ(受信者により受け入れ可能なデータの量)及び(過度なトラフィックを伴う過負荷が送信者と受信者との間のリンクにかかることを止めるために送信者により計算された)輻輳ウィンドウとの内の最小のものである。
この場合、新たな各接続140を追加することは、少なくとも、共有リンク上のパケットロスの増加により総輻輳ウィンドウが制限されるまで、受信者ウィンドウ及び輻輳ウィンドウの両者の総サイズを増加させる。輻輳ウィンドウを総和することは、ランダムなパケットロスの影響を緩和する付加的な便益をも有する。例えば、1つの接続に対する輻輳ウィンドウがパケットロス後に50%に低下する場合、10個の並列接続に対する総輻輳ウィンドウは5%のみ減少する。
接続140がデータの搬送で完全に占められる場合、その平均スループットはT=W/RTTと見積もられ得、ここで、Wは制御ウィンドウのサイズであり、RTTは平均ラウンドトリップタイムである。
制御ウィンドウWを有する接続140を経由してデータ量Sが転送され、S=N*MSS)であるように最大セグメントサイズMSS〜=1500Bを各々有するN個のパケットとしてこの量が送信されると仮定する場合、この接続経由でこれらのデータを配信するための時間t1は、
t1=(N/W)*RTT (1)
と見積もられ得る。
M個の並列接続を経由して同じデータ量が転送され、単に(W*Mの制御ウィンドウを使用する総接続に等しい)N/M個のパケットを各接続が転送しなければならない場合、これらのデータを配信するための時間tMはM倍小さくなり、
tM=(1/M)*(N/*W)*RTT (2)
である。
総輻輳ウィンドウが共有リンクにより制限されず、全ての並列接続が安定したスループットに到達する(各並列接続に対する平均Wが単一の接続に対するものと同じである)限り、任意のM>1に対して、M個の並列接続を通じたデータ転送は、単一の接続よりも常に速いと当業者であれば結論付け得る。
しかしながら、この結論は、(安定したスループットを維持するための輻輳制御アルゴリズムを可能にする)パイプを通じてN個のパケットが送信された後にデータ転送が継続することを暗に仮定している。実際には、リクエストされたデータの配信は、追加のデータ転送に進む前にしばしば確認されなければならない。例えば、
(1)リクエストされたファイルは、次のファイルを自動的にリクエストする前に完全にダウンロードされなければならず、処理されなければならない(例えば、ブラウザは、JavaScriptファイルを受信し、そのコードを実行し、該コードにより生成されたリクエストをその後発行する)。
(2)ユーザは、以前にリクエストされたコンテンツを再調査した後に、次のファイル又はファイルのグループに対するリクエストを発行する(例えば、ウェブサイトのロードに続いて、ユーザがリンク上でクリックするまで不活動期間がある)。
(3)データの量は、次の転送に進む前に確認されなければならず、リクエストされたコンテンツの種類に一般的に依存する。例えば、単一のJavaScriptファイル〜10から100KB、ニュースのウェブサイト〜0.5から5MB、ビデオ〜=20から2000MB。
次のデータ転送に進む前にN個のパケットの配信を確認する条件は、2つの方法で配信時間を変化させる。
第1に、接続パイプは、転送中のパケットの最大数(W)で常に充足されるわけではないかもしれない。例えば、W=100であるが、10個のパケットのみが1つの接続を通じて送信される場合には、それらを配信及び確認するために100個のパケットに対する時間と同じ時間(RTT)がかかるであろう。並列接続の数の増加は、各接続を通じて送信されるパケットの数をW未満に低下させ得、そのスループットを減少させる。
第2に、何れかの接続で最後のパケットをロスする確率は、並列接続の数と共に増加する。M個の接続の内の何れかがその最後のパケットをロスした場合、該パケットが回復するまで、N個全てのパケットが配信されたことの確認は遅延する。
TCPの一部として実装された輻輳制御プロトコルを含む、輻輳制御プロトコルの多くは、トランスポート接続を通じた最後のパケットがロスされた場合に追加の遅延を招く。輻輳制御プロトコルは、一般的に、ロスされたそうしたパケットを再送する前に追加の時間の間、待機する(テールロス遅延)。最後のパケットが最初の再送後に再格納された場合、最後のパケットを再配信するための総時間は、テールロス遅延+RTT=TLDF*RTT(TLDFは、1よりも大きい時間ロス遅延要因である)として見積もられ得る。
Linuxオペレーティングシステムの幾つかの実装では、時間ロス遅延は、再送タイムアウト(RTO)に等しく、最初の再送に対して、時間ロス遅延〜=SRTT+4*RTTVARであり、ここで、SRTT及びRTTVARは夫々、多数のACKに渡り平均化した、RTT値及びその変量である。例えば、RTTVAR/SRTT=0.5である場合、TLDF〜=4である。
Linuxオペレーティングシステムで実装された周知の一改善では、送信者は、テールロスプローブ(TLP)として周知の最後のパケットの複写を発行し、最初の再送に対する時間ロス遅延を2*SRTT(TLDF〜=3)に減少させる。
これらの例では、TLDFは、ロスしたパケットが最初の再送信の試み後に再配信されるものと仮定して見積もられる。再送されたパケットもロスされた場合、それは、次のRTOを増加させ得、又はTLPからRTOへの切り替えを生じさせ得、次の再送信の試みを更に遅延させ、平均TLDFを増加させる。
任意の接続における任意のパケットに対して単一のパケットロスの確率(p)が同じであると仮定すると、M個の接続の内の少なくとも1つがその最後のパケットをロスする確率は、P=1−(1−p)^M(〜=p*M(p*M<0.5に対して))である。
不完全に充足された接続パイプとテールロス遅延とを構成した後、単一の接続を通じたN個のパケットの配信を転送及び確認するための時間(t1)と、M個の並列接続を通じたN個のパケットの配信を転送及び確認するための時間(tM)とは、
t1=ceiling(N/W)*RTT+p*TLDF*RTTと、 (3)
tM=ceiling(1/M)*(N*W))*RTT+(1−(1−p)^M)*TLDF*RTT (4)
とであり、ここで、ceiling(X)は、最も近い整数K>=Xを返す関数である。
パケットロスがない場合(p=0)、Mは、小さいN/Mに対してであっても総スループットを減少させることなく大きな数に予め設定され得、任意のM>N/Wに対してtM=RTTである(単一のパケットの配信及び確認には、W個のパケットに対する時間と同じ時間がかかる)。
しかしながら、パケットロスの存在(p>0)は、見積もり最適値(M_opt)よりもMが大きくなった場合にM個の並列接続の総スループットを減少させ、多数の接続を通じたデータ転送の拡散は、少なくとも1つの最後のパケットがロスする確率を増加させ、テールロス遅延を生じさせる。
図4a及び図4bは、本発明からもたらされるスループットの改善を説明するグラフである。
図4aは、N/W=10で、p及びTLDFの3つの組み合わせに対して式(3、4)から計算された、接続毎の充足率(N/(M*W))の増加を伴うスループットの増加割合(tM/tl)の変化を図示する。各接続を通じて送信されたデータの量が、1 RTT(N/(M*W)〜=1)で配信され得る最大量に等しい場合、p及びTLDFの実際値に対して、最良のスループットの増加割合が実現されることを説明する。例えば、p=0.01でTLDF=3に対して、最良のスループットの増加割合は、M=10で実現され、それは、より大きな値のMに対してよりも最大2倍よい。
p=0.05でTLDF=4に対するグラフは、N/(M*W)〜=2で極小値を示し、p及びTLDFの更なる増加と共に最小値になり、パケットロスが高い(例えば、ネットワーク品質が低い)場合、2RTTで配信され得る接続単位のデータの最大量を送信することによって最良の性能が実現され得、平均時間は低下するがテールロスの確率は減少する。
図4bは、p=0.002、TLDF=3で、N/Wの3つの値に対して式(3、4)から計算された、各接続に対する充足率(N/(M*W))の増加を伴うスループットの増加割合(tM/t1)の変化を図示する。広範囲のN/Wに対して、N/(M*W)〜=1である場合に最良のスループットの増加割合が継続して実現されることを説明する。Wが変わらない場合、少なくとも図示されたN/Wの範囲に対しては、Mの見積もり最適値はNと共に比例的に増加することを意味する。
受信者ウィンドウが輻輳ウィンドウよりも大きい場合、Wは、マティス式(C〜=sqrt(3/2))からW=C/sqrt(p)と見積もられ得る。例えば、p=0.002はW=27に対応し、N/W=100はファイルサイズ〜4MBに対応する。
接続の見積もり最適数を記述する式は、多数の要因に依存して(3−4)とは異なり得る。例えば、パケットロスの異なる比率によって、別個の接続を通じて以前に送信されたデータの異なる量によって、又は異なる接続の可変のラウンドトリップタイムによって生じた(例えば、ラストマイルの無線リンク内のランダムな再送によって生じた)異なる接続間のW値の変動。
式は、データ分散アルゴリズムによって生じた異なる並列接続を通じて送信されたデータの量の変動と共に、更に異なり得る。例えば、ラウンドロビン分散を使用する代わりに、各接続を通じて送信されたデータの量を、以前に観察されたそのスループットに比例させることによって。
本明細書に開示される実施形態は、式(3−4)の正確な形式に依存しない。これらの式は、本発明の実施形態の内の幾つかにより使用される仮定を検証するために、及び実施形態が特に効果的であり得る条件を確立するために含まれる。例えば、他のデータ転送に進む前に、以前にリクエストされたデータの配信が確認されなければならない場合には、パケットロスが存在する場合に配信を完了及び確認するための時間を削減する並列接続の最適数がある。同様に、並列接続の最適数は、配信を完了及び確認するために必要なデータの量と共に増加する。並列接続の最適数は、単一のラウンドトリップサイクル中に送信及び確認され得るデータの最大量を配信するために、又は2つのラウンドトリップサイクル中に特に高率のパケットロスに対して、各並列接続がリクエストされた場合に一般的には実現される。
図5は、データトラフィックのパラメータを監視することによって多数の同時接続のスループットを最適化し、例えば、著しく改善し、接続の見積もり最適数を設定するためにこれらのパラメータを使用する方法の処理フロー図を図示する。図5の方法は、検索されているデータのサイズと、近傍のマルチパストランスポートマネージャ130と遠方のマルチパストランスポートマネージャ160との間の接続の属性とに依存して、異なるコンピュータが異なる数の接続140を使用し得るように、遠方のマルチパストランスポートマネージャ160に結合された各々の近傍のマルチパストランスポートマネージャ130に関して実行され得る。
記述される方法では、マルチパストランスポートマネージャ130、160は、受信キュー中のデータサイズR、及び既存のトランスポート接続の平均制御ウィンドウのサイズW等のデータ転送のパラメータを取得する(ステップ510)。Wのサイズは、ラウンドトリップタイム、パケットロスの比率、TCPを実装する2つのコンピュータ間のネットワーク接続の距離、又はネットワーク接続の品質を記述するその他の要因等の要因に従ってTCPプロトコルによって判定されることに留意されたい。マルチパストランスポートマネージャ130、160は、これが、事前に定義した期間、例えば、1秒間のトラフィック量の開始、一時休止、停止、又は急な減少(例えば、50〜90%の減少)の後の最初のデータ転送であるか否かを更に判定する(ステップ520)。
ステップ520の開始又は一時休止が検出された後に、クライアント110からのリクエストの新たなグループが受信された場合(ステップ540)、リクエストの新たなグループのパターン又はリクエストされたドメイン及びリクエストヘッダから、配信サイズNが見積もられる(ステップ560)。R、S、及びWの見積もり値に対して、リクエストの新たなグループに対応するリクエストされた配信の時間を最適化する、例えば、著しく改善するように、同時トランスポート接続の数がその後設定される(ステップ570)。
リクエストされた配信のデータ転送が継続されながら、マルチパストランスポートマネージャ130、160の内の少なくとも1つは、R及びW等のトランスポートパラメータの評価を継続する(ステップ520)。ceiling(R/(M*W))と見積もられる、リクエストされた配信のデータの残部を配信するために使用されるラウンドトリップサイクルの数の増加をそれが検出した場合(ステップ530)、リクエストされた配信が完了するまでの時間を減少させるために、使用される接続140の数が増加させられる(ステップ550)。各マルチパストランスポートマネージャ130、160は独立して動作するので、クライアント110からコンテンツプロバイダ190へデータを転送するために使用されるトランスポート接続140の数は、コンテンツプロバイダからクライアント110へデータを転送するために使用されるトランスポート接続140の数とは異なり得ることに留意されたい。同様に、クライアント110からコンテンツプロバイダ190へデータを転送するために使用されるトランスポート接続140の数は、コンテンツプロバイダからクライアント110へデータを転送するために使用されるトランスポート接続140の数を一定に維持しながら変更し得、その逆もしかりであり得る。
上述したように、使用されるトランスポート接続140の数は、パケットロス、スループット、制御ウィンドウ、輻輳ウィンドウ、受信者ウィンドウ、及び値R/M*W(ステップ530)に影響を及ぼすその他のパラメータを含む、トランスポート接続の属性に依存する。具体的には、制御ウィンドウのサイズWは、これらの属性の影響を受ける。したがって、マルチパストランスポートマネージャ130、160によって検出された、クライアントからコンテンツプロバイダへの接続140に対するこれらの属性と、コンテンツプロバイダからクライアントへの接続140に対するこれらの属性との相違は、コンテンツプロバイダからクライアントへの接続140に対する、クライアントからコンテンツプロバイダへの使用される接続140の数の相違をもたらし得る。
制御ウィンドウの現在のサイズを使用することに代わり、一実装は、(例えば、制御ウィンドウのサイズが各ラウンドトリップと共に継続して増加するであろうと仮定することによって)、又は観察されたパケットロスの比率から制御ウィンドウの平均サイズを得るためにマティス式を使用することによって、制御ウィンドウの見積もりサイズを後で使用し得る。
使用される接続の数を増加させるためにデータ転送の1つ以上のパラメータを見積もる方法のその他の実装は、制限された新たなデータ配信の開始を検出するために、又はそのサイズを見積もるために、異なる一連のステップ、異なる方法を使用し得る。
したがって、この実装及びその他の実装は、トラフィックの開始又は一時休止を検出した後にトラフィックパラメータを評価し、リクエストの異なるグループに対して、若しくは異なるユーザからの同じリクエストに対して、使用される同時接続の数を異なる値に設定する共通の機構を有する。また、リクエストされた配信中にトラフィックパラメータを再評価する実装は、リクエストされた配信が完了する前に、使用される同時接続の数を変更する共通の機構を有する。
図6は、本発明の別の側面に従った、同時トランスポート接続を通じた単一のファイル転送のトラフィック分散を最適化する、例えば、著しく改善するために使用されるネットワーク環境の図である。
この側面において、遠方のマルチパストランスポートマネージャ160は、一組の送信バッファ620を含み、各送信バッファは、TCPスタック310により確立された別個のトランスポート接続140を供給している。これらの送信バッファは、ユーザ空間中に実装され得、又はTCPスタックにより提供されたトランスポート接続の送信バッファと統合され得る。マルチパストランスポートマネージャは、少なくとも1つのローダ630と受信キュー640とを更に含み、コンテンツプロバイダ190から高帯域パイプ180を通じ、遠方のプロキシ又はVPN170を通じて送信されたデータを格納する。
記述される実装では、ローダ630は、一組の送信バッファ620を順番に充足する。各接続に対してデータを送信する前に、それは、制御ウィンドウのサイズWを取得し、受信キュー640からWと等しい量のデータを抽出し、受信キューを通じて更に進む前に、それを現在の送信バッファへ転送する。受信キュー640から空けられた空間は、例えば、リングバッファ中のポインタをシフトすることによって、次のデータを受信するための準備としてマークされる。図6は、第1のトランスポート接続に対する送信バッファがその制御ウィンドウのサイズ(W1)と等しい量のデータを既に受信し、ローダ630が第2のトランスポート接続に対する制御ウィンドウのサイズ(W2)を取得し、次の送信バッファ(説明の例ではW3)に進む前に、受信キュー640から第2の送信バッファへ対応する量のデータを転送するために準備する場合を図示する。受信キュー640中に残るデータの量が制御ウィンドウのサイズ(W3に対して示される例示のようなもの)よりも小さい場合、ローダ630は利用可能な量を転送する。
幾つかの実装では、多数のローダ630は、多数の送信バッファ620を供給するために並行して使用され得る。同様に、ラウンドロビンの代わりに、異なる配信アルゴリズムが使用され得る(例えば、制御ウィンドウの内で最大サイズを有する接続が最初にアドレス指定され得る)。ローダ630は、各送信バッファに送信されるべき量を特定するために、制御ウィンドウのサイズ以外のパラメータを使用し得る。例えば、近時の時間間隔(例えば、0.1から10秒)中の現在の接続の平均スループットに比例した値。
本発明に従うと、図示される実装、及び上述したようなその変形は、所望の範囲内、例えば、対応する接続に対する制御ウィンドウのサイズに可能な限り近くに設定されている各データグループのサイズで、データのグループを異なるトランスポート接続へ送信する共通の機構を有する。
このことは、使用される接続の数を、配信のために残存するデータの量に自動的に調節することを可能にする。例えば、受信キュー640は、3つの送信バッファ620をそれらの制御ウィンドウサイズW1〜W3に対応する量で充足するのに十分なデータのみを含む場合、その他のトランスポート接続はもはやデータを受信しないであろう。この方法では、使用される接続140の数は、配信されなければならないデータの量の増加と共に、又はランダムなパケットロスに起因する1つ以上の制御ウィンドウのサイズの減少と共に上昇し得る。
幾つかの実装では、所望の範囲は、現在の制御ウィンドウのサイズ等、最大値のみを含み得る。他の実装では、それは、最小値をも含み得る。例えば、受信キュー640が現在の制御ウィンドウのサイズの50%未満を含む場合、単一のラウンドトリップタイム中に最大量のデータが送信される確率を増加させるために、ローダ630は、受信キュー640から次のデータを受信するために1つ以上のラウンドトリップタイムを待機する。最小値を判定するために、40%から60%の値等の50%以外の値が使用され得る。
受信キュー640中のデータの残量が全ての制御ウィンドウ(説明された例のW1からW4)の和よりも大きい場合、事前に定義された制限を越えないように、同時接続の最大数が設定され得る。
図示される実施形態では、第1のトランスポート接続140が第2の接続140等よりも早いデータを受信する等、受信キュー640からのデータは、送信バッファ620の各々に順番にロードされる。現在の接続140の制御ウィンドウのサイズを越えないサイズを有する各データグループは、現在の接続を経由して、単一のラウンドトリップ中に配信され得る。ある順番で連続的なデータグループを送信することは、受信側で行われなければならない並べ替えの量を削減する更なる便益を有する。
図示される実装では、受信側は、TCPスタック310を通じて多数のトランスポート接続140から受信されたデータがプロキシ又はVPN170へ正しい順序で配信され得るまで該データを格納する順序付けキュー650を含む。各接続140は、各ラウンドトリップ中に連続的な一組のデータを配信する場合、(例えば、第3の接続が第2の接続よりも速くデータを配信した場合)又は幾つかのデータパケットがロスされ再送されなければならない場合、データのグループ間でのみ並び替えが必要である。これが実装されない場合、例えば、連続したデータパケットが多数の接続の間で拡散された場合、現在のサイクル中に全ての接続が全てのデータを配信するまで、順序付けキュー650中にパケットが留まる必要があり得、それによりレイテンシを増加させる。
図7は、各接続を通じて所望サイズのデータグループを送信することに基づいて、同時トランスポート接続を通じたトラフィック分散を改善するための方法を説明する処理フロー図である。
受信キューが空ではない場合(ステップ710)、データグループを受信するために次のトランスポート接続が選択される(ステップ720)。図示される場合では、接続の最大数に到達した場合に第1の接続にオーバラップ(wrap over)すると共に、次の接続が順次選択される。代替的な実装では、例えば、その送信バッファ620中に残存するデータの量と、その制御ウィンドウのサイズとに基づいて、次の接続が選択され得る(720)。具体的には、空の送信バッファ620と大きな制御ウィンドウとを有する接続140が最初に選択される。選択された接続に対する制御ウィンドウのサイズを取得した後(ステップ730)、制御ウィンドウのサイズ(W)と受信キュー中の残量(R)との内の最小のものが、選択された接続の送信バッファ620へ移される(ステップ740)。受信キュー640中に残存するデータのサイズは、次のデータのために空間を自由にするために、それに応じて調節される。
上で概説したように、制御ウィンドウ(W)がスループットに依存する限り、データフレームのサイズはWのサイズに依存する。フレームのサイズは、それ故、Wの増加と共に増加するであろう。スループット及び制御ウィンドウはパケットロス率にも依存する。したがって、スループットの増加又は減少は、パケットロス率の増加又は減少に夫々基づいて見積もられ得る。
図8は、本発明の実施形態に従った、同時トランスポート接続を通じた多数の並列ファイル転送のトラフィック分散を改善するために使用されるネットワーク環境の図である。
この側面において、クライアント110は、多数のコンテンツプロバイダ190からファイルのグループをリクエストする。これらのファイルは、プロキシ又はVPNサーバ170を通じて並行してダウンロードされる。記述した実装において、遠方のマルチパストランスポートマネージャ160に提示される前に、多数のダウンロードストリームは、フレームアセンブラ860を通じて送信され、フレームアセンブラ860は、これらのデータストリームを単一の受信キュー640中に多重化する。幾つかの例では、該アセンブリは一連のフレームを作り出すことを含み、各フレームは、単一のデータストリームに対応するヘッダ及びペイロードを有する。ヘッダは、データストリームの識別子とペイロードのサイズとを含み得る。ヘッダは、フレームタイプ(制御又はデータ、チェックサム、又は付加的オプション)等の付加的パラメータをも含み得る。幾つかの実施形態では、各フレームは、ハイパーテキストトランスポートプロトコル(HTTP)バージョン2以降の仕様に従ってフォーマット化され得る。
本発明の一側面に従うと、ローダ630は、受信キュー640からの連続的な各フレームを、TCPスタック310により維持される異なるトランスポート接続の送信バッファ620中へ転送する。幾つかの例では、フレームアセンブラ860は、各フレームに対して同じフレームサイズを使用する。ローダ630は、各フレームが唯一つの接続140の送信バッファ620へ転送されることを確認する。この方法では、使用されるトランスポート接続の数は、受信キュー640中のデータの量と共に増加し、ファイルのグループのリクエストされた配信が完了に近づくと下げられる。
幾つかの実装では、フレームアセンブラ860は、予測される配信サイズについての情報(例えば、リクエストされたドメインに対するパターンから取得された情報)又は(例えば、多くのフレームが単一の制御ウィンドウ中に適合することを確認するために)トランスポート接続140により使用される制御ウィンドウのサイズに基づいて、フレームサイズを予め設定する。幾つかの実施形態では、予め設定されるフレームサイズは、同じユーザからのリクエストの異なるグループに対して、又はリクエストの同じグループを送信する場合であっても異なるユーザに対して異なる。フレームサイズは、データ配信中にも変化し得る。例えば、制御ウィンドウの平均サイズが時間と共に減少する場合、フレームアセンブラ860はフレームサイズを減少させ得る。
幾つかの実施形態では、フレームアセンブラ860は、配信されるデータの残量の減少と共に、1つ以上のデータフレームのサイズを増加させる。このアプローチは、異なる接続に切り替える前に最大又はほぼ最大の量のデータを各接続140が送信することを確実にし、ここで、データの最大量は、データの内の少なくとも幾つかの肯定的応答を受信する前に送信可能なデータの量である。異なるフレームが異なる接続を通じて送信される場合、各データフレームのサイズの増加は、データの転送に活発に使用される同時接続の数を減少させる。上述したように、小さいファイルに対しては、このことは、配信保証プロトコルが使用された場合にスループットを実際に増加させる。
幾つかの実施形態では、フレームアセンブラ860は、パケットロス率の減少と共にデータフレームのサイズを増加させる。他の実施形態では、フレームアセンブラ860は、データの内の少なくとも幾つかの肯定的応答を受信する前に送信可能なデータの量の増加と共に、データフレームのサイズを増加させる。このアプローチは、異なる接続に切り替える前に最大量又はほぼ最大量のデータを各接続が送信することを確実にし、ここで、最大量は、データの内の少なくとも幾つかの肯定的応答を待機する前に送信可能なデータの量である。データロス率の減少、又は肯定的応答を受信する前に送信可能なデータの量の増加(制御ウィンドウの増加)は、図5の方法に従って使用される同時接続の数の減少をもたらす。各データフレームのサイズの増加は、同様の結果を実現し、特に小さいファイルに対して、各データフレームのサイズの増加に対応して、データの転送に活発に使用される同時接続140の数が減少させられるように、異なるフレームは異なる接続を通じて送信される。
幾つかの例では、ローダ630は、受信キュー640中の次のフレームに対する次の接続140を順次選択する。別の例では、それは、単一のラウンドトリップの時間中に単一のフレームを転送する接続の数を増加させるために、次の接続140をその制御ウィンドウのサイズに基づいて選択し得る。このことは、フレームアセンブラ860が例えば、高優先度のデータ(ウェブサイトのレンダリングを機能停止し得るJavaScript等)に対して、それらの配信を高速化するために、より小さなフレームを使用することによって、異なるサイズのフレームを形成する場合に有益になる。
説明される実装及び上述したその変形に従うと、各フレームが単一のデータストリームからのデータのみを含むデータフレームを形成することによって、多数のトランスポート接続140を通じた多数のデータストリームのデータ転送を順序付け、唯一つのトランスポート接続140を通じて各データフレームを送信する共通の機構を有する。同じデータストリームからのデータフレームは、多数の同時トランスポート接続140を通じて送信され得るが、各データフレームは、単一のトランスポート接続のみを通じて送信され得る。
使用される接続の数を自動的に調節することに加えて、この実装は、受信側におけるデータの並び替えの必要性をも減少させる。図示される実施形態では、受信側は、順序付けキュー650を含む。それは、一連のフレームをフレームディスアセンブラ870へ送信し、フレームディスアセンブラ870は、それらを、プロキシ又はVPN170を通じて多数のコンテンツサーバ190へ送信された別個のデータストリーム中に多重分離する。順序付けキュー650は、各フレームがその全てのデータを含むことを確認さえすればよい。フレームの全てのパケットが単一のトランスポート接続により配信されると直ぐに、該フレームは、フレームディスアセンブラ870へ直ちに送信され得る。この場合、順序付けキュー650は、個々のデータフレームを配信する前に2つ以上のトランスポート接続140を待機する必要がない。
図9は、本発明の別の実施形態に従った、同時トランスポート接続を通じた多数の並列ファイル転送のトラフィック分散を最適化する、例えば、著しく改善するために使用されるネットワーク環境の図である。
この実施形態では、マルチパストランスポートマネージャ160は、プロキシ又はVPN170を通じて対応するコンテンツプロバイダ190からロードされた単一のデータストリームに対するデータを格納するために各々使用される多数の受信キュー640を含む。この実施形態では、ローダ630は、フレームアセンブラの機能をも実行する。具体的には、ローダ630は、次の受信キュー640から取り出さなければならないデータの量を選択し、それをフレームとしてフォーマット化し、該フレームを次の送信バッファ620中にロードし、次の送信バッファ620は、対応するトランスポート接続140を通じてデータを転送するためにTCPスタック310により使用される。ローダ630は、別の受信キュー640及びトランスポート接続140に関してこの機能をその後実行する。
記述される実施形態では、フレームアセンブラ及びローダ630は、各トランスポート接続140に対する制御ウィンドウのサイズWを取得し、それをフレームサイズを最適化するために、例えば、改善された結果を提供するフレームサイズを選択するために使用する。例えば、各フレームサイズは、該フレームが単一のラウンドトリップの時間中に配信される確率を最大にする、又は少なくとも増加させる、対応する制御ウィンドウのサイズにできる限り近く設定される。図示される実施形態では、サイズW1のフレーム1は、第1の受信キュー640から第1の送信バッファ620へ既にロードされている。第1の受信キュー640の利用可能な空間は、例えば、リングバッファのポインタを変更することによってその後調節される。フレームアセンブラ及びローダ630は、第2の受信キュー640からのサイズW2のフレームを組み立て、第3の受信キュー640にその後進む準備をその後する。トランスポート接続140の数が受信キュー640の数よりも多い場合、キュー640は、初めから循環して開始され得る。説明される例では、第4の送信バッファ620は、残部のデータを第1の受信キュー640等から受信するであろう。
別の実装では、ローダ630は、送信バッファ620に対応するトランスポート接続140の以前に測定されたスループットに基づいて、送信バッファ620中にロードされたデータに対するフレームサイズを設定する。別の例では、ローダ630は、接続140の種類(例えば、有線対無線)に基づいてフレームサイズを設定する。
別の実装では、次のトランスポート接続140は、ラウンドロビンアルゴリズムとは異なるアルゴリズムを使用して、次のフレームを受信するために、ローダ630により選択され得る。例えば、空の送信バッファ620を有するそれらの接続140の内、近時の時間間隔(例えば、0.1から10秒)に渡り最大サイズの制御ウィンドウ又は最大スループットを有する接続140を、次の接続140として選択することによる。次の受信キュー640は、異なるアルゴリズムを使用することによっても選択され得る。例えば、異なる受信キュー640には異なる優先度が割り当てられ得、より高い優先度のデータがより高い優先度のキュー640に割り当てられるようにキューにデータが割り当てられ得る。例えば、ウェブサイトのロードを機能停止し得るJavaScriptファイルは、より高い優先度のキュー640に割り当てられ得る。別の例では、バックグランドで大規模なダウンロードが存在する時に小さなファイルのダウンロードを高速化するために、データの残量が最も少ないキュー640に、より高い優先度が割り当てられ得る。
図示される実装及び上述したようなその変形は、各フレームが単一のデータストリームからのデータのみを含むデータフレームを形成することによって、多数のトランスポート接続140を通じた多数のデータストリームのデータ転送を順序付ける共通の機構を有する。各データフレームは、唯一つのトランスポート接続140通じて送信され、そのサイズは、その他の可能なサイズの範囲と比較して(例えば、各フレームが単一のラウンドトリップ中に送出される確率を改善することによって)スループットを増加させるために該接続に対して選択される。
異なる接続を通じて異なるサイズのデータフレームを送信することは、受信側での並び替えを簡易化する便益をも提供する。記述される実装では、各トランスポート接続140からのデータは、別個の並び替えキュー650中に格納される。図示される例では、別のトランスポート接続が未使用にされながら、3つのトランスポート接続のみが上流のデータを搬送する。各データフレームは、単一のトランスポート接続140を通じてのみ送信され得るが、各トランスポート接続140は、2つ以上のデータストリームからのデータフレームを搬送し得る。
図示される実施形態は、同じトランスポート接続140を通じて送信されるデータフレームが同じ又は同様のサイズを有するという事実からの便益を有し得、それは、接続が特定される並び替えバッファに対してどの程度のメモリが要求されるかを予測することを容易にし、それによりメモリ割り当ての効率を増加させる。それは、多数の接続からのフレームを並行して並び替えるためのリソース消費をも少なくさせる。任意の順序付けキュー中の任意のフレームからの全てのパケットが配信されると直ぐに、それらはフレームディスアセンブラ870へ送信され、フレームディスアセンブラ870は、それらを別個のデータストリーム中に多重分離し、各データストリームをプロキシ又はVPN170を通じて、対応するコンテンツプロバイダ190へ送付する。
図示される実施形態は、多数の同時接続経由のデータ配信保証のための手段として、トランスポートコントロールプロトコル(TCP)及びTCPスタック310に言及する。他の実施形態は、異なる配信プロトコル、例えば、追加のユーザ空間フロー制御及び輻輳制御モジュールを有するユーザデータグラムプロトコル(UDP)、又はストリームコントロールトランスミッションプロトコル(SCTP)を使用し得る。
他の実施形態では、マルチパストランスポートマネージャ130、160は、クライアント110及びコンテンツプロバイダのサーバ190上で夫々実行するクライアントアプリケーションと夫々一体化され得、それにより別個のプロキシ又はVPNモジュール120、170を不要にする。例えば、本明細書に開示される実施形態は、クライアント110及びコンテンツプロバイダ190の両者によりそれがサポートされている場合には、マルチパスTCPプロトコルエクステンションのスループットを加速するために使用され得る。
幾つかの実施形態では、異なるデータフレームは、同じ物理的データリンク又は同じ経路上の全てのデータリンクを共有する異なるトランスポート接続140を通じて送信される。他の実施形態では、異なるトランスポート接続は、有線及び無線、又は多数のIPアドレスを有する同じサーバへの異なる経路等の、異なるデータリンクを使用し得る。
多数の同時接続は、クライアント110からプロキシ若しくはVPNサーバ120への全てのトラフィック、又は該トラフィックの内の一部のみを転送するために使用され得る。幾つかの実施形態では、多数の接続140を越えて同じファイルのロードを拡散することなく、ユーザに近いコンテンツが直接アクセスされる一方で、ランダムなデータロスの影響を緩和するために、長距離のコンテンツのみが多数の同時接続140を通じてアクセスされる。
図10は、本明細書に開示されるコンピュータ及びサーバの内の何れかを具体化し得る例示的コンピューティングデバイス1000を説明するブロック図である。コンピューティングデバイス1000は、本明細書で論じられるプロシージャ等の様々なプロシージャを実行するために使用され得る。コンピューティングデバイス1000は、サーバ、クライアント、又は任意のその他のコンピューティングエンティティとして機能し得る。コンピューティングデバイスは、本明細書で論じられるような様々な監視機能を実行し得、本明細書に記述されるアプリケーションプログラム等の1つ以上のアプリケーションプログラムを実行し得る。コンピューティングデバイス1000は、デスクトップコンピュータ、ノートブックコンピュータ、サーバコンピュータ、携帯型コンピュータ、及びタブレットコンピュータ等の多種多様なコンピューティングデバイスの内の何れかであり得る。
コンピューティングデバイス1000は、1つ以上のプロセッサ1002、1つ以上のメモリデバイス1004、1つ以上のインタフェース1006、1つ以上の大容量ストレージデバイス1008、1つ以上の入出力(I/O)デバイス1010、及び表示デバイス1030を含み、それらの全てはバス1012に結合される。プロセッサ1002は、メモリデバイス1004及び/又は大容量ストレージデバイス1008中に格納された命令を実行する1つ以上のプロセッサ若しくはコントローラを含む。プロセッサ1002は、キャッシュメモリ等の様々な種類のコンピュータ可読媒体をも含み得る。
メモリデバイス1004は、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)1014)及び/又は不揮発性メモリ(例えば、リードオンリメモリ(ROM)1016)等の様々なコンピュータ可読媒体を含む。メモリデバイス1004は、フラッシュメモリ等の再書き込み可能なROMをも含み得る。
大容量ストレージデバイス1008は、磁気テープ、磁気ディスク、光ディスク、及び固体状態メモリ(例えば、フラッシュメモリ)等の様々なコンピュータ可読媒体を含む。図10に示すように、具体的な大容量ストレージデバイスはハードディスクドライブ1024である。様々なコンピュータ可読媒体からの読み出しを可能にし、及び/又は様々なコンピュータ可読媒体への書き込みを可能にするために、大容量ストレージデバイス1008には様々なドライブも含まれ得る。大容量ストレージデバイス1008は、取り外し可能媒体1026及び/又は非取り外し可能媒体を含む。
入出力デバイス1010は、データ及び/又はその他の情報がコンピューティングデバイス1000に入力されること、又はコンピューティングデバイス1000から検索されることを可能にする様々なデバイスを含む。例示的な入出力デバイス1010は、カーソル制御デバイス、キーボード、キーパッド、マイクロフォン、モニタ若しくはその他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、及びCCD若しくはその他の画像取込デバイス等を含む。
表示デバイス1030は、コンピューティングデバイス1000の1人以上のユーザに情報を表示可能な任意の種類のデバイスを含む。表示デバイス1030の例には、モニタ、表示端末、及びビデオ投影デバイス等が挙げられる。
インタフェース1006は、コンピューティングデバイス1000がその他のシステム、デバイス、又はコンピューティング環境と相互作用することを可能にする様々なインタフェースを含む。例示的インタフェース1006は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、無線ネットワーク、及びインターネットへのインタフェース等の、任意の数の異なるネットワークインタフェース1020を含む。その他のインタフェースは、ユーザインタフェース1018及び周辺デバイスインタフェース1022を含む。インタフェース1006は、1つ以上のユーザインタフェース素子1018をも含む。インタフェース1006は、プリンタ、ポインティングデバイス(マウス、トラックパッド等)、及びキーボード等に対するインタフェース等の、1つ以上の周辺インタフェースをも含み得る。
バス1012は、プロセッサ1002、メモリデバイス1004、インタフェース1006、大容量ストレージデバイス1008、及び入出力デバイス1010が、バス1012に結合されたその他のデバイス若しくはコンポーネントと共に、相互に通信することを可能にする。バス1012は、システムバス、PCIバス、IEEE1394バス、及びUSBバス等の幾つかの種類のバス構造の内の1つ以上を表す。
プログラム及びその他の実行可能なプログラムコンポーネントは、そうしたプログラム及びコンポーネントがコンピューティングデバイス1000の異なるストレージコンポーネント中に様々な時間に存在し得、プロセッサ1002により実行されるものと理解されるが、説明の目的のために、別々のブロックとして本明細書に示される。或いは、本明細書に記述されるシステム及びプロシージャは、ハードウェア中に、又はハードウェア、ソフトウェア、及び/若しくはファームウェアの組み合わせ中に実装され得る。例えば、本明細書に記述されるシステム及びプロシージャの内の1つ以上を実行するように、1つ以上の特定用途向け集積回路(ASIC)はプログラムされ得る。
この明細書全体を通じて“一実施形態”、“実施形態”、“一例”、又は“例”との言及は、実施形態又は例に関連して記述される特定の機構、構造、又は特徴が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、この明細書全体を通じて様々な場所の句“一実施形態では”、“実施形態では”、“一例”、又は“例”は、全てが同じ実施形態又は例に必ずしも言及していない。更に、特定の機構、構造、又は特徴は、1つ以上の実施形態又は例において任意の適切な組み合わせ及び/又は部分的組み合わせに組み込まれ得る。また、本明細書と共に提供される図は当業者への説明目的のためのものであること、並びに図面は必ずしも縮尺通りに図示されていないことを認識すべきである。
本発明は、その精神又は本質的特徴から逸脱することなくその他の特定の形式で具体化され得る。記述される実施形態は、全ての点で説明としてのみ考慮されるべきであり、限定的ではない。本発明の範囲は、それ故、上述の説明によるよりもむしろ、添付の請求項によって示される。請求項の意義及び均等物の範囲内にある全ての変更がそれらの範囲内に含まれるべきである。