(57)【要約】コンピュータシステムは、確認応答を要求しない接続等、より少数の未確認応答データを通じて多重化されＶＰＮトンネルであり得る複数の保証された接続中へ送信されるデータを分割する。受信者は、保証された接続を経由してデータフローを取得するために、受信されたデータをその後逆多重化し、保証された各接続に対して個別の確認応答を送信する。コンピュータシステムは、確認応答を逆多重化し、それらを対応する保証された接続に提供し、該保証された接続は、任意の未確認応答データをその後再送する。コンピュータシステム上で実行する配信コントローラは、１つ以上の未確認応答の接続に渡って多重化されている配信コントローラ間のトラフィック（ペイロード及び確認応答）と共に、受信者上で実行する対応するコントローラに結合され得る。幾つかの実施形態では、確認応答は、未確認応答の接続に渡って多重化されていない接続を経由して送信され得る。【選択図】図１
2019528604.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）  コンピュータシステムによって、リモートコンピューティングデバイスへの第１
の数の１つ以上の第１のネットワーク接続を提供することと、
（ｂ）  前記コンピュータシステムによって、前記リモートコンピューティングデバイス
への第２の数の複数の第２のネットワーク接続を提供することであって、前記第１の数は
前記第２の数よりも小さいことと、
（ｃ）  前記コンピュータシステムによって、前記１つ以上の第１のネットワーク接続を
通じて、１つ以上の第１のデータフロー中に前記複数の第２のネットワーク接続の複数の
第２のデータフローを多重化することと、
（ｄ）  前記コンピュータシステムによって、前記リモートコンピューティングデバイス
へペイロードデータを送信するための命令を受信することと、
（ｅ）  前記命令に応じて、
（i）  前記コンピュータシステムによって、前記ペイロードデータを複数のデータ部
分に分割することと、
（ii）  前記コンピュータシステムによって、前記複数の第２の接続の内の異なる接続
を経由して前記複数のデータ部分を送信することと、
（iii）  前記コンピュータシステムによって、前記１つ以上の第１のネットワーク接
続を通じて、前記複数の第２の接続経由で送信された前記複数のデータ部分を多重化する
ことと、
（iv）  前記コンピュータシステムによって、前記複数のデータ部分に対する１つ以上
の確認応答を受信することであって、前記１つ以上の確認応答の内の各確認応答は、前記
複数の第２の接続の内の第２の接続を参照することと、
（v）  前記コンピュータシステムによって、前記１つ以上の確認応答の内の各確認応
答を前記各確認応答により参照された前記第２の接続上に逆多重化することと、
（vi）  前記コンピュータシステムによって、少なくとも１つのデータ部分が送信され
た前記複数の第２の接続の内の少なくとも１つの第２の接続により前記複数のデータ部分
の内の前記少なくとも１つのデータ部分に対して確認応答が受信されなかったと判定する
ことと、
（vii）  前記少なくとも１つのデータ部分に対して確認応答が受信されなかったと判
定することに応じて、前記少なくとも１つの第２の接続を経由して前記少なくとも１つの
データ部分を再送することと
を含む方法。
【請求項２】
前記１つ以上の第１のネットワーク接続を通じて前記１つ以上の第１のデータフロー中
に前記複数の第２のネットワーク接続の前記複数の第２のデータフローを多重化すること
は、前記１つ以上の第１のデータフローの何れの確認応答にも関係なく、前記１つ以上の
第１のデータフローを送信することを含む、請求項１に記載の方法。
【請求項３】
前記１つ以上の第１のネットワーク接続を通じて前記１つ以上の第１のデータフロー中
に前記複数の第２のネットワーク接続の前記複数の第２のデータフローを多重化すること
は、ユニバーサルデータグラムプロトコル（ＵＤＰ）、インターネットプロトコル（ＩＰ
）暗号化セキュリティペイロード（ＥＳＰ）、及びソフトウェアＩＰ暗号化プロトコル（
ｓｗＩＰｅ）の内の少なくとも１つに従って前記１つ以上の第１のデータフローを送信す
ることを含む、請求項１に記載の方法。
【請求項４】
前記複数の第２のネットワーク接続を提供することは、トランスポートコントロールプ
ロトコル（ＴＣＰ）、マルチパストランスポートコントロールプロトコル（マルチパスＴ
ＣＰ）、及びストリームコントロールトランスミッションプロトコル（ＳＣＴＰ）の内の
少なくとも１つに従って前記複数の第２のネットワーク接続を実装することを含む、請求
項１に記載の方法。
【請求項５】
前記コンピュータシステムは複数の配信コントローラを実装し、前記複数の配信コント
ローラの内の各コントローラは、前記リモートデバイス上で実行する対応するコントロー
ラに結合され、前記複数の第２の接続の内の１つを実装し、
（vi）及び（vii）は、前記複数の配信コントローラの内の少なくとも１つの配信コン
トローラにより実施され、前記少なくとも１つの配信コントローラは、前記少なくとも１
つの第２の接続を実装し、
前記方法は、（vi）に応じて、前記少なくとも１つの配信コントローラによって、前記
少なくとも１つの第２の接続を経由して付加的データを送信する前に送信され得る未確認
応答データの量を削減することを更に含む、
請求項１に記載の方法。
【請求項６】
前記コンピュータシステムは、クライアントコンピューティングデバイスと、前記クラ
イアントコンピューティングデバイスとデータ通信する仮想プライベートネットワーク（
ＶＰＮ）サーバデバイスとを含み、
前記方法は、前記ＶＰＮサーバデバイスによって（ａ）、（ｃ）、（iii）、（iv）、
及び（v）を実施することを含み、
前記方法は、前記クライアントコンピューティングデバイスによって（ｂ）、（i）、
（ii）、（vi）、及び（vii）を実施することを含む、
請求項１に記載の方法。
【請求項７】
（ii）は、前記複数の第２の接続を経由して前記複数のデータ部分を含む複数のパケッ
トを送信することを含み、
（iii）は、前記１つ以上の第１のデータフローの内部に前記複数のパケットをカプセ
ル化することを含む、
請求項６に記載の方法。
【請求項８】
前記クライアントコンピューティングデバイス及び前記ＶＰＮサーバデバイスは、ポイ
ントツーポイントトンネリングプロトコル（ＰＰＴＰ）、レイヤ２トンネリングプロトコ
ル（Ｌ２ＴＰ）、インターネットプロトコルセキュリティ（ＩＰＳｅｃ）、セキュアソケ
ットレイヤ（ＳＳＬ）プロトコル、トランスポートレイヤセキュリティ（ＴＬＳ）プロト
コル、及びＯｐｅｎＶＰＮプロトコルの内の少なくとも１つを実装する、請求項６に記載
の方法。
【請求項９】
前記コンピュータシステムはプロキシを実装し、前記プロキシは（ｂ）、（ｄ）、（i
）、（ii）、（vi）、及び（vii）を実施する、請求項１に記載の方法。
【請求項１０】
（ｃ）は、前記１つ以上の第１のネットワーク接続を通じて１つ以上の第１のデータフ
ロー中に前記複数の第２のデータフローを多重化した後に、前記１つ以上の第１のデータ
フローを暗号化することを含む、請求項１に記載の方法。
【請求項１１】
前記コンピュータシステムは、第１のローカルネットワーク中に複数の異なるコンピュ
ーティングデバイスを含み、前記リモートコンピューティングデバイスは、前記第１のロ
ーカルネットワークから遠隔の第２のローカルネットワーク中に設置される、請求項１に
記載の方法。
【請求項１２】
前記コンピュータシステムは単一のコンピューティングデバイスを含む、請求項１に記
載の方法。
【請求項１３】
（iv）は、前記コンピュータシステムによって、前記１つ以上の第１のネットワーク接
続の前記１つ以上の第１のデータフロー中にカプセル化されない第３のデータフロー中の
前記複数のデータ部分に対する前記１つ以上の確認応答を受信することを含む、請求項１
に記載の方法。
【請求項１４】
前記第１の数は１つである、請求項１に記載の方法。
【請求項１５】
１つ以上のコンピューティングデバイスを含むコンピューティングシステムであって、
前記１つ以上のコンピューティングデバイスは、１つ以上の処理デバイスと、前記１つ以
上の処理デバイスに動作可能に結合された１つ以上のメモリデバイスとを各々含み、前記
１つ以上のコンピューティングデバイスの前記１つ以上のメモリデバイスは、
リモートコンピューティングデバイスにおいて終結される第１の数の１つ以上の第１の
ネットワーク接続を確立することと、
前記第１のネットワーク接続を通じて、前記リモートコンピューティングデバイスにお
いて終結される第２の数の複数の第２のネットワーク接続を確立することであって、前記
第１の数は前記第２の数よりも小さいことと、
（i）ペイロードデータを複数のデータ部分に分割することと、
（ii）前記複数の第２の接続の内の異なる接続を経由して前記複数のデータ部分を送
信することと、
（iii）前記１つ以上の第１のネットワーク接続を通じて、前記複数の第２の接続経
由で送信された前記複数のデータ部分を多重化することと
によって前記ペイロードデータを前記リモートコンピューティングデバイスへ送信するこ
とと、
（iv）前記第１のネットワーク接続を経由して確認応答を受信することと、
（v）各確認応答によって参照される前記複数の第２のネットワーク接続の内のネッ
トワーク接続上に前記各確認応答を逆多重化することと、
（vi）前記複数のデータ部分の内の１つ以上の受信の確認応答が前記１つ以上の第２
の接続の内の１つ以上の第２の接続上で受信されない場合、前記１つ以上の第２の接続を
経由して前記１つ以上のデータ部分を再送することと
によって、前記リモートコンピューティングデバイスへのペイロードデータの送信を検証
することと
を前記１つ以上のコンピューティングデバイスの前記１つ以上のプロセッサにさせるのに
有効な実行可能コードを格納する、システム。
【請求項１６】
前記実行可能コードは、前記１つ以上の第１のネットワーク接続を通過するトラフィッ
クの何れの確認応答にも関係なく、前記１つ以上の第１のネットワーク接続を通じて前記
複数の第２の接続経由で送信された前記複数のデータ部分を前記１つ以上のコンピューテ
ィングデバイスの前記１つ以上のプロセッサに多重化させるのに更に有効である、請求項
１５に記載のシステム。
【請求項１７】
前記実行可能コードは、ユニバーサルデータグラムプロトコル（ＵＤＰ）、インターネ
ットプロトコル（ＩＰ）暗号化セキュリティペイロード（ＥＳＰ）、及びソフトウェアＩ
Ｐ暗号化プロトコル（ｓｗＩＰｅ）の内の少なくとも１つに従って、前記１つ以上の第１
のネットワーク接続を前記１つ以上のプロセッサに実装させるのに更に有効である、請求
項１５に記載のシステム。
【請求項１８】
前記実行可能コードは、トランスポートコントロールプロトコル（ＴＣＰ）、マルチパ
ストランスポートコントロールプロトコル（マルチパスＴＣＰ）、及びストリームコント
ロールトランスミッションプロトコル（ＳＣＴＰ）の内の少なくとも１つに従って、前記
複数の第２のネットワーク接続を前記１つ以上のプロセッサに実装させるのに更に有効で
ある、請求項１５に記載のシステム。
【請求項１９】
前記コンピュータシステムは、カーネル空間及びユーザ空間を実装するオペレーティン
グシステムを実行する単一のコンピューティングデバイスを含み、
前記実行可能コードは、
仮想ネットワークデバイスにより前記カーネル空間中に実装される複数のカーネルトラ
ンスポートコントロールプロトコル（ＴＣＰ）ソケットとして前記複数の第２のネットワ
ーク接続を実装することであって、前記複数のカーネルＴＣＰソケットの内の各カーネル
ＴＣＰソケットは、前記各カーネルＴＣＰソケットを経由して送信されたデータの配信を
検証するようにプログラムされることと、
前記ユーザ空間中で実行するアプリケーションから前記ペイロードデータを受信するこ
とと、
前記ユーザ空間中で実行するマルチパスマネージャによって前記ペイロードデータを複
数のデータ部分に分割し、前記複数のカーネルＴＣＰソケットの内の異なるカーネルＴＣ
Ｐソケットへ各データ部分を複数のＴＣＰパケットとして送信することと
を前記１つ以上のプロセッサにさせるのに更に有効である、請求項１５に記載のシステム
。
【請求項２０】
前記実行可能コードは、
前記仮想ネットワークデバイスに結合されたカーネル空間中に第１のＴＣＰソケットを
実装することと、
前記仮想ネットワークデバイスによって、前記第１のＴＣＰソケットを通じて前記アプ
リケーションから前記ペイロードデータを受信することと、
前記仮想ネットワークデバイスによって、前記第１のＴＣＰソケットからの前記ペイロ
ードデータを傍受することと、
前記仮想ネットワークデバイスによって、前記第１のＴＣＰソケットからの前記ペイロ
ードデータを前記マルチパスマネージャにルーティングすることと
を前記１つ以上のプロセッサにさせるのに更に有効である、請求項１９に記載のシステム
。
【請求項２１】
前記実行可能コードは、
前記第１のＴＣＰソケットからの接続を終結することと、前記第１のＴＣＰソケットか
らの前記ペイロードデータを前記マルチパスマネージャに提供することとをするようにプ
ログラムされたトランスポートプロキシを前記ユーザ空間中に実装することを前記１つ以
上のプロセッサにさせるのに更に有効である、請求項２０に記載のシステム。
【請求項２２】
前記実行可能コードは、
前記仮想ネットワークデバイスによって、前記カーネルＴＣＰソケットを通じて送信さ
れた前記ＴＣＰパケットを傍受することと、
前記仮想ネットワークデバイスによって、前記ユーザ空間中で実行する仮想プライベー
トネットワーク（ＶＰＮ）クライアントであって、
アウトバウンドのトンネルトラフィックを取得するために前記複数のＴＣＰパケット
を暗号化及びカプセル化することと、
第１の数のＶＰＮトンネルを経由して前記リモートコンピューティングデバイスへ前
記アウトバウンドのトンネルトラフィックを送信することと
をするようにプログラムされた前記ＶＰＮクライアントに前記複数のＴＣＰパケットを提
供することと
を前記１つ以上のプロセッサにさせるのに更に有効である、請求項２１に記載のシステム
。
【請求項２３】
前記実行可能コードは、
前記ＶＰＮクライアントによって、前記第１の数のＶＰＮトンネルを経由して、受信さ
れたトンネルトラフィックを受信することと、
前記ＶＰＮクライアントによって、受信されたＴＣＰトラフィックを取得するために、
受信された前記トンネルトラフィックを復号及びデカプセル化することと、
前記ＶＰＮクライアントによって、受信された前記ＴＣＰトラフィックを前記カーネル
ＴＣＰソケットに逆多重化することと
を前記１つ以上のプロセッサにさせるのに更に有効である、請求項２１に記載のシステム
。
【請求項２４】
１つ以上の処理デバイスと、前記１つ以上のメモリデバイスに動作可能に結合された１
つ以上のメモリデバイスとを含むシステムであって、前記１つ以上のメモリデバイスは、
複数のローカル配信コントローラの間でデータストリームからの複数のデータ分散を割
り当てるようにプログラムされたディストリビュータを実行することと、
前記複数のローカル配信コントローラを実行することであって、各ローカル配信コント
ローラは、リモートコンピュータシステム上で実行する複数のリモート配信コントローラ
の内の対応するリモート配信コントローラに結合され、各ローカル配信コントローラは、
（ａ）対応する前記リモート配信コントローラと前記各ローカル配信コントローラとの間
のデータのフローを調整することと、（ｂ）データの前記フローの内のアウトバウンドデ
ータからの任意の未確認応答データを再送することと、（ｃ）前記各ローカル配信コント
ローラに割り当てられた前記複数のデータ分散をデータの前記フロー中の対応する前記リ
モート配信コントローラへ送信することとをするようにプログラムされることと、
前記リモートコンピュータシステム上で実行するリモートマルチプレクサにトランスポ
ート接続により結合されたローカルマルチプレクサを実行することであって、前記ローカ
ルマルチプレクサは、（ｄ）前記複数のローカル配信コントローラのデータの前記フロー
を前記トランスポート接続上に多重化することと、（ｅ）前記トランスポート接続経由で
受信された各確認応答を、前記各確認応答により参照される前記複数のローカル配信コン
トローラの内の１つのデータの前記フローに逆多重化することとをするようにプログラム
されることと
を前記１つ以上のメモリデバイスにさせるのに有効な実行可能コードを格納し、
前記実行可能データは、データ受信を確認応答しない１つ以上のトランスポートプロト
コルを使用して、前記リモートコンピュータシステムへの前記トランスポート接続を前記
１つ以上の処理デバイスに確立させるのに更に有効である、システム。
【請求項２５】
前記複数のローカル配信コントローラの内の各ローカル配信コントローラは、他のロー
カル配信コントローラから独立して、前記他のローカル配信コントローラと情報を交換す
ることなく、送信されたデータの少なくとも幾つかの確認応答を対応する前記リモート配
信コントローラから受信する前に、前記各ローカル配信コントローラの前記データフロー
を通じて前記各配信コントローラが送信することを可能にする送信されるデータの量を変
更するように更にプログラムされる、請求項２４に記載のシステム。
【請求項２６】
前記複数のローカル配信コントローラの内の各ローカル配信コントローラは、前記デー
タフローに対する前記トランスポートコントロールプロトコル（ＴＣＰ）の１つ以上の輻
輳制御アルゴリズムを実行するように更にプログラムされる、請求項２４に記載のシステ
ム。
【請求項２７】
データ受信を確認応答しない前記１つ以上のトランスポートプロトコルは、ユニバーサ
ルデータグラムプロトコル（ＵＤＰ）である、請求項２４に記載のシステム。
【請求項２８】
前記実行可能コードは、セキュアソケットレイヤ（ＳＳＬ）プロトコル及びトランスポ
ートレイヤセキュリティ（ＴＬＳ）プロトコルを含むグループから選択されたセキュアな
通信プロトコルを使用して、前記各ローカル配信コントローラに割り当てられた前記複数
のデータ分散を対応する前記リモート配信コントローラへ前記１つ以上の処理デバイスに
送信させるのに更に有効である、請求項２４に記載のシステム。
【請求項２９】
前記ディストリビュータは、
前記データストリームを終結することと、
前記データストリームからペイロードデータを抽出することと、
前記データ割り当てにおいて、前記複数のローカル配信コントローラの間で前記ペイロ
ードデータを割り当てることと
をするようにプログラムされたプロキシを更に含む、請求項２４に記載のシステム。
【請求項３０】
前記ローカルマルチプレクサは、（ａ）暗号化されたデータフローを取得するために、
データの前記フローが相互に多重化された後にデータの前記フローを暗号化することと、
（ｂ）暗号化された前記データフローを前記トランスポート接続を経由して前記リモート
マルチプレクサへ送信することとによって、前記複数のローカル配信コントローラのデー
タの前記フローを前記トランスポート接続上に多重化するようにプログラムされる、請求
項２４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
[関連出願]
この出願は、全ての目的のため参照によりその全体が本出願にこれにより組み込まれる
２０１６年８月３日に出願の米国仮特許出願番号６２／３７０，４９６の利益を請求する
。この出願は、全ての目的のため参照によりその全体が本出願にこれにより組み込まれる
２０１７年１月９日に出願の米国特許出願番号１５／４０２，０２４及び２０１７年１月
９日に出願の米国特許出願番号１５／４０２，０４９の利益をも請求する。
【０００２】
［技術分野］
本発明は、概して、多数のコンピュータからのデータをネットワーク接続経由でトラン
スポートするためのシステム及び方法に関する。
【背景技術】
【０００３】
コンピュータネットワーク経由でダウンロードされるオンラインコンテンツの量は、オ
ンラインビデオストリーミング及びユーザ生成のコンテンツの普及、ソーシャルネットワ
ーク及びメディアを駆使したメッセージングの急増、クラウドベースのストレージ等、多
数の要因に起因して時間と共に急速に増加している。
【０００４】
リクエストされたコンテンツは、しばしば、長距離を経由して配信されなければならな
い。最も好まれるビデオのみがユーザの近くにキャッシングされ得る。暗号化されていな
いコンテンツへのアクセスを第三者は許可されなければ、ＨＴＴＰＳのようなセキュアな
プロトコルを使用するコンテンツをキャッシングできない。スポーツ及びニュース等のリ
アルタイムでストリーミングされたイベントの遠隔での視聴にはキャッシングが使用でき
ない。ローカルなコンテンツは、しばしば、原産国を除いてキャッシングされない。
【０００５】
データ走行距離の増加は、パケットロスの比率の増加をしばしば伴う。トランスポート
コントロールプロトコル（ＴＣＰ）等の配信保証プロトコルが接続に使用される場合、こ
れらのロスは、ラストワンマイルの輻輳として一般的に解釈され、接続パイプの各セグメ
ントが飽和点から遠方にある場合であってもスループットに著しい減少をもたらす。
【０００６】
本明細書に開示されるシステム及び方法は、配信保証トランスポート接続を経由してデ
ータを転送するための改善された手法を提供する。
【発明の概要】
【０００７】
発明の一側面において、方法は、
（ａ）  コンピュータシステムによって、リモートコンピューティングデバイスへの第１
の数の１つ以上の第１のネットワーク接続を提供することと、
（ｂ）  前記コンピュータシステムによって、前記リモートコンピューティングデバイス
への第２の数の複数の第２のネットワーク接続を提供することであって、前記第１の数は
前記第２の数よりも小さいことと、
（ｃ）  前記コンピュータシステムによって、前記１つ以上の第１のネットワーク接続を
通じて、１つ以上の第１のデータフロー中に前記複数の第２のネットワーク接続の複数の
第２のデータフローを多重化することと、
（ｄ）  前記コンピュータシステムによって、前記リモートコンピューティングデバイス
へペイロードデータを送信するための命令を受信することと、
（ｅ）  前記命令に応じて、
（i）  前記コンピュータシステムによって、前記ペイロードデータを複数のデータ部
分に分割することと、
（ii）  前記コンピュータシステムによって、前記複数の第２の接続の内の異なる接続
を経由して前記複数のデータ部分を送信することと、
（iii）  前記コンピュータシステムによって、前記１つ以上の第１のネットワーク接
続を通じて、前記複数の第２の接続経由で送信された前記複数のデータ部分を多重化する
ことと、
（iv）  前記コンピュータシステムによって、前記複数のデータ部分に対する１つ以上
の確認応答を受信することであって、前記１つ以上の確認応答の内の各確認応答は、前記
複数の第２の接続の内の第２の接続を参照することと、
（v）  前記コンピュータシステムによって、前記１つ以上の確認応答の内の各確認応
答を前記各確認応答により参照された前記第２の接続上に逆多重化することと、
（vi）  前記コンピュータシステムによって、少なくとも１つのデータ部分が送信され
た前記複数の第２の接続の内の少なくとも１つの第２の接続により前記複数のデータ部分
の内の前記少なくとも１つのデータ部分に対して確認応答が受信されなかったと判定する
ことと、
（vii）  前記少なくとも１つのデータ部分に対して確認応答が受信されなかったと判
定することに応じて、前記少なくとも１つの第２の接続を経由して前記少なくとも１つの
データ部分を再送することと
を含む。
【０００８】
幾つかの実施形態では、前記１つ以上の第１のネットワーク接続を通じて前記１つ以上
の第１のデータフロー中に前記複数の第２のネットワーク接続の前記複数の第２のデータ
フローを多重化することは、前記１つ以上の第１のデータフローの何れの確認応答にも関
係なく、前記１つ以上の第１のデータフローを送信することを含む。
【０００９】
幾つかの実施形態では、前記１つ以上の第１のネットワーク接続を通じて前記１つ以上
の第１のデータフロー中に前記複数の第２のネットワーク接続の前記複数の第２のデータ
フローを多重化することは、ユニバーサルデータグラムプロトコル（ＵＤＰ）、インター
ネットプロトコル（ＩＰ）暗号化セキュリティペイロード（ＥＳＰ）、及びソフトウェア
ＩＰ暗号化プロトコル（ｓｗＩＰｅ）の内の少なくとも１つに従って前記１つ以上の第１
のデータフローを送信することを含む。
【００１０】
幾つかの実施形態では、前記複数の第２のネットワーク接続を提供することは、トラン
スポートコントロールプロトコル（ＴＣＰ）、マルチパストランスポートコントロールプ
ロトコル（マルチパスＴＣＰ）、及びストリームコントロールトランスミッションプロト
コル（ＳＣＴＰ）の内の少なくとも１つに従って前記複数の第２のネットワーク接続を実
装することを含む。
【００１１】
幾つかの実施形態では、前記コンピュータシステムは複数の配信コントローラを実装し
、前記複数の配信コントローラの内の各コントローラは、前記リモートデバイス上で実行
する対応するコントローラに結合され、前記複数の第２の接続の内の１つを実装する。そ
うした実施形態では、（vi）及び（vii）は、前記複数の配信コントローラの内の少なく
とも１つの配信コントローラにより実施され得、前記少なくとも１つの配信コントローラ
は、前記少なくとも１つの第２の接続を実装する。方法は、（vi）に応じて、前記少なく
とも１つの配信コントローラによって、前記少なくとも１つの第２の接続を経由して付加
的データを送信する前に送信され得る未確認応答データの量を削減することを更に含み得
る。
【００１２】
幾つかの実施形態では、前記コンピュータシステムは、クライアントコンピューティン
グデバイスと、前記クライアントコンピューティングデバイスとデータ通信する仮想プラ
イベートネットワーク（ＶＰＮ）サーバデバイスとを含む。方法は、前記ＶＰＮサーバデ
バイスによって（ａ）、（ｃ）、（iii）、（iv）、及び（v）を実施することと、前記ク
ライアントコンピューティングデバイスによって（ｂ）、（i）、（ii）、（vi）、及び
（vii）を実施することとを更に含み得る。
【００１３】
幾つかの実施形態では、（ii）は、前記複数の第２の接続を経由して前記複数のデータ
部分を含む複数のパケットを送信することを含み、（iii）は、前記１つ以上の第１のデ
ータフローの内部に前記複数のパケットをカプセル化することを含む。
【００１４】
幾つかの実施形態では、前記クライアントコンピューティングデバイス及び前記ＶＰＮ
サーバデバイスは、ポイントツーポイントトンネリングプロトコル（ＰＰＴＰ）、レイヤ
２トンネリングプロトコル（Ｌ２ＴＰ）、インターネットプロトコルセキュリティ（ＩＰ
Ｓｅｃ）、セキュアソケットレイヤ（ＳＳＬ）プロトコル、トランスポートレイヤセキュ
リティ（ＴＬＳ）プロトコル、及びＯｐｅｎＶＰＮプロトコルの内の少なくとも１つを実
装する。
【００１５】
幾つかの実施形態では、前記コンピュータシステムはプロキシを実装し、前記プロキシ
は（ｂ）、（ｄ）、（i）、（ii）、（vi）、及び（vii）を実施する。
【００１６】
幾つかの実施形態では、（ｃ）は、前記１つ以上の第１のネットワーク接続を通じて１
つ以上の第１のデータフロー中に前記複数の第２のデータフローを多重化した後に、前記
１つ以上の第１のデータフローを暗号化することを含む。
【００１７】
幾つかの実施形態では、前記コンピュータシステムは、第１のローカルネットワーク中
に複数の異なるコンピューティングデバイスを含み、前記リモートコンピューティングデ
バイスは、前記第１のローカルネットワークから遠隔の第２のローカルネットワーク中に
設置される。他の実施形態では、前記コンピュータシステムは単一のコンピューティング
デバイスを含む。
【００１８】
幾つかの実施形態では、（iv）は、前記コンピュータシステムによって、前記１つ以上
の第１のネットワーク接続の前記１つ以上の第１のデータフロー中にカプセル化されない
第３のデータフロー中の前記複数のデータ部分に対する前記１つ以上の確認応答を受信す
ることを含む。
【００１９】
幾つかの実施形態では、前記第１の数は１つである。
【００２０】
発明の別の側面において、コンピューティングシステムは１つ以上のコンピューティン
グデバイスを含み、前記１つ以上のコンピューティングデバイスは、１つ以上の処理デバ
イスと、前記１つ以上の処理デバイスに動作可能に結合された１つ以上のメモリデバイス
とを各々含む。前記１つ以上のコンピューティングデバイスの前記１つ以上のメモリデバ
イスは、
リモートコンピューティングデバイスにおいて終結される第１の数の１つ以上の第１の
ネットワーク接続を確立することと、
前記第１のネットワーク接続を通じて、前記リモートコンピューティングデバイスにお
いて終結される第２の数の複数の第２のネットワーク接続を確立することであって、前記
第１の数は前記第２の数よりも小さいことと、
（i）ペイロードデータを複数のデータ部分に分割することと、
（ii）前記複数の第２の接続の内の異なる接続を経由して前記複数のデータ部分を送
信することと、
（iii）前記１つ以上の第１のネットワーク接続を通じて、前記複数の第２の接続経
由で送信された前記複数のデータ部分を多重化することと
によって前記ペイロードデータを前記リモートコンピューティングデバイスへ送信するこ
とと、
（iv）前記第１のネットワーク接続を経由して確認応答を受信することと、
（v）各確認応答によって参照される前記複数の第２のネットワーク接続の内のネッ
トワーク接続上に前記各確認応答を逆多重化することと、
（vi）前記複数のデータ部分の内の１つ以上の受信の確認応答が前記１つ以上の第２
の接続の内の１つ以上の第２の接続上で受信されない場合、前記１つ以上の第２の接続を
経由して前記１つ以上のデータ部分を再送することと
によって、前記リモートコンピューティングデバイスへのペイロードデータの送信を検証
することと
を前記１つ以上のコンピューティングデバイスの前記１つ以上のプロセッサにさせるのに
有効な実行可能コードを格納する。
【００２１】
幾つかの実施形態では、前記実行可能コードは、前記１つ以上の第１のネットワーク接
続を通過するトラフィックの何れの確認応答にも関係なく、前記１つ以上の第１のネット
ワーク接続を通じて前記複数の第２の接続経由で送信された前記複数のデータ部分を前記
１つ以上のコンピューティングデバイスの前記１つ以上のプロセッサに多重化させるのに
更に有効である。
【００２２】
幾つかの実施形態では、前記実行可能コードは、ユニバーサルデータグラムプロトコル
（ＵＤＰ）、インターネットプロトコル（ＩＰ）暗号化セキュリティペイロード（ＥＳＰ
）、及びソフトウェアＩＰ暗号化プロトコル（ｓｗＩＰｅ）の内の少なくとも１つに従っ
て、前記１つ以上の第１のネットワーク接続を前記１つ以上のプロセッサに実装させるの
に更に有効である。
【００２３】
幾つかの実施形態では、前記実行可能コードは、トランスポートコントロールプロトコ
ル（ＴＣＰ）、マルチパストランスポートコントロールプロトコル（マルチパスＴＣＰ）
、及びストリームコントロールトランスミッションプロトコル（ＳＣＴＰ）の内の少なく
とも１つに従って、前記複数の第２のネットワーク接続を前記１つ以上のプロセッサに実
装させるのに更に有効である。
【００２４】
幾つかの実施形態では、前記コンピュータシステムは、カーネル空間及びユーザ空間を
実装するオペレーティングシステムを実行する単一のコンピューティングデバイスを含む
。前記実行可能コードは、
仮想ネットワークデバイスにより前記カーネル空間中に実装される複数のカーネルトラ
ンスポートコントロールプロトコル（ＴＣＰ）ソケットとして前記複数の第２のネットワ
ーク接続を実装することであって、前記複数のカーネルＴＣＰソケットの内の各カーネル
ＴＣＰソケットは、前記各カーネルＴＣＰソケットを経由して送信されたデータの配信を
検証するようにプログラムされることと、
前記ユーザ空間中で実行するアプリケーションから前記ペイロードデータを受信するこ
とと、
前記ユーザ空間中で実行するマルチパスマネージャによって前記ペイロードデータを複
数のデータ部分に分割し、前記複数のカーネルＴＣＰソケットの内の異なるカーネルＴＣ
Ｐソケットへ各データ部分を複数のＴＣＰパケットとして送信することと
を前記１つ以上のプロセッサにさせるのに更に有効であり得る。
【００２５】
幾つかの実施形態では、前記実行可能コードは、
前記仮想ネットワークデバイスに結合されたカーネル空間中に第１のＴＣＰソケットを
実装することと、
前記仮想ネットワークデバイスによって、前記第１のＴＣＰソケットを通じて前記アプ
リケーションから前記ペイロードデータを受信することと、
前記仮想ネットワークデバイスによって、前記第１のＴＣＰソケットからの前記ペイロ
ードデータを傍受することと、
前記仮想ネットワークデバイスによって、前記第１のＴＣＰソケットからの前記ペイロ
ードデータを前記マルチパスマネージャにルーティングすることと
を前記１つ以上のプロセッサにさせるのに更に有効である。
【００２６】
幾つかの実施形態では、前記実行可能コードは、前記第１のＴＣＰソケットからの接続
を終結することと、前記第１のＴＣＰソケットからの前記ペイロードデータを前記マルチ
パスマネージャに提供することとをするようにプログラムされたトランスポートプロキシ
を前記ユーザ空間中に実装することを前記１つ以上のプロセッサにさせるのに更に有効で
ある。
【００２７】
幾つかの実施形態では、前記実行可能コードは、
前記仮想ネットワークデバイスによって、前記カーネルＴＣＰソケットを通じて送信さ
れた前記ＴＣＰパケットを傍受することと、
前記仮想ネットワークデバイスによって、前記ユーザ空間中で実行する仮想プライベー
トネットワーク（ＶＰＮ）クライアントであって、
アウトバウンドのトンネルトラフィックを取得するために前記複数のＴＣＰパケット
を暗号化及びカプセル化することと、
第１の数のＶＰＮトンネルを経由して前記リモートコンピューティングデバイスへ前
記アウトバウンドのトンネルトラフィックを送信することと
をするようにプログラムされた前記ＶＰＮクライアントに前記複数のＴＣＰパケットを提
供することと
を前記１つ以上のプロセッサにさせるのに更に有効である。
【００２８】
幾つかの実施形態では、前記実行可能コードは、
前記ＶＰＮクライアントによって、前記第１の数のＶＰＮトンネルを経由して、受信さ
れたトンネルトラフィックを受信することと、
前記ＶＰＮクライアントによって、受信されたＴＣＰトラフィックを取得するために、
受信された前記トンネルトラフィックを復号及びデカプセル化することと、
前記ＶＰＮクライアントによって、受信された前記ＴＣＰトラフィックを前記カーネル
ＴＣＰソケットに逆多重化することと
を前記１つ以上のプロセッサにさせるのに更に有効である。
【００２９】
発明の別の側面において、システムは、１つ以上の処理デバイスと、前記１つ以上のメ
モリデバイスに動作可能に結合された１つ以上のメモリデバイスとを含む。前記１つ以上
のメモリデバイスは、
複数のローカル配信コントローラの間でデータストリームからの複数のデータ分散を割
り当てるようにプログラムされたディストリビュータを実行することと、
前記複数のローカル配信コントローラを実行することであって、各ローカル配信コント
ローラは、リモートコンピュータシステム上で実行する複数のリモート配信コントローラ
の内の対応するリモート配信コントローラに結合され、各ローカル配信コントローラは、
（ａ）対応する前記リモート配信コントローラと前記各ローカル配信コントローラとの間
のデータのフローを調整することと、（ｂ）データの前記フローの内のアウトバウンドデ
ータからの任意の未確認応答データを再送することと、（ｃ）前記各ローカル配信コント
ローラに割り当てられた前記複数のデータ分散をデータの前記フロー中の対応する前記リ
モート配信コントローラへ送信することとをするようにプログラムされることと、
前記リモートコンピュータシステム上で実行するリモートマルチプレクサにトランスポ
ート接続により結合されたローカルマルチプレクサを実行することであって、前記ローカ
ルマルチプレクサは、（ｄ）前記複数のローカル配信コントローラのデータの前記フロー
を前記トランスポート接続上に多重化することと、（ｅ）前記トランスポート接続経由で
受信された各確認応答を、前記各確認応答により参照される前記複数のローカル配信コン
トローラの内の１つのデータの前記フローに逆多重化することとをするようにプログラム
されることと
を前記１つ以上のメモリデバイスにさせるのに有効な実行可能コードを格納し、
前記実行可能データは、データ受信を確認応答しない１つ以上のトランスポートプロト
コルを使用して、前記リモートコンピュータシステムへの前記トランスポート接続を前記
１つ以上の処理デバイスに確立させるのに更に有効である。
【００３０】
幾つかの実施形態では、前記複数のローカル配信コントローラの内の各ローカル配信コ
ントローラは、他のローカル配信コントローラから独立して、前記他のローカル配信コン
トローラと情報を交換することなく、送信されたデータの少なくとも幾つかの確認応答を
対応する前記リモート配信コントローラから受信する前に、前記各ローカル配信コントロ
ーラの前記データフローを通じて前記各配信コントローラが送信することを可能にする送
信されるデータの量を変更するように更にプログラムされる。
【００３１】
幾つかの実施形態では、前記複数のローカル配信コントローラの内の各ローカル配信コ
ントローラは、前記データフローに対する前記トランスポートコントロールプロトコル（
ＴＣＰ）の１つ以上の輻輳制御アルゴリズムを実行するように更にプログラムされる。
【００３２】
幾つかの実施形態では、データ受信を確認応答しない前記１つ以上のトランスポートプ
ロトコルは、ユニバーサルデータグラムプロトコル（ＵＤＰ）を含む。
【００３３】
幾つかの実施形態では、前記実行可能コードは、セキュアソケットレイヤ（ＳＳＬ）プ
ロトコル及びトランスポートレイヤセキュリティ（ＴＬＳ）プロトコルを含むグループか
ら選択されたセキュアな通信プロトコルを使用して、前記各ローカル配信コントローラに
割り当てられた前記複数のデータ分散を対応する前記リモート配信コントローラへ前記１
つ以上の処理デバイスに送信させるのに更に有効である。
【００３４】
幾つかの実施形態では、前記ディストリビュータは、
前記データストリームを終結することと、
前記データストリームからペイロードデータを抽出することと、
前記データ割り当てにおいて、前記複数のローカル配信コントローラの間で前記ペイロ
ードデータを割り当てることと
をするようにプログラムされたプロキシを更に含む。
【００３５】
幾つかの実施形態では、前記ローカルマルチプレクサは、（ａ）暗号化されたデータフ
ローを取得するために、データの前記フローが相互に多重化された後にデータの前記フロ
ーを暗号化することと、（ｂ）暗号化された前記データフローを前記トランスポート接続
を経由して前記リモートマルチプレクサへ送信することとによって、前記複数のローカル
配信コントローラのデータの前記フローを前記トランスポート接続上に多重化するように
プログラムされる。
【００３６】
発明の別の側面において、ネットワークデータ転送のための方法は、
（i）コンピュータシステムによって、コンピュータネットワークを経由して、第１の
数の１つ以上の第１のデータフローからの第１のデータを受信することであって、前記１
つ以上の第１のデータフローは、第２の数の複数の第２のデータフローの多重化されたペ
イロードデータを搬送し、前記第１の数は前記第２の数よりも小さく、前記複数の第２の
データフローは、１つ以上の第３のデータフローのオリジナルのペイロードデータの異な
る部分を搬送することと、
（ii）前記コンピュータシステムによって、前記複数の第２のデータフローを取得する
ために前記第１のデータを逆多重化することと、
（iii）（ii）を実施した後に、前記コンピュータシステムによって、前記複数の第２
のデータフローの第１の部分中に受信された第２のデータを確認応答することと、
（iv）（ii）を実施した後に、前記コンピュータシステムによって、再送されたデータ
を前記複数の第２のデータフローの第２の部分を経由して受信し、再送された前記データ
を確認応答することであって、再送された前記データは、前記１つ以上の第１のデータフ
ローを通じて多重化されていることと、
（v）前記コンピュータシステムによって、前記１つ以上の第３のデータフローの前記
オリジナルのペイロードデータを取得するために、前記第２のデータ及び再送された前記
データを集約することと
を含む。
【００３７】
幾つかの実施形態では、前記方法は、データ受信を確認応答しない１つ以上の第１のト
ランスポートプロトコルを使用して前記１つ以上の第１のデータフローを管理することと
、データ受信を確認応答し未確認応答データを再送する１つ以上の第２のトランスポート
プロトコルを使用して前記複数の第２のデータフローを管理することとを更に含む。
【００３８】
幾つかの実施形態では、前記１つ以上の第１のトランスポートプロトコルは、ユニバー
サルデータグラムプロトコル（ＵＤＰ）、ＩＰ暗号化セキュリティペイロード（ＥＳＰ）
プロトコル、及びソフトウェアＩＰ暗号化プロトコル（ｓｗＩＰｅ）の内の少なくとも１
つを含む。
【００３９】
幾つかの実施形態では、前記１つ以上の第２のトランスポートプロトコルは、トランス
ポートコントロールプロトコル（ＴＣＰ）、マルチパストランスポートコントロールプロ
トコル（マルチパスＴＣＰ）、及びストリームコントロールトランスミッションプロトコ
ル（ＳＣＴＰ）の内の少なくとも１つを含む。
【００４０】
幾つかの実施形態では、前記方法は、前記複数の第２のデータフローの内の第２のデー
タフローに対して、前記複数の第２のデータフローの内の他の第２のデータフローと情報
を交換することなく、送信されたデータの少なくとも幾つかの確認応答を受信する前に前
記第２のデータフロー内の前記コンピュータネットワーク経由で送信され得る、送信され
るデータの量を独立して変更することを更に含む。
【００４１】
幾つかの実施形態では、前記１つ以上の第１のデータフローは、前記複数の第２のデー
タフローの複数の第２のパケットをカプセル化する複数の第１のパケットを含む。幾つか
の実施形態では、（iii）は、前記１つ以上の第１のデータフローの内部に少なくとも幾
つかのパケットをカプセル化することなく、前記第２のデータの確認応答を搬送する前記
少なくとも幾つかのパケットを送信することを含む。
【００４２】
幾つかの実施形態では、前記１つ以上の第１のデータフローは第１のトランスポート接
続を含み、前記複数の第２のデータフローは少なくとも２つの第２のトランスポート接続
を含み、前記少なくとも２つの第２のトランスポート接続両方の前記複数の第２のパケッ
トは、前記第１のトランスポート接続の前記複数の第１のパケット内にカプセル化される
。
【００４３】
幾つかの実施形態では、前記第１のトランスポート接続は、仮想プライベートネットワ
ーク（ＶＰＮ）トンネルである。
【００４４】
幾つかの実施形態では、前記ＶＰＮトンネルは、ポイントツーポイントトンネリングプ
ロトコル（ＰＰＴＰ）、レイヤ２トンネリングプロトコル（Ｌ２ＴＰ）、インターネット
プロトコルセキュリティ（ＩＰＳｅｃ）、セキュアソケットレイヤ（ＳＳＬ）プロトコル
、及びＯｐｅｎＶＰＮプロトコルのグループから選択されたプロトコルを実装する。
【００４５】
幾つかの実施形態では、前記方法は、
（vi）前記コンピュータシステム内で実行する第１のローカル配信コントローラによっ
て、前記オリジナルのペイロードデータの第１の部分を含む第１の第２のデータフローの
第１の部分を受信することと、
（vii）（vi）に応じて、前記第１のローカル配信コントローラによって、前記コンピ
ュータネットワークにより前記コンピュータシステムに結合されたリモートコンピューテ
ィングデバイス上で実行する第１のリモート配信コントローラへ前記第１の第２のデータ
フローの前記第１の部分の確認応答を送信することであって、前記第１のリモート配信コ
ントローラは、前記第１のローカル配信コントローラに結合されることと、
（iix）前記コンピュータシステム内で実行する第２のローカル配信コントローラによ
って、第２の第２のデータフローの第２の部分を受信することを失敗することであって、
前記第２の部分は、前記オリジナルのペイロードデータの第２の部分を含むことと、
（ix）（iix）に続いて、前記第２のローカル配信コントローラによって、前記第２の
ローカル配信コントローラに結合された第２のリモート配信コントローラから、前記第２
の第２のデータフローを経由して前記第２の第２のデータフローの前記第２の部分に対応
する再送されたデータを受信することと、
（x）（ix）に応じて、前記第２のローカル配信コントローラによって、前記リモート
コンピューティングデバイス上で実行する前記第２のリモート配信コントローラへ、再送
された前記データの確認応答を送信することと
を更に含む。
【００４６】
幾つかの実施形態では、前記１つ以上の第１のデータフローの内の各第１のデータフロ
ーの多重化された前記ペイロードデータは、データユニットに集約されている前記複数の
第２のデータフローの内の２つ以上の第２のデータフローからのペイロードデータを含み
、各データユニットは、前記２つ以上の第２のデータフローの内の単一の第２のデータフ
ローからのデータを含み、前記各第１のデータフローは、少なくとも前記２つの第２のデ
ータフローからの前記データユニットを搬送する。
【００４７】
幾つかの実施形態では、前記１つ以上の第１のデータフローは、セキュアソケットレイ
ヤ（ＳＳＬ）プロトコル及びトランスポートレイヤセキュリティ（ＴＬＳ）プロトコルの
グループからのセキュアな通信プロトコルに従ったトランスポート接続を含む。
【００４８】
幾つかの実施形態では、前記方法は、
リモートコンピューティングデバイスによって、２つ以上の結合接続を経由して前記１
つ以上の第３のデータフローを受信することと、
前記リモートコンピューティングデバイスによって、前記複数の第２のデータフローの
間で分散された前記複数の異なる部分に前記第２のデータ間の前記オリジナルのペイロー
ドを分割する前に、前記２つ以上の結合接続の内の第１の結合接続を終結することと、
前記コンピュータシステムによって、前記複数の第２のデータフローからの第２の結合
接続からのペイロードデータを集約する前に、前記２つ以上の結合接続の内の前記第２の
結合接続を開始することと
を更に含む。
【００４９】
幾つかの実施形態では、前記２つ以上の結合接続は、前記コンピュータシステム上で実
行する複数のプロキシと、接続を終結及び開始するようにプログラムされた前記リモート
コンピューティングデバイスとを行き来する接続を含む。
【００５０】
幾つかの実施形態では、前記方法は、リモートコンピューティングデバイスによって、
コンピュータネットワークを経由して前記第１のデータを送信する前に前記第１のデータ
を暗号化することと、前記コンピュータシステムによって、前記複数の第２のデータフロ
ーを取得するために前記第１のデータを逆多重化する前に前記第１のデータを復号するこ
ととを更に含む。
【図面の簡単な説明】
【００５１】
発明の利点を容易に理解するために、簡単に上述された発明のより具体的な説明は、添
付の図面で説明される特定の実施形態を参照しながら与えられるであろう。これらの図面
は、発明の典型的な実施形態のみを図示し、それ故、その範囲を限定するものと考えるべ
きではなく、発明は、添付の図面の使用を通じて付加的な特殊性と詳細と共に記述及び説
明されるであろう。
【００５２】
【図１】本発明の実施形態に従った仮想プライベートネットワーク（ＶＰＮ）を通じて多重化された多数の同時トランスポート接続を通じたデータ転送を実装するために使用される第１のネットワーク環境の図である。
【図２】本発明の実施形態に従ったＶＰＮを通じて多重化された多数の同時トランスポート接続を通じたクライアント側のデータ転送を実装するために使用される第２の環境の図である。
【図３】本発明の実施形態に従ったＶＰＮを通じて多重化された多数の同時トランスポート接続を通じたデータ転送を実装するための方法のプロセスフロー図である。
【図４】本発明の実施形態に従ったトランスポート接続を通じて多重化された多数の同時データフローを通じたクライアント側のデータ転送を実装するために使用される第３の環境の図である。
【図５】本発明の実施形態に従った１つ以上のトランスポート接続を通じて多重化された多数の同時データフローを通じたデータ転送の方法のプロセスフロー図である。
【図６】本発明の実施形態に従って（複数の）同時接続の内の一部のみが多重化される、多数の同時トランスポート接続を通じたデータ転送を実装するために使用される第４のネットワーク環境の図である。
【図７】本明細書に記述されるコンポーネント及び方法を実装するのに適するコンピューティングデバイスの図である。
【発明を実施するための形態】
【００５３】
本明細書の図中に概して記述及び説明されるような本発明のコンポーネントは、多種多
様な異なる構成で配置及び設計され得ることは容易に理解されるであろう。それ故、図に
表されるような以下の発明の実施形態のより詳細な説明は、請求されるような発明の範囲
を限定することを意図せず、発明に従ってここで考慮される実施形態の幾つかの例を表す
にすぎない。ここで記述される実施形態は、全体を通して同様の部分が同様の数字により
指し示される図面を参照することによって最も理解されるであろう。
【００５４】
発明は、技術の現在の状態に応じて、具体的には、現在利用可能な装置及び方法により
完全にはまだ解決されていない技術の問題及び要請に応じて開発されている。
【００５５】
本発明に従った実施形態は、装置、方法、又はコンピュータプログラム製品として具体
化され得る。したがって、本発明は、全体的にハードウェアの実施形態、全体的にソフト
ウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又
は“モジュール”若しくは“システム”として本明細書で概して全て称され得るソフトウ
ェア及びハードウェアの側面の組み合わせの実施形態の形式を取り得る。更に、本発明は
、媒体中に具体化されたコンピュータ使用可能なプログラムコードを有する表現の任意の
有形媒体中に具体化されたコンピュータプログラム製品の形式を取り得る。
【００５６】
１つ以上のコンピュータ使用可能な又はコンピュータ可読の媒体の任意の組み合わせが
利用され得る。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスク、ハ
ードディスク、ランダムアクセスメモリ（ＲＡＭ）デバイス、リードオンリメモリ（ＲＯ
Ｍ）デバイス、消去可能プログラム可能リードオンリメモリ（ＥＰＲＯＭ若しくはフラッ
シュメモリ）デバイス、ポータブルコンパクトディスクリードオンリメモリ（ＣＤＲＯＭ
）、光ストレージデバイス、及び磁気ストレージデバイスの内の１つ以上を含み得る。選
りすぐりの実施形態では、コンピュータ可読媒体は、命令実行システム、装置、又はデバ
イスにより、又はそれらと接続して使用するためのプログラムを含み得、格納し得、通信
し得、伝搬し得、又はトランスポートし得る任意の非一時的媒体を含み得る。
【００５７】
実施形態は、クラウドコンピューティング環境中にも実装され得る。この説明及び以下
の請求項において、“クラウドコンピューティング”は、仮想化を介して迅速に提供され
得、最小限の管理努力又はサービスプロバイダのインタラクションで解放され得、それに
応じてその後スケール設定され得る構成可能なコンピューティングリソース（例えば、ネ
ットワーク、サーバ、ストレージ、アプリケーション、及びサービス）の共有プールへの
ユビキタスで便利なオンデマンドのネットワークアクセスを可能にするためのモデルとし
て定義され得る。クラウドモデルは、様々な特徴（例えば、オンデマンドセルフサービス
、ブロードネットワークアクセス、リソースプーリング、迅速な拡張性、及び計測サービ
ス）、サービスモデル（例えば、Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（“Ｓａ
ａＳ”）、Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（“ＰａａＳ”）、及びＩｎｆ
ｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（“ＩａａＳ”））、並びに配備モ
デル（例えば、プライベートクラウド、コミュニティクラウド、パブリッククラウド、及
びハイブリッドクラウド）から構成され得る。
【００５８】
本発明の動作を実行するためのコンピュータプログラムコードは、Ｊａｖａ、Ｓｍａｌ
ｌｔａｌｋ、若しくはＣ＋＋等のオブジェクト指向プログラミング言語、及び“Ｃ”プロ
グラミング言語若しくは同様のプログラミング言語等の従来の手続型プログラミング言語
を含む１つ以上のプログラミング言語の任意の組み合わせで書き込まれ得る。プログラム
コードは、スタンドアローンなソフトウェアパッケージとしてコンピュータシステム上で
全体的に、スタンドアローンなハードウェアユニット上で、コンピュータから幾らか離間
したリモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で
全体的に、実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリア
ネットワーク（ＬＡＮ）若しくは広域エリアネットワーク（ＷＡＮ）を含む任意の種類の
ネットワークを通じてコンピュータに接続され得、或いは、該接続は、（例えば、インタ
ーネットサービスプロバイダを使用するインターネットを通じて）外部のコンピュータに
作り出され得る。
【００５９】
本発明は、発明の実施形態に従った方法、装置（システム）、及びコンピュータプログ
ラム製品のフローチャートの説明及び／又はブロック図を参照しながら以下に記述される
。フローチャートの説明及び／又はブロック図の各ブロック、並びにフローチャートの説
明及び／又はブロック図中のブロックの組み合わせは、コンピュータプログラム命令又は
コードにより実装され得ることは理解されるであろう。これらのコンピュータプログラム
命令は、コンピュータ又はその他のプログラム可能データ処理装置のプロセッサを介して
実行する命令が、フローチャート及び／又はブロック図の１つ以上のブロック中で明示さ
れた機能／作用を実装するための手段を作り出すように、マシンを生み出すための汎用コ
ンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッ
サに提供され得る。
【００６０】
これらのコンピュータプログラム命令は、フローチャート及び／又はブロック図の１つ
以上のブロック中で明示された機能／作用を実装する命令手段を含む製品をコンピュータ
可読媒体中に格納された命令が生み出すように、コンピュータ又はその他のプログラム可
能データ処理装置を特定の方法で機能させるように指示し得る非一時的コンピュータ可読
媒体中にも格納され得る。
【００６１】
コンピュータプログラム命令は、コンピュータ又はその他のプログラム可能装置上で実
行する命令が、フローチャート及び／又はブロック図の１つ以上のブロック中で明示され
た機能／作用を実装するためのプロセスを提供するようなコンピュータ実装プロセスを、
コンピュータ又はその他のプログラム可能装置上で実行される一連の動作可能なステップ
に生み出させるために、コンピュータ又はその他のプログラム可能データ処理装置上にも
ロードされ得る。
【００６２】
多数の同時の配信保証トランスポート接続に渡ってデータ転送を拡散することは、長距
離のデータ接続に共通するランダムなロスの弊害を緩和するために使用され得る。実例と
して、１つの接続に対する輻輳ウィンドウがパケットロス後に５０％に低下する場合、１
０個の並列接続に対する総輻輳ウィンドウは５％のみ減少する。
【００６３】
しかしながら、コンピュータネットワーク経由で単一のファイルをダウンロードするた
めに多数のトランスポート接続が使用される場合、マルチパストランスポートは、ルータ
及びスイッチ上に接続単位でより多くのキューを取り、それらは、接続単位のスロットリ
ングの効果を減少させる等、これは、単一の接続を通じた同じファイルのダウンロードよ
りも多くのリソースを取り得る。このことは、他のマルチパストランスポート接続の受け
入れを制限するので、同じネットワークパスの他のユーザにとって不公正であると、しば
しばみなされる。
【００６４】
この不公正を緩和するための周知の方法は、単一のトランスポートと同様のリソース量
を消費するようにマルチパストランスポートに強いることである。実例として、マルチパ
スＴＣＰプロトコルエクステンションに対する輻輳制御アルゴリズムは、単一の接続を通
じてファイルがロードされる場合と同じレベルで、多数の接続を通じた総スループットを
保持することを目標に実装される。この解決法は、異なるネットワーク間で切り替わる場
合の円滑なトラフィックのハンドオフには役立つが、長距離経由でのマルチパストランス
ポートの性能の利点を利用しない。
【００６５】
それ故、長距離経由でのマルチパストランスポートの性能の利点を否定せずに、多数の
ＴＣＰ接続間のトラフィックの分割の公正を改善する必要がある。
【００６６】
一方、実例として、プロキシ又は仮想プライベートネットワーク（ＶＰＮ）を使用する
場合、多数のファイルが単一の接続を通じて同時にしばしば転送される。そうした転送は
、各ファイルが自身の接続を通じて転送される場合よりもファイル単位で僅かなリソース
を消費し、プロキシ又はＶＰＮのユーザに対して不公正にする。それ故、限られたリソー
スの公正な共有を得るためにプロキシ及びＶＰＮの能力を改善する必要もある。
【００６７】
本発明の一側面において、第１のコンピューティングモジュール及び第２のコンピュー
ティングモジュールは、第１の数のトランスポート接続を通じてデータを交換することが
可能であり、第３のコンピューティングモジュール及び第４のコンピューティングモジュ
ールは、第２の数のデータフローを通じてデータを交換することが可能であり、第１の数
は第２の数よりも小さく、第２のフローは、第１及び第２のモジュールによって第１のト
ランスポート接続を通じて多重化され、第５のコンピューティングモジュール及び第６の
コンピューティングモジュールは、１つ以上の第３のデータフローを通じてデータを交換
することが可能であり、同じ第３のフローのペイロードは、第１の接続の内の１つ以上に
よって転送される前に第３及び第４のモジュールによって２つ以上の第２のフロー間で分
割され、その後、第１の接続の内の１つ以上から第２のフローが逆多重化された後に、第
２のフローから集約される。この側面において、第３及び第４のモジュールは、第１の接
続の内の１つ以上から第２のフローが逆多重化された後に、１つ以上の第２のフローによ
り受信されたデータを確認応答することと、第１の接続の内の１つ以上を通じて多重化さ
れた同じ第２のフローを通じて少なくとも１つの第２のフローにより未確認応答されたデ
ータを再送することとが更に可能である。
【００６８】
一実施形態では、第３及び第４のモジュールは、受信されたデータを確認応答すること
及び未確認応答のデータを再送することが可能な１つ以上のトランスポートプロトコルを
実装することによって、第２のフローを通じてデータを交換する一方で、第１及び第２の
モジュールは、受信されたデータの確認応答を提供することなくデータを受信することが
可能な１つ以上のトランスポートプロトコルを実装することによって、第１の接続を通じ
てデータを交換する。
【００６９】
一実例では、第１及び第２のモジュールは、ユニバーサルデータグラムプロトコル（Ｕ
ＤＰ）、ＩＰ暗号化セキュリティペイロード（ＥＳＰ）プロトコル、及びソフトウェアＩ
Ｐ暗号化プロトコル（ｓｗＩＰｅ）のグループからの１つ以上のプロトコルを実装する。
一例では、第３及び第４のモジュールは、トランスポートコントロールプロトコル（ＴＣ
Ｐ）、マルチパストランスポートコントロールプロトコル（マルチパスＴＣＰ）、及びス
トリームコントロールトランスミッションプロトコル（ＳＣＴＰ）のグループからの１つ
以上のプロトコルを実装する。
【００７０】
別の実施形態では、第３及び第４のモジュールの各々は、結合された２つ以上の配信コ
ントローラを含み、第３のモジュールの結合されたコントローラは、第４のモジュールの
結合されたコントローラと関連付けられ、両コントローラは同じ第２のフローを調整し、
これらのコントローラの各々は、他の第２のフローを調整するコントローラと情報を交換
することなく、未確認応答のデータを再送するため、及び以前に送信されたデータの確認
応答を受信する前に当該フローを通じて送信されるデータの量を変更するために、調整さ
れたフローを通じて受信されたデータを確認応答することが可能である。
【００７１】
一実装では、第１及び第２のモジュールは、第１の接続の内の１つ以上の内部に第２の
フローのパケットを多重化することが可能な、仮想プライベートネットワーク（ＶＰＮ）
のクライアント及びサーバを含む。一実例では、第１及び第２のモジュールは、第１の接
続の内部に第２のフローにより交換されたパケットをカプセル化する一方、第３及び第４
のモジュールは、複数のデータパケットを交換するトランスポート接続として第２のフロ
ーを実装する。一例では、ＶＰＮクライアント及びサーバは、ポイントツーポイントトン
ネリングプロトコル（ＰＰＴＰ）、レイヤ２トンネリングプロトコル（Ｌ２ＴＰ）、イン
ターネットプロトコルセキュリティ（ＩＰＳｅｃ）、セキュアソケットレイヤ（ＳＳＬ）
プロトコル、トランスポートレイヤセキュリティ（ＴＬＳ）プロトコル、及びＯｐｅｎＶ
ＰＮプロトコルのグループからのプロトコルを実装する。
【００７２】
他の一実施形態では、第５及び第６のモジュールは、それに対応した第３及び第４のモ
ジュールとのトランスポート接続として第３のフローの内の１つ以上を実装し、第３及び
第４のモジュールは、ペイロードを第２のフロー間で分割される前にこれらの接続から受
信し、ペイロードを第２のフローから集約された後にこれらの接続を通じて送信するプロ
キシを更に含む。
【００７３】
別の実施形態では、第１及び第２のモジュールは、第２のフローの多重化されたペイロ
ードを、第１の接続の内の１つ以上を通じて送信する前に暗号化することと、第１のフロ
ーの内の１つ以上から受信されたデータを、第２のフローに逆多重化される前に復号する
こととが可能である。
【００７４】
一実施形態では、第２、第４、及び第６のモジュールが第２のローカルネットワーク内
の１つ以上のコンピューティングデバイス上に存在する一方で、第１、第３、及び第５の
モジュールは、第１のローカルネットワーク内の１つ以上のコンピューティングデバイス
上に存在し、第１及び第２のローカルネットワークは、広域ネットワーク経由で接続され
る。一実例では、第２、第４、及び第６のモジュールが第２のコンピューティングデバイ
ス上に存在する一方で、第１、第３、及び第５のモジュールは第１のコンピューティング
デバイス上に存在し、第１及び第２のデバイスは、コンピュータネットワーク経由で接続
される。
【００７５】
他の一実施形態では、第３及び第４のモジュールは、確認応答を搬送する少なくとも幾
つかのパケットを第１のフローの内の１つ以上の内部にカプセル化することなく送信する
ことによって、１つ以上のフローにより受信されたデータを確認応答することが可能であ
る。
【００７６】
本発明の別の側面において、第１及び第２のコンピュータは、以下のモジュールを使用
することによって、コンピュータネットワーク経由でデータを交換している。
・結合された２つ以上の配信コントローラ。第１のコンピュータの結合されたコントロー
ラは、第２のコンピュータの結合されたコントローラと関連付けられ、両コントローラは
、第１及び第２のコンピュータ間の同じデータフローを調整し、該フローのコントローラ
は、受信されたデータの確認応答を送信することと、調整されたフローに対する未確認応
答データを再送することとが可能である。
・結合された１つ以上のマルチプレクサ。第１のコンピュータの結合されたマルチプレク
サは、第２のコンピュータの結合されたマルチプレクサと関連付けられ、結合されたマル
チプレクサの各セットは、第１及び第２のコンピュータ間の１つ以上のトランスポート接
続を経由してデータを交換することが可能であり、結合された一方のマルチプレクサは、
結合された他方のマルチプレクサへの１つ以上のトランスポート接続に渡って、調整され
た２つ以上のフローを多重化することが可能であり、受信されたデータを調整された２つ
以上のデータフローに逆多重化することが可能である。
・同じコンピュータ上の２つ以上の配信コントローラであって、調整されたそれらのフロ
ー経由でデータを送信する該コントローラにデータストリームのデータを分散することと
、２つ以上の配信コントローラであって、調整されたそれらのフローからデータを受信す
る該コントローラからデータストリームのデータを集約することとが可能なディストリビ
ュータ。
・ここで、第１及び第２のコンピュータは、送信者に確認応答を提供することなくデータ
を受信することを支持する１つ以上のトランスポートプロトコルを使用して、結合された
マルチプレクサ間に１つ以上のトランスポート接続を確立する。
【００７７】
一実施形態では、同じデータフローを調整する結合されたコントローラは、他の第２の
フローを調整するコントローラと情報を交換することなく、以前に送信されたデータの確
認応答を受信する前に当該フローを通じて送信されたデータの量を変更することが可能で
ある。一実装では、結合されたコントローラは、調整されたデータフローに対してトラン
スポートコントロールプロトコル（ＴＣＰ）の１つ以上の輻輳制御アルゴリズムを使用す
る。
【００７８】
一実例では、１つ以上のトランスポート接続により使用されるトランスポートプロトコ
ルは、ユニバーサルデータグラムプロトコル（ＵＤＰ）である。
【００７９】
別の実施形態では、第１及び第２のコンピュータは、確立された１つ以上のトランスポ
ート接続に渡って、セキュアソケットレイヤ（ＳＳＬ）及びトランスポートレイヤセキュ
リティ（ＴＬＳ）プロトコルのグループからのセキュアな通信プロトコルを使用する。
【００８０】
他の一実施形態では、ディストリビュータは、配信コントローラ間の分散のためにデー
タストリームを終結しそのペイロードを抽出するプロキシを更に含む。
【００８１】
一実装では、第１のコンピュータ及び第２のコンピュータは、１つ以上のトランスポー
ト接続を経由するデータを、調整されたフローから多重化された後に暗号化することと、
１つ以上のトランスポート接続を経由して受信されたデータを、調整されたフローに逆多
重化される前に復号することとが更に可能である。
【００８２】
本発明の他の一側面では、複数のマルチパス接続の内の１つ以上は、１つ以上の共通の
トランスポート接続に渡って多重化されず、代わりに、これらのマルチパス接続は、該接
続が多数のマルチパス接続に使用されるのと並行して、ＷＡＮを経由してデータを交換す
るコンピュータ間に直接確立される。
【００８３】
図１は、仮想プライベートネットワーク（ＶＰＮ）を通じて多重化された多数の同時ト
ランスポート接続を通じたデータ転送を実装するために使用され得る第１のネットワーク
環境の図である。
【００８４】
クライアント１１０は、コンピュータネットワークを経由してコンテンツサーバ１９５
からコンテンツをリクエストするための少なくとも１つの接続を確立する。近傍のプロキ
シ１１５は、この接続を終結し、近傍のマルチパスマネージャ１２０にそのペイロードを
提示する。近傍のマルチパスマネージャ１２０は、複数の配信コントローラ１２５と通信
する。これらのコントローラの各々は、マルチパスマネージャ１２０とＶＰＮクライアン
ト１４５との間の接続と関連付けられる。これらの接続の内の幾つかは、クライアントデ
ータ（１３５）を転送するために使用され、その他は、予備（１４０）として保持され得
る。
【００８５】
図示される実装では、各配信コントローラ１２５はＴＣＰスタックを含み、接続１３５
及び１４０は、ＶＰＮクライアント１４５とＶＰＮサーバ１５５との間に確立されたトン
ネル１５０の内部にカプセル化されたＴＣＰ接続である。ＴＣＰ接続は、配信コントロー
ラ１７０により管理される（幾つかの実施形態では、遠方のマルチパスマネージャ１８０
とＶＰＮサーバ１５５との間の幾つかの接続１６５が予備として保持されると共に）接続
１６０を通じて遠方のマルチパスマネージャ１８０へその後渡される。遠方のマルチパス
マネージャは、コンテンツサーバ１９５に接続する遠方のプロキシ１８５と通信し得る。
【００８６】
この実装では、ＴＣＰ接続１３５、１６０及び接続１４０、１６５は、夫々、１つ以上
のＶＰＮトンネル１５０内にカプセル化された同じ接続。一例では、ＶＰＮ接続１５０に
より使用されるトランスポート接続は、受信されたパケットの確認応答と、任意の未確認
応答パケットの再送とを支持しない。そうした実施形態では、ＶＰＮクライアント１４５
とＶＰＮサーバ１５５との間にパケットのドロップがある場合、配信コントローラ１２５
又は１７０の内の１つに逆多重化されるまで、そのペイロードは再送されない。ＶＰＮト
ンネル１５０により使用されるトランスポートプロトコルは、実例として、ＵＤＰ（ユニ
バーサルデータグラムプロトコル）、ＥＳＰ（暗号化セキュリティペイロード）、又はｓ
ｗＩＰｅ（ソフトウェアインターネットプロトコル（ＩＰ）暗号化プロトコル）プロトコ
ルであり得る。これらのプロトコルの何れかは、ポイントツーポイントトンネリングプロ
トコル（ＰＰＴＰ）、レイヤ２トンネリングプロトコル（Ｌ２ＴＰ）、インターネットプ
ロトコルセキュリティ（ＩＰＳｅｃ）、セキュアソケットレイヤ（ＳＳＬ）プロトコル、
トランスポートレイヤセキュリティ（ＴＬＳ）プロトコル、及びＯｐｅｎＶＰＮプロトコ
ルの内の少なくとも１つに基づきセキュアで認証されたデータ交換を実装するために、Ｖ
ＰＮクライアント１４５及びサーバ１５５により使用され得る。
【００８７】
この例では、ＶＰＮクライアント１４５及びサーバ１５５は、ＴＣＰ接続１３５、１６
０を、それらのパケットをカプセル化することによって多重化し、カプセル化ヘッダを取
り去ることによってそれらを逆多重化する。デカプセル化されたパケットの各々は、対応
するＴＣＰスタックにその後渡され、該ＴＣＰスタックは、受信されたパケットを確認応
答し、受信者のＴＣＰスタックにより確認応答されなかった以前に送信された任意のパケ
ットを再送する。この開示の目的のため、未確認応答のデータ、又は確認応答されないパ
ケットは、幾つかのタイムアウトウィンドウ内に確認応答が受信されないデータ又はパケ
ットであると理解され得る。
【００８８】
図示される実装では、グループ１２５及び１７０中の配信コントローラの各々は、相互
から独立している。具体的には、コントローラ１２５、１７０の対応するＴＣＰスタック
の各々は、以前に送信されたパケットの確認を受信することなく幾つのパケットが送信さ
れ得るかを明示する自身の輻輳ウィンドウを保持する。異なる接続１３５、１６０からの
パケットは、トンネル１５０の内部でのデータ転送中にロスされてくるので、各配信コン
トローラ１２５、１７０は、自身の未確認応答のパケットを再送し、未確認応答のパケッ
トに基づいて、他の配信コントローラ１２５、１７０から独立して自身の輻輳ウィンドウ
を調節する。パケットロスがランダムである場合、このことは、実際に多数の同時配信保
証トランスポート接続に渡ってデータ転送することと同じ類の改善をもたらす。実例とし
て、１つのＴＣＰ接続に対する輻輳ウィンドウがパケットロス後に５０％に低下する場合
、１０個の並列ＴＣＰ接続に対する総輻輳ウィンドウは５％のみ減少する。
【００８９】
同時に、同じＶＰＮトンネル１５０に渡って多数の同時トランスポート接続１３５、１
６０を多重化することは、多重化されていない（複数の）接続経由のマルチパストランス
ポートと比較して、そうした仮想マルチパストランスポートの公正を改善する。実例とし
て、クライアントが単一のＶＰＮトンネルを開通し、コンテンツサーバからの単一のファ
イルをその後リクエストする場合、このファイルは、単一のトランスポート接続を経由し
てコンピュータネットワークを通じて配信され、各中間ルータ又はスイッチ上に接続指定
単位で唯一のキューを占める。
【００９０】
単一の接続を通じた仮想マルチパストランスポートは、同じパスを経由した単一のＴＣ
Ｐ接続よりも帯域幅を消費し得るが、その他の最新のネットワークプロトコルは、同等の
ＴＣＰフローよりも高いビットレートをも支持する。例えば、Ｇｏｏｇｌｅ株式会社によ
り開発され、評判のあるＣｈｒｏｍｅブラウザにより使用されるＱＵＩＣ（Ｑｕｉｃｋ  
ＵＤＰインターネット接続）プロトコルは、標準的なＴＣＰよりもアグレッシブなＭｕｌ
ＴＣＰ（マルチプルＴＣＰ）輻輳制御アルゴリズムを実装する。それ故、本明細書に開示
される実施形態は、公正と性能向上とのバランスを改善することによって幅広い採用をよ
り受け入れ可能な仮想マルチパストランスポートを提供する。
【００９１】
幾つかの実施形態では、ＶＰＮクライアント１４５及びＶＰＮサーバ１５５の内の少な
くとも１つは、トラフィックの認証及び暗号化を完全に担当する、スタンドアローンなハ
ードウェアモジュール又は機器として実装される。そうした実施形態では、各プロキシ及
びマルチパスマネージャのペア（プロキシ１１５及びマルチパスマネージャ１２０、プロ
キシ１８５及びマルチパスマネージャ１８０）は、対応するＶＰＮモジュール１４５、１
５５と同じローカルネットワーク上の１つ以上のコンピュータ上のモジュール又はプロセ
スとして実装される。この実施形態では、ネットワークレベルのｐｅｅｒ認証、データ発
信元認証、データインテグリティ及びリプレイプロテクション等の認証及びセキュリティ
プロトコルを何ら変更することなく、既存のＶＰＮ基盤（実例として、エンタープライズ
ネットワーク上のＩＰＳＥＣ  ＶＰＮ機器）を再利用することの利点を有する。
【００９２】
幾つかの実施形態では、プロキシ、マルチパスマネージャ、及びＶＰＮモジュールは、
同じコンピュータ上に配備され得る。幾つかの実施形態では、モバイルデバイス上のクラ
イアントアプリケーションは、近傍のプロキシ１１５、近傍のマルチパスマネージャ１２
０、及びＶＰＮクライアント１４５を集約し得る。別の実例では、ＶＰＮサーバ１５５は
、遠方のマルチパスマネージャ１８０及び遠方のプロキシ１８５と同じサーバコンピュー
タ上で稼働していてもよい。幾つかの実施形態では、遠方のマルチパスマネージャ１８０
及び遠方のプロキシ１８５は、ＶＰＮサーバ機器１５５内に集約されたプラグインハード
ウェアモジュール上に配備され得る。
【００９３】
幾つかの実施形態では、データ暗号化は、データペイロード毎に１回実施されるのみで
あり、それにより、性能を改善し、計算リソースを節約する。幾つかの実施形態では、マ
ルチパスマネージャ１２０、１８０は、何ら認証又は暗号化を実行せず、代わりに、それ
実行するためにＶＰＮモジュール１４５、１５５を頼りにする。幾つかの実施形態では、
クライアント１１０及びコンテンツサーバ１９５は、少なくとも、ＨＴＴＰプロトコル経
由でデータを交換する場合に、ＷＡＮ（広域ネットワーク）経由でセキュアにデータを転
送するためにＶＰＮトンネル１５０をも頼りにする。他の実施形態では、ＶＰＮ暗号化は
無効にされ得、マルチパスマネージャ１２０、１８０は、トランスポート接続１３５、１
４０、１６０、１６５を通じてトラフィックを暗号化するであろう。幾つかの実施形態で
は、該トラフィックの他の部分がマルチパスマネージャ１２０、１８０間で暗号化される
一方で、トラフィックの一部は、クライアント１１０とコンテンツサーバ１９５との間の
何れかで暗号化されるであろう。実例として、マルチパストランスポートマネージャ１２
０、１８０によるデータの暗号化は、ＨＴＴＰＳプロトコルを経由してクライアント１１
０及びコンテンツサーバ１９５により交換されるデータに対して無効にされるであろう。
【００９４】
幾つかの実施形態では、ＶＰＮクライアント１４５とＶＰＮサーバ１５５との間でコン
ピュータネットワーク経由で転送されるデータの配信の検証は、ＴＣＰ等の配信保証トラ
ンスポートプロトコルを使用する同時トランスポート接続１３５、１４０、１６０、１６
５を通じてのみ達成される。この実装では、ＶＰＮトンネル１５０を経由して受信された
データは、それらが逆多重化され、対応するマルチパス接続１３５、１６０の配信コント
ローラ１２５、１７０に到達するまで確認応答されない。このことは、広域ネットワーク
（ＷＡＮ）経由で転送された同じデータに対する繰り返しの又は次々と転送される確認応
答の送信を阻止し、それにより、性能低下を回避する。
【００９５】
幾つかの実施形態では、マルチパス接続と関連付けられた配信コントローラ１２５、１
７０のみが、ＷＡＮ経由で受信されたデータの確認応答と、未確認応答データの再送とを
担当する。この実例では、ＶＰＮクライアント１４５及びサーバ１５５は、確認応答を送
信することなくデータを配信する、ＵＤＰ等のトランスポートプロトコルを使用すること
が可能であり、プロキシ１１５及び１８５は、ＷＡＮを経由してクライアント１１０及び
コンテンツサーバ１９５から確認応答を送信することを阻止することが同様に可能であり
得る。
【００９６】
幾つかの実施形態では、プロキシ１８５がコンテンツサーバ１９５との接続を終結する
一方で、プロキシ１１５は、クライアント１１０との接続を終結し、それにより、対応す
る確認応答を停止し、パケットのペイロードのみを通過させる。別の例では、プロキシ１
１５及び１８５は“詮索”プロキシとして機能し、クライアント１１０及びコンテンツサ
ーバ１９５との接続を終結する代わりに、それらは、生成された確認応答をブロックし、
送信者に近い模擬された確認応答を作り出す。実例として、プロキシ１８５は、サーバ１
９５により送信された全てのデータに対する確認応答を模擬する一方で、プロキシ１１５
は、サーバ１９５からデータを受信するクライアント１１０による全ての確認応答をブロ
ックするであろう。同様に、プロキシ１８５は、コンテンツサーバ１９５による確認応答
をブロックし得、プロキシ１１５は、クライアント１１０により送信された全てのデータ
に対して、模擬された確認応答をクライアント１１０に提供し得る。
【００９７】
幾つかの実施形態では、アクティブな接続１３５、１６０と予備の接続１４０、１６５
との間のバランスは、異なるネットワーク環境に対して変化する。実例として、パケット
ロスがランダムのままである場合、各パケットロスの影響を更に減少させるために、以前
に予備にされた接続はアクティブになり得る。
【００９８】
幾つかの実施形態では、クライアントによりリクエストされたデータを転送する必要が
ある場合に、マルチパスマネージャ１２０、１８０により開通される全てのトランスポー
ト接続１３５、１４０、１６０、１６５がアクティブになり、すなわち、予備の接続はな
い。
【００９９】
幾つかの実施形態では、近傍のトランスポートマネージャ１２０により開通されるアク
ティブな接続１３５の総数は、クライアント１１０へ同時にダウンロードされるデータフ
ァイルの数の増加と共に増加する。このことは、利用可能なリソースのよりよい共有をＶ
ＰＮユーザが得ることを可能にし、平均スループットの増加によって単一の接続キューの
制限を補填する。
【０１００】
図１に図示される実施形態の一実装では、ＶＰＮクライアント１４５とＶＰＮサーバ１
５５との間に単一のトランスポート接続１５０が開通される。別の実施形態では、接続１
３５、１６０の多重化されたデータを搬送する多数のトランスポート接続１５０が、同じ
ＶＰＮクライアント１４５とＶＰＮサーバ１５５との間に開通され得る。幾つかの実施形
態では、多重化されたデータを搬送するトランスポート接続１５０の数は、マルチパスマ
ネージャにより開通され、且つＶＰＮクライアント１４５とＶＰＮサーバ１５５との間の
接続を通じて多重化される接続１３５、１６０の数よりも小さい。例えば、単一の接続１
５０があり得る。
【０１０１】
幾つかの実施形態では、多数のデータストリームの同時のダウンロードをクライアント
１１０がリクエストする場合、ＶＰＮクライアント１４５は、同じＶＰＮサーバ１５５へ
の多数の接続１５０を開通し、中間ルータ又はスイッチ上の多数の接続キューをクライア
ント１１０が利用することを可能にする。実例として、クライアントが８つの同時のダウ
ンロードストリームを開通する場合、それらは、近傍のトランスポートマネージャ１２０
により開通された６４個の同時トランスポート接続１３５、１６０間に分割され得、ＶＰ
ＮクライアントとＶＰＮサーバとの間の８つのトランスポート接続１５０を通じてその後
多重化され得る。幾つかの実施形態では、マルチパスマネージャ１２５により作り出され
た同じ数のマルチパス接続１３５、１６０は、同じＶＰＮクライアント１４５と同じＶＰ
Ｎサーバ１５５との間の異なる数のトランスポート接続１５０を通じて多重化され得る。
【０１０２】
別の実施形態では、ＶＰＮクライアント１４５は、異なるクライアントリクエストを処
理する異なる２つ以上のＶＰＮサーバ１５５への多数の接続を開通する。実例として、ク
ライアント１１０は、場所Ａ中の第１のコンテンツサーバ１９５上に格納されたファイル
のダウンロードを、場所Ａ近傍の第１のＶＰＮサーバ１５５を通じてリクエストし得る。
同じクライアント１１０は、異なる場所Ｂ中の第２のコンテンツサーバ１９５上に格納さ
れたファイルのダウンロードを、場所Ｂ近傍の第２のＶＰＮサーバ１５５を通じてリクエ
ストし得る。この場合、マルチパスマネージャ１２０は、ＶＰＮクライアント１４５と対
応するＶＰＮサーバ１５５との間の１つ以上の接続１５０を通じて多重化される、ＶＰＮ
サーバ１５５毎のマルチパス接続１３５の異なるセットを生成し得る。
【０１０３】
図２は、ＶＰＮ接続１５０を通じて多重化される多数の同時トランスポート接続を通じ
たクライアント側のデータ転送を実装するために使用される第２の環境の図である。
【０１０４】
図２は、同じコンピューティングデバイス、実例として、デスクトップコンピュータ又
はモバイルフォン上でプロキシ１１５、マルチパスマネージャ１２０、及びＶＰＮクライ
アント１４５が全て稼働するクライアント側の実装を図示する。この実装では、クライア
ントアプリケーション２００（実例として、ウェブブラウザ又はモバイルアプリケーショ
ン）は、ユーザ空間上で実行され、仮想ネットワークデバイス２２０へトラフィックを送
信するＴＣＰソケット２１０を開通する。仮想ネットワークデバイス２２０は、コンピュ
ーティングデバイス上で実行するオペレーティングシステムのカーネル空間中で動作する
ＴＵＮ（ネットワークトンネル）デバイスを含む。
【０１０５】
用語“カーネル空間”及び“ユーザ空間”は、ＬＩＮＵＸ及びＷＩＮＤＯＷＳ等の最新
のコンピュータオペレーティングシステムにより提供される２種類の仮想メモリを指すと
理解され得る。主に、カーネル空間とユーザ空間との分離は、悪意のある又は誤ったソフ
トウェアの挙動からのメモリ保護及びハードウェア保護を提供するのに役立つ。カーネル
空間は、特権を持つオペレーティングシステムカーネル、カーネルエクステンション、及
び大方のデバイスドライバを稼働するために厳密に予め備えられる。一方、ユーザ空間は
、カーネル空間中で稼働する、特権を持つオペレーティングシステム（入出力を実施し、
ファイルシステムオブジェクト、アプリケーションソフトウェアを操作する等のソフトウ
ェア）と相互作用する様々なプログラム及びライブラリを実行するために使用されるメモ
リ領域を指す。
【０１０６】
仮想ネットワークデバイス２２０は、トラフィックをユーザ空間に移す。トランスポー
トプロキシ２３０は、ＴＣＰソケット２１０からトラフィックを傍受し、その接続を終結
し、傍受されたトラフィックからのペイロードを、ユーザ空間中で同様に稼働するマルチ
パスマネージャ２５５へ送信する。マルチパスマネージャ２５５は、ソケット２４０、２
５０、２６０、２７０を通じて開通された多数のトランスポート接続に渡ってこのペイロ
ードを分散する。マルチパストランスポートの周知の実装として、広域ネットワーク（Ｗ
ＡＮ）経由で多数の接続２４０〜２７０からデータを送信する代わりに、説明される実施
形態では、ＴＣＰソケット２４０〜２７０は、トラフィックをユーザ空間に戻す仮想ネッ
トワークデバイス２２０へデータを再度送信する。多数のトランスポート接続からのパケ
ットは、ＶＰＮクライアント２８０によってユーザ空間中で傍受される。ＶＰＮクライア
ント２８０は、受信されたパケットの確認応答を送信しないトランスポートプロトコル（
実例として、ＵＤＰ又はＩＰ）を使用して、ＶＰＮサーバへのＷＡＮ経由のトンネルを開
通する。仮想ネットワークデバイス２２０をバイパスしてＶＰＮサーバとの接続を確立す
るために、図示される実施形態では、ＶＰＮクライアント２８０は、保護されたソケット
２９０を使用する。幾つかの実施形態では、ＶＰＮクライアント２８０は、異なるネット
ワークインタフェースに結合し得、又は、そのトラフィックがユーザ空間にリダイレクト
されず、むしろＷＡＮを通じて直接送信されることを確認するための別の手段を使用し得
る。
【０１０７】
マルチパスマネージャ２５５により作り出された多数のトランスポート接続と関連付け
られたＴＣＰソケット２４０〜２７０からパケットを受信すると、ＶＰＮクライアント２
８０は、各パケットをカプセル化し、それをペイロードとして暗号化し、ＶＰＮトンネル
のトランスポートプロトコル（実例として、ＵＤＰ／ＩＰ）に対するヘッダを追加する。
結果として、多数のＴＣＰトランスポート接続２４０〜２７０からのパケットは、ＷＡＮ
を通じて送信される前に、１つ以上のＵＤＰ接続に渡って多重化される。それに対応して
、ＷＡＮを通じて受信されたパケットは、デカプセル化され（それらのＵＤＰ／ＩＰラッ
パーは除去され）、対応するＴＣＰソケット２４０〜２７０へその後送信される。ＴＣＰ
ソケット２４０〜２７０は、受信されたデータの確認応答を送信するようにその後構成さ
れる。ＴＣＰソケット２４０〜２７０は、それらの自身のデータを送信する場合に、任意
の未確認応答データを再送するように更に構成される。クライアントの単一のリクエスト
を処理することと並行して、多数のＴＣＰソケット２４０〜２７０を使用する結果として
、他のＴＣＰソケット２４０〜２７０がフルスピードでデータの処理を継続する一方で、
ＷＡＮ経由の任意のランダムなパケットドロップは、あるＴＣＰソケット２４０〜２７０
により維持される単一の輻輳ウィンドウを単に減少させる。
【０１０８】
幾つかの実施形態では、トランスポートプロキシ２３０及びＶＰＮクライアント２８０
の両者は、仮想ネットワークデバイス２２０からのパケットをリッスンする。トランスポ
ートプロキシ２３０は、ＩＰアドレス及び／又はポートの特定のセットへ送信されるパケ
ットを除いて、仮想ネットワークデバイス２２０から送信された全てのパケットを傍受す
る。マルチパスマネージャ２５５は、ＩＰ及び／又はポートの特定のセットへの多数の同
時トランスポート接続２４０〜２７０を確立する。ＶＰＮクライアント２８０は、多数の
同時トランスポート接続２４０〜２７０と関連付けられたＩＰ及び／又はポートの特定の
セットへ送信された仮想ネットワークデバイス２２０からのパケットのみを傍受する。結
果として、トランスポートプロキシ２３０は、マルチパスマネージャ２５５により確立さ
れたものを除く全ての接続を傍受及び終結し、ＶＰＮクライアント２８０は、マルチパス
マネージャ２５５により確立された接続２４０〜２７０を通じて送信されたパケットのみ
をカプセル化する。この実装では、マルチパスマネージャ２５５及びＶＰＮクライアント
２８０は、独立して作業しており、互いに関する情報でプログラムされなくてもよく、マ
ルチパスマネージャ２５５は、ＴＣＰ接続２４０〜２７０を通じてトラフィックを送信し
、ＶＰＮクライアント２８０は、仮想ネットワークデバイス２２０からの特定のパケット
を傍受する。
【０１０９】
代替的な実装では、トランスポートプロキシ２３０は、仮想ネットワークデバイス２２
０からの全てのパケットを傍受するが、マルチパストランスポート２４０〜２７０により
使用される特定のＩＰ及び／又はポートを有するパケットを、それらの接続を終結する代
わりにＶＰＮクライアント２８０に渡す。この場合、ＶＰＮクライアント２８０は、仮想
ネットワークデバイス２２０を通じて送信されたパケットを傍受しないが、トランスポー
トプロキシ２３０からのそれらを受信する。この代替的な実装では、ＷＡＮを経由して受
信された、逆多重化されたパケットは、仮想ネットワークデバイス２２０を通じて対応す
るＴＣＰソケット２４０〜２７０へ依然として送信され得る。
【０１１０】
別の実装では、トランスポートプロキシ２３０は、特定のポート上でユーザ空間中のク
ライアントトラフィックに対してリッスンするようにプログラムされるプロキシ２３０に
よって置き換えられる。例えば、クライアントアプリケーション２００は、Ｇｏｏｇｌｅ
株式会社により開発されたＣｈｒｏｍｅブラウザ等のインターネットブラウザであり得、
そのセッティングは、特定のポート上でリッスンするローカルなプロキシ２３０の使用を
明示する。この場合、クライアント２００とプロキシ２３０との間のトラフィックは、カ
ーネル空間を通過することなくユーザ空間中で交換され、マルチパスマネージャ２５５に
より作り出された接続のみがカーネル空間を通過し、上述した方法でＶＰＮクライアント
２８０によりその後傍受される。
【０１１１】
上述した実装は、カーネル空間中のＴＣＰソケット２４０〜２７０により制御されるマ
ルチパス接続を通じてトラフィックを交換する共通の機構を有する。このことは、オペレ
ーティングシステムにより支持される配信保証トランスポートプロトコルを再利用するこ
とによって実装を容易にする。代替的な実装では、マルチパストランスポートにより使用
されるＴＣＰソケット２４０〜２７０は、ユーザ空間中で実行され得、カーネル空間とユ
ーザ空間との間のパケット転送を削減又は省略する。
【０１１２】
幾つかの実施形態では、同様の実装がクライアント側及びサーバ側の両者の上で使用さ
れる。その他の実施形態では、サーバ側は、実例として、ローカルネットワークを経由し
てマルチパスマネージャ１８０から送信された全てのパケットを傍受する別個のＶＰＮ機
器１５５を使用することによって、異なる実装を利用し得る。
【０１１３】
図３は、単一のＶＰＮトンネル等のより少数のＶＰＮトンネルを通じて多重化された多
数の同時トランスポート接続を通じたデータ転送の方法の実施形態のプロセスフロー図で
ある。図３の方法は、図１及び図２の構成並びに上で論じた様々な実施形態の内の何れか
を使用して実行され得る。
【０１１４】
説明される実施形態では、送信者（実例として、コンテンツサーバ）は、クライアント
（図３中の“受信者”）によりリクエストされたデータを送信する（３００）。これらの
データは、単一のファイルのコンテンツをそれらが含む場合であっても、２つ以上の同時
開通トランスポート接続間で分割される（３０５）。これらの接続からのパケットは、実
例として、各パケットのペイロードを暗号化する（３１５）ことと、暗号化されたペイロ
ードをＶＰＮトンネルのＶＰＮパケットの内部にカプセル化することと、ＶＰＮパケット
をＷＡＮを経由してその後送信することとによって、単一のＶＰＮ接続に多重化される（
３１０）。
【０１１５】
受信者は、ペイロードを抽出及び復号し（３２０）、ペイロード中に含まれるパケット
をそれらの対応する接続へその後逆多重化する（３２５）。
【０１１６】
図示される実装では、受信者は、受信されたデータの確認応答を、それらがマルチパス
接続に逆多重化された後のみ送信する（３３５）。これらのトランスポート接続の内の各
トランスポート接続は、各トランスポート接続を通じて送信されたデータのみを確認応答
する。多重化されたデータを送信するために使用されるＶＰＮ接続は、説明される実施形
態では、それらの到着を確認応答せず、配信保証を提供するために多数のトランスポート
接続を頼りにする。
【０１１７】
送信者は、確認応答を受信及び逆多重化し（３３０）、未確認応答データをその後再送
する（３４０）。再度、各トランスポート接続は、トランスポート接続のその他に影響を
与えることなく、当該トランスポート接続の内部で送信された後に確認応答されていない
データを単に再送する。この方法では、ＷＡＮを経由するランダムなパケットロスは、他
のトランスポート接続が大きな輻輳ウィンドウを維持して高レートで動作しつつ、１つの
トランスポート接続に対するＴＣＰ輻輳ウィンドウを減少させ得る。
【０１１８】
再送信されたデータが対応するマルチパス接続により受信された後（３４５）、これら
のデータは、その他のマルチパス接続からのデータと集約され（３５０）、集約されたデ
ータは、コンテンツ接続中にその後受信される（３５５）。コンテンツ接続の受信者側は
、受信されたデータを確認応答しなくてもよく、配信保証は、マルチパストランスポート
接続を通じて管理され、ランダムなパケットロスの存在する時にスループットを改善する
。
【０１１９】
図４は、トランスポート接続を通じて多重化された多数の同時データフローを通じたク
ライアント側のデータ転送を実装するために使用される第３の環境の図である。
【０１２０】
この実装では、コンテンツデータストリームのプロバイダ４００（実例として、クライ
アントによりリクエストされたデータで応答するコンテンツサーバ）は、トラフィックデ
ィストリビュータ４１０へデータを送信し、該トラフィックディストリビュータ４１０は
提供されたデータを分割し、提供されたデータの部分を多数の入力バッファ４２０間で分
散する。幾つかの実施形態では、トラフィックディストリビュータ４１０は、利用可能な
入力バッファ４２０を通じて循環するラウンドロビンローダとして実装される。他の実例
では、ディストリビュータ４１０は、実例として、各入力バッファ４２０からのデータ消
費の速度、又は各入力バッファ４２０中の利用可能な空間の量に基づいて、トラフィック
を不均等に分散し得る。
【０１２１】
各入力バッファ４２０は、配信コントローラ４３０に供給され、配信コントローラ４３
０は、その対応する入力バッファからデータを除去し、該データをその送信バッファ４４
０へ送信する。配信コントローラ４３０は、以前に送信されたデータの確認応答をも受信
し、未確認応答データを再送する。幾つかの実施形態では、配信コントローラ４３０は、
ＴＣＰプロトコルにより使用される実装と少なくとも部分的に同様の輻輳制御アルゴリズ
ムを実装し、以前に送信されたデータの確認を受信することなく、（輻輳ウィンドウ及び
フロー制御ウィンドウのサイズよりも小さい）一定限度量の新たなデータのみが送信され
ることを可能にする。以前に送信されたデータが未確認応答のままである場合、それは再
送され、送信レートを減少させるために、輻輳ウィンドウのサイズは一時的に減少させら
れる。代替的な実装では、配信コントローラ４３０は、実例として、圧縮されたビデオス
トリームのインラインフレーム等、“重要”とマークされたデータのみを再送することに
よって、異なる配信保証アルゴリズムを支持し得る。
【０１２２】
幾つかの実施形態では、配信コントローラ４３０は、相互に独立して作業する。例えば
、幾つかの実施形態では、各配信コントローラ４３０は、対応する送信バッファ４４０に
以前に提示されたデータの確認応答のみを受け入れ、その他の配信コントローラ４３０の
輻輳ウィンドウを変更することなく、自身の輻輳ウィンドウのみを調節し得る。別の実装
では、配信コントローラ４３０は、少なくとも幾つかの情報を交換し得る。実例として、
多数のコントローラ４３０間で同期したロスが検出された場合、幾つかのコントローラ４
３０は、新たなデータの送信を一時休止し得る。
【０１２３】
送信バッファ４４０からのデータは、マルチプレクサ４６０により読み出される。記述
される実装では、このマルチプレクサ４６０は、各送信バッファ４４０からデータを順番
に読み出す。別の実装では、マルチプレクサ４６０は、（実例として、各送信バッファ４
４０中の格納されたデータ又は利用可能な空間の量に基づいて）送信バッファ４４０にア
クセスする順序を変更し得、又は多数の送信バッファ４４０に同時にアクセスし得る。
【０１２４】
幾つかの実施形態では、各配信コントローラ４３０は、ペイロードデータ及びヘッダを
対応する送信バッファ４４０へ進める前に、ペイロードデータにヘッダを付加する。幾つ
かの実施形態では、付加されるヘッダは、識別子、送信元ポート、確認応答数、フラグの
セット、及びウィンドウサイズのグループからの１つ以上のフィールドを含む。ヘッダ中
に送信元ポートが存在する場合、それは、対応する配信コントローラ４３０の識別子とし
て使用され得る。このヘッダのフォーマットは、実例として、ＴＣＰヘッダのフォーマッ
トと少なくとも部分的に同じであり得る。幾つかの実施形態では、このヘッダは、受信さ
れたデータの整合性が、ＵＤＰプロトコル等の多重化されたデータを交換するために使用
されるトランスポートプロトコルのチェックサムを使用することによって検証される限り
は、妥当なチェックサムを含まない。そうした実施形態では、受信されたデータユニット
の検証は一度だけ実施され、計算リソースを節約する。別の実装では、ヘッダの少なくと
も一部は、マルチプレクサ４６０が各送信バッファ４４０からデータを読み出した後に、
マルチプレクサ４６０により付加される。
【０１２５】
マルチプレクサ４６０は、ペイロード及びヘッダを含む各データユニットを、ＷＡＮを
経由して別のコンピュータとのトランスポート接続を維持することを担当するソケット４
８０へ送信する。この実装では、ソケット４８０は、以前の配信の確認応答を受信するこ
となくデータを配信し得るＵＤＰソケットである。
【０１２６】
幾つかの実施形態では、配信コントローラ４３０により送出されたデータは、マルチプ
レクサ４６０によってより小さい数のデータフローに多重化された後に暗号化される。幾
つかの実施形態では、マルチプレクサ４６０は、データをＵＤＰソケット４８０へ送信す
る前にデータの暗号化を実施する。
【０１２７】
別の実装では、データは、マルチプレクサ４６０に送信される前に、各配信コントロー
ラ４３０によって暗号化され得る。更に別の実装では、送信者によって暗号化されていな
いデータストリーム（実例として、ＨＴＴＰプロトコルを使用するもの）のみがマルチプ
レクサ４６０又は配信コントローラ４３０の何れかによって暗号化される。そうした実施
形態では、送信者により既に暗号化されたデータストリーム（実例として、ＨＴＴＰＳプ
ロトコルを使用するもの）は付加的に暗号化されない。
【０１２８】
更に別の実装では、マルチプレクサ４６０は、送信者により暗号化されたデータストリ
ームを含むパケットの少なくとも一部を暗号化する。実例として、異なるパケットを異な
る配信コントローラ４３０と関連付ける特定のヘッダを秘匿するために。
【０１２９】
図４は、送信者側の実装を図示する。幾つかの実施形態では、受信者コンピュータは、
送信者コンピュータと同じ数の配信コントローラ４３０を含む。あるコンピュータからの
各コントローラ４３０は、別のコンピュータ上のコントローラと結合され、単一のデータ
ストリームを維持する。この実装では、送信者コンピュータのソケット４８０は、受信者
コンピュータの結合された配信コントローラ４３０により生成された確認応答を受信する
。これらの確認応答は、受信バッファ４７０中に一時的に格納され、対応する配信コント
ローラ４３０にその後渡される（各確認応答は、結合された配信コントローラと関連付け
られた対応するデータストリームの識別子を含み、それ故、各確認応答により参照される
配信コントローラ４３０へ配信される）。
【０１３０】
図５は、１つ以上のトランスポート接続を通じて多重化された多数の同時データフロー
を通じたデータ転送のための方法のプロセスフロー図を図示する。図５の方法は、図４の
環境と、上述した様々な実装の何れかとを使用して実装される。
【０１３１】
図５の方法は、送信者側及び受信者側の実装の両方を記述する。送信者は、データスト
リームを通じてデータを送信し（５００）、該データストリームは、別個の配信コントロ
ーラと関連付けられた多数のデータフロー間でその後分離される（５０５）。送信者のコ
ントローラからのデータは、１つ以上のトランスポート接続に渡って多重化され（５１０
）、ＷＡＮを経由して送信される（５１５）。
【０１３２】
受信者は、データを送信し、対応する配信コントローラ５３０に渡されるデータフロー
にそれらを逆多重化する（５２５）。すなわち、ステップ５２０で受信されたデータの各
ユニット、例えば、パケットは、データの各ユニットにより参照される配信コントローラ
に渡される。
【０１３３】
幾つかの実施形態では、送信者は、データを、ＵＤＰ接続に多重化した後に（５１０）
暗号化する。したがって、そうした実施形態では、受信者は、データを、対応する配信コ
ントローラ４３０に逆多重化する前（５２５）に復号する。
【０１３４】
幾つかの実施形態では、送信者は、多数の配信コントローラ４３０からのデータを多重
化した後に（５１０）、誤り訂正のために使用される付加的データを挿入し、多重化され
たデータと共に、ＷＡＮを経由してこの付加的データをその後送信する。幾つかの実施形
態では、受信者は、この付加的データを使用して対応する配信コントローラにデータを逆
多重化する前に（５２５）、受信されたデータ上で誤り訂正を実施する。幾つかの実施形
態では、受信者は、誤り訂正のために使用されるキューを維持する（実例として、先の８
つのパケットのＸＯＲに等しい付加的パケットを送信者が挿入する場合、そのオリジナル
のパケットの内の少なくとも７つが受信されるまで、又は事前に定義されたタイムインタ
バールが経過するまで、受信者は誤り訂正パケットを保持する）。
【０１３５】
逆多重化されたデータを受信した後、各受信者のコントローラ４３０は、受信されたデ
ータの確認応答を送信し（５３５）、各コントローラの確認応答は、送信者の対応するコ
ントローラを参照する。送信者は、受信された確認応答を逆多重化し、確認応答によって
参照される対応する配信コントローラにそれらを渡す（５３０）。データに対して確認応
答が受信されていないと判定する任意の配信コントローラは、未確認応答データをその後
再送するであろう（５４０）。受信者は、再送されたデータを受信及び確認応答する（５
４５）。受信者は、データストリームを受取人に渡す前に（５５５）、多数の配信コント
ローラを通じて受信されたデータをデータストリームにその後集約する（５５０）。
【０１３６】
幾つかの実施形態では、ＷＡＮを経由してデータ交換する第１及び第２のコンピュータ
の各々は、送信者のコンポーネント及び受信者のコンポーネントの両方を実装する。具体
的には、送信者側は、配信コントローラにより維持される多数のデータフロー間でアップ
ロードを分割し、これらのフローを１つ以上のトランスポート接続に渡って多重化する。
受信者側は、受信されたデータを逆多重化し、それらを単一のストリームに集約する。多
数のデータストリームは、同時に処理され得、各ストリームは分割され、多重化され、Ｗ
ＡＮを経由して転送された後に集約される。
【０１３７】
図４及び図５に関して上述した実施形態は、オリジナルのデータストリームを多数の非
同期データフローに分割することによって、ＷＡＮを経由するランダムなパケットロスが
存在する時にスループットを増加させ、各データフローは、完全に、又は少なくとも部分
的に独立した制御でその配信レートを維持する。図１及び図２により図示される実施形態
と比較して、図４により図示される実施形態は、単一のＶＰＮトンネル等、より少数のト
ランスポート接続を通じてその後多重化される多数の同時トランスポート接続を確立する
ことを含まない。図４の実施形態は、ユーザ空間中に完全に実装され得、別個のマルチパ
ストランスポートを使用することと比べて公正を改善しつつ、独立したデータフローを維
持するために、結合された配信コントローラ４３０を頼りにする。
【０１３８】
図４及び図５の実施形態は、普通のＴＣＰトランスポートプロトコルを超えるスループ
ットで単一のデータフローを使用するプロトコル（実例として、Ｇｏｏｇｌｅ株式会社に
より開発されたＱＵＩＣプロトコルは、ＭｕｌＴＣＰアルゴリズムにより制御される単一
のデータフローを使用する）に対して顕著な利点をも提供する。単一のデータフロー中の
パケットロスは、再送タイムアウト（ＲＴＯ）をもたらし得、データストリーム全体のス
ループットを減少させる。そうしたＲＴＯは、実例として、配信の最後（tail）でパケッ
トがロスされ、テールロスプローブが成功しない場合に生じ得る。比較すると、図４及び
図５の実施形態に従って実装されたデータフローの内の１つにおけるＲＴＯは、当該デー
タフローのみに影響を及ぼし、他の全てのデータフローは、フルスピードでのデータ交換
を継続し得る。また、多数のデータフローの各々に対する配信コントローラ４３０は、Ｔ
ＣＰプロトコルにより使用されるアルゴリズム等、標準的な輻輳及びフロー制御アルゴリ
ズムを実装し得る。このことは、実際のネットワークに渡って広くテストされていない、
ＭｕｌＴＣＰ等の単一のフローに対する輻輳制御の特注の修正に頼るよりもよい。
【０１３９】
本発明の別の側面では、複数のマルチパス接続の内の１つ以上は、１つ以上の共通のト
ランスポート接続に渡って多重化されない。代わりに、これらのマルチパス接続は、該接
続が多重化マルチパス接続に使用されるのと並行して、ＷＡＮを経由してデータを交換す
るコンピュータ間に直接確立される。
【０１４０】
図６は、（複数の）同時接続の内の一部のみが多重化される、多数の同時トランスポー
ト接続を通じたデータ転送を実装するために使用される第４のネットワーク環境の図であ
る。
【０１４１】
図示される実装では、クライアント６００は、コンテンツサーバ６９０からの単一のフ
ァイルのダウンロードをリクエストする。マルチパスデータマネージャは、多数のＴＣＰ
接続６２０、６５０、６７０に渡ってアップロードを分割し、多数のＴＣＰ接続６２０、
６５０、６７０からのダウンロードを単一のデータストリームに集約するマルチパスＴＣ
Ｐモジュール６１０及び６８０を含む。マルチパスＴＣＰモジュール６１０が多数のＴＣ
Ｐ接続の間でデータを分割し、受信者においてデータをその後集約する方法は、上述した
実施形態の内の何れかに従って実施され得る。
【０１４２】
図６の実施形態では、これらのＴＣＰ接続（６２０、６７０）の内の幾つかのみが、Ｖ
ＰＮクライアント６３０とＶＰＮサーバ６６０との間のトンネル接続６４０に渡って多重
化される。残りのＴＣＰ接続６５０の内の１つ以上は、多重化される代わりに、マルチパ
スＴＣＰモジュール６１０と６８０との間で直接確立される。
【０１４３】
幾つかの実施形態では、非多重化の接続６５０の内の少なくとも幾つかは、受信された
データの確認応答、輻輳指標、又は配信パラメータを調節するための命令等の制御信号を
搬送するが、マルチパス接続６７０（ＶＰＮトンネル６４０を通じて多重化されたもの）
は、リクエストされたファイルのコンテンツ等のペイロードデータを搬送する。この実装
は、確認応答の受信のレイテンシを減少させる（確認応答は、ＶＰＮトンネル６４０を通
じて多重化されなくてもよく、ペイロードのセキュリティを妥協することなく、暗号化な
しに送信され得る）。同時に、確認応答等の制御信号により使用される帯域幅の量は、ペ
イロードデータにより使用される帯域幅の量よりも非常に少なく、全てのマルチパストラ
ンスポートが、より少数のＶＰＮ又はプロキシ接続に渡りそれらを多重化することなく確
立される場合と比較して公正を改善する。
【０１４４】
別の実施形態では、ＶＰＮトンネル６４０は、直接のマルチパス接続６５０の内の１つ
以上とは異なるデータリンクを経由して確立される。実例として、単一のファイルのダウ
ンロードは、Ｗｉ−Ｆｉインタフェースを経由して確立された単一のＶＰＮトンネル６４
０の内部に多重化された多数のＴＣＰ接続間で分割され、モバイルネットワークインタフ
ェースを経由して付加的なＴＣＰ接続が確立される。幾つかの実施形態では、モバイルイ
ンタフェースを通じたデータは、Ｗｉ−Ｆｉインタフェースを経由して受信されＶＰＮ接
続６４０から逆多重化されたデータの確認応答のみを含む。他の実施形態では、モバイル
インタフェースを通じたデータは、実例として、クライアント６００及びサーバ６９０が
ＨＴＴＰＳプロトコルを使用してデータを交換する場合に、付加的な暗号化を要求しない
パケットの内の少なくとも幾つかを搬送し得る。
【０１４５】
本明細書に記述されるコンポーネント及びモジュールをネットワーク化するコンピュー
ティングデバイス（クライアント、コンテンツサーバ等）は、図７のコンピューティング
デバイス７００の属性の内の幾つか又は全てを有し得る。具体的には、コンピュータ又は
コンピューティングデバイスであるものとして上述したコンポーネントは、図７のコンピ
ューティングデバイス７００の属性の内の幾つか又は全てを有し得る。図７は、本明細書
に開示されるシステム及び方法を実装するために使用され得る例示的コンピューティング
デバイス７００を説明するブロック図である。
【０１４６】
コンピューティングデバイス７００は、１つ以上のプロセッサ７０２、１つ以上のメモ
リデバイス７０４、１つ以上のインタフェース７０６、１つ以上の大容量ストレージデバ
イス７０８、１つ以上の入出力（Ｉ／Ｏ）デバイス７１０、及び表示デバイス７３０を含
み、それらの全てはバス７１２に結合される。プロセッサ７０２は、メモリデバイス７０
４及び／又は大容量ストレージデバイス７０８中に格納された命令を実行する１つ以上の
プロセッサ若しくはコントローラを含む。プロセッサ７０２は、キャッシュメモリ等の様
々な種類のコンピュータ可読媒体をも含み得る。
【０１４７】
メモリデバイス７０４は、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）
７１４）及び／又は不揮発性メモリ（例えば、リードオンリメモリ（ＲＯＭ）７１６）等
の様々なコンピュータ可読媒体を含む。メモリデバイス７０４は、フラッシュメモリ等の
再書き込み可能なＲＯＭをも含み得る。
【０１４８】
大容量ストレージデバイス７０８は、磁気テープ、磁気ディスク、光ディスク、及び固
体状態メモリ（例えば、フラッシュメモリ）等の様々なコンピュータ可読媒体を含む。図
７に示すように、具体的な大容量ストレージデバイスはハードディスクドライブ７２４で
ある。様々なコンピュータ可読媒体からの読み出しを可能にし、及び／又は様々なコンピ
ュータ可読媒体への書き込みを可能にするために、大容量ストレージデバイス７０８には
様々なドライブも含まれ得る。大容量ストレージデバイス７０８は、取り外し可能媒体７
２６及び／又は非取り外し可能媒体を含む。
【０１４９】
入出力デバイス７１０は、データ及び／又はその他の情報がコンピューティングデバイ
ス７００に入力されること、又はコンピューティングデバイス７００から検索されること
を可能にする様々なデバイスを含む。例示的な入出力デバイス７１０は、カーソル制御デ
バイス、キーボード、キーパッド、マイクロフォン、モニタ若しくはその他の表示デバイ
ス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、及びＣ
ＣＤ若しくはその他の画像取込デバイス等を含む。
【０１５０】
表示デバイス７３０は、コンピューティングデバイス７００の１人以上のユーザに情報
を表示可能な任意の種類のデバイスを含む。表示デバイス７３０の例には、モニタ、表示
端末、及びビデオ投影デバイス等が挙げられる。
【０１５１】
インタフェース７０６は、コンピューティングデバイス７００がその他のシステム、デ
バイス、又はコンピューティング環境と相互作用することを可能にする様々なインタフェ
ースを含む。例示的インタフェース７０６は、ローカルエリアネットワーク（ＬＡＮ）、
広域ネットワーク（ＷＡＮ）、無線ネットワーク、及びインターネットへのインタフェー
ス等の、任意の数の異なるネットワークインタフェース７２０を含む。その他のインタフ
ェースは、ユーザインタフェース７１８及び周辺デバイスインタフェース７２２を含む。
インタフェース７０６は、１つ以上のユーザインタフェース素子７１８をも含む。インタ
フェース７０６は、プリンタ、ポインティングデバイス（マウス、トラックパッド等）、
及びキーボード等に対するインタフェース等の、１つ以上の周辺インタフェースをも含み
得る。
【０１５２】
バス７１２は、プロセッサ７０２、メモリデバイス７０４、インタフェース７０６、大
容量ストレージデバイス７０８、及び入出力デバイス７１０が、バス７１２に結合された
その他のデバイス若しくはコンポーネントと共に、相互に通信することを可能にする。バ
ス７１２は、システムバス、ＰＣＩバス、ＩＥＥＥ１３９４バス、及びＵＳＢバス等の幾
つかの種類のバス構造の内の１つ以上を表す。
【０１５３】
プログラム及びその他の実行可能なプログラムコンポーネントは、そうしたプログラム
及びコンポーネントがコンピューティングデバイス７００の異なるストレージコンポーネ
ント中に様々な時間に存在し得、プロセッサ７０２により実行されるものと理解されるが
、説明の目的のために、別々のブロックとして本明細書に示される。或いは、本明細書に
記述されるシステム及び手続は、ハードウェア中に、又はハードウェア、ソフトウェア、
及び／若しくはファームウェアの組み合わせ中に実装され得る。例えば、本明細書に記述
されるシステム及び手続の内の１つ以上を実行するように、１つ以上の特定用途向け集積
回路（ＡＳＩＣ）はプログラムされ得る。
【０１５４】
上記の開示では、本明細書の一部を形成し、開示が行われ得る特定の実装の説明を通じ
て示される添付の図面を参照してなされている。本開示の範囲から逸脱することなく、そ
の他の実装が利用され得、構造的変更がなされ得ることは理解される。明細書中の“一実
施形態”、“実施形態”、“例示的実施形態”等の言及は、記述される実施形態が特定の
機構、構造、又は特徴を含み得るが、あらゆる実施形態が特定の機構、構造、又は特徴を
必ずしも含まなくてもよいことを示す。更に、そうした句は、同じ実施形態に必ずしも言
及していない。更に、特定の機構、構造、又は特徴は、実施形態と組み合わせて記述され
、明確に記述されているか否かに係わらず、その他の実施形態と組み合わせたそうした機
構、構造、又に特徴に影響を与えることは当業者の認識の範囲内であると言える。
【０１５５】
本明細書に開示されるシステム、デバイス、及び方法の実装は、本明細書で論じられる
ように、例えば、１つ以上のプロセッサ及びシステムメモリ等のコンピュータハードウェ
アを含む専用又は汎用コンピュータを含み得、又は該コンピュータを利用し得る。本開示
の範囲内にある実装は、コンピュータ実行可能命令及び／又はデータ構造を搬送又は格納
するための物理的媒体及びその他のコンピュータ可読媒体をも含み得る。そうしたコンピ
ュータ可読媒体は、汎用又は専用コンピュータシステムによりアクセスされ得る任意の利
用可能な媒体であり得る。コンピュータ実行可能命令を格納するコンピュータ可読媒体は
、コンピュータストレージ媒体（デバイス）である。コンピュータ実行可能命令を搬送す
るコンピュータ可読媒体は伝送媒体である。したがって、例として、非限定的に、開示の
実装は、少なくとも２つの別々の異種のコンピュータ可読媒体、コンピュータストレージ
媒体（デバイス）と伝送媒体とを含み得る。
【０１５６】
コンピュータストレージ媒体（デバイス）は、ＲＡＭ、ＲＯＭ，ＥＥＰＲＯＭ、ＣＤ−
ＲＯＭ、固体状態ドライブ（“ＳＳＤ”）（例えば、ＲＡＭに基づく）、フラッシュメモ
リ、相変化メモリ（“ＰＣＭ”）、その他の種類のメモリ、その他の光ディスクストレー
ジ、磁気ディスクストレージ若しくはその他の磁気ストレージデバイス、又はコンピュー
タ実行可能命令若しくはデータ構造の形式で所望のプログラムコード手段を格納するため
に使用され得、汎用又は専用コンピュータによりアクセスし得る任意のその他の媒体を含
む。
【０１５７】
本明細書に開示されるデバイス、システム、方法の実装は、コンピュータネットワーク
を経由して通信し得る。“ネットワーク”は、コンピュータシステム及び／又はモジュー
ル及び／又はその他の電子デバイス間で電子データのトランスポートを可能にする１つ以
上のデータリンクとして定義される。情報がネットワーク又は別の通信接続（有線、無線
、又は有線若しくは無線の組み合わせ）を経由してコンピュータに転送又は提供される場
合、コンピュータは、伝送媒体としての接続を適切に閲覧する。伝送媒体は、コンピュー
タ実行可能命令又はデータ構造の形式で所望のプログラムコード手段を搬送するために使
用され得、汎用又は専用コンピュータによりアクセスされ得るネットワーク及び／又はデ
ータリンクを含み得る。上記の組み合わせもコンピュータ可読媒体の範囲内に含まれるべ
きである。
【０１５８】
コンピュータ実行可能命令は、例えば、プロセッサで実行される場合に、汎用コンピュ
ータ、専用コンピュータ、又は専用処理デバイスにある一定の機能又は機能のグループを
実施させる命令又はデータを含む。コンピュータ実行可能命令は、例えば、二進数、アセ
ンブリ言語等の中間フォーマット命令、又はソースコードであり得る。構造的機構及び／
又は方法論的行為に特有の言語で主題が記述されているが、添付の請求項で定義される主
題は、記述される機構又は上述の行為に必ずしも限定されないと理解されるべきである。
むしろ、記述される機構及び行為は、請求項を実装する例示的形式として開示される。
【０１５９】
開示は、ダッシュボード埋め込み車両コンピュータ、パーソナルコンピュータ、デスク
トップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルド
デバイス、マルチプロセッサシステム、マイクロプロセッサベースの若しくはプログラム
可能な家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、モバ
イルフォン、ＰＤＡ、タブレット、ページャー、ルータ、スイッチ、及び様々なストレー
ジデバイス等を含む多くの種類のコンピュータシステム構成を用いてネットワークコンピ
ューティング環境中で行われ得ると当業者は認識するであろう。開示は、ネットワークを
通じて（有線データリンクにより、無線データリンクにより、又は有線及び無線のデータ
リンクの組み合わせにより）リンクされたローカルコンピュータシステム及びリモートコ
ンピュータシステムが共にタスクを実施する分散システム環境中でも行われ得る。分散シ
ステム環境では、プログラムモジュールは、ローカルのメモリストレージデバイス及びリ
モートのメモリストレージデバイスの両方に設置され得る。
【０１６０】
更に、必要に応じて、本明細書に記述される機能は、ハードウェア、ソフトウェア、フ
ァームウェア、デジタルコンポーネント、又はアナログコンポーネントの内の１つ以上で
実施され得る。例えば、１つ以上の特定用途向け集積回路（ＡＳＩＣ）は、本明細書に記
述されるシステム及び手続の内の１つ以上を実行するようにプログラムされ得る。説明及
び請求項の全体を通じて使用される幾つかの用語は、特定のシステムコンポーネントを指
す。当業者に認識され得るように、コンポーネントは異なる名前で呼ばれることがある。
この文献は、機能ではなく名前が異なるコンポーネント間の区別を意図しない。
【０１６１】
上で論じられたセンサの実施形態は、それらの機能の少なくとも一部を実施するための
コンピュータハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合
わせを含み得る。例えば、センサは、１つ以上のプロセッサ中で実行されるように構成さ
れたコンピュータコードを含み得、コンピュータコードにより制御されるハードウェア論
理／電気回路を含み得る。これらの例示的デバイスは、説明目的で本明細書に提供され、
限定することを意図しない。本開示の実施形態は、当業者に周知であるように、更なる種
類のデバイス中に実装され得る。
【０１６２】
開示の少なくとも幾つかの実施形態は、任意のコンピュータ使用可能媒体上に格納され
た（例えば、ソフトウェアの形式の）そうした論理を含むコンピュータプログラム製品に
向けられている。そうしたソフトウェアは、１つ以上のデータ処理デバイスで実行される
場合に、本明細書に記述されるようにデバイスを動作させる。
【０１６３】
本開示の様々な実施形態が上述されているが、それらは、単なる非限定的な例として提
供されていると理解されるべきである。開示の精神及び範囲から逸脱することなく、形式
及び詳細に様々な変更がなされ得ることは、当業者には明らかであろう。したがって、本
開示の幅及び範囲は、上述した例示的実施形態の何れかに限定されるべきではないが、以
下の請求項及びそれらの均等物に従ってのみ定義されるべきである。
【０１６４】
前述の記述は、説明及び記述の目的で提供されている。網羅的であること、又は開示さ
れた正確な形式に開示を限定することを意図しない。上の教示に照らして多くの修正及び
変更が可能である。更に、前述の代替的な実装の何れか又は全ては、開示の付加的で複合
的な実装の形成を要望する任意の組み合わせで使用され得ることに留意すべきである。
【図１】
2019528604.tif 000003
【図２】
2019528604.tif 000004
【図３】
2019528604.tif 000005
【図４】
2019528604.tif 000006
【図５】
2019528604.tif 000007
【図６】
2019528604.tif 000008
【図７】
2019528604.tif 000009
【国際調査報告】
2019528604.tif 000010