(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-22
(45)【発行日】2022-08-01
(54)【発明の名称】連続ネットワークサービスの維持
(51)【国際特許分類】
H04L 45/302 20220101AFI20220725BHJP
H04L 45/24 20220101ALI20220725BHJP
H04W 12/03 20210101ALI20220725BHJP
H04W 88/06 20090101ALI20220725BHJP
H04W 84/12 20090101ALI20220725BHJP
【FI】
H04L45/302
H04L45/24
H04W12/03
H04W88/06
H04W84/12
(21)【出願番号】P 2021538232
(86)(22)【出願日】2019-12-06
(86)【国際出願番号】 US2019064943
(87)【国際公開番号】W WO2020142162
(87)【国際公開日】2020-07-09
【審査請求日】2021-06-29
(32)【優先日】2018-12-31
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-08-21
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】508045099
【氏名又は名称】シトリックス・システムズ・インコーポレイテッド
【氏名又は名称原語表記】Citrix Systems,Inc.
(74)【代理人】
【識別番号】100118913
【氏名又は名称】上田 邦生
(74)【代理人】
【識別番号】100142789
【氏名又は名称】柳 順一郎
(74)【代理人】
【識別番号】100201466
【氏名又は名称】竹内 邦彦
(72)【発明者】
【氏名】ニヴェーディター オージャ
(72)【発明者】
【氏名】デレク ソルスランド
(72)【発明者】
【氏名】ステファン ウィルソン
【審査官】羽岡 さやか
(56)【参考文献】
【文献】米国特許出願公開第2017/0171156(US,A1)
【文献】米国特許出願公開第2018/0041421(US,A1)
【文献】特開2005-223375(JP,A)
【文献】特表2018-525858(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 45/302
H04L 45/24
H04W 12/03
H04W 88/06
H04W 84/12
(57)【特許請求の範囲】
【請求項1】
クライアントデバイスが、ウェブサイトを介してサーバに接触し、該サーバからアプリケーションパッケージをダウンロードすることであって、前記クライアントデバイスが、前記ダウンロードされたアプリケーションパッケージを開き、該アプリケーションパッケージの圧縮されたコンテンツを解凍し、前記アプリケーションパッケージの構成要素をインストールし、前記アプリケーションパッケージの前記構成要素が、(i)アプリケーションのクライアント構成要素と、(ii)マイクロVPNクライアント構成要素と、(iii)リンクボンディングクライアント構成要素と、を備え、前記マイクロVPNクライアント構成要素が、前記アプリケーションの前記クライアント構成要素と前記サーバ上の単一のアプリケーションとの間で暗号化されたチャネルを確立するように構成され、前記リンクボンディングクライアント構成要素が、複数のネットワーク経路上で並行して前記アプリケーションの前記クライアント構成要素からデータを送信するように構成されることと、
前記クライアントデバイスによって、該クライアントデバイスと前記サーバとの間でデータを伝達する前記複数のネットワーク経路を監視することであって、前記データが前記サーバ上の単一のアプリケーションに関連付けられることと、
前記クライアントデバイスによって、前記マイクロVPNクライアント構成要素によって確立された前記暗号化されたチャネル内で、前記複数のネットワーク経路の各々を介して前記サーバから前記データを受信することであって、前記複数のネットワーク経路の各々から受信された前記データが同一であることと、
前記クライアントデバイスの前記リンクボンディングクライアント構成要素によって、前記クライアントデバイスへの前記サーバ上の前記単一のアプリケーションの配信を可能にするために、データを受信するための、前記複数のネットワーク経路のうちの第1のネットワーク経路を選択することと、
前記クライアントデバイスの前記リンクボンディングクライアント構成要素によって、前記第1のネットワーク経路のネットワーク連続性の低減によって引き起こされる、前記サーバからのデータの受信の遅延を防ぐように、前記複数のネットワーク経路を前記監視することに少なくとも部分的に基づいて、前記第1のネットワーク経路と前記複数のネットワーク経路のうちの第2のネットワーク経路の両方が動作可能であり、データを伝達している間に、前記選択されたネットワーク経路を、前記第1のネットワーク経路から前記複数のネットワーク経路のうちの第2のネットワーク経路に調整することと、
を含む方法。
【請求項2】
前記第1のネットワーク経路と前記第2のネットワーク経路の両方を介して前記サーバにアプリケーションデータのセットを送信することであって、前記第1のネットワーク経路と前記第2のネットワーク経路とが並行してアプリケーションデータの同じセットを伝達することを含む請求項1に記載の方法。
【請求項3】
前記選択されたネットワーク経路を前記第1のネットワーク経路から前記第2のネットワーク経路に調整した後に、前記第1のネットワーク経路を介して到着する、前記単一のアプリケーションのデータを廃棄することを含む請求項1に記載の方法。
【請求項4】
前記単一のアプリケーションの前記データがパケットで前記サーバから到着し、各パケットがシーケンス識別子を有し、前記第1のネットワーク経路を介して到着する、前記単一のアプリケーションのデータを廃棄することが、前記第1のネットワーク経路を介して到着するパケットを、前記パケットの前記シーケンス識別子が、前記第2のネットワーク経路を介して到着したパケットの前記シーケンス識別子に一致することに基づいて、冗長であると識別することを含む請求項3に記載の方法。
【請求項5】
前記第1のネットワーク経路がWi-Fiネットワーク経路であり、前記第2のネットワーク経路がセルラーネットワーク経路である請求項1に記載の方法。
【請求項6】
前記セルラーネットワーク経路がLTE(ロングタームエボリューション)ネットワーク経路である請求項5に記載の方法。
【請求項7】
前記第1のネットワーク経路の速度を測定することを含み、前記選択されたネットワーク経路を前記第1のネットワーク経路から前記第2のネットワーク経路に調整することが、前記第1のネットワーク経路の前記速度がしきい値を下回ることに少なくとも部分的に基づく請求項1に記載の方法。
【請求項8】
前記第2のネットワーク経路の速度を測定することを含み、
前記選択されたネットワーク経路を前記第1のネットワーク経路から前記第2のネットワーク経路に調整することが、前記第2のネットワーク経路の前記速度が前記第1のネットワーク経路の前記速度を超えることに基づく請求項7に記載の方法。
【請求項9】
前記第1のネットワーク経路の前記速度を測定することが、前記第1のネットワーク経路を介した前記クライアントデバイスと前記サーバとの間のラウンドトリップ送信時間を測定することを含む請求項7に記載の方法。
【請求項10】
前記クライアントデバイスと前記サーバとの間で暗号化されたチャネルを確立することであって、前記暗号化されたチャネルが、前記データを前記単一のアプリケーションについて伝達するが、前記クライアントデバイス上で稼働している他のアプリケーションについて伝達しない、仮想プライベートネットワーク(VPN)により実装されることを含む請求項1に記載の方法。
【請求項11】
メモリに結合されたプロセッサのセットを備える制御回路を備えるクライアントデバイスであって、前記制御回路が、
ウェブサイトを介してサーバに接触し、該サーバからアプリケーションパッケージをダウンロードすることと、
前記ダウンロードされたアプリケーションパッケージを開き、該アプリケーションパッケージの圧縮されたコンテンツを解凍し、前記アプリケーションパッケージの構成要素をインストールすることであって、前記アプリケーションパッケージの前記構成要素が、(i)アプリケーションのクライアント構成要素と、(ii)マイクロVPNクライアント構成要素と、(iii)リンクボンディングクライアント構成要素と、を含み、前記マイクロVPNクライアント構成要素が、前記アプリケーションの前記クライアント構成要素と前記サーバ上の単一のアプリケーションとの間で暗号化されたチャネルを確立するように構成され、前記リンクボンディングクライアント構成要素が、複数のネットワーク経路上で並行して前記アプリケーションの前記クライアント構成要素からデータを送信するように構成されることと、
前記クライアントデバイスと前記サーバとの間でデータを伝達する前記複数のネットワーク経路を監視することであって、前記データが前記サーバ上の前記単一のアプリケーションに関連付けられることと、
前記マイクロVPNクライアント構成要素によって確立された前記暗号化されたチャネル内で、前記複数のネットワーク経路の各々を介して前記サーバから前記データを受信することであって、前記複数のネットワーク経路の各々から受信された前記データが同一であることと、
前記リンクボンディングクライアント構成要素によって、前記クライアントデバイスへの前記サーバ上の前記単一のアプリケーションの配信を可能にするために、データを受信するための、前記複数のネットワーク経路のうちの第1のネットワーク経路を選択することと、
前記リンクボンディングクライアント構成要素によって、前記第1のネットワーク経路のネットワーク連続性の低減によって引き起こされる、前記サーバからのデータの受信の遅延を防ぐように、前記複数のネットワーク経路を前記監視することに少なくとも部分的に基づいて、前記第1のネットワーク経路と前記複数のネットワーク経路のうちの第2のネットワーク経路の両方が動作可能であり、データを伝達している間に、前記選択されたネットワーク経路を、前記第1のネットワーク経路から前記複数のネットワーク経路のうちの第2のネットワーク経路に調整することと、
を行うように構成されるクライアントデバイス。
【請求項12】
前記制御回路が、前記選択されたネットワーク経路を前記第1のネットワーク経路から前記第2のネットワーク経路に調整した後に、前記第1のネットワーク経路を介して到着する、前記単一のアプリケーションのデータを廃棄するように構成される請求項11に記載のクライアントデバイス。
【請求項13】
前記単一のアプリケーションの前記データがパケットで到着し、各パケットがシーケンス識別子を有し、前記制御回路が、前記第1のネットワーク経路を介して到着するパケットを、前記パケットの前記シーケンス識別子が、前記第2のネットワーク経路を介して到着したパケットの前記シーケンス識別子に一致することに基づいて、冗長であると識別することによって、前記第1のネットワーク経路を介して到着する、前記単一のアプリケーションのデータを廃棄するように構成される請求項12に記載のクライアントデバイス。
【請求項14】
前記制御回路が、前記第1のネットワーク経路の速度を測定することと、前記第1のネットワーク経路の前記速度がしきい値を下回ることに少なくとも部分的に基づいて、前記選択されたネットワーク経路を前記第1のネットワーク経路から前記第2のネットワーク経路に調整することと、を行うように構成される請求項11に記載のクライアントデバイス。
【請求項15】
前記第1のネットワーク経路の前記速度を測定するように構成された前記制御回路が、前記第1のネットワーク経路を介した前記クライアントデバイスと前記サーバとの間のラウンドトリップ送信時間を測定するように構成される請求項14に記載のクライアントデバイス。
【請求項16】
命令を有する非一時的コンピュータ可読媒体のセッ
トであって、前記命令が、クライアントデバイスの制御回路によって実行されたとき、前記クライアントデバイスに、
ウェブサイトを介してサーバに接触し、該サーバからアプリケーションパッケージをダウンロードすることであって、前記クライアントデバイスが、前記ダウンロードされたアプリケーションパッケージを開き、該アプリケーションパッケージの圧縮されたコンテンツを解凍し、前記アプリケーションパッケージの構成要素をインストールし、前記アプリケーションパッケージの前記構成要素が、(i)アプリケーションのクライアント構成要素と、(ii)マイクロVPNクライアント構成要素と、(iii)リンクボンディングクライアント構成要素と、を含み、前記マイクロVPNクライアント構成要素が、前記アプリケーションの前記クライアント構成要素と前記サーバ上の単一のアプリケーションとの間で暗号化されたチャネルを確立するように構成され、前記リンクボンディングクライアント構成要素が、複数のネットワーク経路上で並行して前記アプリケーションの前記クライアント構成要素からデータを送信するように構成されることと、
前記クライアントデバイスと前記サーバとの間でデータを伝達する前記複数のネットワーク経路を監視することであって、前記データが前記サーバ上の前記単一のアプリケーションに関連付けられることと、
前記マイクロVPNクライアント構成要素によって確立された前記暗号化されたチャネル内で、前記複数のネットワーク経路の各々を介して前記サーバから前記データを受信することであって、前記複数のネットワーク経路の各々から受信された前記データが同一であることと、
前記リンクボンディングクライアント構成要素によって、前記クライアントデバイスへの前記サーバ上の前記単一のアプリケーションの配信を可能にするために、データを受信するための、前記複数のネットワーク経路のうちの第1のネットワーク経路を選択することと、
前記リンクボンディングクライアント構成要素によって、前記第1のネットワーク経路のネットワーク連続性の低減によって引き起こされる、前記サーバからのデータの受信の遅延を防ぐように、前記複数のネットワーク経路を前記監視することに少なくとも部分的に基づいて、前記第1のネットワーク経路と前記複数のネットワーク経路のうちの第2のネットワーク経路の両方が動作可能であり、データを伝達している間に、前記選択されたネットワーク経路を、前記第1のネットワーク経路から前記複数のネットワーク経路のうちの第2のネットワーク経路に調整することと、
を含む方法を実施させる
非一時的コンピュータ可読媒体のセット。
【請求項17】
前記方法が、前記第1のネットワーク経路と前記第2のネットワーク経路の両方を介して前記サーバにアプリケーションデータを送信することであって、前記第1のネットワーク経路と前記第2のネットワーク経路とが並行して同じアプリケーションデータを伝達することを含む請求項16に記載の
非一時的コンピュータ可読媒体のセット。
【請求項18】
前記第1のネットワーク経路がWi-Fiネットワーク経路であり、前記第2のネットワーク経路がセルラーネットワーク経路である請求項16に記載の
非一時的コンピュータ可読媒体のセット。
【請求項19】
前記セルラーネットワーク経路がLTE(ロングタームエボリューション)ネットワーク経路である請求項18に記載の
非一時的コンピュータ可読媒体のセット。
【請求項20】
前記方法が、前記クライアントデバイスと前記サーバとの間の暗号化されたチャネルを確立することであって、前記暗号化されたチャネルが、前記データを前記単一のアプリケーションについて伝達するが、前記クライアントデバイス上で稼働している他のアプリケーションについて伝達しない、仮想プライベートネットワーク(VPN)により実装されることを含む請求項16に記載の
非一時的コンピュータ可読媒体のセット。
【発明の詳細な説明】
【背景技術】
【0001】
現代のコンピューティングデバイスは、複数のネットワーク接続をサポートすることが一般的である。たとえば、ラップトップコンピュータは、イーサネット、Wi-Fi(IEEE802.11x)、およびセルラーネットワーク接続をサポートし得る。あるネットワーク接続が失敗した場合、ユーザは、たとえば、ラップトップ上のネットワーク設定にアクセスし、異なるネットワークを選択することによって、ネットワークを変更するオプションを有する。
【0002】
いくつかのデバイスは、ネットワーク接続を自動的に変更する。たとえば、スマートフォンのユーザは、スマートフォンがWi-Fiに接続された自宅でポッドキャストを聴き始め得るが、次いで、外で聴き続けることにすることがある。ユーザがWi-Fi範囲から出たとき、スマートフォンは、Wi-Fiの喪失を検出し、セルラーサービスに切り替える。十分なバッファリングがある場合、遷移はシームレスであるように見えることがあり、ユーザは、接続失敗があり、次いでWi-Fiからセルラーサービスへのフェイルオーバがあったことに決して気づかない。
【発明の概要】
【0003】
残念ながら、いくつかのアプリケーションは、アプリケーションが稼働するデバイスがネットワークを切り替えたとき、シームレスな遷移をサポートしない。たとえば、リアルタイム対話性を伴うウェブ会議のようなアプリケーションは、ネットワーク接続が変化したとき、一時的にフリーズし得る。いくつかの場合には、新しい接続を確立することは、ハンドシェイクまたは他の通信を必要とし得、これは、アウテージの持続時間を延長することがある。アウテージがほんの一瞬であったとしても、アウテージは依然としてフラストレーションおよび不快感を引き起こし、それにより、ユーザエクスペリエンスを低下させることがある。
【0004】
ネットワークフェイルオーバが機能の一時的喪失を引き起こすことがある従来の手法とは対照的に、改善された技法は、同時に複数のネットワーク経路を維持し、ネットワーク経路を通して冗長的に同じデータを交換し、受信機が、データのソースとしてネットワーク経路のうちの1つを選択することを可能にする。第1の、現在選択されているネットワーク経路が弱くなった場合、たとえば、受信機は、データのソースを第2のネットワーク経路に自動的におよびシームレスに切り替えることができるが、第1のネットワーク経路は動作可能のままである。第2のネットワーク経路がすでにオンであり、データを伝達しているとすれば、遷移はほぼ瞬時である。ネットワークデッドゾーンまたは干渉を有する環境中で稼働している高度対話型アプリケーションでさえ、概して機能のダウンタイムまたは他の喪失なしで、完全に機能的なままであり得る。それにより、信頼性およびユーザエクスペリエンスが向上する。
【0005】
いくつかの実施形態は、クライアントデバイスによって、クライアントデバイスとサーバとの間でデータを伝達する複数のネットワーク経路を監視することであって、データがサーバ上の単一のアプリケーションに関連付けられることを含むクライアント方法を対象とする。本方法は、クライアントデバイスによって、複数のネットワーク経路の各々を介してサーバからデータを受信することであって、複数のネットワーク経路の各々から受信されたデータが同一であることをさらに含む。本方法は、クライアントデバイスによって、クライアントデバイスへのサーバ上の単一のアプリケーションの配信を可能にするために、データを受信するための、複数のネットワーク経路のうちの第1のネットワーク経路を選択することと、クライアントデバイスによって、第1のネットワーク経路のネットワーク連続性の低減によって引き起こされる、サーバからのデータの受信の遅延を防ぐように、複数のネットワーク経路を監視することに少なくとも部分的に基づいて、選択されたネットワーク経路を、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整することと、をまたさらに含む。
【0006】
さらなる実施形態は、上記で説明されたクライアント方法などの方法を実施するように構成されたクライアントデバイスを対象とする。さらに他の実施形態は、コンピュータプログラム製品を対象とする。本コンピュータプログラム製品は、クライアントデバイスの制御回路によって実行されたとき、クライアントデバイスに、上記で説明されたクライアント方法などの方法を実施させる命令を記憶する。
【0007】
他の実施形態は、サーバによって、単一のアプリケーションについてクライアントデバイスからアプリケーションデータを受信することを含むサーバ方法を対象とする。アプリケーションデータは、複数のネットワーク経路を介して並行して受信され、複数のネットワーク経路はすべて、同じアプリケーションデータを伝達する。本方法は、サーバ上で稼働しているサーバ構成要素のためのアプリケーションデータのソースとして複数のネットワーク経路のうちの第1のネットワーク経路を割り当てることと、第1のネットワーク経路のネットワーク連続性の低減によって引き起こされるデータの受信の遅延を防ぐように、クライアントデバイスから受信されたインジケータに少なくとも部分的に基づいて、サーバ構成要素のためのアプリケーションデータのソースを、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整することとをさらに含む。
【0008】
さらなる実施形態は、上記で説明されたサーバ方法などの方法を実施するように構成されたサーバを対象とする。さらに他の実施形態は、コンピュータプログラム製品を対象とする。本コンピュータプログラム製品は、サーバの制御回路によって実行されたとき、サーバに、上記で説明されたサーバ方法などの方法を実施させる命令を記憶する。
【0009】
またさらなる実施形態は、クライアントデバイスとサーバとの間の暗号化されたチャネルを確立することであって、暗号化されたチャネルが、単一のアプリケーションについての暗号化された通信を伝達するように構成されることと、クライアントデバイスとサーバとの間の暗号化されたチャネルによって使用される複数のネットワーク経路を監視することとを含むシステム方法を対象とする。本方法は、サーバによって、複数のネットワーク経路の各々を介して、暗号化されたチャネル上でクライアントデバイスに単一のアプリケーションのアプリケーションデータのセットを送信することであって、複数のネットワーク経路の各々がアプリケーションデータの同じセットを伝達することと、クライアントデバイスによって、クライアントデバイス上で稼働しているクライアント構成要素のためのアプリケーションデータのソースとして複数のネットワーク経路のうちの第1のネットワーク経路を選択することとをさらに含む。本方法は、クライアントデバイスによって、第1の経路のネットワーク連続性の低減によって引き起こされる、クライアントデバイスとサーバとの間でデータを通信することの遅延を防ぐように、複数のネットワーク経路を監視することに少なくとも部分的に基づいて、データのソースを、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整することをまたさらに含む。
【0010】
いくつかの実施形態は、上記で説明されたシステム方法などの方法を実施するように構成されたシステムを対象とする。さらに他の実施形態は、コンピュータプログラム製品を対象とする。本コンピュータプログラム製品は、システムの制御回路によって実行されたとき、システムに、上記で説明されたシステム方法などの方法を実施させる命令を記憶する。
【0011】
上記の概要は、本明細書で提示される例示的な特徴を読者が容易に把握するのを支援するために説明の目的で提示されるが、本発明の概要は、必要とされる要素を記載するものではなく、またはいかなる形でも本出願の実施形態を限定するものではない。上記で説明された特徴は、技術的に意味をなす何らかの様式で組み合わせられ得、すべてのそのような組合せは、そのような組合せが明示的に識別されるか否かにかかわらず、本明細書で開示されるものとすることを諒解されたい。
【0012】
上記および他の特徴および利点は、添付の図面に示されているような、特定の実施形態の以下の説明から明らかになろう。添付の図面において、異なる図全体にわたって同様の参照符号が同じまたは同様の部分を指す。
【図面の簡単な説明】
【0013】
【
図1】改善された技法の実施形態が実践され得る例示的な環境のブロック図である。
【0014】
【
図2】サーバからクライアントにSaaS(サービスとしてのソフトウェア:Software as a Service)アプリケーションをダウンロードするための例示的な構成を示すブロック図である。
【0015】
【
図3】
図1の環境中でクライアントおよび/またはサーバを動作させるための例示的な方法を示すフローチャートである。
【0016】
【
図4a】クライアントアプリケーション構成要素のグラフィカルユーザインターフェース(GUI)のシミュレートされたスクリーンショットである。
【
図4b】クライアントアプリケーション構成要素のグラフィカルユーザインターフェース(GUI)のシミュレートされたスクリーンショットである。
【
図4c】クライアントアプリケーション構成要素のグラフィカルユーザインターフェース(GUI)のシミュレートされたスクリーンショットである。
【
図4d】クライアントアプリケーション構成要素のグラフィカルユーザインターフェース(GUI)のシミュレートされたスクリーンショットである。
【0017】
【
図5】SaaSワークスペースアプリケーションのGUIのシミュレートされたスクリーンショットである。
【0018】
【
図6】クライアントデバイスによって行われる例示的な方法を示すフローチャートである。
【
図7】サーバによって行われる例示的な方法を示すフローチャートである。
【
図8】クライアントデバイスとサーバの両方を備えるシステムによって行われる例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【0019】
次に、改善された技法の実施形態が説明される。そのような実施形態は、いくつかの特徴および原理を示すために例として提供されるが、限定するものではないことを諒解されたい。
【0020】
アプリケーションを動作させるための改善された技法は、複数の、同時ネットワーク経路を維持し、ネットワーク経路を通して冗長的に同じデータを交換し、受信機が、データのソースとしてネットワーク経路のうちの1つを選択することを可能にする。
【0021】
図1は、改善された技法の実施形態が実践され得る例示的な環境100を示す。ここで、クライアントデバイス110(「クライアント」)は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、および/または何らかの他のタイプのネットワークもしくはネットワークの組合せなど、ネットワーク170上で、サーバ装置120(「サーバ」)に動作可能に接続される。クライアント110は、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、スマートフォン、個人情報端末(personal data assistant)、セットトップボックス、ゲーミングシステムなど、任意のユーザ操作可能コンピュータまたはデバイスとして提供され得る。サーバ120は、同様の形態で提供され得るが、一般に、データセンターにおいて稼働し、インターネット上でを意味する「クラウドにおいて」利用可能なサーバグレード(server-grade)コンピュータである。いくつかの例では、サーバ120は、分散型サーバまたはサーバクラスタの一部として、複数のコンピュータを使用して実装される。
【0022】
クライアント110は、複数の経路180を介してネットワーク170に接続され、複数の経路180は、たとえば、イーサネット経路180a、Wi-Fi経路180b、およびセルラーデータ経路180cを含み得る。より多数またはより少数の経路180が提供され得、本開示は、(1つまたは複数の)特定のタイプの経路に限定されない。一例では、セルラーデータ経路180cは、LTE(ロングタームエボリューション)データ経路である。クライアント110は、モニタ、タッチスクリーンなどのディスプレイ116を有し、ディスプレイ116は、グラフィカルユーザインターフェース(GUI)118をレンダリングするように構成され、これはユーザ102によって動作され得る。
【0023】
図示のように、クライアント110は、イーサネットポート、Wi-Fiアンテナ、セルラーアンテナなど、1つまたは複数の通信インターフェース112cを備える。クライアント110は、1つまたは複数の処理チップおよび/またはアセンブリなどのプロセッサ114cのセットと、メモリ130cとをも備え、メモリ130cは、揮発性メモリ、たとえば、RAM(ランダムアクセスメモリ)と、1つまたは複数のROM(読取り専用メモリ)、ディスクドライブ、ソリッドステートドライブなどの不揮発性メモリの両方を備え得る。プロセッサ114cのセットとメモリ130cとは、クライアント制御回路を一緒に形成し、クライアント制御回路は、本明細書で説明される様々なクライアント方法および機能を行うように構築および構成される。また、メモリ130cは、実行可能な命令の形態で実現される様々なソフトウェア構成体を含む。実行可能な命令がプロセッサ114cのセットによって稼働されたとき、(1つまたは複数の)プロセッサは、ソフトウェア構成体の動作を行う。いくつかのソフトウェア構成体が詳細に図示および説明されているが、メモリ130cが一般に、オペレーティングシステム、様々なアプリケーション、プロセス、およびデーモンなど、図示されていない多くの他のソフトウェア構成要素を含むことを理解されたい。
【0024】
サーバ120の構成は、クライアント110の構成と同様であり得、(1つまたは複数の)通信インターフェース112sと、(1つまたは複数の)プロセッサ114sと、メモリ130sとをもつ。(1つまたは複数の)プロセッサ114sとメモリ130sとは、サーバ制御回路を形成し、サーバ制御回路は、本明細書で説明される様々なサーバ方法および機能を行うように構築および構成される。サーバ120上の実行可能な命令が(1つまたは複数の)プロセッサ114sによって稼働されたとき、(1つまたは複数の)プロセッサは、ソフトウェア構成体の動作を行う。
【0025】
図1にさらに示されているように、クライアント110のメモリ130cは、ソフトウェアアプリケーション132のクライアント構成要素132cと、マイクロVPN(仮想プライベートネットワーク)クライアント134cと、リンクボンディング(link bonding)クライアント140cとを「含む」、すなわち、ソフトウェア命令の実行によって実現する。メモリ130cは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)ドライバ150c、ならびに、イーサネットドライバ160a、Wi-Fiドライバ160b、およびセルラーデータドライバ160cなどの追加のドライバ160をさらに備える。
【0026】
次にサーバ120を参照すると、メモリ130sは、ソフトウェアアプリケーション132のサーバ構成要素132sと、マイクロVPNサーバ134sと、リンクボンディングサービス140sとを備える。メモリ130sは、TCP/IPドライバ150s、ならびに、1つまたは複数の接続経路180のための1つまたは複数のドライバ160をさらに備える。特定の例では、サーバ120は、イーサネットドライバ160dを介してアクセスされる、イーサネットなどの単一の接続経路のみを使用する。
【0027】
一例では、マイクロVPNクライアント134cとリンクボンディングクライアント140cとは、それぞれのソフトウェアライブラリとして提供され、各ライブラリは、そのそれぞれの機能を公開するための、それ自体のAPI(アプリケーションプログラムインターフェース)を有する。さらに、マイクロVPNクライアント134cとリンクボンディングクライアント140cとは、各々、アプリケーションプログラム132のクライアント構成要素132cに「スコープ(scope)」され得、これは、マイクロVPNクライアント134cおよびリンクボンディングクライアント140cの機能が、アプリケーションプログラム132を伴う通信に限定され、概して、クライアントデバイス110上で稼働している他のプログラムに拡張しないことを意味する。たとえば、マイクロVPNクライアント134cは、ネットワークトンネル134などの暗号化されたチャネルを確立するためにマイクロVPNサーバ134sと協調し、これは、クライアント構成要素132cとサーバ構成要素132sとの間のネットワーク170上での通信に限定される。トンネル134がクライアントデバイス110全体に適用される(従来のVPNのための一般的な構成である)のではなく、トンネル134は、代わりに、クライアント110とサーバ120との間を通る、アプリケーションプログラム132のネットワークトラフィックに制限され得る。この構成では、クライアントデバイス110上で稼働している他のプログラムによって行われる他のネットワークアクティビティは、トンネル134の外側にあり得、そのようなアクティビティはトンネル134によってセキュアにされない。したがって、マイクロVPNは、全体としてクライアントマシン110のためのものではなく、特定のアプリケーションのためのネットワークトンネル134を提供する。特に、この特徴は、リンクボンディングクライアント140cおよびクライアントアプリケーションコード132cとともに、マイクロVPNが、クライアントデバイス110上にインストールされ得る単一のダウンロード可能パッケージ(
図2参照)中で提供されることを可能にし、これは、複数のインストールプロシージャの必要を回避し、すべての関係する部分を一緒に保持する。一例では、マイクロVPNクライアント134cとマイクロVPNサーバ134sとは、トンネル134を通して渡されるデータの暗号化および解読を実施することによって、暗号化されたチャネルを確立するように構成される。マイクロVPNクライアント134cとマイクロVPNサーバ134sとはまた、たとえば、許可されたサイトのホワイトリストおよび/またはブロックされたサイトのブラックリストを適用することによって、ネットワーク170上の指定されたリソースへの接続を制限するように構成され得る。本明細書で使用される「チャネル」という用語は、任意の1つのネットワーク経路に限定されず、むしろ、ネットワーク経路180のすべての上でのすべての通信を包含することを諒解されたい。リンクボンディングクライアント140cは、複数のネットワーク経路180上で(クライアント構成要素132cからの)発信データをダイレクトし、ネットワーク経路180上で到着した着信データを受信し、クライアント構成要素132cに提供されるべきデータのソースとしてネットワーク経路のうちの1つを選択するように構成される。同様にして、リンクボンディングサーバ140sは、ネットワーク経路180上で(サーバ構成要素132sからの)発信データをダイレクトし、同じネットワーク経路180上で到着した着信ネットワークデータを受信し、サーバ構成要素132sに提供されるべきデータのソースとしてネットワーク経路180のうちの1つを選択するように構成される。いくつかの例では、リンクボンディングクライアント140cとリンクボンディングサービス140sとは、OSI(開放型システム間相互接続)モデルのデータリンクレイヤ(レイヤ2)において動作するが、これは必要とされない。マイクロVPNクライアント構成要素132cとリンクボンディングクライアント構成要素140cとは、本明細書ではソフトウェアライブラリとして示されているが、マイクロVPNクライアント構成要素132cとリンクボンディングクライアント構成要素140cとは、代替的に、少なくとも部分的にハードウェアおよび/またはファームウェアを使用して実装され得る。また、マイクロVPNクライアントおよびサーバと、リンクボンディングクライアントおよびサービスとは、例示にすぎず、限定するものではないことを諒解されたい。
【0028】
一例では、アプリケーションプログラム132は、SaaSアプリケーションである。クライアント構成要素132cは、ウェブページおよび/またはサーバ構成要素132sからダウンロードされた他のコンテンツを稼働するウェブブラウザまたは他のクライアント側プログラムであり得る。一例では、アプリケーションプログラム132は、ワークスペースフレームワーク、すなわち、単一のインターフェースからの複数のサブアプリケーションへのユーザアクセスを提供するソフトウェア環境である。そのようなサブアプリケーションは、ワークスペースフレームワーク内で稼働し、これらのサブアプリケーションの着信および発信データは、リンクボンディング構成要素140cを介してトンネル134を通過する。いくつかの例によれば、トンネル134は、アプリケーションフレームワークとの間のすべてのアプリケーショントラフィックに適用される。
【0029】
例示的な動作では、クライアントデバイス110のユーザ102は、たとえば、ショートカットをクリックもしくはタップすることによって、またはブラウザ中でナビゲートすることによって、クライアント構成要素132cをローンチする。前に確立された関連付け114に基づいて、クライアント構成要素132cは、サーバ構成要素132sにネットワーク170上で接続し、トンネル134は、マイクロVPNクライアント134cおよびマイクロVPNサーバ134sのアクションによって確立される。リンクボンディングクライアント140cとリンクボンディングサービス140sとは、次いで、トンネル134を通してメッセージ148を交換し得る。リンクボンディングクライアント140cは、経路180上でネットワーク性能を測定するための基礎としてメッセージ148を使用する。たとえば、センサー144が、たとえばラウンドトリップ遅延(ピングユーティリティ(ping utility)を使用)としてのネットワーク速度、帯域幅などを測定する。一例では、センサー144は、経路180の各々上でネットワーク速度または帯域幅を別々に測定し、ネットワーク速度または帯域幅の測定を、ほぼ連続的に、または、50ms(ミリ秒)ごとに1回などの一定の間隔で、繰り返し得る。メッセージ148は、リンクボンディングクライアント140cとリンクボンディングサーバ140sとを直接接続する点線として示されているが、そのようなメッセージは、実際には、たとえば、クライアント側およびサーバ側ドライバ160を介して、および各経路180のための任意のサポートインフラストラクチャ(たとえば、セルフォンタワー、ルータ、インターネットサービスプロバイダなど)を通して、ネットワーク170を通過する。このようにして、センサー144は、各経路180のリアルタイム測定値を取得する。いくつかの例では、センサー144は、選択された経路144a、すなわち、最高の速度、帯域幅、一貫性、経済性などを提供する、経路180のうちの1つを識別し、選択された経路144aを識別する、選択された経路144aの識別情報を、たとえば、ネットワーク170上で送られるインジケータ中で、サーバ120上のリンクボンディングサービス140sにアラートする。
【0030】
ユーザ102がGUI118を動作させてアプリケーション132を制御するとき、クライアント110は、実質的に同じ時間に、および並行して、すべての経路180上でアプリケーションデータ162をネットワーク170に送る。たとえば、リンクボンディングクライアント140cは、発信アプリケーションデータ162をTCP/IPドライバ150cに渡す。TCP/IPドライバ150cは、マルチパスルーティングを使用して、アプリケーションデータを、イーサネットドライバ160aとWi-Fiドライバ160bとセルラーデータドライバ160cとにフォワーディングする。クライアントデバイス110は、次いで、イーサネットポートとWi-Fiアンテナとセルフォンアンテナとを介してパケット162a、162b、および162cを送出する。パケット162a、162b、および162cはすべて、同じデータ162を伝達し、ネットワーク170を並行しておよび同時に通過するか、または概ねそのように行われ、これらの間の何らかの差が、経路180に沿った異なる遅延から派生する。一例では、すべての経路を通して送られるすべてのアプリケーションデータ162がトンネル134を通過する。
【0031】
サーバ120において、パケット162a、162b、および162cは、ドライバ160aに到着し、TCP/IPドライバ150sに渡り、次いでリンクボンディングサービス140sに渡る。リンクボンディングサービス140sは、クライアントデバイス110から送られたインジケータに基づいて、選択された経路144aの識別情報を取得しており、続いて、他の経路のすべて上で到着したすべてのパケットを廃棄する。たとえば、イーサネット経路180aが、選択された経路144aとして確立された場合、リンクボンディングサービス140sは、すべてのパケット162bおよび162cを廃棄し、パケット162aのみがサーバ構成要素132sに渡ることを可能にする。パケット162が異なるソースから発生し、サーバ120へ向かう途中で異なる経路180中を進むので、サーバ120がイーサネット接続のみを含む場合でも、サーバ120がすべての経路180を介してパケット162を受信することを諒解されたい。
【0032】
図1の下部に示されているように、すべてのパケットを表すものであるパケット164は、シーケンス識別子164aとペイロード164bとを含む。シーケンス識別子164aは各パケットに固有であるが、同じシーケンス識別子164aを有する同じパケットの複製が異なる経路180上で送られ得る。一例では、リンクボンディングサービス140sは、シーケンス識別子164aの一致に基づいて到着パケットを廃棄する。たとえば、リンクボンディングサービス140sは、すべての最近受信されたパケットのシーケンス識別子164aのリストを維持し、同じシーケンス識別子164aを有する冗長パケットを、すでにリスト上にあるものとして廃棄する。リンクボンディングサービス140sは、パケットを区別するための他の手法を使用し得る。たとえば、パケット中の特定のポート指定または他の指定子が、パケットが送信された経路180を識別し得る。そのような場合、リンクボンディングサービス140sは、そのポート指定または他の指定子が選択された経路144aのポート指定または他の指定子に一致しない、パケットを廃棄し得る。
【0033】
サーバ120がアプリケーションデータ162をクライアントデバイス110に送るとき、リンクボンディングサービス140sは、アプリケーションデータをTCP/IPドライバ150sに渡し、イーサネットドライバ160dを通してネットワーク170に渡す。サーバ120は、同じパケットが経路180のすべてを介して並行してクライアントデバイス110に到着するように、すべての経路180にダイレクトされるパケット中で同じアプリケーションデータを冗長的に送る。したがって、サーバ120はイーサネットのみを使用してネットワーク170に接続し得るにもかかわらず、サーバ120はすべての経路180を介してパケットを送る。
【0034】
クライアントデバイス110上のドライバ160a、160b、および160cは、パケット162を受信し、パケット162をTCP/IPドライバ150cに渡し、TCP/IPドライバ150cは、パケット162をリンクボンディングクライアント140cに渡す。リンクボンディングクライアント140c中のセレクタ142が、サーバ構成要素132sからのパケットのソースとして、選択された経路144aを割り当てる。セレクタは、選択された経路144aとして指定されていないすべての経路からのパケット162dを廃棄し、選択された経路144aからのパケットをクライアント構成要素132cに渡す。一例では、セレクタ142は、サーバに関して上記で説明された同じ技法を使用して、選択された経路144a上で到着したパケットを識別する。
【0035】
一例では、センサー144は、経路180上でネットワーク速度を連続的にまたは繰り返し監視する。別の経路が、たとえば、速度、経済性などに関して、現在の選択された経路144aよりも良く機能する場合、リンクボンディングクライアント140cは、より良く機能する経路を新しい選択された経路144aとして選択し、新しい選択された経路144aをリンクボンディングサービス140sに通信し得る。特定の例では、Wi-FiおよびLTE経路のみが利用可能である。その場合、リンクボンディングサービス140sは、デフォルトでWi-Fiを選択し得る。Wi-Fi速度が、指定されたしきい値146を下回る場合、リンクボンディングクライアント140cは、新しい選択された経路144aとしてLTEを選定し得る。いくつかの例では、リンクボンディングクライアント140cは、現在のWi-Fi速度が現在のLTE速度を下回るときにのみ、LTEに切り替える。Wi-Fi速度が後で回復した場合、リンクボンディングクライアント140cは、選択された経路144aをWi-Fiに再割り当てし得る。選択された経路144aの割当ては、これにより、どのパケットがクライアント構成要素132cに渡され、どのパケットが廃棄されるかが決定されるという点で、重要(consequential)である。また、これにより、サーバ120上のリンクボンディングサービス140sがどのパケットをサーバ構成要素132sに渡し、どのパケットを廃棄するかが決定され得る。一例では、しかしながら、選択された経路144aの割当ては、クライアント110またはサーバ120によって送信される発信データに影響を及ぼさず、なぜなら、現在の選択された経路144aにかかわらず、送信がすべての経路180上で並行して行われるからである。
【0036】
説明された構成の場合、クライアントデバイス110は、経路180の速度を監視し、所与の時間に、選択された経路144aを選択する。たとえば、ユーザ102がWi-Fiデッドスポットに移動したので、Wi-Fiが突然弱くなった場合、動作は、LTEに(または何らかの他の経路に)シームレスにおよび透過的に切り替わる。ユーザ102がアクティブWi-Fiエリアに戻ったとき、動作は、Wi-Fiにシームレスにおよび透過的に切り替わる。ユーザ102は、切替えが生じたことを決して知る必要はなく、一般に、サービスの中断を経験しない。
【0037】
いくつかの例では、クライアント110は、セルラーデータ接続を一時的に停止することによって、電力および/またはコストを節約し得る。たとえば、センサー144によって測定されるWi-Fi信号強度および/または速度が一貫して高い場合、クライアント110は、LTE接続を一時的に閉じ、Wi-Fiのみの通信を進め得る。しかしながら、センサー144による速度テストは続き得、Wi-Fi速度または信号強度が減衰し始めた場合、クライアント110はLTE接続を再確立し得る。好ましくは、クライアント110は、Wi-Fi信号の完全な喪失より前にWi-FiからLTEへの切替えがシームレスに進むことができるように、Wi-Fi信号が使用不可能になる前にLTEを介して再接続する。いくつかの例では、GUI118は、ユーザ102が不要な経路をオフにすることを可能にする制御を含む。たとえば、ユーザ102が、強いWi-Fi信号をもつエリア中にいて、セッションの進行中に移動するつもりがない場合、ユーザ102は、GUI118を動作させてLTEをオフにし、それにより、LTE処理に関連付けられた電力消費を低減し、場合によってはコストを低減し得、これは、使用される分(minutes)に基づき得る。
【0038】
選択された経路144aの選定が様々なファクタに基づき得ることを諒解されたい。これらは、たとえば、速度、帯域幅、ラウンドトリップ時間、ネットワーク強度の変動性、(たとえば、ドロップされたパケットの数に基づいて測定された)干渉、およびコストを含み得る。そのようなファクタは、組合せ論理、加重和、ファジー論理、機械学習、ニューラルネットなどを使用することなど、任意の好適なやり方で組み合わせられ得る。選択された経路144aは、多くの場合、最も速い経路であり得るが、これは必要とされない。たとえば、良好なユーザエクスペリエンスを提供するのに依然として十分速い、より遅い経路が、使用するのに安価であり、および/または他の利点を有する場合、選択された経路144aとして選定され得る。
【0039】
本出願の実施形態のメイン動作モードは、複数のネットワーク経路を同時にアクティブに保つためのものであるが、そのような実施形態は、常にこのように働くことを必要とされるとは限らない。たとえば、Wi-Fiなどのネットワーク経路が、一貫して強い信号を提供することがわかり、自由に使用することができる場合、選択された経路144aとしてWi-Fiが選定され得、他のネットワーク経路上の動作が停止され得る。同様に、高電力消費を必要とするネットワーク経路が、クライアントデバイス110のバッテリー寿命を温存するために一時的に停止され得る。センサー144が、選択された経路144aの性能の低下を検出した場合、停止された経路180は復活し得る。
【0040】
さらに、単一の選択された経路144aが説明されたが、いくつかの実施形態は、クライアントデバイス110へのダウンロードのためのある経路、およびサーバ120へのダウンロードのための別の経路など、複数の選択された経路を可能にする。したがって、クライアントデバイス110中のセレクタ142はクライアントデバイスのための選択された経路を選定し、サーバ120中の同様のセレクタ(図示せず)はサーバ120のための選択された経路を選定する。選択された経路がクライアントおよびサーバについて異なることを可能にすることは、アップロード対ダウンロード性能の差を反映し、これは、多くのタイプのネットワーク経路に共通である。これらの状況では、選択された経路を選定するための基礎として使用される測定値は、ラウンドトリップ遅延ではなく単方向遅延に基づき得る。いくつかの変形態によれば、別個のコンピュータまたは他の設備が、クライアントデバイス110および/またはサーバ120に代わってネットワーク速度または帯域幅を監視し得る。
【0041】
図2は、クライアントデバイス110上にアプリケーションプログラムをインストールするための例示的な構成を示す。ここで、サーバ120はダウンロード可能アプリケーションパッケージ210を記憶し、ダウンロード可能アプリケーションパッケージ210は、たとえば、圧縮されたアーカイブとして提供され得、クライアント構成要素132cと、マイクロVPNクライアント134cと、リンクボンディングクライアント140cとを実装するためのコードを含む。アプリケーションプログラム132をインストールするために、クライアントデバイス110は、たとえば、ウェブサイトを介してサーバ120に接触し、ネットワーク170上でアプリケーションパッケージ210をクライアントデバイス110にダウンロードする。クライアントデバイス110は、次いで、アプリケーションパッケージ210を開き、任意の圧縮されたコンテンツを解凍し、構成要素をインストールする。すべての3つの構成要素132c、134c、および140cは単一のパッケージ210中で一緒に提供されるので、クライアントデバイス110は、単一のダウンロードを介して、アプリケーションプログラム132の暗号化されたマルチパス動作をサポートするためのすべての必要な構成要素をインストールすることが可能である。
【0042】
図3は、品質属性に基づいてWi-FiおよびLTEなどの2つの接続経路間でシームレスにおよび透過的に切り替えるための例示的な方法300を示し、品質属性は、それ自体が、速度、帯域幅、ネットワーク一貫性、および/またはコスト、すなわち、選択された経路144aを選定するための上記で説明されたファクタのいずれかに基づき得る。方法300は2つの接続経路180に焦点を当てるが、方法300は、任意の数のそのような経路に拡張され得る。また、図示された行為は特定の順序で示されているが、この順序は変動し得、いくつかの行為は同時に実施され得る。
【0043】
310において、たとえば、ユーザ102がクライアント構成要素132cをローンチした結果として、アプリケーションクライアント132cとアプリケーションサーバ132sとの間に通信セッションが確立される。一例では、通信セッションは、マイクロVPNクライアント134cとマイクロVPNサーバ134sとの間に確立されたトンネル134を介して行われる。それぞれのネットワーク接続は各接続経路180を介して構成され、クライアント構成要素132cとサーバ構成要素132sとの間のすべての通信は、すべての経路180について、トンネル134を通過する。リンクボンディングクライアント140cは、現在選択されている経路144aを識別し、続いて、この選択された経路144aを介して到着したデータ(たとえば、パケット)をクライアント構成要素132cに渡す。したがって、リンクボンディングクライアント140cは、選択された経路144aを、すべての着信アプリケーションデータ162のための唯一のソースとして使用し、他の経路を介して到着したデータ162を廃棄する。一例では、センサー144が何らかのネットワーク測定を行う前に、リンクボンディングサービス140cは、最初の選択された経路144aとしてのWi-Fiにデフォルト設定され、Wi-Fi信号が検出されなかった場合のみ別の経路に切り替える。
【0044】
320において、リンクボンディングクライアント140c中のセンサー144は、たとえば、ピングコマンド(ping command)、帯域幅測定、および/または他の手法を使用することによって、すべての経路180上の接続を測定し、各接続経路180についての品質属性(QA:quality attribute)を生成する。いくつかの例では、品質属性は、それぞれの経路の速度のみに基づく。他の例では、品質属性は、たとえば、速度、帯域幅、コスト、および/または一貫性を含み得る、ファクタの任意の組合せに基づく。
【0045】
330において、リンクボンディングクライアント140cは、Wi-Fi経路(接続1)の品質属性がしきい値146(しきい値1)を下回ったかどうかを決定する。しきい値は、たとえば、あらかじめ決定されるかまたは動的に確立され得る。リンクボンディングクライアント140cは、Wi-Fiの品質属性がLTE(接続2)の品質属性よりも小さいかどうかをも決定し得る。リンクボンディングクライアント140cは、代替として、または任意の組合せで、これらの決定を適用し得る。
【0046】
Wi-Fiの品質属性がしきい値1を下回り、および/またはLTEの品質属性を下回った場合、動作は340に進み、その後、リンクボンディングクライアント140cは、続いて、LTEを介して到着したデータを処理し、Wi-Fiを介して到着したデータを廃棄する。リンクボンディングクライアント140cは、リンクボンディングサービス140sに送られる、属性のこの変化を通信し得、リンクボンディングサービス140sも、LTE経路を介した到着データを処理し、Wi-Fiを介して到着したデータを廃棄し得る。次いで、動作は320に戻り、その後、品質属性の生成と決定とが繰り返される。
【0047】
330において、Wi-Fiについての品質属性がしきい値1を下回らず、および/またはLTEの品質属性を下回らなかった場合、動作は代わりに350に進み、その後、リンクボンディングクライアント140cは、Wi-Fi経路(接続1)の品質属性が第2のしきい値(好ましくはしきい値1よりもわずかに高いしきい値2)を超え、および/またはLTEの品質属性を超えるかどうかを決定する。上記を超えない場合、動作は320に戻り、他の場合、動作は360に進み、その後、リンクボンディングクライアント140cは、続いて、Wi-Fiを介して到着したデータを処理し、LTEを介して到着したデータを廃棄する。前述のように、リンクボンディングクライアント140cは、リンクボンディングサーバ140sにこの変化を通信し得、リンクボンディングサーバ140sも、Wi-Fi経路を介して到着したデータを処理し、LTEを介して到着したデータを廃棄し得る。次いで、動作は320に戻り、上記で説明された行為が繰り返される。しきい値2は、たとえば、あらかじめ決定されるかまたは動的に確立され得る。
【0048】
動作は、アプリケーションプログラム132が稼働し続ける限り、無期限にこのようにして進み得る。しきい値2をしきい値1よりもわずかに高くすることについての論拠は、品質属性がしきい値1に近いとき、動作がソース間でチャタリングする(chatter)のを防ぐことである。これが問題にならない場合、しきい値2は、単にしきい値1に設定され得る(すなわち、両方について同じしきい値が使用され得る)。しきい値1としきい値2とが任意の好適なやり方で確立され得ることを諒解されたい。たとえば、しきい値1としきい値2とは、ユーザアクティビティおよび/またはアプリケーション132の性質に基づいて動的に確立され得る。たとえば、しきい値は、より低いレベルのネットワーク性能がユーザエクスペリエンスを損なわないように、アプリケーション132が比較的小さいデータを交換する場合、より低い値に設定され得る。逆に、しきい値は、より帯域幅集約なアプリケーションが稼働されている場合、より高い値に設定され得る。
【0049】
図4a~
図4dは、アプリケーションプログラム132のクライアント構成要素132sによってレンダリングされるような、およびクライアントデバイス110のディスプレイ116上で閲覧されるような、GUI118の部分を表す様々なスクリーンショット118a~118dを示す。図示されたGUIのレイアウトを一般的なスマートフォンアプリのレイアウトとして認識するかもしれないが、GUI118a~118dは、スマートフォンアプリケーションに限定されない。たとえば、スクリーンショット118a~118dは、ラップトップコンピュータ上にまたは任意の他のコンピューティングデバイス上に表示され得る。ラップトップは、Wi-Fi接続を有し得、Bluetoothを介して、LTE接続を有するスマートフォンにテザリングされ得る(テザリングは、PAN- パーソナルエリアネットワークを介したスマートフォンのデータプランの共有を可能にする、多くのスマートフォンのよく知られている特徴である)。
【0050】
図4aに示されているように、GUI118aは、現在アクティブな接続経路180のためのアイコン410を表示する。Wi-FiおよびBluetooth PANのためのアイコン410が詳細に図示されており、これは、クライアントデバイス110がWi-FiとLTEの両方を介してインターネットに接続されることを示す(LTE接続はBluetoothテザリング(Bluetooth-tethered)スマートフォンを介して達成される)。GUI118は、たとえば、リンクボンディングクライアント140c中のセンサー144によって測定される、両方の経路についてのネットワーク速度(メガビット毎秒単位)(Wi-Fiについての0.6MbpsおよびLTEについての0.1Mbps)を示す速度インジケータ420を表示する。
【0051】
図4b~
図4dは、
図4bでは、回復されたパケットについての統計値430(5.9MB、経路を切り替えることによって回復されたパケットの数)および守られた接続についての統計値430(2、接続喪失が経路を切り替えることによって回避された回数)を含む、追加情報を示す。
図4cは、使用内訳440(各経路からどのくらいのデータが使用されたか)を示し、
図4dは、レイテンシと喪失の両方に関して、接続品質450を示す。いくつかの実施形態では、
図4a~
図4dは、より大きいGUI118の部分を表す。
【0052】
図5は、全体的GUI118が上記で説明されたGUI部分118a~118dを含む、このような実施形態の一例を示す。たとえば、ユーザ102は、全体的GUI118上の矢印510をクリックすることによって、GUI部分118a~118dを呼び出し得る。全体的GUI118は、この例ではワークスペースフレームワークアプリケーションである、アプリケーションプログラム132のためのユーザインターフェースを提供する。ワークスペースフレームワークアプリケーションは、たとえば、ウェブブラウザまたは他のコンテナにおいて、SaaSアプリケーションとして稼働し、ユーザ102が、ユーザ102の登録されたサブアプリケーションのいずれかを選択し、稼働することを可能にする。登録されたサブアプリケーションはすべて、マイクロVPNクライアント134cおよびリンクボンディングクライアント140cを介してすべてが通信するように、アプリケーションプログラム132のコンテキスト内で稼働する。したがって、図示された構成は、複数の経路180を使用するマイクロVPN上でのSaaSアプリケーションの動作を一意にサポートし、複数の経路180は、デッドスポットの存在下でさえ、高品質接続を維持するために、シームレスに切り替えられる。
【0053】
図6~
図8は、環境100に関して行われ得る例示的な方法600、700、および800を示す。方法600は、たとえば、クライアントデバイス110のメモリ130c中に常駐し、プロセッサ114cのセットによって稼働される、
図1に関して説明されたソフトウェア構成体によって実施され得る。方法700は、たとえば、サーバ120のメモリ130s中に常駐し、プロセッサ114sのセットによって稼働される、ソフトウェア構成体によって実施され得る。方法800は、クライアントデバイス110とサーバ120の両方中に常駐するソフトウェア構成体によって実施され得る。方法600、700、および800の様々な行為は、任意の好適なやり方で順序付けられ得る。したがって、図示された順序とは異なる順序で行為が実施される実施形態が構築され得、これは、いくつかの行為を同時に実施することを含み得る。
【0054】
図6では、方法600は、クライアントデバイス110によって実施され得る。行為610において、クライアントデバイス110は、単一のアプリケーション132のためにクライアントデバイス110とサーバ120との間で情報を伝達するように構成された暗号化されたチャネル134によって使用される複数のネットワーク経路180を監視する。
【0055】
620において、クライアントデバイス110は、複数のネットワーク経路180の各々を介してサーバ120から単一のアプリケーション132のデータ162を受信する。複数のネットワーク経路の各々から受信されたデータ162は、同じデータである。
【0056】
630において、クライアントデバイス110は、クライアントデバイス110上のクライアント構成要素132cのためのデータ162のソースとして、複数のネットワーク経路180のうちの第1のネットワーク経路144aを選択する。たとえば、リンクボンディングクライアント140c中のセレクタ142は、選択された経路144a上で到着したパケットを渡し、他の経路上で到着したパケットを廃棄する。
【0057】
640において、クライアントデバイス110は、第1のネットワーク経路のネットワーク連続性の低減によって引き起こされるデータの受信の遅延を防ぐように、複数のネットワーク経路180を監視することに少なくとも部分的に基づいて、クライアント構成要素132cのためのデータのソースを、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整する。
【0058】
次に
図7を参照すると、方法700は、サーバ120によって実施され得る。710において、サーバ120は、単一のアプリケーション132のためにサーバ120とクライアントデバイス110との間に提供された暗号化されたチャネル134上で、クライアントデバイス100からアプリケーションデータを受信する。アプリケーションデータ162は、複数のネットワーク経路180を介して並行して受信され、複数のネットワーク経路はすべて、同じアプリケーションデータを伝達する。
【0059】
720において、サーバは、サーバ120上で稼働しているサーバ構成要素132sのためのアプリケーションデータ162のソースとして、複数のネットワーク経路180のうちの第1のネットワーク経路を割り当てる。
【0060】
730において、サーバ120は、サーバ構成要素132sのためのアプリケーションデータ162のソースを、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整する。調整することは、クライアントデバイス110から受信されたインジケータに少なくとも部分的に基づき、第1のネットワーク経路のネットワーク連続性の低減によって引き起こされるデータの受信の遅延を防ぐように働く。
【0061】
次に
図8を参照すると、方法800は、クライアントデバイス110とサーバ120の両方によって実施され得る。810において、暗号化されたチャネル134が、クライアントデバイス110とサーバ120との間に確立される。暗号化されたチャネル134は、単一のアプリケーション132のための暗号化された通信を伝達するように構成される。暗号化されたチャネル134は、クライアントデバイス110の指示の下で、サーバ120の指示の下で、またはクライアントデバイス110とサーバ120との間の協調に基づいて、確立され得る。
【0062】
820において、クライアントデバイス110とサーバ120との間の暗号化されたチャネル134によって使用される複数のネットワーク経路180が監視される。たとえば、クライアント110、サーバ120、および/または何らかの別個のコンピュータもしくは設備が、複数のネットワーク経路180の各々に関係するネットワーク速度、帯域幅、および/または他のファクタを測定する。
【0063】
830において、サーバ120は、複数のネットワーク経路180の各々を介して、暗号化されたチャネル134上で、単一のアプリケーション132のアプリケーションデータ162のセットをクライアントデバイス110に送信する。複数のネットワーク経路180の各々は、アプリケーションデータ162の同じセットを伝達する。クライアントデバイス110が、データを送る側であるとき、クライアントデバイス110は、複数のネットワーク経路180の各々を介して、暗号化されたチャネル134上で、単一のアプリケーション132のアプリケーションデータ162のセットをサーバ120に送信し、複数のネットワーク経路180の各々がアプリケーションデータ162の同じセットを伝達する。
【0064】
840において、クライアントデバイス110は、クライアントデバイス110上で稼働しているクライアント構成要素132cのためのアプリケーションデータ162のソースとして、複数のネットワーク経路180のうちの第1のネットワーク経路を選択する。サーバ120が、データを受信する側であるとき、サーバ120は、サーバ120上で稼働しているサーバ構成要素132sのためのアプリケーションデータ162のソースとして、複数のネットワーク経路180のうちの第1のネットワーク経路を選択する。
【0065】
840において、クライアントデバイス110は、第1の経路のネットワーク連続性の低減によって引き起こされる、クライアントデバイスとサーバとの間でデータを通信することの遅延を防ぐように、複数のネットワーク経路を監視することに少なくとも部分的に基づいて、データのソースを、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整する。サーバ120がデータを受信しているとき、サーバ120は、第1の経路のネットワーク連続性の低減によって引き起こされる、サーバとクライアントデバイスとの間でデータを通信することの遅延を防ぐように、複数のネットワーク経路を監視することに少なくとも部分的に基づいて、データのソースを、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整する。
【0066】
次に
図9を参照すると、本開示の様々な態様が実装され得る非限定的なネットワーク環境901が、コンピューティング環境901内に設置される、1つまたは複数のクライアントマシン902A~902Nと、1つまたは複数のリモートマシン906A~906Nと、1つまたは複数のネットワーク904、904’と、1つまたは複数の器具908とを含む。クライアントマシン902A~902Nは、ネットワーク904、904’を介してリモートマシン906A~906Nと通信する。
【0067】
いくつかの実施形態では、(クライアントデバイス110と同様であり得る)クライアントマシン902A~902Nは、中間器具908を介して(サーバ120と同様であり得る)リモートマシン906A~906Nと通信する。示されている器具908は、ネットワーク904とネットワーク904’との間に配置され、ネットワークインターフェースまたはゲートウェイと呼ばれることもある。いくつかの実施形態では、器具908はアプリケーション配信コントローラ(ADC)として動作して、データセンターもしくはクラウドにおいて展開されるか、または様々なクライアントデバイスにわたってサービスとしてのソフトウェア(SaaS)として配信される、ビジネスアプリケーションおよび他のデータへのアクセスをクライアントに提供し、ならびに/あるいは、負荷分散などの他の機能を提供し得る。いくつかの実施形態では、複数の器具908が使用され得、(1つまたは複数の)器具908は、ネットワーク904および/または904’の一部として展開され得る。
【0068】
クライアントマシン902A~902Nは、一般に、クライアントマシン902、ローカルマシン902、クライアント902、クライアントノード902、クライアントコンピュータ902、クライアントデバイス902、コンピューティングデバイス902、エンドポイント902、またはエンドポイントノード902と呼ばれることがある。リモートマシン906A~906Nは、一般に、サーバ906またはサーバファーム906と呼ばれることがある。いくつかの実施形態では、クライアントデバイス902は、サーバ906によって提供されるリソースへのアクセスを求めるクライアントノードと、他のクライアントデバイス902A~902Nのためのホストされたリソースへのアクセスを提供するサーバ906との両方として機能する能力を有し得る。ネットワーク904、904’は、一般に、ネットワーク904と呼ばれることがある。ネットワーク904は、ワイヤードネットワークとワイヤレスネットワークとの任意の組合せで構成され得る。
【0069】
サーバ906は、たとえば、ファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、器具、ネットワーク器具、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、展開サーバ、セキュアソケットレイヤ仮想プライベートネットワーク(SSL VPN)サーバ、ファイアウォール、ウェブサーバ、アクティブディレクトリを実行するサーバ、クラウドサーバ、または、ファイアウォール機能、アプリケーション機能、もしくは負荷分散機能を提供するアプリケーション加速プログラムを実行するサーバなど、任意のサーバタイプであり得る。
【0070】
サーバ906は、ソフトウェア、プログラム、実行可能な命令、仮想マシン、ハイパーバイザ、ウェブブラウザ、ウェブベースクライアント、クライアントサーバアプリケーション、シンクライアントコンピューティングクライアント、ActiveXコントロール、Javaアプレット、ソフトIP電話のようなボイスオーバーインターネットプロトコル(VoIP)通信に関係するソフトウェア、ビデオおよび/もしくはオーディオをストリーミングするためのアプリケーション、リアルタイムデータ通信を容易にするためのアプリケーション、HTTPクライアント、FTPクライアント、Oscarクライアント、Telnetクライアント、または実行可能な命令の任意の他のセットのうちのいずれか1つであり得るアプリケーションを実行するか、動作させるか、またはさもなければ提供し得る。
【0071】
いくつかの実施形態では、サーバ906は、シンクライアントまたはリモートディスプレイプロトコルを使用して、サーバ906上で実行しているアプリケーションによって作り出されたディスプレイ出力をキャプチャし、アプリケーションディスプレイ出力をクライアントデバイス902に送信する、リモートプレゼンテーションサービスプログラムまたは他のプログラムを実行し得る。
【0072】
また他の実施形態では、サーバ906は、クライアントデバイス902のユーザにコンピューティング環境へのアクセスを提供する仮想マシンを実行し得る。クライアントデバイス902は仮想マシンであり得る。仮想マシンは、たとえば、ハイパーバイザ、仮想マシンマネージャ(VMM)、またはサーバ906内の任意の他のハードウェア仮想化技術によって管理され得る。
【0073】
いくつかの実施形態では、ネットワーク904は、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、1次パブリックネットワーク904、および1次プライベートネットワーク904であり得る。追加の実施形態は、様々なプロトコルを使用してモバイルデバイスの間で通信する携帯電話網のネットワーク904を含み得る。ワイヤレスローカルエリアネットワーク(WLAN)内の短距離通信の場合、プロトコルは、802.11、Bluetooth、およびニアフィールド通信(NFC)を含み得る。
【0074】
図10は、クライアントデバイス902、器具908および/またはサーバ906の一実施形態を実践するために有用なコンピューティングデバイス900のブロック図を示す。コンピューティングデバイス900は、1つまたは複数のプロセッサ903と、揮発性メモリ922(たとえば、ランダムアクセスメモリ(RAM))と、不揮発性メモリ928と、ユーザインターフェース(UI)923と、1つまたは複数の通信インターフェース918と、通信バス950とを備える。
【0075】
不揮発性メモリ928は、1つまたは複数のハードディスクドライブ(HDD)または他の磁気もしくは光記憶媒体、フラッシュドライブもしくは他のソリッドステート記憶媒体などの1つまたは複数のソリッドステートドライブ(SSD)、1つまたは複数のハイブリッド磁気およびソリッドステートドライブ、ならびに/あるいは、クラウドストレージなどの1つまたは複数の仮想ストレージボリューム、あるいはそのような物理ストレージボリュームおよび仮想ストレージボリュームの組合せ、あるいはこれらのアレイを含み得る。
【0076】
ユーザインターフェース923は、グラフィカルユーザインターフェース(GUI)924(たとえば、タッチスクリーン、ディスプレイなど)と、1つまたは複数の入出力(I/O)デバイス926(たとえば、マウス、キーボード、マイクロフォン、1つまたは複数のスピーカー、1つまたは複数のカメラ、1つまたは複数の生体スキャナ、1つまたは複数の環境センサー、および1つまたは複数の加速度計など)とを備え得る。
【0077】
不揮発性メモリ928は、たとえば、オペレーティングシステム915および/またはアプリケーション916のコンピュータ命令が揮発性メモリ922の中から(1つまたは複数の)プロセッサ903によって実行されるように、オペレーティングシステム915と、1つまたは複数のアプリケーション916と、データ917とを記憶する。いくつかの実施形態では、揮発性メモリ922は、メインメモリよりも速い応答時間を与え得る1つまたは複数のタイプのRAMおよび/またはキャッシュメモリを含み得る。データは、GUI924の入力デバイスを使用して入力されるか、または(1つまたは複数の)I/Oデバイス926から受信され得る。コンピュータ900の様々な要素は、通信バス950を介して通信し得る。
【0078】
示されているコンピューティングデバイス900は、例示的なクライアントデバイスまたはサーバとして示されているにすぎず、本明細書で説明されるように動作することが可能な好適なハードウェアおよび/またはソフトウェアを有し得る任意のタイプのマシンまたはマシンのセットをもつ任意のコンピューティングまたは処理環境によって実装され得る。
【0079】
プロセッサ903は、システムの機能を実施するために、コンピュータプログラムなどの1つまたは複数の実行可能な命令を実行するために1つまたは複数のプログラマブルプロセッサによって実装され得る。本明細書で使用される「プロセッサ」という用語は、機能、動作、または動作のシーケンスを実施する回路を表す。機能、動作、または動作のシーケンスは、回路にハードコーディングされるか、または、メモリデバイス中に保持され、回路によって実行される命令としてソフトコーディングされ得る。プロセッサは、デジタル値を使用しておよび/またはアナログ信号を使用して、機能、動作、または動作のシーケンスを実施し得る。
【0080】
いくつかの実施形態では、プロセッサは、関連メモリとともに、1つまたは複数の特定用途向け集積回路(ASIC)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、マイクロコントローラ、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブル論理アレイ(PLA)、マルチコアプロセッサ、または汎用コンピュータにおいて具現され得る。
【0081】
プロセッサ903は、アナログ、デジタルまたは混合信号であり得る。いくつかの実施形態では、プロセッサ903は、1つまたは複数の物理プロセッサ、または1つまたは複数の仮想(たとえば、遠隔に位置するまたはクラウド)プロセッサであり得る。複数のプロセッサコアを含むプロセッサおよび/または複数のプロセッサが、命令の並列同時実行のための、または2つ以上のデータに対する1つの命令の並列同時実行のための、機能を提供し得る。
【0082】
通信インターフェース918は、コンピューティングデバイス100が、セルラー接続を含む様々なワイヤードおよび/またはワイヤレス接続を通して、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、パーソナルエリアネットワーク(PAN)、またはインターネットなどのコンピュータネットワークにアクセスすることを可能にするための、1つまたは複数のインターフェースを含み得る。
【0083】
説明される実施形態では、コンピューティングデバイス900は、クライアントデバイスのユーザに代わってアプリケーションを実行し得る。たとえば、コンピューティングデバイス900は、ハイパーバイザによって管理される1つまたは複数の仮想マシンを実行し得る。各仮想マシンは、ホストされたデスクトップセッションなど、アプリケーションがユーザまたはクライアントデバイスに代わって実行する実行セッションを提供し得る。コンピューティングデバイス900は、ホストされたデスクトップ環境を提供するための端末サービスセッションをも実行し得る。コンピューティングデバイス900は、1つまたは複数のアプリケーションと、1つまたは複数のデスクトップアプリケーションと、1つまたは複数のアプリケーションが実行し得る1つまたは複数のデスクトップセッションとを含む、リモートコンピューティング環境へのアクセスを提供し得る。
【0084】
ネットワーク170上での通信を管理するための改善された技法が説明された。この技法は、複数のネットワーク経路180を同時に維持し、すべてのネットワーク経路180を通して同じデータ162を冗長的に交換し、受信機(たとえば、セレクタ142)がネットワーク経路180のうちの1つをデータのソースとして選択することを可能にする。Wi-Fiなど、第1の、現在選択されているネットワーク経路が弱くなった場合、受信機142は、データのソースをLTEなどの第2のネットワーク経路に自動的におよびシームレスに切り替えるが、第1のネットワーク経路は動作可能のままである。第2の(LTE)ネットワーク経路がすでにオンであり、すでにデータを伝達しているとすれば、遷移はほぼ瞬時である。非一貫性ネットワークをもつ環境中で稼働している高度対話型アプリケーションでさえ、概してダウンタイムなしで完全に機能的なままであり得るので、ユーザエクスペリエンスは大幅に改善される。それにより、信頼性およびユーザエクスペリエンスが向上する。
【0085】
以下の段落は、本開示による方法、システム、およびコンピュータ可読媒体の例示的な実装形態について説明する。
【0086】
いくつかの例によれば、方法は、クライアントデバイスによって、クライアントデバイスとサーバとの間でデータを伝達する複数のネットワーク経路を監視することであって、データがサーバ上の単一のアプリケーションに関連付けられることを含む。本方法は、クライアントデバイスによって、複数のネットワーク経路の各々を介してサーバからデータを受信することであって、複数のネットワーク経路の各々から受信されたデータが同じであることをさらに含む。本方法は、クライアントデバイスによって、クライアントデバイスへのサーバ上の単一のアプリケーションの配信を可能にするために、データを受信するための、複数のネットワーク経路のうちの第1のネットワーク経路を選択することと、クライアントデバイスによって、第1のネットワーク経路のネットワーク連続性の低減によって引き起こされる、サーバからのデータの受信の遅延を防ぐように、複数のネットワーク経路を監視することに少なくとも部分的に基づいて、選択されたネットワーク経路を、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整することと、をまたさらに含む。
【0087】
方法は、上記で説明されたように実施され得、選択されたネットワーク経路を第1のネットワーク経路から第2のネットワーク経路に調整することが、第1のネットワーク経路と第2のネットワーク経路の両方が動作可能であり、データを伝達している間に実施されることをさらに伴い得る。
【0088】
別の方法は、上記の段落のいずれかにおいて説明されたように実施され得、第1のネットワーク経路と第2のネットワーク経路の両方を介してサーバにアプリケーションデータのセットを送信することであって、第1のネットワーク経路と第2のネットワーク経路とが並行してアプリケーションデータの同じセットを伝達することをさらに伴い得る。
【0089】
方法は、上記の段落のいずれかにおいて説明されたように実施され得、選択されたネットワーク経路を第1のネットワーク経路から第2のネットワーク経路に調整した後に、第1のネットワーク経路を介して到着した、単一のアプリケーションのデータを廃棄することをさらに含み得る。
【0090】
方法は、上記の段落のいずれかにおいて説明されたように実施され得、単一のアプリケーションのデータはパケット中でサーバから到着し、各パケットがシーケンス識別子を有し、第1のネットワーク経路を介して到着した、単一のアプリケーションのデータを廃棄することが、第1のネットワーク経路を介して到着したパケットを、このパケットのシーケンス識別子が、第2のネットワーク経路を介して到着したパケットのシーケンス識別子に一致することに基づいて、冗長として識別することを含む。
【0091】
方法は、上記の段落のいずれかにおいて説明されたように実施され得、第1のネットワーク経路はWi-Fiネットワーク経路であり、第2のネットワーク経路はセルラーネットワーク経路である。いくつかの変形態によれば、セルラーネットワーク経路はLTE(ロングタームエボリューション)ネットワーク経路である。
【0092】
方法は、上記の段落のいずれかにおいて説明されたように実施され得、第1のネットワーク経路の速度を測定することをさらに含み得、選択されたネットワーク経路を第1のネットワーク経路から第2のネットワーク経路に調整することが、第1のネットワーク経路の速度がしきい値を下回ることに少なくとも部分的に基づく。
【0093】
方法は、上記の段落のいずれかにおいて説明されたように実施され得、第2のネットワーク経路の速度を測定することと、第2のネットワーク経路の速度を測定することとをさらに含み得、選択されたネットワーク経路を第1のネットワーク経路から第2のネットワーク経路に調整することが、第2のネットワーク経路の速度が第1のネットワーク経路の速度を超えることに基づく。
【0094】
方法は、上記の段落のいずれかにおいて説明されたように実施され得、第1のネットワーク経路の速度を測定することが、第1のネットワーク経路を介したクライアントデバイスとサーバとの間のラウンドトリップ送信時間を測定することを含む。
【0095】
方法は、上記の段落のいずれかにおいて説明されたように実施され得、サーバからアプリケーションパッケージをダウンロードすることであって、アプリケーションパッケージが、(i)アプリケーションのクライアント構成要素と、(ii)マイクロVPNクライアント構成要素と、(iii)リンクボンディングクライアント構成要素とを含む、ダウンロードすることをさらに含み得る。マイクロVPNクライアント構成要素は、アプリケーションのクライアント構成要素とサーバ上のアプリケーションとの間の暗号化されたチャネルを確立するように構成される。リンクボンディングクライアント構成要素は、(i)複数のネットワーク経路上で並行してアプリケーションのクライアント構成要素からデータを送信することと、(ii)監視することに基づいて、アプリケーションのクライアント構成要素について、選択されたネットワーク経路を調整することとを行うように構成される。
【0096】
方法は、上記の段落のいずれかにおいて説明されたように実施され得、暗号化されたチャネルは、情報を単一のアプリケーションについて伝達するが、クライアントデバイス上で稼働している他のアプリケーションについて伝達しない、仮想プライベートネットワーク(VPN)により実装される。
【0097】
いくつかの例によれば、クライアントデバイスは、メモリに結合されたプロセッサのセットを有する制御回路を備える。制御回路は、(a)クライアントデバイスとサーバとの間でデータを伝達する複数のネットワーク経路を監視することであって、データがサーバ上の単一のアプリケーションに関連付けられることと、(b)複数のネットワーク経路の各々を介してサーバからデータを受信することであって、複数のネットワーク経路の各々から受信されたデータが同じであることと、(c)クライアントデバイスへのサーバ上の単一のアプリケーションの配信を可能にするために、データを受信するための、複数のネットワーク経路のうちの第1のネットワーク経路を選択することと、(d)第1のネットワーク経路のネットワーク連続性の低減によって引き起こされる、サーバからのデータの受信の遅延を防ぐように、複数のネットワーク経路を監視することに少なくとも部分的に基づいて、選択されたネットワーク経路を、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整することとを行うように構成される。
【0098】
クライアントデバイスは、上記の段落のいずれかにおいて説明されたように提供され得、制御回路は、第1のネットワーク経路と第2のネットワーク経路の両方が動作可能であり、データを伝達している間に、選択されたネットワーク経路を第1のネットワーク経路から第2のネットワーク経路に調整するようにさらに構成される。
【0099】
クライアントデバイスは、上記の段落のいずれかにおいて説明されたように提供され得、制御回路が、第1のネットワーク経路と第2のネットワーク経路の両方を介してサーバにアプリケーションデータのセットを送信することであって、第1のネットワーク経路と第2のネットワーク経路とが並行してアプリケーションデータの同じセットを伝達することを行うようにさらに構成される。
【0100】
クライアントデバイスは、上記の段落のいずれかにおいて説明されたように提供され得、制御回路が、選択されたネットワーク経路を第1のネットワーク経路から第2のネットワーク経路に調整した後に、第1のネットワーク経路を介して到着した、単一のアプリケーションのデータを廃棄するようにさらに構成される。
【0101】
クライアントデバイスは、上記の段落のいずれかにおいて説明されたように提供され得、単一のアプリケーションのデータはパケット中で到着し、各パケットがシーケンス識別子を有し、制御回路が、第1のネットワーク経路を介して到着したパケットを、このパケットのシーケンス識別子が、第2のネットワーク経路を介して到着したパケットのシーケンス識別子に一致することに基づいて、冗長として識別することによって、第1のネットワーク経路を介して到着した、単一のアプリケーションのデータを廃棄するようにさらに構成される。
【0102】
クライアントデバイスは、上記の段落のいずれかにおいて説明されたように提供され得、制御回路が、第1のネットワーク経路の速度を測定することと、第1のネットワーク経路の速度がしきい値を下回ることに少なくとも部分的に基づいて、選択されたネットワーク経路を第1のネットワーク経路から第2のネットワーク経路に調整することとを行うようにさらに構成される。
【0103】
クライアントデバイスは、上記の段落のいずれかにおいて説明されたように提供され得、制御回路が、第2のネットワーク経路の速度を測定することと、第2のネットワーク経路の速度が第1のネットワーク経路の速度を超えることに基づいて、選択されたネットワーク経路を第1のネットワーク経路から第2のネットワーク経路に調整することとを行うようにさらに構成される。
【0104】
クライアントデバイスは、上記の段落のいずれかにおいて説明されたように提供され得、第1のネットワーク経路の速度を測定するように構成された制御回路は、第1のネットワーク経路を介したクライアントデバイスとサーバとの間のラウンドトリップ送信時間を測定するようにさらに構成される。
【0105】
クライアントデバイスは、上記の段落のいずれかにおいて説明されたように提供され得、制御回路は、サーバからアプリケーションパッケージをダウンロードすることであって、アプリケーションパッケージが、(i)アプリケーションのクライアント構成要素と、(ii)マイクロVPNクライアント構成要素と、(iii)リンクボンディングクライアント構成要素と、を含み、マイクロVPNクライアント構成要素が、アプリケーションのクライアント構成要素とサーバ上のアプリケーションとの間の暗号化されたチャネルを確立するように構成され、リンクボンディングクライアント構成要素が、(i)複数のネットワーク経路上で並行してアプリケーションのクライアント構成要素からデータを送信することと、(ii)監視することに基づいて、アプリケーションのクライアント構成要素について、選択されたネットワーク経路を調整することとを行うように構成された、ダウンロードすることを行うようにさらに構成される。
【0106】
いくつかの例では、コンピュータプログラム製品は、命令を有する非一時的コンピュータ可読媒体のセットを備え、命令は、クライアントデバイスの制御回路によって実行されたとき、クライアントデバイスに、(a)クライアントデバイスとサーバとの間でデータを伝達する複数のネットワーク経路を監視することであって、データがサーバ上の単一のアプリケーションに関連付けられることと、(b)複数のネットワーク経路の各々を介してサーバからデータを受信することであって、複数のネットワーク経路の各々から受信されたデータが同じであることと、(c)クライアントデバイスへのサーバ上の単一のアプリケーションの配信を可能にするために、データを受信するための、複数のネットワーク経路のうちの第1のネットワーク経路を選択することと、(d)第1のネットワーク経路のネットワーク連続性の低減によって引き起こされる、サーバからのデータの受信の遅延を防ぐように、複数のネットワーク経路を監視することに少なくとも部分的に基づいて、選択されたネットワーク経路を、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整することと、を含む方法を実施させる。
【0107】
いくつかの例では、サーバ方法は、(a)サーバによって、単一のアプリケーションについてクライアントデバイスからアプリケーションデータを受信することであって、アプリケーションデータが複数のネットワーク経路を介して並行して受信され、複数のネットワーク経路がすべて同じアプリケーションデータを伝達することと、(b)サーバ上で稼働しているサーバ構成要素のためのアプリケーションデータのソースとして複数のネットワーク経路のうちの第1のネットワーク経路を割り当てることと、(c)第1のネットワーク経路のネットワーク連続性の低減によって引き起こされるデータの受信の遅延を防ぐように、クライアントデバイスから受信されたインジケータに少なくとも部分的に基づいて、サーバ構成要素のためのアプリケーションデータのソースを、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整することとを含む。
【0108】
サーバ方法は、上記の段落において説明されたように実施され得、第1のネットワーク経路と第2のネットワーク経路の両方が動作可能であり、アプリケーションデータを伝達している間にアプリケーションデータのソースを第1のネットワーク経路から第2のネットワーク経路に調整することをさらに含み得る。
【0109】
サーバ方法は、上記の段落のいずれかにおいて説明されたように実施され得、第1のネットワーク経路と第2のネットワーク経路の両方を介してクライアントデバイスにアプリケーションデータのセットを送信することであって、第1のネットワーク経路と第2のネットワーク経路とが並行してアプリケーションデータの同じセットを伝達する、送信することをさらに含み得る。
【0110】
サーバ方法は、上記の段落のいずれかにおいて説明されたように実施され得、アプリケーションデータのソースを第1のネットワーク経路から第2のネットワーク経路に調整した後に、第1のネットワーク経路を介して到着したアプリケーションデータを廃棄することをさらに含み得る。
【0111】
サーバ方法は、上記の段落のいずれかにおいて説明されたように実施され得、クライアントデバイスからのアプリケーションデータはパケット中で到着し、各パケットがシーケンス識別子を有し、第1のネットワーク経路を介して到着したアプリケーションデータを廃棄することは、第1のネットワーク経路を介して到着したパケットを、このパケットのシーケンス識別子が、第2のネットワーク経路を介して到着したパケットのシーケンス識別子に一致することに基づいて、冗長として識別することを含む。
【0112】
サーバ方法は、上記の段落のいずれかにおいて説明されたように実施され得、第1のネットワーク経路はWi-Fiネットワーク経路であり、第2のネットワーク経路はセルラーネットワーク経路である。いくつかの変形態によれば、セルラーネットワーク経路はLTE(ロングタームエボリューション)ネットワーク経路である。
【0113】
サーバ方法は、上記の段落のいずれかにおいて説明されたように実施され得、アプリケーションデータのソースを第1のネットワーク経路から第2のネットワーク経路に調整することが、第1のネットワーク経路の速度がしきい値を下回ることに少なくとも部分的に基づくことをさらに含み得る。
【0114】
サーバ方法は、上記の段落のいずれかにおいて説明されたように実施され得、アプリケーションデータのソースを第1のネットワーク経路から第2のネットワーク経路に調整することが、第2のネットワーク経路の速度が第1のネットワーク経路の速度を超えることに基づくことをさらに含み得る。
【0115】
サーバ方法は、上記の段落のいずれかにおいて説明されたように実施され得、アプリケーションデータのソースを第1のネットワーク経路から第2のネットワーク経路に調整することが、クライアントデバイスから受信されたインジケータが第2のネットワーク経路を現在選択されているネットワーク経路として識別することに基づくことをさらに含み得る。
【0116】
サーバ方法は、上記の段落のいずれかにおいて説明されたように実施され得、アプリケーションパッケージをクライアントデバイスに送信することであって、アプリケーションパッケージが、(i)単一のアプリケーションのクライアント構成要素と、(ii)マイクロVPNクライアント構成要素と、(iii)リンクボンディングクライアント構成要素と、を含み、マイクロVPNクライアント構成要素が、サーバ上の単一のアプリケーションとアプリケーションのクライアント構成要素との間の暗号化されたチャネルを確立するように構成され、リンクボンディングクライアント構成要素が、(i)複数のネットワーク経路上で並行して単一のアプリケーションのクライアント構成要素からデータを送信することと、(ii)単一のアプリケーションのクライアント構成要素のためのアプリケーションデータのソースを調整することとを行うように構成された、送信することをさらに含み得る。
【0117】
サーバ方法は、上記の段落のいずれかにおいて説明されたように実施され得、暗号化されたチャネルは、情報を単一のアプリケーションについて伝達するが、他のアプリケーションについて伝達しない、仮想プライベートネットワーク(VPN)により実装される。
【0118】
いくつかの例では、サーバは、メモリに結合されたプロセッサのセットを有するサーバ制御回路を備える。サーバ制御回路は、(a)単一のアプリケーションについてクライアントデバイスからアプリケーションデータを受信することであって、アプリケーションデータが複数のネットワーク経路を介して並行して受信され、複数のネットワーク経路がすべて同じアプリケーションデータを伝達することと、(b)サーバ上で稼働しているサーバ構成要素のためのアプリケーションデータのソースとして複数のネットワーク経路のうちの第1のネットワーク経路を割り当てることと、(c)第1のネットワーク経路のネットワーク連続性の低減によって引き起こされるデータの受信の遅延を防ぐように、クライアントデバイスから受信されたインジケータに少なくとも部分的に基づいて、サーバ構成要素のためのアプリケーションデータのソースを、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整することと、を行うように構成される。
【0119】
サーバは、上記の段落において説明されたように提供され得、サーバ制御回路は、第1のネットワーク経路と第2のネットワーク経路の両方が動作可能であり、アプリケーションデータを伝達している間にアプリケーションデータのソースを第1のネットワーク経路から第2のネットワーク経路に調整するように構成される。
【0120】
サーバは、上記の段落のいずれかにおいて説明されたように提供され得、サーバ制御回路は、第1のネットワーク経路と第2のネットワーク経路の両方を介してクライアントデバイスにアプリケーションデータのセットを送信することであって、第1のネットワーク経路と第2のネットワーク経路とが並行してアプリケーションデータの同じセットを伝達する、送信することを行うようにさらに構成される。
【0121】
サーバは、上記の段落のいずれかにおいて説明されたように提供され得、サーバ制御回路は、アプリケーションデータのソースを第1のネットワーク経路から第2のネットワーク経路に調整した後に、第1のネットワーク経路を介して到着したアプリケーションデータを廃棄するようにさらに構成される。
【0122】
サーバは、上記の段落のいずれかにおいて説明されたように提供され得、クライアントデバイスからのアプリケーションデータはパケット中で到着し、各パケットがシーケンス識別子を有し、第1のネットワーク経路を介して到着したアプリケーションデータを廃棄するように構成されたサーバ制御回路は、第1のネットワーク経路を介して到着したパケットを、このパケットのシーケンス識別子が、第2のネットワーク経路を介して到着したパケットのシーケンス識別子に一致することに基づいて、冗長として識別するようにさらに構成される。
【0123】
サーバは、上記の段落のいずれかにおいて説明されたように提供され得、サーバ制御回路が、第1のネットワーク経路の速度がしきい値を下回ることに少なくとも部分的に基づいて、アプリケーションデータのソースを第1のネットワーク経路から第2のネットワーク経路に調整するように構成される。
【0124】
サーバは、上記の段落のいずれかにおいて説明されたように提供され得、サーバ制御回路が、第2のネットワーク経路の速度が第1のネットワーク経路の速度を超えることに基づいて、データのソースを第1のネットワーク経路から第2のネットワーク経路に調整するようにさらに構成される。
【0125】
サーバは、上記の段落のいずれかにおいて説明されたように提供され得、サーバ制御回路が、クライアントデバイスから受信されたインジケータが第2のネットワーク経路を現在選択されているネットワーク経路として識別することに基づいて、アプリケーションデータのソースを第1のネットワーク経路から第2のネットワーク経路に調整するようにさらに構成される。
【0126】
サーバは、上記の段落のいずれかにおいて説明されたように提供され得、サーバ制御回路は、アプリケーションパッケージをクライアントデバイスに送信することであって、アプリケーションパッケージが、(i)単一のアプリケーションのクライアント構成要素と、(ii)マイクロVPNクライアント構成要素と、(iii)リンクボンディングクライアント構成要素と、を含み、マイクロVPNクライアント構成要素が、サーバ上の単一のアプリケーションとアプリケーションのクライアント構成要素との間の暗号化されたチャネルを確立するように構成され、リンクボンディングクライアント構成要素が、(i)複数のネットワーク経路上で並行して単一のアプリケーションのクライアント構成要素からデータを送信することと、(ii)単一のアプリケーションのクライアント構成要素のためのアプリケーションデータのソースを調整することとを行うように構成されることを行うようにさらに構成される。
【0127】
いくつかの例によれば、コンピュータプログラム製品は、命令を有する非一時的コンピュータ可読媒体のセットを備え、命令は、サーバのサーバ制御回路によって実行されたとき、サーバに、(a)単一のアプリケーションについてクライアントデバイスからアプリケーションデータを受信することであって、アプリケーションデータが複数のネットワーク経路を介して並行して受信され、複数のネットワーク経路がすべて同じアプリケーションデータを伝達することと、(b)サーバ上で稼働しているサーバ構成要素のためのアプリケーションデータのソースとして複数のネットワーク経路のうちの第1のネットワーク経路を割り当てることと、(c)第1のネットワーク経路のネットワーク連続性の低減によって引き起こされるデータの受信の遅延を防ぐように、クライアントデバイスから受信されたインジケータに少なくとも部分的に基づいて、サーバ構成要素のためのアプリケーションデータのソースを、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整することと、を含む方法を実施させる。
【0128】
いくつかの例では、システム方法は、(a)クライアントデバイスとサーバとの間の暗号化されたチャネルを確立することであって、暗号化されたチャネルが、単一のアプリケーションについての暗号化された通信を伝達するように構成されることと、(b)クライアントデバイスとサーバとの間の暗号化されたチャネルによって使用される複数のネットワーク経路を監視することと、(c)サーバによって、複数のネットワーク経路の各々を介して、暗号化されたチャネル上でクライアントデバイスに単一のアプリケーションのアプリケーションデータのセットを送信することであって、複数のネットワーク経路の各々がアプリケーションデータの同じセットを伝達することと、(d)クライアントデバイスによって、クライアントデバイス上で稼働しているクライアント構成要素のためのアプリケーションデータのソースとして複数のネットワーク経路のうちの第1のネットワーク経路を選択することと、(e)クライアントデバイスによって、第1の経路のネットワーク連続性の低減によって引き起こされる、クライアントデバイスとサーバとの間でデータを通信することの遅延を防ぐように、複数のネットワーク経路を監視することに少なくとも部分的に基づいて、データのソースを、第1のネットワーク経路から複数のネットワーク経路のうちの第2のネットワーク経路に調整することと、を含む。
【0129】
いくつかの実施形態について説明したが、多数の代替実施形態または変形形態が行われ得る。たとえば、図示された実施形態は単一のクライアント110と単一のサーバ120との間の通信を提供するが、本出願の実施形態は2つのマシンに限定されない。たとえば、複数のクライアントが、共同的セッションにおいて同時にアプリケーションプログラム132を稼働し、単一のサーバ120を介して、または互いに直接通信し得、各クライアントが他のクライアントの各々に対するサーバとして働く。この構成では、各参加しているマシンは、他の参加しているマシンと同様に構成され得る。たとえば、各参加しているマシン、または参加しているマシンの任意のサブセットは、様々な経路170に接続し得、そのような経路のいずれかを介してアプリケーションデータを受信および送信し得る。上記の一般性を制限することなく、開示される技術の特に好都合な用途は、ウェブ会議の領域におけるものである。たとえば、ユーザは、スマートフォン上で、自宅のWi-Fiに接続されたウェブ会議を開始し、車で職場に向かう途中でLTEを使用して間断なく会議を続け、次いで、ユーザが職場に到着するとオフィスにおいてWi-Fiを使用して再び続けることができる。
【0130】
本出願の特定の実施形態に関して特徴が図示および説明されたが、そのような特徴は、開示される実施形態およびそれらの変形態のいずれにも含まれ得、本明細書によって含まれる。したがって、任意の実施形態に関して開示される特徴が任意の他の実施形態に含まれることを理解されたい。
【0131】
さらに、改善、または改善の一部は、磁気ディスク、磁気テープ、コンパクトディスク、DVD、光ディスク、フラッシュドライブ、ソリッドステートドライブ、SD(セキュアデジタル)チップまたはデバイス、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、1つまたは複数の非一時的コンピュータ可読記憶媒体を備えるコンピュータプログラム製品として具現され得る。任意の数のコンピュータ可読媒体が使用され得る。媒体は、1つまたは複数のコンピュータまたは他のプロセッサ上で実行されたとき、本明細書で説明される1つまたは複数のプロセスを実施する命令で符号化され得る。そのような媒体は、製造品またはマシンと見なされ得、あるマシンから別のマシンにトランスポート可能であり得る。
【0132】
本明細書全体にわたって使用される「備える、含む(comprising)」、「含む、備える(including)」、「含んでいる(containing)」、および「有する(having)」という単語は、オープンエンド様式で、何かのいくつかの項目、ステップ、要素、または態様を記載するものである。また、本明細書で使用される「セット」という単語は、そうでないことが具体的に述べられていない限り、何かのうちの1つまたは複数を意味する。これは、「~のセット(set of)」という句に単数形の目的語が続くのか複数形の目的語が続くのかにかかわらず、および「~のセット」という句が単数形の動詞と結合されるのか複数形の動詞と結合されるのかにかかわらず、当てはまる。さらに、「第1の」、「第2の」、「第3の」などの序数表現は、本明細書では形容詞として使用され得るが、そのような序数表現は、識別の目的で使用されており、特に示されていない限り、何らかの順序付けまたはシーケンスを暗示するものではない。したがって、たとえば、「第2の」イベントは、「第1のイベント」の前に行われることも後に行われることもあり、あるいは、第1のイベントがこれまでに生じていない場合でも行われることがある。さらに、特定の要素、特徴、または行為を「第1の」そのような要素、特徴、または行為であるとして本明細書で識別することは、「第2の」または他のそのような要素、特徴または行為もなければならないことを必要とすると解釈されるべきでない。むしろ、「第1の」項目は唯一の項目であり得る。いくつかの実施形態が本明細書で開示されるが、これらは、例として提供されるにすぎず、限定するものと解釈されるべきでないことを理解されたい。
【0133】
したがって、当業者は、形態および詳細の様々な変更が、以下の特許請求の範囲から逸脱することなく、本明細書で開示される実施形態に対して行われ得ることを理解されよう。