JP2019528604A - 仮想マルチパスデータトランスポートのためのシステム及び方法 - Google Patents

仮想マルチパスデータトランスポートのためのシステム及び方法 Download PDF

Info

Publication number
JP2019528604A
JP2019528604A JP2019505010A JP2019505010A JP2019528604A JP 2019528604 A JP2019528604 A JP 2019528604A JP 2019505010 A JP2019505010 A JP 2019505010A JP 2019505010 A JP2019505010 A JP 2019505010A JP 2019528604 A JP2019528604 A JP 2019528604A
Authority
JP
Japan
Prior art keywords
data
connections
tcp
network
protocol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019505010A
Other languages
English (en)
Inventor
ラピドーズ,ユージーン
アダムシカ,ドミトリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AnchorFree Inc
Original Assignee
AnchorFree Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by AnchorFree Inc filed Critical AnchorFree Inc
Publication of JP2019528604A publication Critical patent/JP2019528604A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1874Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1887Scheduling and prioritising arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4633Interconnection of networks using encapsulation techniques, e.g. tunneling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/02Details ; arrangements for supplying electrical power along data transmission lines
    • H04L25/14Channel dividing arrangements, i.e. in which a single bit stream is divided between several baseband channels and reassembled at the receiver
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0272Virtual private networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0485Networking architectures for enhanced packet encryption processing, e.g. offloading of IPsec packet processing or efficient security association look-up
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2876Pairs of inter-processing entities at each side of the network, e.g. split proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/14Multichannel or multilink protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0097Relays
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2212/00Encapsulation of packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/02Processing of mobility data, e.g. registration information at HLR [Home Location Register] or VLR [Visitor Location Register]; Transfer of mobility data, e.g. between HLR, VLR or external networks
    • H04W8/04Registration at HLR or HSS [Home Subscriber Server]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Multimedia (AREA)
  • Power Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

コンピュータシステムは、確認応答を要求しない接続等、より少数の未確認応答データを通じて多重化されVPNトンネルであり得る複数の保証された接続中へ送信されるデータを分割する。受信者は、保証された接続を経由してデータフローを取得するために、受信されたデータをその後逆多重化し、保証された各接続に対して個別の確認応答を送信する。コンピュータシステムは、確認応答を逆多重化し、それらを対応する保証された接続に提供し、該保証された接続は、任意の未確認応答データをその後再送する。コンピュータシステム上で実行する配信コントローラは、1つ以上の未確認応答の接続に渡って多重化されている配信コントローラ間のトラフィック(ペイロード及び確認応答)と共に、受信者上で実行する対応するコントローラに結合され得る。幾つかの実施形態では、確認応答は、未確認応答の接続に渡って多重化されていない接続を経由して送信され得る。【選択図】図1

Description

[関連出願]
この出願は、全ての目的のため参照によりその全体が本出願にこれにより組み込まれる
2016年8月3日に出願の米国仮特許出願番号62/370,496の利益を請求する
。この出願は、全ての目的のため参照によりその全体が本出願にこれにより組み込まれる
2017年1月9日に出願の米国特許出願番号15/402,024及び2017年1月
9日に出願の米国特許出願番号15/402,049の利益をも請求する。
[技術分野]
本発明は、概して、多数のコンピュータからのデータをネットワーク接続経由でトラン
スポートするためのシステム及び方法に関する。
コンピュータネットワーク経由でダウンロードされるオンラインコンテンツの量は、オ
ンラインビデオストリーミング及びユーザ生成のコンテンツの普及、ソーシャルネットワ
ーク及びメディアを駆使したメッセージングの急増、クラウドベースのストレージ等、多
数の要因に起因して時間と共に急速に増加している。
リクエストされたコンテンツは、しばしば、長距離を経由して配信されなければならな
い。最も好まれるビデオのみがユーザの近くにキャッシングされ得る。暗号化されていな
いコンテンツへのアクセスを第三者は許可されなければ、HTTPSのようなセキュアな
プロトコルを使用するコンテンツをキャッシングできない。スポーツ及びニュース等のリ
アルタイムでストリーミングされたイベントの遠隔での視聴にはキャッシングが使用でき
ない。ローカルなコンテンツは、しばしば、原産国を除いてキャッシングされない。
データ走行距離の増加は、パケットロスの比率の増加をしばしば伴う。トランスポート
コントロールプロトコル(TCP)等の配信保証プロトコルが接続に使用される場合、こ
れらのロスは、ラストワンマイルの輻輳として一般的に解釈され、接続パイプの各セグメ
ントが飽和点から遠方にある場合であってもスループットに著しい減少をもたらす。
本明細書に開示されるシステム及び方法は、配信保証トランスポート接続を経由してデ
ータを転送するための改善された手法を提供する。
発明の一側面において、方法は、
(a) コンピュータシステムによって、リモートコンピューティングデバイスへの第1
の数の1つ以上の第1のネットワーク接続を提供することと、
(b) 前記コンピュータシステムによって、前記リモートコンピューティングデバイス
への第2の数の複数の第2のネットワーク接続を提供することであって、前記第1の数は
前記第2の数よりも小さいことと、
(c) 前記コンピュータシステムによって、前記1つ以上の第1のネットワーク接続を
通じて、1つ以上の第1のデータフロー中に前記複数の第2のネットワーク接続の複数の
第2のデータフローを多重化することと、
(d) 前記コンピュータシステムによって、前記リモートコンピューティングデバイス
へペイロードデータを送信するための命令を受信することと、
(e) 前記命令に応じて、
(i) 前記コンピュータシステムによって、前記ペイロードデータを複数のデータ部
分に分割することと、
(ii) 前記コンピュータシステムによって、前記複数の第2の接続の内の異なる接続
を経由して前記複数のデータ部分を送信することと、
(iii) 前記コンピュータシステムによって、前記1つ以上の第1のネットワーク接
続を通じて、前記複数の第2の接続経由で送信された前記複数のデータ部分を多重化する
ことと、
(iv) 前記コンピュータシステムによって、前記複数のデータ部分に対する1つ以上
の確認応答を受信することであって、前記1つ以上の確認応答の内の各確認応答は、前記
複数の第2の接続の内の第2の接続を参照することと、
(v) 前記コンピュータシステムによって、前記1つ以上の確認応答の内の各確認応
答を前記各確認応答により参照された前記第2の接続上に逆多重化することと、
(vi) 前記コンピュータシステムによって、少なくとも1つのデータ部分が送信され
た前記複数の第2の接続の内の少なくとも1つの第2の接続により前記複数のデータ部分
の内の前記少なくとも1つのデータ部分に対して確認応答が受信されなかったと判定する
ことと、
(vii) 前記少なくとも1つのデータ部分に対して確認応答が受信されなかったと判
定することに応じて、前記少なくとも1つの第2の接続を経由して前記少なくとも1つの
データ部分を再送することと
を含む。
幾つかの実施形態では、前記1つ以上の第1のネットワーク接続を通じて前記1つ以上
の第1のデータフロー中に前記複数の第2のネットワーク接続の前記複数の第2のデータ
フローを多重化することは、前記1つ以上の第1のデータフローの何れの確認応答にも関
係なく、前記1つ以上の第1のデータフローを送信することを含む。
幾つかの実施形態では、前記1つ以上の第1のネットワーク接続を通じて前記1つ以上
の第1のデータフロー中に前記複数の第2のネットワーク接続の前記複数の第2のデータ
フローを多重化することは、ユニバーサルデータグラムプロトコル(UDP)、インター
ネットプロトコル(IP)暗号化セキュリティペイロード(ESP)、及びソフトウェア
IP暗号化プロトコル(swIPe)の内の少なくとも1つに従って前記1つ以上の第1
のデータフローを送信することを含む。
幾つかの実施形態では、前記複数の第2のネットワーク接続を提供することは、トラン
スポートコントロールプロトコル(TCP)、マルチパストランスポートコントロールプ
ロトコル(マルチパスTCP)、及びストリームコントロールトランスミッションプロト
コル(SCTP)の内の少なくとも1つに従って前記複数の第2のネットワーク接続を実
装することを含む。
幾つかの実施形態では、前記コンピュータシステムは複数の配信コントローラを実装し
、前記複数の配信コントローラの内の各コントローラは、前記リモートデバイス上で実行
する対応するコントローラに結合され、前記複数の第2の接続の内の1つを実装する。そ
うした実施形態では、(vi)及び(vii)は、前記複数の配信コントローラの内の少なく
とも1つの配信コントローラにより実施され得、前記少なくとも1つの配信コントローラ
は、前記少なくとも1つの第2の接続を実装する。方法は、(vi)に応じて、前記少なく
とも1つの配信コントローラによって、前記少なくとも1つの第2の接続を経由して付加
的データを送信する前に送信され得る未確認応答データの量を削減することを更に含み得
る。
幾つかの実施形態では、前記コンピュータシステムは、クライアントコンピューティン
グデバイスと、前記クライアントコンピューティングデバイスとデータ通信する仮想プラ
イベートネットワーク(VPN)サーバデバイスとを含む。方法は、前記VPNサーバデ
バイスによって(a)、(c)、(iii)、(iv)、及び(v)を実施することと、前記ク
ライアントコンピューティングデバイスによって(b)、(i)、(ii)、(vi)、及び
(vii)を実施することとを更に含み得る。
幾つかの実施形態では、(ii)は、前記複数の第2の接続を経由して前記複数のデータ
部分を含む複数のパケットを送信することを含み、(iii)は、前記1つ以上の第1のデ
ータフローの内部に前記複数のパケットをカプセル化することを含む。
幾つかの実施形態では、前記クライアントコンピューティングデバイス及び前記VPN
サーバデバイスは、ポイントツーポイントトンネリングプロトコル(PPTP)、レイヤ
2トンネリングプロトコル(L2TP)、インターネットプロトコルセキュリティ(IP
Sec)、セキュアソケットレイヤ(SSL)プロトコル、トランスポートレイヤセキュ
リティ(TLS)プロトコル、及びOpenVPNプロトコルの内の少なくとも1つを実
装する。
幾つかの実施形態では、前記コンピュータシステムはプロキシを実装し、前記プロキシ
は(b)、(d)、(i)、(ii)、(vi)、及び(vii)を実施する。
幾つかの実施形態では、(c)は、前記1つ以上の第1のネットワーク接続を通じて1
つ以上の第1のデータフロー中に前記複数の第2のデータフローを多重化した後に、前記
1つ以上の第1のデータフローを暗号化することを含む。
幾つかの実施形態では、前記コンピュータシステムは、第1のローカルネットワーク中
に複数の異なるコンピューティングデバイスを含み、前記リモートコンピューティングデ
バイスは、前記第1のローカルネットワークから遠隔の第2のローカルネットワーク中に
設置される。他の実施形態では、前記コンピュータシステムは単一のコンピューティング
デバイスを含む。
幾つかの実施形態では、(iv)は、前記コンピュータシステムによって、前記1つ以上
の第1のネットワーク接続の前記1つ以上の第1のデータフロー中にカプセル化されない
第3のデータフロー中の前記複数のデータ部分に対する前記1つ以上の確認応答を受信す
ることを含む。
幾つかの実施形態では、前記第1の数は1つである。
発明の別の側面において、コンピューティングシステムは1つ以上のコンピューティン
グデバイスを含み、前記1つ以上のコンピューティングデバイスは、1つ以上の処理デバ
イスと、前記1つ以上の処理デバイスに動作可能に結合された1つ以上のメモリデバイス
とを各々含む。前記1つ以上のコンピューティングデバイスの前記1つ以上のメモリデバ
イスは、
リモートコンピューティングデバイスにおいて終結される第1の数の1つ以上の第1の
ネットワーク接続を確立することと、
前記第1のネットワーク接続を通じて、前記リモートコンピューティングデバイスにお
いて終結される第2の数の複数の第2のネットワーク接続を確立することであって、前記
第1の数は前記第2の数よりも小さいことと、
(i)ペイロードデータを複数のデータ部分に分割することと、
(ii)前記複数の第2の接続の内の異なる接続を経由して前記複数のデータ部分を送
信することと、
(iii)前記1つ以上の第1のネットワーク接続を通じて、前記複数の第2の接続経
由で送信された前記複数のデータ部分を多重化することと
によって前記ペイロードデータを前記リモートコンピューティングデバイスへ送信するこ
とと、
(iv)前記第1のネットワーク接続を経由して確認応答を受信することと、
(v)各確認応答によって参照される前記複数の第2のネットワーク接続の内のネッ
トワーク接続上に前記各確認応答を逆多重化することと、
(vi)前記複数のデータ部分の内の1つ以上の受信の確認応答が前記1つ以上の第2
の接続の内の1つ以上の第2の接続上で受信されない場合、前記1つ以上の第2の接続を
経由して前記1つ以上のデータ部分を再送することと
によって、前記リモートコンピューティングデバイスへのペイロードデータの送信を検証
することと
を前記1つ以上のコンピューティングデバイスの前記1つ以上のプロセッサにさせるのに
有効な実行可能コードを格納する。
幾つかの実施形態では、前記実行可能コードは、前記1つ以上の第1のネットワーク接
続を通過するトラフィックの何れの確認応答にも関係なく、前記1つ以上の第1のネット
ワーク接続を通じて前記複数の第2の接続経由で送信された前記複数のデータ部分を前記
1つ以上のコンピューティングデバイスの前記1つ以上のプロセッサに多重化させるのに
更に有効である。
幾つかの実施形態では、前記実行可能コードは、ユニバーサルデータグラムプロトコル
(UDP)、インターネットプロトコル(IP)暗号化セキュリティペイロード(ESP
)、及びソフトウェアIP暗号化プロトコル(swIPe)の内の少なくとも1つに従っ
て、前記1つ以上の第1のネットワーク接続を前記1つ以上のプロセッサに実装させるの
に更に有効である。
幾つかの実施形態では、前記実行可能コードは、トランスポートコントロールプロトコ
ル(TCP)、マルチパストランスポートコントロールプロトコル(マルチパスTCP)
、及びストリームコントロールトランスミッションプロトコル(SCTP)の内の少なく
とも1つに従って、前記複数の第2のネットワーク接続を前記1つ以上のプロセッサに実
装させるのに更に有効である。
幾つかの実施形態では、前記コンピュータシステムは、カーネル空間及びユーザ空間を
実装するオペレーティングシステムを実行する単一のコンピューティングデバイスを含む
。前記実行可能コードは、
仮想ネットワークデバイスにより前記カーネル空間中に実装される複数のカーネルトラ
ンスポートコントロールプロトコル(TCP)ソケットとして前記複数の第2のネットワ
ーク接続を実装することであって、前記複数のカーネルTCPソケットの内の各カーネル
TCPソケットは、前記各カーネルTCPソケットを経由して送信されたデータの配信を
検証するようにプログラムされることと、
前記ユーザ空間中で実行するアプリケーションから前記ペイロードデータを受信するこ
とと、
前記ユーザ空間中で実行するマルチパスマネージャによって前記ペイロードデータを複
数のデータ部分に分割し、前記複数のカーネルTCPソケットの内の異なるカーネルTC
Pソケットへ各データ部分を複数のTCPパケットとして送信することと
を前記1つ以上のプロセッサにさせるのに更に有効であり得る。
幾つかの実施形態では、前記実行可能コードは、
前記仮想ネットワークデバイスに結合されたカーネル空間中に第1のTCPソケットを
実装することと、
前記仮想ネットワークデバイスによって、前記第1のTCPソケットを通じて前記アプ
リケーションから前記ペイロードデータを受信することと、
前記仮想ネットワークデバイスによって、前記第1のTCPソケットからの前記ペイロ
ードデータを傍受することと、
前記仮想ネットワークデバイスによって、前記第1のTCPソケットからの前記ペイロ
ードデータを前記マルチパスマネージャにルーティングすることと
を前記1つ以上のプロセッサにさせるのに更に有効である。
幾つかの実施形態では、前記実行可能コードは、前記第1のTCPソケットからの接続
を終結することと、前記第1のTCPソケットからの前記ペイロードデータを前記マルチ
パスマネージャに提供することとをするようにプログラムされたトランスポートプロキシ
を前記ユーザ空間中に実装することを前記1つ以上のプロセッサにさせるのに更に有効で
ある。
幾つかの実施形態では、前記実行可能コードは、
前記仮想ネットワークデバイスによって、前記カーネルTCPソケットを通じて送信さ
れた前記TCPパケットを傍受することと、
前記仮想ネットワークデバイスによって、前記ユーザ空間中で実行する仮想プライベー
トネットワーク(VPN)クライアントであって、
アウトバウンドのトンネルトラフィックを取得するために前記複数のTCPパケット
を暗号化及びカプセル化することと、
第1の数のVPNトンネルを経由して前記リモートコンピューティングデバイスへ前
記アウトバウンドのトンネルトラフィックを送信することと
をするようにプログラムされた前記VPNクライアントに前記複数のTCPパケットを提
供することと
を前記1つ以上のプロセッサにさせるのに更に有効である。
幾つかの実施形態では、前記実行可能コードは、
前記VPNクライアントによって、前記第1の数のVPNトンネルを経由して、受信さ
れたトンネルトラフィックを受信することと、
前記VPNクライアントによって、受信されたTCPトラフィックを取得するために、
受信された前記トンネルトラフィックを復号及びデカプセル化することと、
前記VPNクライアントによって、受信された前記TCPトラフィックを前記カーネル
TCPソケットに逆多重化することと
を前記1つ以上のプロセッサにさせるのに更に有効である。
発明の別の側面において、システムは、1つ以上の処理デバイスと、前記1つ以上のメ
モリデバイスに動作可能に結合された1つ以上のメモリデバイスとを含む。前記1つ以上
のメモリデバイスは、
複数のローカル配信コントローラの間でデータストリームからの複数のデータ分散を割
り当てるようにプログラムされたディストリビュータを実行することと、
前記複数のローカル配信コントローラを実行することであって、各ローカル配信コント
ローラは、リモートコンピュータシステム上で実行する複数のリモート配信コントローラ
の内の対応するリモート配信コントローラに結合され、各ローカル配信コントローラは、
(a)対応する前記リモート配信コントローラと前記各ローカル配信コントローラとの間
のデータのフローを調整することと、(b)データの前記フローの内のアウトバウンドデ
ータからの任意の未確認応答データを再送することと、(c)前記各ローカル配信コント
ローラに割り当てられた前記複数のデータ分散をデータの前記フロー中の対応する前記リ
モート配信コントローラへ送信することとをするようにプログラムされることと、
前記リモートコンピュータシステム上で実行するリモートマルチプレクサにトランスポ
ート接続により結合されたローカルマルチプレクサを実行することであって、前記ローカ
ルマルチプレクサは、(d)前記複数のローカル配信コントローラのデータの前記フロー
を前記トランスポート接続上に多重化することと、(e)前記トランスポート接続経由で
受信された各確認応答を、前記各確認応答により参照される前記複数のローカル配信コン
トローラの内の1つのデータの前記フローに逆多重化することとをするようにプログラム
されることと
を前記1つ以上のメモリデバイスにさせるのに有効な実行可能コードを格納し、
前記実行可能データは、データ受信を確認応答しない1つ以上のトランスポートプロト
コルを使用して、前記リモートコンピュータシステムへの前記トランスポート接続を前記
1つ以上の処理デバイスに確立させるのに更に有効である。
幾つかの実施形態では、前記複数のローカル配信コントローラの内の各ローカル配信コ
ントローラは、他のローカル配信コントローラから独立して、前記他のローカル配信コン
トローラと情報を交換することなく、送信されたデータの少なくとも幾つかの確認応答を
対応する前記リモート配信コントローラから受信する前に、前記各ローカル配信コントロ
ーラの前記データフローを通じて前記各配信コントローラが送信することを可能にする送
信されるデータの量を変更するように更にプログラムされる。
幾つかの実施形態では、前記複数のローカル配信コントローラの内の各ローカル配信コ
ントローラは、前記データフローに対する前記トランスポートコントロールプロトコル(
TCP)の1つ以上の輻輳制御アルゴリズムを実行するように更にプログラムされる。
幾つかの実施形態では、データ受信を確認応答しない前記1つ以上のトランスポートプ
ロトコルは、ユニバーサルデータグラムプロトコル(UDP)を含む。
幾つかの実施形態では、前記実行可能コードは、セキュアソケットレイヤ(SSL)プ
ロトコル及びトランスポートレイヤセキュリティ(TLS)プロトコルを含むグループか
ら選択されたセキュアな通信プロトコルを使用して、前記各ローカル配信コントローラに
割り当てられた前記複数のデータ分散を対応する前記リモート配信コントローラへ前記1
つ以上の処理デバイスに送信させるのに更に有効である。
幾つかの実施形態では、前記ディストリビュータは、
前記データストリームを終結することと、
前記データストリームからペイロードデータを抽出することと、
前記データ割り当てにおいて、前記複数のローカル配信コントローラの間で前記ペイロ
ードデータを割り当てることと
をするようにプログラムされたプロキシを更に含む。
幾つかの実施形態では、前記ローカルマルチプレクサは、(a)暗号化されたデータフ
ローを取得するために、データの前記フローが相互に多重化された後にデータの前記フロ
ーを暗号化することと、(b)暗号化された前記データフローを前記トランスポート接続
を経由して前記リモートマルチプレクサへ送信することとによって、前記複数のローカル
配信コントローラのデータの前記フローを前記トランスポート接続上に多重化するように
プログラムされる。
発明の別の側面において、ネットワークデータ転送のための方法は、
(i)コンピュータシステムによって、コンピュータネットワークを経由して、第1の
数の1つ以上の第1のデータフローからの第1のデータを受信することであって、前記1
つ以上の第1のデータフローは、第2の数の複数の第2のデータフローの多重化されたペ
イロードデータを搬送し、前記第1の数は前記第2の数よりも小さく、前記複数の第2の
データフローは、1つ以上の第3のデータフローのオリジナルのペイロードデータの異な
る部分を搬送することと、
(ii)前記コンピュータシステムによって、前記複数の第2のデータフローを取得する
ために前記第1のデータを逆多重化することと、
(iii)(ii)を実施した後に、前記コンピュータシステムによって、前記複数の第2
のデータフローの第1の部分中に受信された第2のデータを確認応答することと、
(iv)(ii)を実施した後に、前記コンピュータシステムによって、再送されたデータ
を前記複数の第2のデータフローの第2の部分を経由して受信し、再送された前記データ
を確認応答することであって、再送された前記データは、前記1つ以上の第1のデータフ
ローを通じて多重化されていることと、
(v)前記コンピュータシステムによって、前記1つ以上の第3のデータフローの前記
オリジナルのペイロードデータを取得するために、前記第2のデータ及び再送された前記
データを集約することと
を含む。
幾つかの実施形態では、前記方法は、データ受信を確認応答しない1つ以上の第1のト
ランスポートプロトコルを使用して前記1つ以上の第1のデータフローを管理することと
、データ受信を確認応答し未確認応答データを再送する1つ以上の第2のトランスポート
プロトコルを使用して前記複数の第2のデータフローを管理することとを更に含む。
幾つかの実施形態では、前記1つ以上の第1のトランスポートプロトコルは、ユニバー
サルデータグラムプロトコル(UDP)、IP暗号化セキュリティペイロード(ESP)
プロトコル、及びソフトウェアIP暗号化プロトコル(swIPe)の内の少なくとも1
つを含む。
幾つかの実施形態では、前記1つ以上の第2のトランスポートプロトコルは、トランス
ポートコントロールプロトコル(TCP)、マルチパストランスポートコントロールプロ
トコル(マルチパスTCP)、及びストリームコントロールトランスミッションプロトコ
ル(SCTP)の内の少なくとも1つを含む。
幾つかの実施形態では、前記方法は、前記複数の第2のデータフローの内の第2のデー
タフローに対して、前記複数の第2のデータフローの内の他の第2のデータフローと情報
を交換することなく、送信されたデータの少なくとも幾つかの確認応答を受信する前に前
記第2のデータフロー内の前記コンピュータネットワーク経由で送信され得る、送信され
るデータの量を独立して変更することを更に含む。
幾つかの実施形態では、前記1つ以上の第1のデータフローは、前記複数の第2のデー
タフローの複数の第2のパケットをカプセル化する複数の第1のパケットを含む。幾つか
の実施形態では、(iii)は、前記1つ以上の第1のデータフローの内部に少なくとも幾
つかのパケットをカプセル化することなく、前記第2のデータの確認応答を搬送する前記
少なくとも幾つかのパケットを送信することを含む。
幾つかの実施形態では、前記1つ以上の第1のデータフローは第1のトランスポート接
続を含み、前記複数の第2のデータフローは少なくとも2つの第2のトランスポート接続
を含み、前記少なくとも2つの第2のトランスポート接続両方の前記複数の第2のパケッ
トは、前記第1のトランスポート接続の前記複数の第1のパケット内にカプセル化される
幾つかの実施形態では、前記第1のトランスポート接続は、仮想プライベートネットワ
ーク(VPN)トンネルである。
幾つかの実施形態では、前記VPNトンネルは、ポイントツーポイントトンネリングプ
ロトコル(PPTP)、レイヤ2トンネリングプロトコル(L2TP)、インターネット
プロトコルセキュリティ(IPSec)、セキュアソケットレイヤ(SSL)プロトコル
、及びOpenVPNプロトコルのグループから選択されたプロトコルを実装する。
幾つかの実施形態では、前記方法は、
(vi)前記コンピュータシステム内で実行する第1のローカル配信コントローラによっ
て、前記オリジナルのペイロードデータの第1の部分を含む第1の第2のデータフローの
第1の部分を受信することと、
(vii)(vi)に応じて、前記第1のローカル配信コントローラによって、前記コンピ
ュータネットワークにより前記コンピュータシステムに結合されたリモートコンピューテ
ィングデバイス上で実行する第1のリモート配信コントローラへ前記第1の第2のデータ
フローの前記第1の部分の確認応答を送信することであって、前記第1のリモート配信コ
ントローラは、前記第1のローカル配信コントローラに結合されることと、
(iix)前記コンピュータシステム内で実行する第2のローカル配信コントローラによ
って、第2の第2のデータフローの第2の部分を受信することを失敗することであって、
前記第2の部分は、前記オリジナルのペイロードデータの第2の部分を含むことと、
(ix)(iix)に続いて、前記第2のローカル配信コントローラによって、前記第2の
ローカル配信コントローラに結合された第2のリモート配信コントローラから、前記第2
の第2のデータフローを経由して前記第2の第2のデータフローの前記第2の部分に対応
する再送されたデータを受信することと、
(x)(ix)に応じて、前記第2のローカル配信コントローラによって、前記リモート
コンピューティングデバイス上で実行する前記第2のリモート配信コントローラへ、再送
された前記データの確認応答を送信することと
を更に含む。
幾つかの実施形態では、前記1つ以上の第1のデータフローの内の各第1のデータフロ
ーの多重化された前記ペイロードデータは、データユニットに集約されている前記複数の
第2のデータフローの内の2つ以上の第2のデータフローからのペイロードデータを含み
、各データユニットは、前記2つ以上の第2のデータフローの内の単一の第2のデータフ
ローからのデータを含み、前記各第1のデータフローは、少なくとも前記2つの第2のデ
ータフローからの前記データユニットを搬送する。
幾つかの実施形態では、前記1つ以上の第1のデータフローは、セキュアソケットレイ
ヤ(SSL)プロトコル及びトランスポートレイヤセキュリティ(TLS)プロトコルの
グループからのセキュアな通信プロトコルに従ったトランスポート接続を含む。
幾つかの実施形態では、前記方法は、
リモートコンピューティングデバイスによって、2つ以上の結合接続を経由して前記1
つ以上の第3のデータフローを受信することと、
前記リモートコンピューティングデバイスによって、前記複数の第2のデータフローの
間で分散された前記複数の異なる部分に前記第2のデータ間の前記オリジナルのペイロー
ドを分割する前に、前記2つ以上の結合接続の内の第1の結合接続を終結することと、
前記コンピュータシステムによって、前記複数の第2のデータフローからの第2の結合
接続からのペイロードデータを集約する前に、前記2つ以上の結合接続の内の前記第2の
結合接続を開始することと
を更に含む。
幾つかの実施形態では、前記2つ以上の結合接続は、前記コンピュータシステム上で実
行する複数のプロキシと、接続を終結及び開始するようにプログラムされた前記リモート
コンピューティングデバイスとを行き来する接続を含む。
幾つかの実施形態では、前記方法は、リモートコンピューティングデバイスによって、
コンピュータネットワークを経由して前記第1のデータを送信する前に前記第1のデータ
を暗号化することと、前記コンピュータシステムによって、前記複数の第2のデータフロ
ーを取得するために前記第1のデータを逆多重化する前に前記第1のデータを復号するこ
ととを更に含む。
発明の利点を容易に理解するために、簡単に上述された発明のより具体的な説明は、添
付の図面で説明される特定の実施形態を参照しながら与えられるであろう。これらの図面
は、発明の典型的な実施形態のみを図示し、それ故、その範囲を限定するものと考えるべ
きではなく、発明は、添付の図面の使用を通じて付加的な特殊性と詳細と共に記述及び説
明されるであろう。
本発明の実施形態に従った仮想プライベートネットワーク(VPN)を通じて多重化された多数の同時トランスポート接続を通じたデータ転送を実装するために使用される第1のネットワーク環境の図である。 本発明の実施形態に従ったVPNを通じて多重化された多数の同時トランスポート接続を通じたクライアント側のデータ転送を実装するために使用される第2の環境の図である。 本発明の実施形態に従ったVPNを通じて多重化された多数の同時トランスポート接続を通じたデータ転送を実装するための方法のプロセスフロー図である。 本発明の実施形態に従ったトランスポート接続を通じて多重化された多数の同時データフローを通じたクライアント側のデータ転送を実装するために使用される第3の環境の図である。 本発明の実施形態に従った1つ以上のトランスポート接続を通じて多重化された多数の同時データフローを通じたデータ転送の方法のプロセスフロー図である。 本発明の実施形態に従って(複数の)同時接続の内の一部のみが多重化される、多数の同時トランスポート接続を通じたデータ転送を実装するために使用される第4のネットワーク環境の図である。 本明細書に記述されるコンポーネント及び方法を実装するのに適するコンピューティングデバイスの図である。
本明細書の図中に概して記述及び説明されるような本発明のコンポーネントは、多種多
様な異なる構成で配置及び設計され得ることは容易に理解されるであろう。それ故、図に
表されるような以下の発明の実施形態のより詳細な説明は、請求されるような発明の範囲
を限定することを意図せず、発明に従ってここで考慮される実施形態の幾つかの例を表す
にすぎない。ここで記述される実施形態は、全体を通して同様の部分が同様の数字により
指し示される図面を参照することによって最も理解されるであろう。
発明は、技術の現在の状態に応じて、具体的には、現在利用可能な装置及び方法により
完全にはまだ解決されていない技術の問題及び要請に応じて開発されている。
本発明に従った実施形態は、装置、方法、又はコンピュータプログラム製品として具体
化され得る。したがって、本発明は、全体的にハードウェアの実施形態、全体的にソフト
ウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又
は“モジュール”若しくは“システム”として本明細書で概して全て称され得るソフトウ
ェア及びハードウェアの側面の組み合わせの実施形態の形式を取り得る。更に、本発明は
、媒体中に具体化されたコンピュータ使用可能なプログラムコードを有する表現の任意の
有形媒体中に具体化されたコンピュータプログラム製品の形式を取り得る。
1つ以上のコンピュータ使用可能な又はコンピュータ可読の媒体の任意の組み合わせが
利用され得る。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスク、ハ
ードディスク、ランダムアクセスメモリ(RAM)デバイス、リードオンリメモリ(RO
M)デバイス、消去可能プログラム可能リードオンリメモリ(EPROM若しくはフラッ
シュメモリ)デバイス、ポータブルコンパクトディスクリードオンリメモリ(CDROM
)、光ストレージデバイス、及び磁気ストレージデバイスの内の1つ以上を含み得る。選
りすぐりの実施形態では、コンピュータ可読媒体は、命令実行システム、装置、又はデバ
イスにより、又はそれらと接続して使用するためのプログラムを含み得、格納し得、通信
し得、伝搬し得、又はトランスポートし得る任意の非一時的媒体を含み得る。
実施形態は、クラウドコンピューティング環境中にも実装され得る。この説明及び以下
の請求項において、“クラウドコンピューティング”は、仮想化を介して迅速に提供され
得、最小限の管理努力又はサービスプロバイダのインタラクションで解放され得、それに
応じてその後スケール設定され得る構成可能なコンピューティングリソース(例えば、ネ
ットワーク、サーバ、ストレージ、アプリケーション、及びサービス)の共有プールへの
ユビキタスで便利なオンデマンドのネットワークアクセスを可能にするためのモデルとし
て定義され得る。クラウドモデルは、様々な特徴(例えば、オンデマンドセルフサービス
、ブロードネットワークアクセス、リソースプーリング、迅速な拡張性、及び計測サービ
ス)、サービスモデル(例えば、Software as a Service(“Sa
aS”)、Platform as a Service(“PaaS”)、及びInf
rastructure as a Service(“IaaS”))、並びに配備モ
デル(例えば、プライベートクラウド、コミュニティクラウド、パブリッククラウド、及
びハイブリッドクラウド)から構成され得る。
本発明の動作を実行するためのコンピュータプログラムコードは、Java、Smal
ltalk、若しくはC++等のオブジェクト指向プログラミング言語、及び“C”プロ
グラミング言語若しくは同様のプログラミング言語等の従来の手続型プログラミング言語
を含む1つ以上のプログラミング言語の任意の組み合わせで書き込まれ得る。プログラム
コードは、スタンドアローンなソフトウェアパッケージとしてコンピュータシステム上で
全体的に、スタンドアローンなハードウェアユニット上で、コンピュータから幾らか離間
したリモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で
全体的に、実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリア
ネットワーク(LAN)若しくは広域エリアネットワーク(WAN)を含む任意の種類の
ネットワークを通じてコンピュータに接続され得、或いは、該接続は、(例えば、インタ
ーネットサービスプロバイダを使用するインターネットを通じて)外部のコンピュータに
作り出され得る。
本発明は、発明の実施形態に従った方法、装置(システム)、及びコンピュータプログ
ラム製品のフローチャートの説明及び/又はブロック図を参照しながら以下に記述される
。フローチャートの説明及び/又はブロック図の各ブロック、並びにフローチャートの説
明及び/又はブロック図中のブロックの組み合わせは、コンピュータプログラム命令又は
コードにより実装され得ることは理解されるであろう。これらのコンピュータプログラム
命令は、コンピュータ又はその他のプログラム可能データ処理装置のプロセッサを介して
実行する命令が、フローチャート及び/又はブロック図の1つ以上のブロック中で明示さ
れた機能/作用を実装するための手段を作り出すように、マシンを生み出すための汎用コ
ンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッ
サに提供され得る。
これらのコンピュータプログラム命令は、フローチャート及び/又はブロック図の1つ
以上のブロック中で明示された機能/作用を実装する命令手段を含む製品をコンピュータ
可読媒体中に格納された命令が生み出すように、コンピュータ又はその他のプログラム可
能データ処理装置を特定の方法で機能させるように指示し得る非一時的コンピュータ可読
媒体中にも格納され得る。
コンピュータプログラム命令は、コンピュータ又はその他のプログラム可能装置上で実
行する命令が、フローチャート及び/又はブロック図の1つ以上のブロック中で明示され
た機能/作用を実装するためのプロセスを提供するようなコンピュータ実装プロセスを、
コンピュータ又はその他のプログラム可能装置上で実行される一連の動作可能なステップ
に生み出させるために、コンピュータ又はその他のプログラム可能データ処理装置上にも
ロードされ得る。
多数の同時の配信保証トランスポート接続に渡ってデータ転送を拡散することは、長距
離のデータ接続に共通するランダムなロスの弊害を緩和するために使用され得る。実例と
して、1つの接続に対する輻輳ウィンドウがパケットロス後に50%に低下する場合、1
0個の並列接続に対する総輻輳ウィンドウは5%のみ減少する。
しかしながら、コンピュータネットワーク経由で単一のファイルをダウンロードするた
めに多数のトランスポート接続が使用される場合、マルチパストランスポートは、ルータ
及びスイッチ上に接続単位でより多くのキューを取り、それらは、接続単位のスロットリ
ングの効果を減少させる等、これは、単一の接続を通じた同じファイルのダウンロードよ
りも多くのリソースを取り得る。このことは、他のマルチパストランスポート接続の受け
入れを制限するので、同じネットワークパスの他のユーザにとって不公正であると、しば
しばみなされる。
この不公正を緩和するための周知の方法は、単一のトランスポートと同様のリソース量
を消費するようにマルチパストランスポートに強いることである。実例として、マルチパ
スTCPプロトコルエクステンションに対する輻輳制御アルゴリズムは、単一の接続を通
じてファイルがロードされる場合と同じレベルで、多数の接続を通じた総スループットを
保持することを目標に実装される。この解決法は、異なるネットワーク間で切り替わる場
合の円滑なトラフィックのハンドオフには役立つが、長距離経由でのマルチパストランス
ポートの性能の利点を利用しない。
それ故、長距離経由でのマルチパストランスポートの性能の利点を否定せずに、多数の
TCP接続間のトラフィックの分割の公正を改善する必要がある。
一方、実例として、プロキシ又は仮想プライベートネットワーク(VPN)を使用する
場合、多数のファイルが単一の接続を通じて同時にしばしば転送される。そうした転送は
、各ファイルが自身の接続を通じて転送される場合よりもファイル単位で僅かなリソース
を消費し、プロキシ又はVPNのユーザに対して不公正にする。それ故、限られたリソー
スの公正な共有を得るためにプロキシ及びVPNの能力を改善する必要もある。
本発明の一側面において、第1のコンピューティングモジュール及び第2のコンピュー
ティングモジュールは、第1の数のトランスポート接続を通じてデータを交換することが
可能であり、第3のコンピューティングモジュール及び第4のコンピューティングモジュ
ールは、第2の数のデータフローを通じてデータを交換することが可能であり、第1の数
は第2の数よりも小さく、第2のフローは、第1及び第2のモジュールによって第1のト
ランスポート接続を通じて多重化され、第5のコンピューティングモジュール及び第6の
コンピューティングモジュールは、1つ以上の第3のデータフローを通じてデータを交換
することが可能であり、同じ第3のフローのペイロードは、第1の接続の内の1つ以上に
よって転送される前に第3及び第4のモジュールによって2つ以上の第2のフロー間で分
割され、その後、第1の接続の内の1つ以上から第2のフローが逆多重化された後に、第
2のフローから集約される。この側面において、第3及び第4のモジュールは、第1の接
続の内の1つ以上から第2のフローが逆多重化された後に、1つ以上の第2のフローによ
り受信されたデータを確認応答することと、第1の接続の内の1つ以上を通じて多重化さ
れた同じ第2のフローを通じて少なくとも1つの第2のフローにより未確認応答されたデ
ータを再送することとが更に可能である。
一実施形態では、第3及び第4のモジュールは、受信されたデータを確認応答すること
及び未確認応答のデータを再送することが可能な1つ以上のトランスポートプロトコルを
実装することによって、第2のフローを通じてデータを交換する一方で、第1及び第2の
モジュールは、受信されたデータの確認応答を提供することなくデータを受信することが
可能な1つ以上のトランスポートプロトコルを実装することによって、第1の接続を通じ
てデータを交換する。
一実例では、第1及び第2のモジュールは、ユニバーサルデータグラムプロトコル(U
DP)、IP暗号化セキュリティペイロード(ESP)プロトコル、及びソフトウェアI
P暗号化プロトコル(swIPe)のグループからの1つ以上のプロトコルを実装する。
一例では、第3及び第4のモジュールは、トランスポートコントロールプロトコル(TC
P)、マルチパストランスポートコントロールプロトコル(マルチパスTCP)、及びス
トリームコントロールトランスミッションプロトコル(SCTP)のグループからの1つ
以上のプロトコルを実装する。
別の実施形態では、第3及び第4のモジュールの各々は、結合された2つ以上の配信コ
ントローラを含み、第3のモジュールの結合されたコントローラは、第4のモジュールの
結合されたコントローラと関連付けられ、両コントローラは同じ第2のフローを調整し、
これらのコントローラの各々は、他の第2のフローを調整するコントローラと情報を交換
することなく、未確認応答のデータを再送するため、及び以前に送信されたデータの確認
応答を受信する前に当該フローを通じて送信されるデータの量を変更するために、調整さ
れたフローを通じて受信されたデータを確認応答することが可能である。
一実装では、第1及び第2のモジュールは、第1の接続の内の1つ以上の内部に第2の
フローのパケットを多重化することが可能な、仮想プライベートネットワーク(VPN)
のクライアント及びサーバを含む。一実例では、第1及び第2のモジュールは、第1の接
続の内部に第2のフローにより交換されたパケットをカプセル化する一方、第3及び第4
のモジュールは、複数のデータパケットを交換するトランスポート接続として第2のフロ
ーを実装する。一例では、VPNクライアント及びサーバは、ポイントツーポイントトン
ネリングプロトコル(PPTP)、レイヤ2トンネリングプロトコル(L2TP)、イン
ターネットプロトコルセキュリティ(IPSec)、セキュアソケットレイヤ(SSL)
プロトコル、トランスポートレイヤセキュリティ(TLS)プロトコル、及びOpenV
PNプロトコルのグループからのプロトコルを実装する。
他の一実施形態では、第5及び第6のモジュールは、それに対応した第3及び第4のモ
ジュールとのトランスポート接続として第3のフローの内の1つ以上を実装し、第3及び
第4のモジュールは、ペイロードを第2のフロー間で分割される前にこれらの接続から受
信し、ペイロードを第2のフローから集約された後にこれらの接続を通じて送信するプロ
キシを更に含む。
別の実施形態では、第1及び第2のモジュールは、第2のフローの多重化されたペイロ
ードを、第1の接続の内の1つ以上を通じて送信する前に暗号化することと、第1のフロ
ーの内の1つ以上から受信されたデータを、第2のフローに逆多重化される前に復号する
こととが可能である。
一実施形態では、第2、第4、及び第6のモジュールが第2のローカルネットワーク内
の1つ以上のコンピューティングデバイス上に存在する一方で、第1、第3、及び第5の
モジュールは、第1のローカルネットワーク内の1つ以上のコンピューティングデバイス
上に存在し、第1及び第2のローカルネットワークは、広域ネットワーク経由で接続され
る。一実例では、第2、第4、及び第6のモジュールが第2のコンピューティングデバイ
ス上に存在する一方で、第1、第3、及び第5のモジュールは第1のコンピューティング
デバイス上に存在し、第1及び第2のデバイスは、コンピュータネットワーク経由で接続
される。
他の一実施形態では、第3及び第4のモジュールは、確認応答を搬送する少なくとも幾
つかのパケットを第1のフローの内の1つ以上の内部にカプセル化することなく送信する
ことによって、1つ以上のフローにより受信されたデータを確認応答することが可能であ
る。
本発明の別の側面において、第1及び第2のコンピュータは、以下のモジュールを使用
することによって、コンピュータネットワーク経由でデータを交換している。
・結合された2つ以上の配信コントローラ。第1のコンピュータの結合されたコントロー
ラは、第2のコンピュータの結合されたコントローラと関連付けられ、両コントローラは
、第1及び第2のコンピュータ間の同じデータフローを調整し、該フローのコントローラ
は、受信されたデータの確認応答を送信することと、調整されたフローに対する未確認応
答データを再送することとが可能である。
・結合された1つ以上のマルチプレクサ。第1のコンピュータの結合されたマルチプレク
サは、第2のコンピュータの結合されたマルチプレクサと関連付けられ、結合されたマル
チプレクサの各セットは、第1及び第2のコンピュータ間の1つ以上のトランスポート接
続を経由してデータを交換することが可能であり、結合された一方のマルチプレクサは、
結合された他方のマルチプレクサへの1つ以上のトランスポート接続に渡って、調整され
た2つ以上のフローを多重化することが可能であり、受信されたデータを調整された2つ
以上のデータフローに逆多重化することが可能である。
・同じコンピュータ上の2つ以上の配信コントローラであって、調整されたそれらのフロ
ー経由でデータを送信する該コントローラにデータストリームのデータを分散することと
、2つ以上の配信コントローラであって、調整されたそれらのフローからデータを受信す
る該コントローラからデータストリームのデータを集約することとが可能なディストリビ
ュータ。
・ここで、第1及び第2のコンピュータは、送信者に確認応答を提供することなくデータ
を受信することを支持する1つ以上のトランスポートプロトコルを使用して、結合された
マルチプレクサ間に1つ以上のトランスポート接続を確立する。
一実施形態では、同じデータフローを調整する結合されたコントローラは、他の第2の
フローを調整するコントローラと情報を交換することなく、以前に送信されたデータの確
認応答を受信する前に当該フローを通じて送信されたデータの量を変更することが可能で
ある。一実装では、結合されたコントローラは、調整されたデータフローに対してトラン
スポートコントロールプロトコル(TCP)の1つ以上の輻輳制御アルゴリズムを使用す
る。
一実例では、1つ以上のトランスポート接続により使用されるトランスポートプロトコ
ルは、ユニバーサルデータグラムプロトコル(UDP)である。
別の実施形態では、第1及び第2のコンピュータは、確立された1つ以上のトランスポ
ート接続に渡って、セキュアソケットレイヤ(SSL)及びトランスポートレイヤセキュ
リティ(TLS)プロトコルのグループからのセキュアな通信プロトコルを使用する。
他の一実施形態では、ディストリビュータは、配信コントローラ間の分散のためにデー
タストリームを終結しそのペイロードを抽出するプロキシを更に含む。
一実装では、第1のコンピュータ及び第2のコンピュータは、1つ以上のトランスポー
ト接続を経由するデータを、調整されたフローから多重化された後に暗号化することと、
1つ以上のトランスポート接続を経由して受信されたデータを、調整されたフローに逆多
重化される前に復号することとが更に可能である。
本発明の他の一側面では、複数のマルチパス接続の内の1つ以上は、1つ以上の共通の
トランスポート接続に渡って多重化されず、代わりに、これらのマルチパス接続は、該接
続が多数のマルチパス接続に使用されるのと並行して、WANを経由してデータを交換す
るコンピュータ間に直接確立される。
図1は、仮想プライベートネットワーク(VPN)を通じて多重化された多数の同時ト
ランスポート接続を通じたデータ転送を実装するために使用され得る第1のネットワーク
環境の図である。
クライアント110は、コンピュータネットワークを経由してコンテンツサーバ195
からコンテンツをリクエストするための少なくとも1つの接続を確立する。近傍のプロキ
シ115は、この接続を終結し、近傍のマルチパスマネージャ120にそのペイロードを
提示する。近傍のマルチパスマネージャ120は、複数の配信コントローラ125と通信
する。これらのコントローラの各々は、マルチパスマネージャ120とVPNクライアン
ト145との間の接続と関連付けられる。これらの接続の内の幾つかは、クライアントデ
ータ(135)を転送するために使用され、その他は、予備(140)として保持され得
る。
図示される実装では、各配信コントローラ125はTCPスタックを含み、接続135
及び140は、VPNクライアント145とVPNサーバ155との間に確立されたトン
ネル150の内部にカプセル化されたTCP接続である。TCP接続は、配信コントロー
ラ170により管理される(幾つかの実施形態では、遠方のマルチパスマネージャ180
とVPNサーバ155との間の幾つかの接続165が予備として保持されると共に)接続
160を通じて遠方のマルチパスマネージャ180へその後渡される。遠方のマルチパス
マネージャは、コンテンツサーバ195に接続する遠方のプロキシ185と通信し得る。
この実装では、TCP接続135、160及び接続140、165は、夫々、1つ以上
のVPNトンネル150内にカプセル化された同じ接続。一例では、VPN接続150に
より使用されるトランスポート接続は、受信されたパケットの確認応答と、任意の未確認
応答パケットの再送とを支持しない。そうした実施形態では、VPNクライアント145
とVPNサーバ155との間にパケットのドロップがある場合、配信コントローラ125
又は170の内の1つに逆多重化されるまで、そのペイロードは再送されない。VPNト
ンネル150により使用されるトランスポートプロトコルは、実例として、UDP(ユニ
バーサルデータグラムプロトコル)、ESP(暗号化セキュリティペイロード)、又はs
wIPe(ソフトウェアインターネットプロトコル(IP)暗号化プロトコル)プロトコ
ルであり得る。これらのプロトコルの何れかは、ポイントツーポイントトンネリングプロ
トコル(PPTP)、レイヤ2トンネリングプロトコル(L2TP)、インターネットプ
ロトコルセキュリティ(IPSec)、セキュアソケットレイヤ(SSL)プロトコル、
トランスポートレイヤセキュリティ(TLS)プロトコル、及びOpenVPNプロトコ
ルの内の少なくとも1つに基づきセキュアで認証されたデータ交換を実装するために、V
PNクライアント145及びサーバ155により使用され得る。
この例では、VPNクライアント145及びサーバ155は、TCP接続135、16
0を、それらのパケットをカプセル化することによって多重化し、カプセル化ヘッダを取
り去ることによってそれらを逆多重化する。デカプセル化されたパケットの各々は、対応
するTCPスタックにその後渡され、該TCPスタックは、受信されたパケットを確認応
答し、受信者のTCPスタックにより確認応答されなかった以前に送信された任意のパケ
ットを再送する。この開示の目的のため、未確認応答のデータ、又は確認応答されないパ
ケットは、幾つかのタイムアウトウィンドウ内に確認応答が受信されないデータ又はパケ
ットであると理解され得る。
図示される実装では、グループ125及び170中の配信コントローラの各々は、相互
から独立している。具体的には、コントローラ125、170の対応するTCPスタック
の各々は、以前に送信されたパケットの確認を受信することなく幾つのパケットが送信さ
れ得るかを明示する自身の輻輳ウィンドウを保持する。異なる接続135、160からの
パケットは、トンネル150の内部でのデータ転送中にロスされてくるので、各配信コン
トローラ125、170は、自身の未確認応答のパケットを再送し、未確認応答のパケッ
トに基づいて、他の配信コントローラ125、170から独立して自身の輻輳ウィンドウ
を調節する。パケットロスがランダムである場合、このことは、実際に多数の同時配信保
証トランスポート接続に渡ってデータ転送することと同じ類の改善をもたらす。実例とし
て、1つのTCP接続に対する輻輳ウィンドウがパケットロス後に50%に低下する場合
、10個の並列TCP接続に対する総輻輳ウィンドウは5%のみ減少する。
同時に、同じVPNトンネル150に渡って多数の同時トランスポート接続135、1
60を多重化することは、多重化されていない(複数の)接続経由のマルチパストランス
ポートと比較して、そうした仮想マルチパストランスポートの公正を改善する。実例とし
て、クライアントが単一のVPNトンネルを開通し、コンテンツサーバからの単一のファ
イルをその後リクエストする場合、このファイルは、単一のトランスポート接続を経由し
てコンピュータネットワークを通じて配信され、各中間ルータ又はスイッチ上に接続指定
単位で唯一のキューを占める。
単一の接続を通じた仮想マルチパストランスポートは、同じパスを経由した単一のTC
P接続よりも帯域幅を消費し得るが、その他の最新のネットワークプロトコルは、同等の
TCPフローよりも高いビットレートをも支持する。例えば、Google株式会社によ
り開発され、評判のあるChromeブラウザにより使用されるQUIC(Quick
UDPインターネット接続)プロトコルは、標準的なTCPよりもアグレッシブなMul
TCP(マルチプルTCP)輻輳制御アルゴリズムを実装する。それ故、本明細書に開示
される実施形態は、公正と性能向上とのバランスを改善することによって幅広い採用をよ
り受け入れ可能な仮想マルチパストランスポートを提供する。
幾つかの実施形態では、VPNクライアント145及びVPNサーバ155の内の少な
くとも1つは、トラフィックの認証及び暗号化を完全に担当する、スタンドアローンなハ
ードウェアモジュール又は機器として実装される。そうした実施形態では、各プロキシ及
びマルチパスマネージャのペア(プロキシ115及びマルチパスマネージャ120、プロ
キシ185及びマルチパスマネージャ180)は、対応するVPNモジュール145、1
55と同じローカルネットワーク上の1つ以上のコンピュータ上のモジュール又はプロセ
スとして実装される。この実施形態では、ネットワークレベルのpeer認証、データ発
信元認証、データインテグリティ及びリプレイプロテクション等の認証及びセキュリティ
プロトコルを何ら変更することなく、既存のVPN基盤(実例として、エンタープライズ
ネットワーク上のIPSEC VPN機器)を再利用することの利点を有する。
幾つかの実施形態では、プロキシ、マルチパスマネージャ、及びVPNモジュールは、
同じコンピュータ上に配備され得る。幾つかの実施形態では、モバイルデバイス上のクラ
イアントアプリケーションは、近傍のプロキシ115、近傍のマルチパスマネージャ12
0、及びVPNクライアント145を集約し得る。別の実例では、VPNサーバ155は
、遠方のマルチパスマネージャ180及び遠方のプロキシ185と同じサーバコンピュー
タ上で稼働していてもよい。幾つかの実施形態では、遠方のマルチパスマネージャ180
及び遠方のプロキシ185は、VPNサーバ機器155内に集約されたプラグインハード
ウェアモジュール上に配備され得る。
幾つかの実施形態では、データ暗号化は、データペイロード毎に1回実施されるのみで
あり、それにより、性能を改善し、計算リソースを節約する。幾つかの実施形態では、マ
ルチパスマネージャ120、180は、何ら認証又は暗号化を実行せず、代わりに、それ
実行するためにVPNモジュール145、155を頼りにする。幾つかの実施形態では、
クライアント110及びコンテンツサーバ195は、少なくとも、HTTPプロトコル経
由でデータを交換する場合に、WAN(広域ネットワーク)経由でセキュアにデータを転
送するためにVPNトンネル150をも頼りにする。他の実施形態では、VPN暗号化は
無効にされ得、マルチパスマネージャ120、180は、トランスポート接続135、1
40、160、165を通じてトラフィックを暗号化するであろう。幾つかの実施形態で
は、該トラフィックの他の部分がマルチパスマネージャ120、180間で暗号化される
一方で、トラフィックの一部は、クライアント110とコンテンツサーバ195との間の
何れかで暗号化されるであろう。実例として、マルチパストランスポートマネージャ12
0、180によるデータの暗号化は、HTTPSプロトコルを経由してクライアント11
0及びコンテンツサーバ195により交換されるデータに対して無効にされるであろう。
幾つかの実施形態では、VPNクライアント145とVPNサーバ155との間でコン
ピュータネットワーク経由で転送されるデータの配信の検証は、TCP等の配信保証トラ
ンスポートプロトコルを使用する同時トランスポート接続135、140、160、16
5を通じてのみ達成される。この実装では、VPNトンネル150を経由して受信された
データは、それらが逆多重化され、対応するマルチパス接続135、160の配信コント
ローラ125、170に到達するまで確認応答されない。このことは、広域ネットワーク
(WAN)経由で転送された同じデータに対する繰り返しの又は次々と転送される確認応
答の送信を阻止し、それにより、性能低下を回避する。
幾つかの実施形態では、マルチパス接続と関連付けられた配信コントローラ125、1
70のみが、WAN経由で受信されたデータの確認応答と、未確認応答データの再送とを
担当する。この実例では、VPNクライアント145及びサーバ155は、確認応答を送
信することなくデータを配信する、UDP等のトランスポートプロトコルを使用すること
が可能であり、プロキシ115及び185は、WANを経由してクライアント110及び
コンテンツサーバ195から確認応答を送信することを阻止することが同様に可能であり
得る。
幾つかの実施形態では、プロキシ185がコンテンツサーバ195との接続を終結する
一方で、プロキシ115は、クライアント110との接続を終結し、それにより、対応す
る確認応答を停止し、パケットのペイロードのみを通過させる。別の例では、プロキシ1
15及び185は“詮索”プロキシとして機能し、クライアント110及びコンテンツサ
ーバ195との接続を終結する代わりに、それらは、生成された確認応答をブロックし、
送信者に近い模擬された確認応答を作り出す。実例として、プロキシ185は、サーバ1
95により送信された全てのデータに対する確認応答を模擬する一方で、プロキシ115
は、サーバ195からデータを受信するクライアント110による全ての確認応答をブロ
ックするであろう。同様に、プロキシ185は、コンテンツサーバ195による確認応答
をブロックし得、プロキシ115は、クライアント110により送信された全てのデータ
に対して、模擬された確認応答をクライアント110に提供し得る。
幾つかの実施形態では、アクティブな接続135、160と予備の接続140、165
との間のバランスは、異なるネットワーク環境に対して変化する。実例として、パケット
ロスがランダムのままである場合、各パケットロスの影響を更に減少させるために、以前
に予備にされた接続はアクティブになり得る。
幾つかの実施形態では、クライアントによりリクエストされたデータを転送する必要が
ある場合に、マルチパスマネージャ120、180により開通される全てのトランスポー
ト接続135、140、160、165がアクティブになり、すなわち、予備の接続はな
い。
幾つかの実施形態では、近傍のトランスポートマネージャ120により開通されるアク
ティブな接続135の総数は、クライアント110へ同時にダウンロードされるデータフ
ァイルの数の増加と共に増加する。このことは、利用可能なリソースのよりよい共有をV
PNユーザが得ることを可能にし、平均スループットの増加によって単一の接続キューの
制限を補填する。
図1に図示される実施形態の一実装では、VPNクライアント145とVPNサーバ1
55との間に単一のトランスポート接続150が開通される。別の実施形態では、接続1
35、160の多重化されたデータを搬送する多数のトランスポート接続150が、同じ
VPNクライアント145とVPNサーバ155との間に開通され得る。幾つかの実施形
態では、多重化されたデータを搬送するトランスポート接続150の数は、マルチパスマ
ネージャにより開通され、且つVPNクライアント145とVPNサーバ155との間の
接続を通じて多重化される接続135、160の数よりも小さい。例えば、単一の接続1
50があり得る。
幾つかの実施形態では、多数のデータストリームの同時のダウンロードをクライアント
110がリクエストする場合、VPNクライアント145は、同じVPNサーバ155へ
の多数の接続150を開通し、中間ルータ又はスイッチ上の多数の接続キューをクライア
ント110が利用することを可能にする。実例として、クライアントが8つの同時のダウ
ンロードストリームを開通する場合、それらは、近傍のトランスポートマネージャ120
により開通された64個の同時トランスポート接続135、160間に分割され得、VP
NクライアントとVPNサーバとの間の8つのトランスポート接続150を通じてその後
多重化され得る。幾つかの実施形態では、マルチパスマネージャ125により作り出され
た同じ数のマルチパス接続135、160は、同じVPNクライアント145と同じVP
Nサーバ155との間の異なる数のトランスポート接続150を通じて多重化され得る。
別の実施形態では、VPNクライアント145は、異なるクライアントリクエストを処
理する異なる2つ以上のVPNサーバ155への多数の接続を開通する。実例として、ク
ライアント110は、場所A中の第1のコンテンツサーバ195上に格納されたファイル
のダウンロードを、場所A近傍の第1のVPNサーバ155を通じてリクエストし得る。
同じクライアント110は、異なる場所B中の第2のコンテンツサーバ195上に格納さ
れたファイルのダウンロードを、場所B近傍の第2のVPNサーバ155を通じてリクエ
ストし得る。この場合、マルチパスマネージャ120は、VPNクライアント145と対
応するVPNサーバ155との間の1つ以上の接続150を通じて多重化される、VPN
サーバ155毎のマルチパス接続135の異なるセットを生成し得る。
図2は、VPN接続150を通じて多重化される多数の同時トランスポート接続を通じ
たクライアント側のデータ転送を実装するために使用される第2の環境の図である。
図2は、同じコンピューティングデバイス、実例として、デスクトップコンピュータ又
はモバイルフォン上でプロキシ115、マルチパスマネージャ120、及びVPNクライ
アント145が全て稼働するクライアント側の実装を図示する。この実装では、クライア
ントアプリケーション200(実例として、ウェブブラウザ又はモバイルアプリケーショ
ン)は、ユーザ空間上で実行され、仮想ネットワークデバイス220へトラフィックを送
信するTCPソケット210を開通する。仮想ネットワークデバイス220は、コンピュ
ーティングデバイス上で実行するオペレーティングシステムのカーネル空間中で動作する
TUN(ネットワークトンネル)デバイスを含む。
用語“カーネル空間”及び“ユーザ空間”は、LINUX及びWINDOWS等の最新
のコンピュータオペレーティングシステムにより提供される2種類の仮想メモリを指すと
理解され得る。主に、カーネル空間とユーザ空間との分離は、悪意のある又は誤ったソフ
トウェアの挙動からのメモリ保護及びハードウェア保護を提供するのに役立つ。カーネル
空間は、特権を持つオペレーティングシステムカーネル、カーネルエクステンション、及
び大方のデバイスドライバを稼働するために厳密に予め備えられる。一方、ユーザ空間は
、カーネル空間中で稼働する、特権を持つオペレーティングシステム(入出力を実施し、
ファイルシステムオブジェクト、アプリケーションソフトウェアを操作する等のソフトウ
ェア)と相互作用する様々なプログラム及びライブラリを実行するために使用されるメモ
リ領域を指す。
仮想ネットワークデバイス220は、トラフィックをユーザ空間に移す。トランスポー
トプロキシ230は、TCPソケット210からトラフィックを傍受し、その接続を終結
し、傍受されたトラフィックからのペイロードを、ユーザ空間中で同様に稼働するマルチ
パスマネージャ255へ送信する。マルチパスマネージャ255は、ソケット240、2
50、260、270を通じて開通された多数のトランスポート接続に渡ってこのペイロ
ードを分散する。マルチパストランスポートの周知の実装として、広域ネットワーク(W
AN)経由で多数の接続240〜270からデータを送信する代わりに、説明される実施
形態では、TCPソケット240〜270は、トラフィックをユーザ空間に戻す仮想ネッ
トワークデバイス220へデータを再度送信する。多数のトランスポート接続からのパケ
ットは、VPNクライアント280によってユーザ空間中で傍受される。VPNクライア
ント280は、受信されたパケットの確認応答を送信しないトランスポートプロトコル(
実例として、UDP又はIP)を使用して、VPNサーバへのWAN経由のトンネルを開
通する。仮想ネットワークデバイス220をバイパスしてVPNサーバとの接続を確立す
るために、図示される実施形態では、VPNクライアント280は、保護されたソケット
290を使用する。幾つかの実施形態では、VPNクライアント280は、異なるネット
ワークインタフェースに結合し得、又は、そのトラフィックがユーザ空間にリダイレクト
されず、むしろWANを通じて直接送信されることを確認するための別の手段を使用し得
る。
マルチパスマネージャ255により作り出された多数のトランスポート接続と関連付け
られたTCPソケット240〜270からパケットを受信すると、VPNクライアント2
80は、各パケットをカプセル化し、それをペイロードとして暗号化し、VPNトンネル
のトランスポートプロトコル(実例として、UDP/IP)に対するヘッダを追加する。
結果として、多数のTCPトランスポート接続240〜270からのパケットは、WAN
を通じて送信される前に、1つ以上のUDP接続に渡って多重化される。それに対応して
、WANを通じて受信されたパケットは、デカプセル化され(それらのUDP/IPラッ
パーは除去され)、対応するTCPソケット240〜270へその後送信される。TCP
ソケット240〜270は、受信されたデータの確認応答を送信するようにその後構成さ
れる。TCPソケット240〜270は、それらの自身のデータを送信する場合に、任意
の未確認応答データを再送するように更に構成される。クライアントの単一のリクエスト
を処理することと並行して、多数のTCPソケット240〜270を使用する結果として
、他のTCPソケット240〜270がフルスピードでデータの処理を継続する一方で、
WAN経由の任意のランダムなパケットドロップは、あるTCPソケット240〜270
により維持される単一の輻輳ウィンドウを単に減少させる。
幾つかの実施形態では、トランスポートプロキシ230及びVPNクライアント280
の両者は、仮想ネットワークデバイス220からのパケットをリッスンする。トランスポ
ートプロキシ230は、IPアドレス及び/又はポートの特定のセットへ送信されるパケ
ットを除いて、仮想ネットワークデバイス220から送信された全てのパケットを傍受す
る。マルチパスマネージャ255は、IP及び/又はポートの特定のセットへの多数の同
時トランスポート接続240〜270を確立する。VPNクライアント280は、多数の
同時トランスポート接続240〜270と関連付けられたIP及び/又はポートの特定の
セットへ送信された仮想ネットワークデバイス220からのパケットのみを傍受する。結
果として、トランスポートプロキシ230は、マルチパスマネージャ255により確立さ
れたものを除く全ての接続を傍受及び終結し、VPNクライアント280は、マルチパス
マネージャ255により確立された接続240〜270を通じて送信されたパケットのみ
をカプセル化する。この実装では、マルチパスマネージャ255及びVPNクライアント
280は、独立して作業しており、互いに関する情報でプログラムされなくてもよく、マ
ルチパスマネージャ255は、TCP接続240〜270を通じてトラフィックを送信し
、VPNクライアント280は、仮想ネットワークデバイス220からの特定のパケット
を傍受する。
代替的な実装では、トランスポートプロキシ230は、仮想ネットワークデバイス22
0からの全てのパケットを傍受するが、マルチパストランスポート240〜270により
使用される特定のIP及び/又はポートを有するパケットを、それらの接続を終結する代
わりにVPNクライアント280に渡す。この場合、VPNクライアント280は、仮想
ネットワークデバイス220を通じて送信されたパケットを傍受しないが、トランスポー
トプロキシ230からのそれらを受信する。この代替的な実装では、WANを経由して受
信された、逆多重化されたパケットは、仮想ネットワークデバイス220を通じて対応す
るTCPソケット240〜270へ依然として送信され得る。
別の実装では、トランスポートプロキシ230は、特定のポート上でユーザ空間中のク
ライアントトラフィックに対してリッスンするようにプログラムされるプロキシ230に
よって置き換えられる。例えば、クライアントアプリケーション200は、Google
株式会社により開発されたChromeブラウザ等のインターネットブラウザであり得、
そのセッティングは、特定のポート上でリッスンするローカルなプロキシ230の使用を
明示する。この場合、クライアント200とプロキシ230との間のトラフィックは、カ
ーネル空間を通過することなくユーザ空間中で交換され、マルチパスマネージャ255に
より作り出された接続のみがカーネル空間を通過し、上述した方法でVPNクライアント
280によりその後傍受される。
上述した実装は、カーネル空間中のTCPソケット240〜270により制御されるマ
ルチパス接続を通じてトラフィックを交換する共通の機構を有する。このことは、オペレ
ーティングシステムにより支持される配信保証トランスポートプロトコルを再利用するこ
とによって実装を容易にする。代替的な実装では、マルチパストランスポートにより使用
されるTCPソケット240〜270は、ユーザ空間中で実行され得、カーネル空間とユ
ーザ空間との間のパケット転送を削減又は省略する。
幾つかの実施形態では、同様の実装がクライアント側及びサーバ側の両者の上で使用さ
れる。その他の実施形態では、サーバ側は、実例として、ローカルネットワークを経由し
てマルチパスマネージャ180から送信された全てのパケットを傍受する別個のVPN機
器155を使用することによって、異なる実装を利用し得る。
図3は、単一のVPNトンネル等のより少数のVPNトンネルを通じて多重化された多
数の同時トランスポート接続を通じたデータ転送の方法の実施形態のプロセスフロー図で
ある。図3の方法は、図1及び図2の構成並びに上で論じた様々な実施形態の内の何れか
を使用して実行され得る。
説明される実施形態では、送信者(実例として、コンテンツサーバ)は、クライアント
(図3中の“受信者”)によりリクエストされたデータを送信する(300)。これらの
データは、単一のファイルのコンテンツをそれらが含む場合であっても、2つ以上の同時
開通トランスポート接続間で分割される(305)。これらの接続からのパケットは、実
例として、各パケットのペイロードを暗号化する(315)ことと、暗号化されたペイロ
ードをVPNトンネルのVPNパケットの内部にカプセル化することと、VPNパケット
をWANを経由してその後送信することとによって、単一のVPN接続に多重化される(
310)。
受信者は、ペイロードを抽出及び復号し(320)、ペイロード中に含まれるパケット
をそれらの対応する接続へその後逆多重化する(325)。
図示される実装では、受信者は、受信されたデータの確認応答を、それらがマルチパス
接続に逆多重化された後のみ送信する(335)。これらのトランスポート接続の内の各
トランスポート接続は、各トランスポート接続を通じて送信されたデータのみを確認応答
する。多重化されたデータを送信するために使用されるVPN接続は、説明される実施形
態では、それらの到着を確認応答せず、配信保証を提供するために多数のトランスポート
接続を頼りにする。
送信者は、確認応答を受信及び逆多重化し(330)、未確認応答データをその後再送
する(340)。再度、各トランスポート接続は、トランスポート接続のその他に影響を
与えることなく、当該トランスポート接続の内部で送信された後に確認応答されていない
データを単に再送する。この方法では、WANを経由するランダムなパケットロスは、他
のトランスポート接続が大きな輻輳ウィンドウを維持して高レートで動作しつつ、1つの
トランスポート接続に対するTCP輻輳ウィンドウを減少させ得る。
再送信されたデータが対応するマルチパス接続により受信された後(345)、これら
のデータは、その他のマルチパス接続からのデータと集約され(350)、集約されたデ
ータは、コンテンツ接続中にその後受信される(355)。コンテンツ接続の受信者側は
、受信されたデータを確認応答しなくてもよく、配信保証は、マルチパストランスポート
接続を通じて管理され、ランダムなパケットロスの存在する時にスループットを改善する
図4は、トランスポート接続を通じて多重化された多数の同時データフローを通じたク
ライアント側のデータ転送を実装するために使用される第3の環境の図である。
この実装では、コンテンツデータストリームのプロバイダ400(実例として、クライ
アントによりリクエストされたデータで応答するコンテンツサーバ)は、トラフィックデ
ィストリビュータ410へデータを送信し、該トラフィックディストリビュータ410は
提供されたデータを分割し、提供されたデータの部分を多数の入力バッファ420間で分
散する。幾つかの実施形態では、トラフィックディストリビュータ410は、利用可能な
入力バッファ420を通じて循環するラウンドロビンローダとして実装される。他の実例
では、ディストリビュータ410は、実例として、各入力バッファ420からのデータ消
費の速度、又は各入力バッファ420中の利用可能な空間の量に基づいて、トラフィック
を不均等に分散し得る。
各入力バッファ420は、配信コントローラ430に供給され、配信コントローラ43
0は、その対応する入力バッファからデータを除去し、該データをその送信バッファ44
0へ送信する。配信コントローラ430は、以前に送信されたデータの確認応答をも受信
し、未確認応答データを再送する。幾つかの実施形態では、配信コントローラ430は、
TCPプロトコルにより使用される実装と少なくとも部分的に同様の輻輳制御アルゴリズ
ムを実装し、以前に送信されたデータの確認を受信することなく、(輻輳ウィンドウ及び
フロー制御ウィンドウのサイズよりも小さい)一定限度量の新たなデータのみが送信され
ることを可能にする。以前に送信されたデータが未確認応答のままである場合、それは再
送され、送信レートを減少させるために、輻輳ウィンドウのサイズは一時的に減少させら
れる。代替的な実装では、配信コントローラ430は、実例として、圧縮されたビデオス
トリームのインラインフレーム等、“重要”とマークされたデータのみを再送することに
よって、異なる配信保証アルゴリズムを支持し得る。
幾つかの実施形態では、配信コントローラ430は、相互に独立して作業する。例えば
、幾つかの実施形態では、各配信コントローラ430は、対応する送信バッファ440に
以前に提示されたデータの確認応答のみを受け入れ、その他の配信コントローラ430の
輻輳ウィンドウを変更することなく、自身の輻輳ウィンドウのみを調節し得る。別の実装
では、配信コントローラ430は、少なくとも幾つかの情報を交換し得る。実例として、
多数のコントローラ430間で同期したロスが検出された場合、幾つかのコントローラ4
30は、新たなデータの送信を一時休止し得る。
送信バッファ440からのデータは、マルチプレクサ460により読み出される。記述
される実装では、このマルチプレクサ460は、各送信バッファ440からデータを順番
に読み出す。別の実装では、マルチプレクサ460は、(実例として、各送信バッファ4
40中の格納されたデータ又は利用可能な空間の量に基づいて)送信バッファ440にア
クセスする順序を変更し得、又は多数の送信バッファ440に同時にアクセスし得る。
幾つかの実施形態では、各配信コントローラ430は、ペイロードデータ及びヘッダを
対応する送信バッファ440へ進める前に、ペイロードデータにヘッダを付加する。幾つ
かの実施形態では、付加されるヘッダは、識別子、送信元ポート、確認応答数、フラグの
セット、及びウィンドウサイズのグループからの1つ以上のフィールドを含む。ヘッダ中
に送信元ポートが存在する場合、それは、対応する配信コントローラ430の識別子とし
て使用され得る。このヘッダのフォーマットは、実例として、TCPヘッダのフォーマッ
トと少なくとも部分的に同じであり得る。幾つかの実施形態では、このヘッダは、受信さ
れたデータの整合性が、UDPプロトコル等の多重化されたデータを交換するために使用
されるトランスポートプロトコルのチェックサムを使用することによって検証される限り
は、妥当なチェックサムを含まない。そうした実施形態では、受信されたデータユニット
の検証は一度だけ実施され、計算リソースを節約する。別の実装では、ヘッダの少なくと
も一部は、マルチプレクサ460が各送信バッファ440からデータを読み出した後に、
マルチプレクサ460により付加される。
マルチプレクサ460は、ペイロード及びヘッダを含む各データユニットを、WANを
経由して別のコンピュータとのトランスポート接続を維持することを担当するソケット4
80へ送信する。この実装では、ソケット480は、以前の配信の確認応答を受信するこ
となくデータを配信し得るUDPソケットである。
幾つかの実施形態では、配信コントローラ430により送出されたデータは、マルチプ
レクサ460によってより小さい数のデータフローに多重化された後に暗号化される。幾
つかの実施形態では、マルチプレクサ460は、データをUDPソケット480へ送信す
る前にデータの暗号化を実施する。
別の実装では、データは、マルチプレクサ460に送信される前に、各配信コントロー
ラ430によって暗号化され得る。更に別の実装では、送信者によって暗号化されていな
いデータストリーム(実例として、HTTPプロトコルを使用するもの)のみがマルチプ
レクサ460又は配信コントローラ430の何れかによって暗号化される。そうした実施
形態では、送信者により既に暗号化されたデータストリーム(実例として、HTTPSプ
ロトコルを使用するもの)は付加的に暗号化されない。
更に別の実装では、マルチプレクサ460は、送信者により暗号化されたデータストリ
ームを含むパケットの少なくとも一部を暗号化する。実例として、異なるパケットを異な
る配信コントローラ430と関連付ける特定のヘッダを秘匿するために。
図4は、送信者側の実装を図示する。幾つかの実施形態では、受信者コンピュータは、
送信者コンピュータと同じ数の配信コントローラ430を含む。あるコンピュータからの
各コントローラ430は、別のコンピュータ上のコントローラと結合され、単一のデータ
ストリームを維持する。この実装では、送信者コンピュータのソケット480は、受信者
コンピュータの結合された配信コントローラ430により生成された確認応答を受信する
。これらの確認応答は、受信バッファ470中に一時的に格納され、対応する配信コント
ローラ430にその後渡される(各確認応答は、結合された配信コントローラと関連付け
られた対応するデータストリームの識別子を含み、それ故、各確認応答により参照される
配信コントローラ430へ配信される)。
図5は、1つ以上のトランスポート接続を通じて多重化された多数の同時データフロー
を通じたデータ転送のための方法のプロセスフロー図を図示する。図5の方法は、図4の
環境と、上述した様々な実装の何れかとを使用して実装される。
図5の方法は、送信者側及び受信者側の実装の両方を記述する。送信者は、データスト
リームを通じてデータを送信し(500)、該データストリームは、別個の配信コントロ
ーラと関連付けられた多数のデータフロー間でその後分離される(505)。送信者のコ
ントローラからのデータは、1つ以上のトランスポート接続に渡って多重化され(510
)、WANを経由して送信される(515)。
受信者は、データを送信し、対応する配信コントローラ530に渡されるデータフロー
にそれらを逆多重化する(525)。すなわち、ステップ520で受信されたデータの各
ユニット、例えば、パケットは、データの各ユニットにより参照される配信コントローラ
に渡される。
幾つかの実施形態では、送信者は、データを、UDP接続に多重化した後に(510)
暗号化する。したがって、そうした実施形態では、受信者は、データを、対応する配信コ
ントローラ430に逆多重化する前(525)に復号する。
幾つかの実施形態では、送信者は、多数の配信コントローラ430からのデータを多重
化した後に(510)、誤り訂正のために使用される付加的データを挿入し、多重化され
たデータと共に、WANを経由してこの付加的データをその後送信する。幾つかの実施形
態では、受信者は、この付加的データを使用して対応する配信コントローラにデータを逆
多重化する前に(525)、受信されたデータ上で誤り訂正を実施する。幾つかの実施形
態では、受信者は、誤り訂正のために使用されるキューを維持する(実例として、先の8
つのパケットのXORに等しい付加的パケットを送信者が挿入する場合、そのオリジナル
のパケットの内の少なくとも7つが受信されるまで、又は事前に定義されたタイムインタ
バールが経過するまで、受信者は誤り訂正パケットを保持する)。
逆多重化されたデータを受信した後、各受信者のコントローラ430は、受信されたデ
ータの確認応答を送信し(535)、各コントローラの確認応答は、送信者の対応するコ
ントローラを参照する。送信者は、受信された確認応答を逆多重化し、確認応答によって
参照される対応する配信コントローラにそれらを渡す(530)。データに対して確認応
答が受信されていないと判定する任意の配信コントローラは、未確認応答データをその後
再送するであろう(540)。受信者は、再送されたデータを受信及び確認応答する(5
45)。受信者は、データストリームを受取人に渡す前に(555)、多数の配信コント
ローラを通じて受信されたデータをデータストリームにその後集約する(550)。
幾つかの実施形態では、WANを経由してデータ交換する第1及び第2のコンピュータ
の各々は、送信者のコンポーネント及び受信者のコンポーネントの両方を実装する。具体
的には、送信者側は、配信コントローラにより維持される多数のデータフロー間でアップ
ロードを分割し、これらのフローを1つ以上のトランスポート接続に渡って多重化する。
受信者側は、受信されたデータを逆多重化し、それらを単一のストリームに集約する。多
数のデータストリームは、同時に処理され得、各ストリームは分割され、多重化され、W
ANを経由して転送された後に集約される。
図4及び図5に関して上述した実施形態は、オリジナルのデータストリームを多数の非
同期データフローに分割することによって、WANを経由するランダムなパケットロスが
存在する時にスループットを増加させ、各データフローは、完全に、又は少なくとも部分
的に独立した制御でその配信レートを維持する。図1及び図2により図示される実施形態
と比較して、図4により図示される実施形態は、単一のVPNトンネル等、より少数のト
ランスポート接続を通じてその後多重化される多数の同時トランスポート接続を確立する
ことを含まない。図4の実施形態は、ユーザ空間中に完全に実装され得、別個のマルチパ
ストランスポートを使用することと比べて公正を改善しつつ、独立したデータフローを維
持するために、結合された配信コントローラ430を頼りにする。
図4及び図5の実施形態は、普通のTCPトランスポートプロトコルを超えるスループ
ットで単一のデータフローを使用するプロトコル(実例として、Google株式会社に
より開発されたQUICプロトコルは、MulTCPアルゴリズムにより制御される単一
のデータフローを使用する)に対して顕著な利点をも提供する。単一のデータフロー中の
パケットロスは、再送タイムアウト(RTO)をもたらし得、データストリーム全体のス
ループットを減少させる。そうしたRTOは、実例として、配信の最後(tail)でパケッ
トがロスされ、テールロスプローブが成功しない場合に生じ得る。比較すると、図4及び
図5の実施形態に従って実装されたデータフローの内の1つにおけるRTOは、当該デー
タフローのみに影響を及ぼし、他の全てのデータフローは、フルスピードでのデータ交換
を継続し得る。また、多数のデータフローの各々に対する配信コントローラ430は、T
CPプロトコルにより使用されるアルゴリズム等、標準的な輻輳及びフロー制御アルゴリ
ズムを実装し得る。このことは、実際のネットワークに渡って広くテストされていない、
MulTCP等の単一のフローに対する輻輳制御の特注の修正に頼るよりもよい。
本発明の別の側面では、複数のマルチパス接続の内の1つ以上は、1つ以上の共通のト
ランスポート接続に渡って多重化されない。代わりに、これらのマルチパス接続は、該接
続が多重化マルチパス接続に使用されるのと並行して、WANを経由してデータを交換す
るコンピュータ間に直接確立される。
図6は、(複数の)同時接続の内の一部のみが多重化される、多数の同時トランスポー
ト接続を通じたデータ転送を実装するために使用される第4のネットワーク環境の図であ
る。
図示される実装では、クライアント600は、コンテンツサーバ690からの単一のフ
ァイルのダウンロードをリクエストする。マルチパスデータマネージャは、多数のTCP
接続620、650、670に渡ってアップロードを分割し、多数のTCP接続620、
650、670からのダウンロードを単一のデータストリームに集約するマルチパスTC
Pモジュール610及び680を含む。マルチパスTCPモジュール610が多数のTC
P接続の間でデータを分割し、受信者においてデータをその後集約する方法は、上述した
実施形態の内の何れかに従って実施され得る。
図6の実施形態では、これらのTCP接続(620、670)の内の幾つかのみが、V
PNクライアント630とVPNサーバ660との間のトンネル接続640に渡って多重
化される。残りのTCP接続650の内の1つ以上は、多重化される代わりに、マルチパ
スTCPモジュール610と680との間で直接確立される。
幾つかの実施形態では、非多重化の接続650の内の少なくとも幾つかは、受信された
データの確認応答、輻輳指標、又は配信パラメータを調節するための命令等の制御信号を
搬送するが、マルチパス接続670(VPNトンネル640を通じて多重化されたもの)
は、リクエストされたファイルのコンテンツ等のペイロードデータを搬送する。この実装
は、確認応答の受信のレイテンシを減少させる(確認応答は、VPNトンネル640を通
じて多重化されなくてもよく、ペイロードのセキュリティを妥協することなく、暗号化な
しに送信され得る)。同時に、確認応答等の制御信号により使用される帯域幅の量は、ペ
イロードデータにより使用される帯域幅の量よりも非常に少なく、全てのマルチパストラ
ンスポートが、より少数のVPN又はプロキシ接続に渡りそれらを多重化することなく確
立される場合と比較して公正を改善する。
別の実施形態では、VPNトンネル640は、直接のマルチパス接続650の内の1つ
以上とは異なるデータリンクを経由して確立される。実例として、単一のファイルのダウ
ンロードは、Wi−Fiインタフェースを経由して確立された単一のVPNトンネル64
0の内部に多重化された多数のTCP接続間で分割され、モバイルネットワークインタフ
ェースを経由して付加的なTCP接続が確立される。幾つかの実施形態では、モバイルイ
ンタフェースを通じたデータは、Wi−Fiインタフェースを経由して受信されVPN接
続640から逆多重化されたデータの確認応答のみを含む。他の実施形態では、モバイル
インタフェースを通じたデータは、実例として、クライアント600及びサーバ690が
HTTPSプロトコルを使用してデータを交換する場合に、付加的な暗号化を要求しない
パケットの内の少なくとも幾つかを搬送し得る。
本明細書に記述されるコンポーネント及びモジュールをネットワーク化するコンピュー
ティングデバイス(クライアント、コンテンツサーバ等)は、図7のコンピューティング
デバイス700の属性の内の幾つか又は全てを有し得る。具体的には、コンピュータ又は
コンピューティングデバイスであるものとして上述したコンポーネントは、図7のコンピ
ューティングデバイス700の属性の内の幾つか又は全てを有し得る。図7は、本明細書
に開示されるシステム及び方法を実装するために使用され得る例示的コンピューティング
デバイス700を説明するブロック図である。
コンピューティングデバイス700は、1つ以上のプロセッサ702、1つ以上のメモ
リデバイス704、1つ以上のインタフェース706、1つ以上の大容量ストレージデバ
イス708、1つ以上の入出力(I/O)デバイス710、及び表示デバイス730を含
み、それらの全てはバス712に結合される。プロセッサ702は、メモリデバイス70
4及び/又は大容量ストレージデバイス708中に格納された命令を実行する1つ以上の
プロセッサ若しくはコントローラを含む。プロセッサ702は、キャッシュメモリ等の様
々な種類のコンピュータ可読媒体をも含み得る。
メモリデバイス704は、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)
714)及び/又は不揮発性メモリ(例えば、リードオンリメモリ(ROM)716)等
の様々なコンピュータ可読媒体を含む。メモリデバイス704は、フラッシュメモリ等の
再書き込み可能なROMをも含み得る。
大容量ストレージデバイス708は、磁気テープ、磁気ディスク、光ディスク、及び固
体状態メモリ(例えば、フラッシュメモリ)等の様々なコンピュータ可読媒体を含む。図
7に示すように、具体的な大容量ストレージデバイスはハードディスクドライブ724で
ある。様々なコンピュータ可読媒体からの読み出しを可能にし、及び/又は様々なコンピ
ュータ可読媒体への書き込みを可能にするために、大容量ストレージデバイス708には
様々なドライブも含まれ得る。大容量ストレージデバイス708は、取り外し可能媒体7
26及び/又は非取り外し可能媒体を含む。
入出力デバイス710は、データ及び/又はその他の情報がコンピューティングデバイ
ス700に入力されること、又はコンピューティングデバイス700から検索されること
を可能にする様々なデバイスを含む。例示的な入出力デバイス710は、カーソル制御デ
バイス、キーボード、キーパッド、マイクロフォン、モニタ若しくはその他の表示デバイ
ス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、及びC
CD若しくはその他の画像取込デバイス等を含む。
表示デバイス730は、コンピューティングデバイス700の1人以上のユーザに情報
を表示可能な任意の種類のデバイスを含む。表示デバイス730の例には、モニタ、表示
端末、及びビデオ投影デバイス等が挙げられる。
インタフェース706は、コンピューティングデバイス700がその他のシステム、デ
バイス、又はコンピューティング環境と相互作用することを可能にする様々なインタフェ
ースを含む。例示的インタフェース706は、ローカルエリアネットワーク(LAN)、
広域ネットワーク(WAN)、無線ネットワーク、及びインターネットへのインタフェー
ス等の、任意の数の異なるネットワークインタフェース720を含む。その他のインタフ
ェースは、ユーザインタフェース718及び周辺デバイスインタフェース722を含む。
インタフェース706は、1つ以上のユーザインタフェース素子718をも含む。インタ
フェース706は、プリンタ、ポインティングデバイス(マウス、トラックパッド等)、
及びキーボード等に対するインタフェース等の、1つ以上の周辺インタフェースをも含み
得る。
バス712は、プロセッサ702、メモリデバイス704、インタフェース706、大
容量ストレージデバイス708、及び入出力デバイス710が、バス712に結合された
その他のデバイス若しくはコンポーネントと共に、相互に通信することを可能にする。バ
ス712は、システムバス、PCIバス、IEEE1394バス、及びUSBバス等の幾
つかの種類のバス構造の内の1つ以上を表す。
プログラム及びその他の実行可能なプログラムコンポーネントは、そうしたプログラム
及びコンポーネントがコンピューティングデバイス700の異なるストレージコンポーネ
ント中に様々な時間に存在し得、プロセッサ702により実行されるものと理解されるが
、説明の目的のために、別々のブロックとして本明細書に示される。或いは、本明細書に
記述されるシステム及び手続は、ハードウェア中に、又はハードウェア、ソフトウェア、
及び/若しくはファームウェアの組み合わせ中に実装され得る。例えば、本明細書に記述
されるシステム及び手続の内の1つ以上を実行するように、1つ以上の特定用途向け集積
回路(ASIC)はプログラムされ得る。
上記の開示では、本明細書の一部を形成し、開示が行われ得る特定の実装の説明を通じ
て示される添付の図面を参照してなされている。本開示の範囲から逸脱することなく、そ
の他の実装が利用され得、構造的変更がなされ得ることは理解される。明細書中の“一実
施形態”、“実施形態”、“例示的実施形態”等の言及は、記述される実施形態が特定の
機構、構造、又は特徴を含み得るが、あらゆる実施形態が特定の機構、構造、又は特徴を
必ずしも含まなくてもよいことを示す。更に、そうした句は、同じ実施形態に必ずしも言
及していない。更に、特定の機構、構造、又は特徴は、実施形態と組み合わせて記述され
、明確に記述されているか否かに係わらず、その他の実施形態と組み合わせたそうした機
構、構造、又に特徴に影響を与えることは当業者の認識の範囲内であると言える。
本明細書に開示されるシステム、デバイス、及び方法の実装は、本明細書で論じられる
ように、例えば、1つ以上のプロセッサ及びシステムメモリ等のコンピュータハードウェ
アを含む専用又は汎用コンピュータを含み得、又は該コンピュータを利用し得る。本開示
の範囲内にある実装は、コンピュータ実行可能命令及び/又はデータ構造を搬送又は格納
するための物理的媒体及びその他のコンピュータ可読媒体をも含み得る。そうしたコンピ
ュータ可読媒体は、汎用又は専用コンピュータシステムによりアクセスされ得る任意の利
用可能な媒体であり得る。コンピュータ実行可能命令を格納するコンピュータ可読媒体は
、コンピュータストレージ媒体(デバイス)である。コンピュータ実行可能命令を搬送す
るコンピュータ可読媒体は伝送媒体である。したがって、例として、非限定的に、開示の
実装は、少なくとも2つの別々の異種のコンピュータ可読媒体、コンピュータストレージ
媒体(デバイス)と伝送媒体とを含み得る。
コンピュータストレージ媒体(デバイス)は、RAM、ROM,EEPROM、CD−
ROM、固体状態ドライブ(“SSD”)(例えば、RAMに基づく)、フラッシュメモ
リ、相変化メモリ(“PCM”)、その他の種類のメモリ、その他の光ディスクストレー
ジ、磁気ディスクストレージ若しくはその他の磁気ストレージデバイス、又はコンピュー
タ実行可能命令若しくはデータ構造の形式で所望のプログラムコード手段を格納するため
に使用され得、汎用又は専用コンピュータによりアクセスし得る任意のその他の媒体を含
む。
本明細書に開示されるデバイス、システム、方法の実装は、コンピュータネットワーク
を経由して通信し得る。“ネットワーク”は、コンピュータシステム及び/又はモジュー
ル及び/又はその他の電子デバイス間で電子データのトランスポートを可能にする1つ以
上のデータリンクとして定義される。情報がネットワーク又は別の通信接続(有線、無線
、又は有線若しくは無線の組み合わせ)を経由してコンピュータに転送又は提供される場
合、コンピュータは、伝送媒体としての接続を適切に閲覧する。伝送媒体は、コンピュー
タ実行可能命令又はデータ構造の形式で所望のプログラムコード手段を搬送するために使
用され得、汎用又は専用コンピュータによりアクセスされ得るネットワーク及び/又はデ
ータリンクを含み得る。上記の組み合わせもコンピュータ可読媒体の範囲内に含まれるべ
きである。
コンピュータ実行可能命令は、例えば、プロセッサで実行される場合に、汎用コンピュ
ータ、専用コンピュータ、又は専用処理デバイスにある一定の機能又は機能のグループを
実施させる命令又はデータを含む。コンピュータ実行可能命令は、例えば、二進数、アセ
ンブリ言語等の中間フォーマット命令、又はソースコードであり得る。構造的機構及び/
又は方法論的行為に特有の言語で主題が記述されているが、添付の請求項で定義される主
題は、記述される機構又は上述の行為に必ずしも限定されないと理解されるべきである。
むしろ、記述される機構及び行為は、請求項を実装する例示的形式として開示される。
開示は、ダッシュボード埋め込み車両コンピュータ、パーソナルコンピュータ、デスク
トップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルド
デバイス、マルチプロセッサシステム、マイクロプロセッサベースの若しくはプログラム
可能な家電、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、モバ
イルフォン、PDA、タブレット、ページャー、ルータ、スイッチ、及び様々なストレー
ジデバイス等を含む多くの種類のコンピュータシステム構成を用いてネットワークコンピ
ューティング環境中で行われ得ると当業者は認識するであろう。開示は、ネットワークを
通じて(有線データリンクにより、無線データリンクにより、又は有線及び無線のデータ
リンクの組み合わせにより)リンクされたローカルコンピュータシステム及びリモートコ
ンピュータシステムが共にタスクを実施する分散システム環境中でも行われ得る。分散シ
ステム環境では、プログラムモジュールは、ローカルのメモリストレージデバイス及びリ
モートのメモリストレージデバイスの両方に設置され得る。
更に、必要に応じて、本明細書に記述される機能は、ハードウェア、ソフトウェア、フ
ァームウェア、デジタルコンポーネント、又はアナログコンポーネントの内の1つ以上で
実施され得る。例えば、1つ以上の特定用途向け集積回路(ASIC)は、本明細書に記
述されるシステム及び手続の内の1つ以上を実行するようにプログラムされ得る。説明及
び請求項の全体を通じて使用される幾つかの用語は、特定のシステムコンポーネントを指
す。当業者に認識され得るように、コンポーネントは異なる名前で呼ばれることがある。
この文献は、機能ではなく名前が異なるコンポーネント間の区別を意図しない。
上で論じられたセンサの実施形態は、それらの機能の少なくとも一部を実施するための
コンピュータハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合
わせを含み得る。例えば、センサは、1つ以上のプロセッサ中で実行されるように構成さ
れたコンピュータコードを含み得、コンピュータコードにより制御されるハードウェア論
理/電気回路を含み得る。これらの例示的デバイスは、説明目的で本明細書に提供され、
限定することを意図しない。本開示の実施形態は、当業者に周知であるように、更なる種
類のデバイス中に実装され得る。
開示の少なくとも幾つかの実施形態は、任意のコンピュータ使用可能媒体上に格納され
た(例えば、ソフトウェアの形式の)そうした論理を含むコンピュータプログラム製品に
向けられている。そうしたソフトウェアは、1つ以上のデータ処理デバイスで実行される
場合に、本明細書に記述されるようにデバイスを動作させる。
本開示の様々な実施形態が上述されているが、それらは、単なる非限定的な例として提
供されていると理解されるべきである。開示の精神及び範囲から逸脱することなく、形式
及び詳細に様々な変更がなされ得ることは、当業者には明らかであろう。したがって、本
開示の幅及び範囲は、上述した例示的実施形態の何れかに限定されるべきではないが、以
下の請求項及びそれらの均等物に従ってのみ定義されるべきである。
前述の記述は、説明及び記述の目的で提供されている。網羅的であること、又は開示さ
れた正確な形式に開示を限定することを意図しない。上の教示に照らして多くの修正及び
変更が可能である。更に、前述の代替的な実装の何れか又は全ては、開示の付加的で複合
的な実装の形成を要望する任意の組み合わせで使用され得ることに留意すべきである。

Claims (30)

  1. (a) コンピュータシステムによって、リモートコンピューティングデバイスへの第1
    の数の1つ以上の第1のネットワーク接続を提供することと、
    (b) 前記コンピュータシステムによって、前記リモートコンピューティングデバイス
    への第2の数の複数の第2のネットワーク接続を提供することであって、前記第1の数は
    前記第2の数よりも小さいことと、
    (c) 前記コンピュータシステムによって、前記1つ以上の第1のネットワーク接続を
    通じて、1つ以上の第1のデータフロー中に前記複数の第2のネットワーク接続の複数の
    第2のデータフローを多重化することと、
    (d) 前記コンピュータシステムによって、前記リモートコンピューティングデバイス
    へペイロードデータを送信するための命令を受信することと、
    (e) 前記命令に応じて、
    (i) 前記コンピュータシステムによって、前記ペイロードデータを複数のデータ部
    分に分割することと、
    (ii) 前記コンピュータシステムによって、前記複数の第2の接続の内の異なる接続
    を経由して前記複数のデータ部分を送信することと、
    (iii) 前記コンピュータシステムによって、前記1つ以上の第1のネットワーク接
    続を通じて、前記複数の第2の接続経由で送信された前記複数のデータ部分を多重化する
    ことと、
    (iv) 前記コンピュータシステムによって、前記複数のデータ部分に対する1つ以上
    の確認応答を受信することであって、前記1つ以上の確認応答の内の各確認応答は、前記
    複数の第2の接続の内の第2の接続を参照することと、
    (v) 前記コンピュータシステムによって、前記1つ以上の確認応答の内の各確認応
    答を前記各確認応答により参照された前記第2の接続上に逆多重化することと、
    (vi) 前記コンピュータシステムによって、少なくとも1つのデータ部分が送信され
    た前記複数の第2の接続の内の少なくとも1つの第2の接続により前記複数のデータ部分
    の内の前記少なくとも1つのデータ部分に対して確認応答が受信されなかったと判定する
    ことと、
    (vii) 前記少なくとも1つのデータ部分に対して確認応答が受信されなかったと判
    定することに応じて、前記少なくとも1つの第2の接続を経由して前記少なくとも1つの
    データ部分を再送することと
    を含む方法。
  2. 前記1つ以上の第1のネットワーク接続を通じて前記1つ以上の第1のデータフロー中
    に前記複数の第2のネットワーク接続の前記複数の第2のデータフローを多重化すること
    は、前記1つ以上の第1のデータフローの何れの確認応答にも関係なく、前記1つ以上の
    第1のデータフローを送信することを含む、請求項1に記載の方法。
  3. 前記1つ以上の第1のネットワーク接続を通じて前記1つ以上の第1のデータフロー中
    に前記複数の第2のネットワーク接続の前記複数の第2のデータフローを多重化すること
    は、ユニバーサルデータグラムプロトコル(UDP)、インターネットプロトコル(IP
    )暗号化セキュリティペイロード(ESP)、及びソフトウェアIP暗号化プロトコル(
    swIPe)の内の少なくとも1つに従って前記1つ以上の第1のデータフローを送信す
    ることを含む、請求項1に記載の方法。
  4. 前記複数の第2のネットワーク接続を提供することは、トランスポートコントロールプ
    ロトコル(TCP)、マルチパストランスポートコントロールプロトコル(マルチパスT
    CP)、及びストリームコントロールトランスミッションプロトコル(SCTP)の内の
    少なくとも1つに従って前記複数の第2のネットワーク接続を実装することを含む、請求
    項1に記載の方法。
  5. 前記コンピュータシステムは複数の配信コントローラを実装し、前記複数の配信コント
    ローラの内の各コントローラは、前記リモートデバイス上で実行する対応するコントロー
    ラに結合され、前記複数の第2の接続の内の1つを実装し、
    (vi)及び(vii)は、前記複数の配信コントローラの内の少なくとも1つの配信コン
    トローラにより実施され、前記少なくとも1つの配信コントローラは、前記少なくとも1
    つの第2の接続を実装し、
    前記方法は、(vi)に応じて、前記少なくとも1つの配信コントローラによって、前記
    少なくとも1つの第2の接続を経由して付加的データを送信する前に送信され得る未確認
    応答データの量を削減することを更に含む、
    請求項1に記載の方法。
  6. 前記コンピュータシステムは、クライアントコンピューティングデバイスと、前記クラ
    イアントコンピューティングデバイスとデータ通信する仮想プライベートネットワーク(
    VPN)サーバデバイスとを含み、
    前記方法は、前記VPNサーバデバイスによって(a)、(c)、(iii)、(iv)、
    及び(v)を実施することを含み、
    前記方法は、前記クライアントコンピューティングデバイスによって(b)、(i)、
    (ii)、(vi)、及び(vii)を実施することを含む、
    請求項1に記載の方法。
  7. (ii)は、前記複数の第2の接続を経由して前記複数のデータ部分を含む複数のパケッ
    トを送信することを含み、
    (iii)は、前記1つ以上の第1のデータフローの内部に前記複数のパケットをカプセ
    ル化することを含む、
    請求項6に記載の方法。
  8. 前記クライアントコンピューティングデバイス及び前記VPNサーバデバイスは、ポイ
    ントツーポイントトンネリングプロトコル(PPTP)、レイヤ2トンネリングプロトコ
    ル(L2TP)、インターネットプロトコルセキュリティ(IPSec)、セキュアソケ
    ットレイヤ(SSL)プロトコル、トランスポートレイヤセキュリティ(TLS)プロト
    コル、及びOpenVPNプロトコルの内の少なくとも1つを実装する、請求項6に記載
    の方法。
  9. 前記コンピュータシステムはプロキシを実装し、前記プロキシは(b)、(d)、(i
    )、(ii)、(vi)、及び(vii)を実施する、請求項1に記載の方法。
  10. (c)は、前記1つ以上の第1のネットワーク接続を通じて1つ以上の第1のデータフ
    ロー中に前記複数の第2のデータフローを多重化した後に、前記1つ以上の第1のデータ
    フローを暗号化することを含む、請求項1に記載の方法。
  11. 前記コンピュータシステムは、第1のローカルネットワーク中に複数の異なるコンピュ
    ーティングデバイスを含み、前記リモートコンピューティングデバイスは、前記第1のロ
    ーカルネットワークから遠隔の第2のローカルネットワーク中に設置される、請求項1に
    記載の方法。
  12. 前記コンピュータシステムは単一のコンピューティングデバイスを含む、請求項1に記
    載の方法。
  13. (iv)は、前記コンピュータシステムによって、前記1つ以上の第1のネットワーク接
    続の前記1つ以上の第1のデータフロー中にカプセル化されない第3のデータフロー中の
    前記複数のデータ部分に対する前記1つ以上の確認応答を受信することを含む、請求項1
    に記載の方法。
  14. 前記第1の数は1つである、請求項1に記載の方法。
  15. 1つ以上のコンピューティングデバイスを含むコンピューティングシステムであって、
    前記1つ以上のコンピューティングデバイスは、1つ以上の処理デバイスと、前記1つ以
    上の処理デバイスに動作可能に結合された1つ以上のメモリデバイスとを各々含み、前記
    1つ以上のコンピューティングデバイスの前記1つ以上のメモリデバイスは、
    リモートコンピューティングデバイスにおいて終結される第1の数の1つ以上の第1の
    ネットワーク接続を確立することと、
    前記第1のネットワーク接続を通じて、前記リモートコンピューティングデバイスにお
    いて終結される第2の数の複数の第2のネットワーク接続を確立することであって、前記
    第1の数は前記第2の数よりも小さいことと、
    (i)ペイロードデータを複数のデータ部分に分割することと、
    (ii)前記複数の第2の接続の内の異なる接続を経由して前記複数のデータ部分を送
    信することと、
    (iii)前記1つ以上の第1のネットワーク接続を通じて、前記複数の第2の接続経
    由で送信された前記複数のデータ部分を多重化することと
    によって前記ペイロードデータを前記リモートコンピューティングデバイスへ送信するこ
    とと、
    (iv)前記第1のネットワーク接続を経由して確認応答を受信することと、
    (v)各確認応答によって参照される前記複数の第2のネットワーク接続の内のネッ
    トワーク接続上に前記各確認応答を逆多重化することと、
    (vi)前記複数のデータ部分の内の1つ以上の受信の確認応答が前記1つ以上の第2
    の接続の内の1つ以上の第2の接続上で受信されない場合、前記1つ以上の第2の接続を
    経由して前記1つ以上のデータ部分を再送することと
    によって、前記リモートコンピューティングデバイスへのペイロードデータの送信を検証
    することと
    を前記1つ以上のコンピューティングデバイスの前記1つ以上のプロセッサにさせるのに
    有効な実行可能コードを格納する、システム。
  16. 前記実行可能コードは、前記1つ以上の第1のネットワーク接続を通過するトラフィッ
    クの何れの確認応答にも関係なく、前記1つ以上の第1のネットワーク接続を通じて前記
    複数の第2の接続経由で送信された前記複数のデータ部分を前記1つ以上のコンピューテ
    ィングデバイスの前記1つ以上のプロセッサに多重化させるのに更に有効である、請求項
    15に記載のシステム。
  17. 前記実行可能コードは、ユニバーサルデータグラムプロトコル(UDP)、インターネ
    ットプロトコル(IP)暗号化セキュリティペイロード(ESP)、及びソフトウェアI
    P暗号化プロトコル(swIPe)の内の少なくとも1つに従って、前記1つ以上の第1
    のネットワーク接続を前記1つ以上のプロセッサに実装させるのに更に有効である、請求
    項15に記載のシステム。
  18. 前記実行可能コードは、トランスポートコントロールプロトコル(TCP)、マルチパ
    ストランスポートコントロールプロトコル(マルチパスTCP)、及びストリームコント
    ロールトランスミッションプロトコル(SCTP)の内の少なくとも1つに従って、前記
    複数の第2のネットワーク接続を前記1つ以上のプロセッサに実装させるのに更に有効で
    ある、請求項15に記載のシステム。
  19. 前記コンピュータシステムは、カーネル空間及びユーザ空間を実装するオペレーティン
    グシステムを実行する単一のコンピューティングデバイスを含み、
    前記実行可能コードは、
    仮想ネットワークデバイスにより前記カーネル空間中に実装される複数のカーネルトラ
    ンスポートコントロールプロトコル(TCP)ソケットとして前記複数の第2のネットワ
    ーク接続を実装することであって、前記複数のカーネルTCPソケットの内の各カーネル
    TCPソケットは、前記各カーネルTCPソケットを経由して送信されたデータの配信を
    検証するようにプログラムされることと、
    前記ユーザ空間中で実行するアプリケーションから前記ペイロードデータを受信するこ
    とと、
    前記ユーザ空間中で実行するマルチパスマネージャによって前記ペイロードデータを複
    数のデータ部分に分割し、前記複数のカーネルTCPソケットの内の異なるカーネルTC
    Pソケットへ各データ部分を複数のTCPパケットとして送信することと
    を前記1つ以上のプロセッサにさせるのに更に有効である、請求項15に記載のシステム
  20. 前記実行可能コードは、
    前記仮想ネットワークデバイスに結合されたカーネル空間中に第1のTCPソケットを
    実装することと、
    前記仮想ネットワークデバイスによって、前記第1のTCPソケットを通じて前記アプ
    リケーションから前記ペイロードデータを受信することと、
    前記仮想ネットワークデバイスによって、前記第1のTCPソケットからの前記ペイロ
    ードデータを傍受することと、
    前記仮想ネットワークデバイスによって、前記第1のTCPソケットからの前記ペイロ
    ードデータを前記マルチパスマネージャにルーティングすることと
    を前記1つ以上のプロセッサにさせるのに更に有効である、請求項19に記載のシステム
  21. 前記実行可能コードは、
    前記第1のTCPソケットからの接続を終結することと、前記第1のTCPソケットか
    らの前記ペイロードデータを前記マルチパスマネージャに提供することとをするようにプ
    ログラムされたトランスポートプロキシを前記ユーザ空間中に実装することを前記1つ以
    上のプロセッサにさせるのに更に有効である、請求項20に記載のシステム。
  22. 前記実行可能コードは、
    前記仮想ネットワークデバイスによって、前記カーネルTCPソケットを通じて送信さ
    れた前記TCPパケットを傍受することと、
    前記仮想ネットワークデバイスによって、前記ユーザ空間中で実行する仮想プライベー
    トネットワーク(VPN)クライアントであって、
    アウトバウンドのトンネルトラフィックを取得するために前記複数のTCPパケット
    を暗号化及びカプセル化することと、
    第1の数のVPNトンネルを経由して前記リモートコンピューティングデバイスへ前
    記アウトバウンドのトンネルトラフィックを送信することと
    をするようにプログラムされた前記VPNクライアントに前記複数のTCPパケットを提
    供することと
    を前記1つ以上のプロセッサにさせるのに更に有効である、請求項21に記載のシステム
  23. 前記実行可能コードは、
    前記VPNクライアントによって、前記第1の数のVPNトンネルを経由して、受信さ
    れたトンネルトラフィックを受信することと、
    前記VPNクライアントによって、受信されたTCPトラフィックを取得するために、
    受信された前記トンネルトラフィックを復号及びデカプセル化することと、
    前記VPNクライアントによって、受信された前記TCPトラフィックを前記カーネル
    TCPソケットに逆多重化することと
    を前記1つ以上のプロセッサにさせるのに更に有効である、請求項21に記載のシステム
  24. 1つ以上の処理デバイスと、前記1つ以上のメモリデバイスに動作可能に結合された1
    つ以上のメモリデバイスとを含むシステムであって、前記1つ以上のメモリデバイスは、
    複数のローカル配信コントローラの間でデータストリームからの複数のデータ分散を割
    り当てるようにプログラムされたディストリビュータを実行することと、
    前記複数のローカル配信コントローラを実行することであって、各ローカル配信コント
    ローラは、リモートコンピュータシステム上で実行する複数のリモート配信コントローラ
    の内の対応するリモート配信コントローラに結合され、各ローカル配信コントローラは、
    (a)対応する前記リモート配信コントローラと前記各ローカル配信コントローラとの間
    のデータのフローを調整することと、(b)データの前記フローの内のアウトバウンドデ
    ータからの任意の未確認応答データを再送することと、(c)前記各ローカル配信コント
    ローラに割り当てられた前記複数のデータ分散をデータの前記フロー中の対応する前記リ
    モート配信コントローラへ送信することとをするようにプログラムされることと、
    前記リモートコンピュータシステム上で実行するリモートマルチプレクサにトランスポ
    ート接続により結合されたローカルマルチプレクサを実行することであって、前記ローカ
    ルマルチプレクサは、(d)前記複数のローカル配信コントローラのデータの前記フロー
    を前記トランスポート接続上に多重化することと、(e)前記トランスポート接続経由で
    受信された各確認応答を、前記各確認応答により参照される前記複数のローカル配信コン
    トローラの内の1つのデータの前記フローに逆多重化することとをするようにプログラム
    されることと
    を前記1つ以上のメモリデバイスにさせるのに有効な実行可能コードを格納し、
    前記実行可能データは、データ受信を確認応答しない1つ以上のトランスポートプロト
    コルを使用して、前記リモートコンピュータシステムへの前記トランスポート接続を前記
    1つ以上の処理デバイスに確立させるのに更に有効である、システム。
  25. 前記複数のローカル配信コントローラの内の各ローカル配信コントローラは、他のロー
    カル配信コントローラから独立して、前記他のローカル配信コントローラと情報を交換す
    ることなく、送信されたデータの少なくとも幾つかの確認応答を対応する前記リモート配
    信コントローラから受信する前に、前記各ローカル配信コントローラの前記データフロー
    を通じて前記各配信コントローラが送信することを可能にする送信されるデータの量を変
    更するように更にプログラムされる、請求項24に記載のシステム。
  26. 前記複数のローカル配信コントローラの内の各ローカル配信コントローラは、前記デー
    タフローに対する前記トランスポートコントロールプロトコル(TCP)の1つ以上の輻
    輳制御アルゴリズムを実行するように更にプログラムされる、請求項24に記載のシステ
    ム。
  27. データ受信を確認応答しない前記1つ以上のトランスポートプロトコルは、ユニバーサ
    ルデータグラムプロトコル(UDP)である、請求項24に記載のシステム。
  28. 前記実行可能コードは、セキュアソケットレイヤ(SSL)プロトコル及びトランスポ
    ートレイヤセキュリティ(TLS)プロトコルを含むグループから選択されたセキュアな
    通信プロトコルを使用して、前記各ローカル配信コントローラに割り当てられた前記複数
    のデータ分散を対応する前記リモート配信コントローラへ前記1つ以上の処理デバイスに
    送信させるのに更に有効である、請求項24に記載のシステム。
  29. 前記ディストリビュータは、
    前記データストリームを終結することと、
    前記データストリームからペイロードデータを抽出することと、
    前記データ割り当てにおいて、前記複数のローカル配信コントローラの間で前記ペイロ
    ードデータを割り当てることと
    をするようにプログラムされたプロキシを更に含む、請求項24に記載のシステム。
  30. 前記ローカルマルチプレクサは、(a)暗号化されたデータフローを取得するために、
    データの前記フローが相互に多重化された後にデータの前記フローを暗号化することと、
    (b)暗号化された前記データフローを前記トランスポート接続を経由して前記リモート
    マルチプレクサへ送信することとによって、前記複数のローカル配信コントローラのデー
    タの前記フローを前記トランスポート接続上に多重化するようにプログラムされる、請求
    項24に記載のシステム。
JP2019505010A 2016-08-03 2017-08-03 仮想マルチパスデータトランスポートのためのシステム及び方法 Pending JP2019528604A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662370496P 2016-08-03 2016-08-03
US62/370,496 2016-08-03
US15/402,024 2017-01-09
US15/402,049 2017-01-09
US15/402,024 US10135720B2 (en) 2016-08-03 2017-01-09 System and method for virtual multipath data transport
US15/402,049 US10511521B2 (en) 2016-08-03 2017-01-09 System and method for virtual multipath data transport
PCT/US2017/045372 WO2018027072A1 (en) 2016-08-03 2017-08-03 System and method for virtual multipath data transport

Publications (1)

Publication Number Publication Date
JP2019528604A true JP2019528604A (ja) 2019-10-10

Family

ID=61069694

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019505010A Pending JP2019528604A (ja) 2016-08-03 2017-08-03 仮想マルチパスデータトランスポートのためのシステム及び方法

Country Status (6)

Country Link
US (3) US10511521B2 (ja)
EP (1) EP3494452A4 (ja)
JP (1) JP2019528604A (ja)
KR (1) KR20190033075A (ja)
CA (1) CA3032517A1 (ja)
WO (1) WO2018027072A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6724641B2 (ja) * 2016-08-03 2020-07-15 富士通株式会社 管理装置、通信システム及び割当方法
EP3355653B1 (en) * 2017-01-27 2023-11-22 Nokia Technologies Oy Network node communication
EP3534574B1 (en) * 2018-02-28 2020-02-05 Deutsche Telekom AG Techniques for policy management of multi-connectivity network protocols
US10965675B2 (en) 2018-03-14 2021-03-30 Bank Of America Corporation Preventing unauthorized access to secure information systems using advanced pre-authentication techniques
US11317456B2 (en) * 2018-04-13 2022-04-26 Samsung Electronics Co., Ltd. Method and system for handling data path creation in wireless network system
US11582195B1 (en) * 2018-09-26 2023-02-14 Amazon Technologies, Inc. Parallel encrypted data streams for virtual private networks
US11082451B2 (en) * 2018-12-31 2021-08-03 Citrix Systems, Inc. Maintaining continuous network service
CN110177128B (zh) * 2019-04-15 2022-02-01 达闼机器人有限公司 数据传输系统及其建立vpn连接的方法、终端、vpn代理
CN110635988B (zh) * 2019-10-24 2020-10-27 北京大学 一种用于多路径传输的数据转发方法及设备
EP3820088B1 (en) * 2019-11-06 2024-01-03 Deutsche Telekom AG Method and network device for multi-path communication
CN113055269B (zh) * 2019-12-27 2023-03-07 厦门网宿有限公司 虚拟专用网络数据的传输方法及装置
TWI743692B (zh) * 2020-02-27 2021-10-21 威鋒電子股份有限公司 硬體木馬抑制裝置及其操作方法
GB2596870B (en) * 2020-07-10 2023-01-18 Canon Kk Method and apparatus for wireless communication of low latency data between multilink devices
CN112436994B (zh) * 2020-11-17 2022-04-19 联想(北京)有限公司 一种数据传输方法及电子设备
CN115037671B (zh) * 2021-03-04 2023-08-04 华为技术有限公司 多路径聚合调度方法及电子设备
US11683293B2 (en) * 2021-05-13 2023-06-20 Microsoft Technology Licensing, Llc Creating two simultaneous VPN connections for a VPN client
US11671362B2 (en) 2021-05-13 2023-06-06 Microsoft Technology Licensing, Llc Managing data traffic for two simultaneous VPN connections with a VPN client
US11297038B1 (en) * 2021-07-03 2022-04-05 Oversec, Uab Rotating internet protocol addresses in a virtual private network
US11489808B1 (en) * 2021-08-03 2022-11-01 Oversec, Uab Providing a split-configuration virtual private network
US11677585B2 (en) * 2021-08-13 2023-06-13 Citrix Systems, Inc. Transparent TCP connection tunneling with IP packet filtering
US11843581B2 (en) 2021-08-15 2023-12-12 Netflow, UAB Clustering of virtual private network servers
CN113726648B (zh) * 2021-08-27 2022-11-29 中国电信股份有限公司 多路径通信方法、装置、电子设备及计算机可读介质
US11757840B2 (en) * 2021-09-12 2023-09-12 Netflow, UAB Configuring a protocol in a virtual private network
US11924179B2 (en) * 2022-08-08 2024-03-05 International Business Machines Corporation API based distribution of private session key to network communication device for secured communications
US11765142B1 (en) * 2022-08-08 2023-09-19 International Business Machines Corporation Distribution of private session key to network communication device for secured communications
US11916890B1 (en) * 2022-08-08 2024-02-27 International Business Machines Corporation Distribution of a cryptographic service provided private session key to network communication device for secured communications

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0771088B2 (ja) * 1987-04-06 1995-07-31 古河電気工業株式会社 多重伝送方式
US5963557A (en) * 1997-04-11 1999-10-05 Eng; John W. High capacity reservation multiple access network with multiple shared unidirectional paths
US6711166B1 (en) 1997-12-10 2004-03-23 Radvision Ltd. System and method for packet network trunking
US6505253B1 (en) 1998-06-30 2003-01-07 Sun Microsystems Multiple ACK windows providing congestion control in reliable multicast protocol
AU5771199A (en) 1998-08-20 2000-03-14 Nokia Networks Oy Method and apparatus for providing user multiplexing in a real-time protocol
US7539179B1 (en) 1999-09-30 2009-05-26 Cisco Technology, Inc. Scalable packet-switched call control signaling
US7213077B2 (en) 2000-07-21 2007-05-01 Hughes Network Systems, Inc. Method and system for providing buffer management in a performance enhancing proxy architecture
US7149795B2 (en) * 2000-09-18 2006-12-12 Converged Access, Inc. Distributed quality-of-service system
US7839890B1 (en) * 2000-11-02 2010-11-23 Fisher-Rosemount Systems, Inc. Multiplexed data transmissions through a communication link
GB2369746A (en) 2000-11-30 2002-06-05 Ridgeway Systems & Software Lt Communications system with network address translation
WO2003094017A1 (en) 2002-05-03 2003-11-13 Coco Communications Corp. Method and apparatus for persistent connections to a device through the use of multiple physical network connections and connection hand-offs between multiple bands, modes and networks
DE10232175A1 (de) * 2002-07-16 2004-01-29 Siemens Ag Verfahren zum Sicherstellen der Reihenfolge von Nachrichten im SIP-/SIP-T Protokoll
US7525994B2 (en) * 2003-01-30 2009-04-28 Avaya Inc. Packet data flow identification for multiplexing
US8009696B2 (en) * 2004-08-06 2011-08-30 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US20060059256A1 (en) * 2004-09-10 2006-03-16 Nokia Corporation Signaling a state of a transmission link via a transport control protocol
CN104104479B (zh) * 2005-08-12 2018-07-03 三星电子株式会社 经由无线网络和无线装置发送/接收数据的方法和设备
US7782759B2 (en) 2006-04-21 2010-08-24 Microsoft Corporation Enabling network devices to run multiple congestion control algorithms
US8102853B2 (en) 2006-08-09 2012-01-24 Samsung Electronics Co., Ltd. System and method for wireless communication of uncompressed video having fixed size MAC header with an extension
US20080130496A1 (en) * 2006-12-01 2008-06-05 Bandrich Inc. Method and system for video transmission using 3g mobile network
JP5071165B2 (ja) * 2007-03-19 2012-11-14 日本電気株式会社 経路多重化通信システム、通信ノード及び通信方法
US7916718B2 (en) 2007-04-19 2011-03-29 Fulcrum Microsystems, Inc. Flow and congestion control in switch architectures for multi-hop, memory efficient fabrics
CN102047742B (zh) 2008-03-25 2014-04-16 诺基亚公司 用于基于公共通信会话对不同业务类型进行多路复用的方法和装置
US9781148B2 (en) 2008-10-21 2017-10-03 Lookout, Inc. Methods and systems for sharing risk responses between collections of mobile communications devices
US8572251B2 (en) 2008-11-26 2013-10-29 Microsoft Corporation Hardware acceleration for remote desktop protocol
US7940740B2 (en) * 2009-02-03 2011-05-10 Motorola Mobility, Inc. Apparatus and method for communicating and processing a positioning reference signal based on identifier associated with a base station
US8391302B1 (en) * 2009-12-03 2013-03-05 Integrated Device Technology, Inc. High-performance ingress buffer for a packet switch
FR2954029B1 (fr) * 2009-12-14 2012-07-13 Canon Kk Procede de transmission de paquets d'un flux de donnees bidirectionnel passager, dispositif gestionnaire, produit programme d'ordinateur et moyen de stockage correspondants
US8325623B1 (en) 2010-02-16 2012-12-04 Google Inc. System and method for reducing latency during data transmissions over a network
US8400923B2 (en) * 2010-10-15 2013-03-19 Telefonaktiebolaget L M Ericsson (Publ) Multipath transmission control protocol proxy
US8817797B2 (en) * 2012-01-31 2014-08-26 Alcatel Lucent Method and apparatus for multipath protocol packet relay
US20130346700A1 (en) 2012-06-21 2013-12-26 Alexander I. Tomlinson Systems and methods for managing memory
US9888042B2 (en) * 2013-05-21 2018-02-06 Citrix Systems, Inc. Systems and methods for multipath transmission control protocol connection management
US9894008B2 (en) * 2014-08-20 2018-02-13 Citrix Systems, Inc. Systems and methods for implementation of jumbo frame over existing network stack
US20170187587A1 (en) * 2015-12-26 2017-06-29 David Keppel Technologies for inline network traffic performance tracing

Also Published As

Publication number Publication date
US20180041613A1 (en) 2018-02-08
US10135720B2 (en) 2018-11-20
WO2018027072A1 (en) 2018-02-08
US20190036811A1 (en) 2019-01-31
CA3032517A1 (en) 2018-02-08
US10511521B2 (en) 2019-12-17
KR20190033075A (ko) 2019-03-28
US20180041421A1 (en) 2018-02-08
US10757013B2 (en) 2020-08-25
EP3494452A4 (en) 2020-02-26
EP3494452A1 (en) 2019-06-12

Similar Documents

Publication Publication Date Title
US10757013B2 (en) System and method for virtual multipath data transport
US10305904B2 (en) Facilitating secure network traffic by an application delivery controller
US10419406B2 (en) Efficient forwarding of encrypted TCP retransmissions
US10785020B2 (en) Hardware offload for QUIC connections
US9667601B2 (en) Proxy SSL handoff via mid-stream renegotiation
CN107278360B (zh) 一种实现网络互连的系统、方法及装置
US11757973B2 (en) Technologies for accelerated HTTP processing with hardware acceleration
JP2019161641A (ja) ハードウェアオフロードを有するアクセラレートされたquicパケット処理のための技術
US10225239B2 (en) Method for in-line TLS/SSL cleartext encryption and authentication
CN112699397B (zh) 基于虚拟环境下的软件加解密方法和系统
Seggelmann et al. SSH over SCTP—Optimizing a multi-channel protocol by adapting it to SCTP
US11349820B2 (en) Selective encryption of tunneled encrypted traffic
Nowlan et al. Reducing latency in Tor circuits with unordered delivery
KR101922980B1 (ko) 네트워크 장치 및 그의 패킷 송신 방법
CN110995730B (zh) 数据传输方法、装置、代理服务器和代理服务器集群
CN114679265A (zh) 流量获取方法、装置、电子设备和存储介质
WO2024068737A1 (en) Encrypted satellite communications
CN114448875A (zh) 使用多路径协议管理网络服务
Ullholm Karlsson et al. SSH over UDP