(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-02-01
(54)【発明の名称】仮想コンピューティングセッション接続を提供して、仮想配信エージェントの順序付きリストに基づいてリダイレクトするコンピュータシステムおよび方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20220125BHJP
G06F 9/455 20060101ALI20220125BHJP
【FI】
G06F9/50 150Z
G06F9/455 150
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021527223
(86)(22)【出願日】2019-10-16
(85)【翻訳文提出日】2021-07-16
(86)【国際出願番号】 US2019056436
(87)【国際公開番号】W WO2020106384
(87)【国際公開日】2020-05-28
(32)【優先日】2018-11-19
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】508045099
【氏名又は名称】シトリックス・システムズ・インコーポレイテッド
【氏名又は名称原語表記】Citrix Systems,Inc.
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】レオ シー.シングルトン ザ フォース
(72)【発明者】
【氏名】ゲオルギー モンチロフ
(57)【要約】
コンピュータシステムは、少なくとも1つのクライアントのコンピューティングデバイス、およびそれぞれが少なくとも1つのクライアントのコンピューティングデバイスに対して仮想コンピューティングセッションを提供するよう構成される複数のホストコンピューティングデバイスを含んでよい。それぞれのホストコンピューティングデバイスは、仮想配信エージェント(VDA)を有してよく、それをもって関連付けられる少なくとも1つのクライアントのコンピューティングデバイスを仮想コンピューティングセッションに接続するよう構成される。少なくとも1つのクライアントのコンピューティングデバイスは、VDAの順序付きリストに従って、VDAから仮想コンピューティングセッションを要求するよう構成されてよい。VDAは、既存の仮想コンピューティングセッションが低次のVDAに関連付けられるホストコンピューティングデバイスを用いて既にアクティブになっている場合に、少なくとも1つのクライアントのコンピューティングデバイスから順序付きリストにおける低次のVDAに新しいセッションの要求をリダイレクトするよう構成されてよい。
【特許請求の範囲】
【請求項1】
コンピュータシステムであって、
少なくとも1つのクライアントのコンピューティングデバイスと、
それぞれが前記少なくとも1つのクライアントのコンピューティングデバイスに対して、仮想コンピューティングセッションを提供するよう構成される複数のホストコンピューティングデバイスであって、それぞれのホストコンピューティングデバイスに関連付けられる仮想配信エージェント(VDA)を有しているそれぞれのホストコンピューティングデバイスは、前記少なくとも1つのクライアントのコンピューティングデバイスを前記仮想コンピューティングセッションに接続するよう構成される、複数のホストコンピューティングデバイスとを備え、
前記少なくとも1つのクライアントのコンピューティングデバイスは、前記VDAの順序付きリストに従って、前記VDAから仮想コンピューティングセッションを要求するよう構成され、
前記VDAは、既存の仮想コンピューティングセッションが低次のVDAに関連付けられる前記ホストコンピューティングデバイスで既にアクティブになっている場合、前記少なくとも1つのクライアントのコンピューティングデバイスから前記順序付きリストにおける前記低次のVDAへの新しいセッションの要求をリダイレクトするよう構成される、
コンピュータシステム。
【請求項2】
前記少なくとも1つのクライアントのコンピューティングデバイスは、複数のクライアントのコンピューティングデバイスを含み、それぞれが、それぞれのクライアントのコンピューティングデバイスに関連付けられるユーザーアカウントを有し、同一のユーザーアカウントを有するクライアントのコンピューティングデバイスは、前記VDAの同一の順序付きリストを共有する、
請求項1に記載のコンピュータシステム。
【請求項3】
前記少なくとも1つのクライアントのコンピューティングデバイスは、前記順序付きリストにおける最高次から最低次までの順に前記VDAへの仮想コンピューティングセッションを連続して要求するよう構成される、
請求項1に記載のコンピュータシステム。
【請求項4】
それぞれのVDAは、前記少なくとも1つのクライアントのコンピューティングデバイスを仮想コンピューティングセッションに接続すると、前記順序付きリストにおける高次のVDAに通知するよう構成される、
請求項1に記載のコンピュータシステム。
【請求項5】
それぞれのVDAは、前記少なくとも1つのクライアントのコンピューティングデバイスとの仮想コンピューティングセッションを終了すると、前記順序付きリストにおける高次のVDAに通知するようさらに構成される、
請求項4に記載のコンピュータシステム。
【請求項6】
前記少なくとも1つのクライアントのコンピューティングデバイスから仮想コンピューティングセッションに対する要求を受信し、前記VDAと通信し、前記順序付きリストに従って、前記少なくとも1つのクライアントのコンピューティングデバイスのために仮想コンピューティングセッションを確立するよう構成されるゲートウェイコンピューティングデバイスをさらに備える、
請求項1に記載のコンピュータシステム。
【請求項7】
前記少なくとも1つのクライアントのコンピューティングデバイスは、前記順序付きリストを前記ゲートウェイコンピューティングデバイスに提供するよう構成される、
請求項6に記載のコンピュータシステム。
【請求項8】
前記ゲートウェイコンピューティングデバイスは、既存の仮想コンピューティングセッションが低次のVDAに関連付けられる前記ホストコンピューティングデバイスを用いて既にアクティブになっており、且つ前記リダイレクトを前記少なくとも1つのクライアントのコンピューティングデバイスに通知しない場合に、前記少なくとも1つのクライアントのコンピューティングデバイスから前記順序付きリストにおける前記低次のVDAへの新しいセッションの要求をリダイレクトするようさらに構成される、
請求項6に記載のコンピュータシステム。
【請求項9】
前記VDAと協働して、前記ホストコンピューティングデバイスと前記少なくとも1つのクライアントのコンピューティングデバイスとの間のアクティブな仮想コンピューティングセッションを追跡するブローカーコンピューティングデバイスをさらに備える、
請求項1に記載のコンピュータシステム。
【請求項10】
前記VDAと協働して、接続先のVDAが仮想コンピューティングセッションを用いて前記少なくとも1つのコンピューティングデバイスに接続することが可能でない場合に、前記少なくとも1つのクライアントのコンピューティングデバイスから前記順序付きリストの内側または外側の別のVDAへの新しいセッションの要求をリダイレクトするブローカーコンピューティングデバイスをさらに備える、
請求項1に記載のコンピュータシステム。
【請求項11】
前記仮想コンピューティングセッションは、仮想デスクトップセッションおよび仮想アプリケーションセッションのうちの少なくとも1つを含む、
請求項1に記載のコンピュータシステム。
【請求項12】
少なくとも1つのクライアントのコンピューティングデバイスを、複数のホストコンピューティングデバイスとともに関連付けられる仮想配信エージェント(VDA)を有する複数のホストコンピューティングデバイスによって提供される仮想コンピューティングセッションに接続するための方法であって、
前記VDAの順序付きリストに従って、仮想コンピューティングセッションに対して前記VDAの第1のVDAにおいて、少なくとも1つのクライアントのコンピューティングデバイスから新しいセッションの要求を受信するステップと、
前記第1のVDAにおいて、既存の仮想コンピューティングセッションが第2のVDAに関連付けられる前記ホストコンピューティングデバイスを用いて既にアクティブである場合、前記順序付きリストにおける低次の前記第2のVDAへの前記新しいセッションの要求をリダイレクトするステップと
を備える方法。
【請求項13】
前記少なくとも1つのクライアントのコンピューティングデバイスは、複数のクライアントのコンピューティングデバイスを含み、それぞれが、それぞれのクライアントのコンピューティングデバイスに関連付けられるユーザーアカウントを有し、同一のユーザーアカウントを有するクライアントのコンピューティングデバイスは、前記VDAの同一の順序付きリストを共有する、
請求項12に記載の方法。
【請求項14】
所与のVDAにおいて、前記少なくとも1つのクライアントのコンピューティングデバイスを仮想コンピューティングセッションに接続すると、前記順序付きリストにおける高次のVDAに通知するステップをさらに備える、
請求項12に記載の方法。
【請求項15】
前記少なくとも1つのクライアントのコンピューティングデバイスは、ゲートウェイコンピューティングデバイスを介して前記VDAへの新しいセッションの要求を送信し、前記順序付きリストを前記少なくとも1つのクライアントのコンピューティングデバイスから前記ゲートウェイコンピューティングデバイスに前記新しいセッションの要求と共に送信するステップをさらに含む、
請求項12に記載の方法。
【請求項16】
ホストコンピューティングデバイスに関連付けられる仮想配信エージェント(VDA)のための非一時的なコンピュータ可読媒体であって、前記ホストコンピューティングデバイスは、少なくとも1つのクライアントのコンピューティングデバイスに対して仮想コンピューティングセッションを提供するよう構成され、前記非一時的なコンピュータ可読媒体は、前記VDAに、
前記少なくとも1つのクライアントのコンピューティングデバイスに関連付けられる複数の異なるVDAの順序付きリストに従って、前記少なくとも1つのクライアントのコンピューティングデバイスから仮想コンピューティングセッションに対する新しいセッションの要求を受信するステップと、
既存の仮想コンピューティングセッションが前記順序付きリストにおける低次のVDAに関連付けられているホストコンピューティングデバイスを用いて既にアクティブである場合に、前記順序付きリストにおける前記低次のVDAへの前記新しいセッションの要求をリダイレクトするステップとを含むステップを実行させるためのコンピュータ実行可能な命令を有する、
非一時的なコンピュータ可読媒体。
【請求項17】
前記少なくとも1つのクライアントのコンピューティングデバイスは、複数のクライアントのコンピューティングデバイスを含み、それぞれが、それぞれのクライアントのコンピューティングデバイスに関連付けられるユーザーアカウントを有し、同一のユーザーアカウントを有するクライアントのコンピューティングデバイスは、前記VDAの同一の順序付きリストを共有する、
請求項16に記載の非一時的なコンピュータ可読媒体。
【請求項18】
前記少なくとも1つのクライアントのコンピューティングデバイスを仮想コンピューティングセッションに接続すると、前記VDAに前記順序付けリストにおける高次の他のVDAに通知させるためのコンピュータ実行可能命令をさらに有する、
請求項16に記載の非一時的なコンピュータ可読媒体。
【請求項19】
前記VDAにゲートウェイコンピューティングデバイスと通信させて、前記少なくとも1つのクライアントのコンピューティングデバイスから前記新しいセッションの要求を受信して、前記順序付きリストにおける前記低次のVDAへの前記新しいセッションの要求をリダイレクトするためのコンピュータ実行可能命令をさらに有する、
請求項16に記載の非一時的なコンピュータ可読媒体。
【請求項20】
前記仮想コンピューティングセッションは、仮想デスクトップセッションおよび仮想アプリケーションセッションのうちの少なくとも1つを含む、
請求項16に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明のさまざまな例示的な実施形態は、仮想コンピューティングセッション接続を提供して、仮想配信エージェントの順序付きリストに基づいてリダイレクトするコンピュータシステムおよび方法に関する。
【背景技術】
【0002】
従来、パーソナルコンピュータは、オペレーティングシステム、アプリケーション、およびユーザー設定の組み合わせを含み、これらはそれぞれ、所有者または管理者によって継続的に個別に管理される。しかしながら、多くの組織は、現在、デスクトップ仮想を用いて、それらのユーザーの変化するニーズに対応するより柔軟なオプションを提供している。デスクトップ仮想において、ユーザーのコンピューティング環境(例えば、オペレーティングシステム、アプリケーション、および/またはユーザー設定)は、ユーザーの物理的なコンピューティングデバイス(例えば、スマートフォン、ラップトップ、デスクトップコンピュータ)から切り離されることができる。クライアントサーバー技術を用いることで、「仮想化されたデスクトップ」は、クライアントのコンピューティングデバイスのローカルストレージの中よりもむしろ、リモートサーバーの中に格納され、且つリモートサーバーによって管理されることができる。
【0003】
デスクトップ仮想システムは、いくつかの異なるタイプがある。例示として、仮想デスクトップインフラストラクチャ(VDI)は、サーバー上に存在する仮想マシンの中でユーザーデスクトップを実行するプロセスを参照する。VDIおよび他のサーバーベースのデスクトップ仮想システムは、集中型管理およびセキュリティーを可能とする一方で、ユーザーごとにパーソナライズされたデスクトップを提供することができる。このようなシステムのサーバーは、ソフトウェアコンポーネントと同様に、仮想デスクトップ画像およびシステム構成情報に対するストレージを含むことができ、仮想デスクトップを提供し、ユーザーをそれらに相互接続することを可能とする。例えば、VDIサーバーは、多様な仮想マシンを作成および維持するために1つまたは複数のハイパーバイザ(仮想マシンマネージャー)、ハイパーバイザを管理するためにソフトウェア、接続ブローカー、および仮想デスクトップをプロビジョニングおよび管理するためにソフトウェアを含んでよい。
【0004】
デスクトップ仮想システムは、単一の仮想サーバー、またはサーバーグリッドとして相互接続されたサーバーの組み合わせを用いて実装されてよい。例えば、クラウドコンピューティング環境またはクラウドシステムは、コンピューティングリソース(例えば、デスクトップ仮想サーバー)、ストレージディスク、ネットワーキングハードウェア、およびさらなるコンピューティングデバイスがクラウドシステムに対する管理および顧客ポータルを提供するとともに、仮想デスクトップのプロビジョニングに用いられることができる他の物理的リソースのプールを含んでよい。
【発明の概要】
【0005】
コンピュータシステムは、少なくとも1つのクライアントのコンピューティングデバイス、およびそれぞれが少なくとも1つのクライアントのコンピューティングデバイスに対して仮想コンピューティングセッションを提供するよう構成される複数のホストコンピューティングデバイスを含んでよい。それぞれのホストコンピューティングデバイスは、少なくとも1つのクライアントのコンピューティングデバイスを仮想コンピューティングセッションに接続するよう構成され、それぞれのホストコンピューティングデバイスに関連付けられる仮想配信エージェント(VDA)を有することができる。少なくとも1つのクライアントのコンピューティングデバイスは、VDAの順序付きリストに従って、VDAから仮想コンピューティングセッションを要求するよう構成されてよい。VDAは、既存の仮想コンピューティングセッションが、低次のVDAに関連付けられるホストコンピューティングデバイスを用いて既にアクティブになっている場合に、少なくとも1つのクライアントのコンピューティングデバイスから順序付きリストにおける低次のVDAへの新しいセッションの要求をリダイレクトするよう構成されてよい。
【0006】
例示的な実装において、少なくとも1つのクライアントのコンピューティングデバイスは、複数のクライアントのコンピューティングデバイスを含んでよく、それぞれが、それぞれのクライアントのコンピューティングデバイスに関連付けられるそれぞれのユーザーアカウントを有して、クライアントのコンピューティングデバイスとともに関連付けられる同一のユーザーアカウントを有するクライアントのコンピューティングデバイスは、VDAの同一の順序付きリストを共有してよい。さらに、少なくとも1つのクライアントのコンピューティングデバイスは、順序付きリストにおけるVDAから最高次から最低次まで仮想コンピューティングセッションを連続して要求するよう構成されてよい。
【0007】
さらに、それぞれのVDAは、少なくとも1つのクライアントのコンピューティングデバイスを仮想コンピューティングセッションに接続すると、順序付きリストにおける高次のVDAに通知するよう構成されてよい。さらに、それぞれのVDAは、また、少なくとも1つのクライアントのコンピューティングデバイスとの仮想コンピューティングセッションを終了すると、順序付きリストにおける高次のVDAに通知するよう構成されてよい。
【0008】
例示的な実施形態において、システムは、少なくとも1つのクライアントのコンピューティングデバイスから仮想コンピューティングセッションに対する要求を受信するよう構成されるゲートウェイコンピューティングデバイスをさらに含んでよく、VDAと通信して、順序付きリストに従って、少なくとも1つのクライアントのコンピューティングデバイスのために仮想コンピューティングセッションを確立する。さらに、少なくとも1つのクライアントのコンピューティングデバイスは、順序付きリストをゲートウェイコンピューティングデバイスに提供するよう構成されてよい。さらに、ゲートウェイコンピューティングデバイスは、また、既存の仮想コンピューティングセッションが低次のVDAに関連付けられるホストコンピューティングデバイスを用いて既にアクティブになっており、且つリダイレクトを少なくとも1つのクライアントのコンピューティングデバイスに通知しない場合に、少なくとも1つのクライアントのコンピューティングデバイスから順序付きリストにおける低次のVDAへの新しいセッションの要求をリダイレクトするよう構成されてよい。
【0009】
別の例示的な実装において、システムは、VDAと協働するブローカーコンピューティングデバイスをさらに含んでよく、ホストコンピューティングデバイスと少なくとも1つのクライアントのコンピューティングデバイスとの間のアクティブな仮想コンピューティングセッションを追跡する。さらに別の例示において、ブローカーコンピューティングデバイスは、接続先のVDAが仮想コンピューティングセッションを用いて少なくとも1つのコンピューティングデバイスに接続することが可能でない場合に、少なくとも1つのクライアントのコンピューティングデバイスから順序付きリストの内側または外側の別のVDAへの新しいセッションの要求をリダイレクトしてよい。例示として、仮想コンピューティングセッションは、仮想デスクトップセッションおよび仮想アプリケーションセッションのうちの少なくとも1つを含んでよい。
【0010】
関連する方法は、少なくとも1つのクライアントのコンピューティングデバイスを、複数のホストコンピューティングデバイスとともに関連付けられるVDAを有する複数のホストコンピューティングデバイスによって提供される仮想コンピューティングセッションに接続する。この方法は、VDAの順序付きリストに従って、仮想コンピューティングセッションに対してVDAの第1のVDAにおいて、少なくとも1つのクライアントのコンピューティングデバイスから新しいセッションの要求を受信することを含んでよい。この方法は、第1のVDAにおいて、既存の仮想コンピューティングセッションが第2のVDAに関連付けられるホストコンピューティングデバイスを用いて既にアクティブである場合に、順序付きリストにおける低次の第2のVDAへの新しいセッションの要求をリダイレクトすることをさらに含んでよい。
【0011】
関連する非一時的なコンピュータ可読媒体は、ホストコンピューティングデバイスに関連付けられる仮想配信エージェント(VDA)のためであってよい。ホストコンピューティングデバイスは、少なくとも1つのクライアントのコンピューティングデバイスに対して仮想コンピューティングセッションを提供するよう構成されてよい。非一時的なコンピュータ可読媒体は、少なくとも1つのクライアントのコンピューティングデバイスに関連付けられる複数の異なるVDAの順序付きリストに従って、少なくとも1つのクライアントのコンピューティングデバイスから仮想コンピューティングセッションに対する新しいセッションの要求を受信し、既存の仮想コンピューティングセッションが順序付きリストにおける低次のVDAに関連付けられるホストコンピューティングデバイスを用いて既にアクティブになっている場合に、順序付きリストにおける低次のVDAへの新しいセッションの要求をリダイレクトすることを含むステップをVDAに実行させるコンピュータ実行可能命令を有してよい。
【図面の簡単な説明】
【0012】
【
図1】本開示のさまざまな態様が実施されることができるコンピューティングデバイスのネットワーク環境のブロック図である。
【
図2】
図1に図示されるクライアントマシンまたはリモートマシンの実施形態を実施するために有用なコンピューティングデバイスのブロック図である。
【
図3】仮想配信エージェント(VDA)の順序付きリストに基づいて、仮想コンピューティングセッション接続およびリダイレクトを提供する例示的な実装に従ったコンピューティングシステムのブロック図である。
【
図4】
図3のシステムの第1の例示的な実施形態に従って、仮想コンピューティングセッション接続の態様を図示する一連のブロック図である。
【
図5】
図3のシステムの第1の例示的な実施形態に従って、仮想コンピューティングセッション接続の態様を図示する一連のブロック図である。
【
図6】
図3のシステムの第1の例示的な実施形態に従って、仮想コンピューティングセッション接続の態様を図示する一連のブロック図である。
【
図7A】
図3のシステムのゲートウェイコンピューティングデバイスおよびブローカーを利用する第2の例示的な実施形態に従った仮想コンピューティングセッション接続の態様を図示するブロック図である。
【
図7B】
図3のシステムのゲートウェイコンピューティングデバイスおよびブローカーを利用する第2の例示的な実施形態に従った仮想コンピューティングセッション接続の態様を図示するブロック図である。
【
図8】
図3のシステムのゲートウェイコンピューティングデバイスおよびブローカーを利用する第2の例示的な実施形態に従った仮想コンピューティングセッション接続の態様を図示するブロック図である。
【
図9】
図3のシステムのゲートウェイコンピューティングデバイスおよびブローカーを利用する第2の例示的な実施形態に従った仮想コンピューティングセッション接続の態様を図示するブロック図である。
【
図10】
図3のシステムに関連付けられる例示的な方法の態様を図示するフロー図である。
【発明を実施するための形態】
【0013】
例示的な実施形態が示されている添付の図面を参照して、本説明がされている。しかしながら、多くの異なる実施形態が用いられてよく、それ故に、本説明は、本明細書で説明される具体的な実施形態に限定されると解釈されるべきではない。同様の番号は、全体を通して同様の要素を参照して、プライム表記は、異なる実施形態において同様の要素を示すために用いられてよい。
【0014】
以下の開示を読むことで、当業者によって理解されることとなるように、本明細書で説明されるさまざまな態様は、デバイス、方法、またはコンピュータプログラム製品(例えば、言及される動作またはステップを実行するために、コンピュータ実行可能命令を有する非一時的なコンピュータ可読媒体)として具現化されることができる。したがって、これらの態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはソフトウェアとハードウェアの態様を組み合わせた実施形態の形態をとることができる。
【0015】
さらに、このような態様は、ストレージ媒体内またはストレージ媒体上に具現化された、コンピュータ可読プログラムコードまたは命令を有する1つまたは複数のコンピュータ可読ストレージ媒体によって格納されるコンピュータプログラム製品の形態をとることができる。ハードディスク、CD-ROM、光学ストレージデバイス、磁気ストレージデバイス、および/またはそれらの任意の組み合わせを含む、任意の適切なコンピュータ可読ストレージ媒体が利用されてよい。
【0016】
最初に
図1を参照すると、1つまたは複数のクライアントマシン102A~102N、1つまたは複数のリモートマシン106A~106N、1つまたは複数のネットワーク104、104’、およびコンピューティング環境101内にインストールされる1つまたは複数のアプライアンス108を含む本開示のさまざまな態様の非限定的なネットワーク環境101が実装されてよい。クライアントマシン102A~102Nは、ネットワーク104、104’を介してリモートマシン106A~106Nと通信する。
【0017】
ある実施形態において、クライアントマシン102A~102Nは、中間アプライアンス108を介してリモートマシン106A~106Nと通信する。説明されるアプライアンス108は、ネットワーク104、104’との間に配置されて、ネットワークインターフェースまたはゲートウェイと称されることもある。ある実施形態において、アプライアンス108は、アプリケーション配信コントローラ(ADC)として動作することができ、クライアントに、ビジネスアプリケーションへのアクセスおよびデータセンター、クラウドにおいてデプロイされる、またはクライアントのデバイスの範囲にわたるサービス(SaaS)としてのソフトウェアとして配信される他のデータを提供し、および/または負荷バランシングなどの他の機能を提供する。ある実施形態において、多様なアプライアンス108が用いられてよく、アプライアンス108は、ネットワーク104および/または104’の一部としてデプロイされてよい。
【0018】
クライアントマシン102A~102Nは、一般に、クライアントマシン102、ローカルマシン102、クライアント102、クライアントノード102、クライアントコンピュータ102、クライアントのデバイス102、コンピューティングデバイス102、エンドポイント102、またはエンドポイントノード102と称されてよい。リモートマシン106A~106Nは、一般に、サーバー106またはサーバーファーム106と称される。ある実施形態において、クライアントのデバイス102は、サーバー106によって提供されるリソースへのアクセスを探し求めるクライアントノードと他のクライアントのデバイス102A~102Nのためにホストされたリソースへのアクセスを提供するサーバー106との両方として機能する能力を有することができる。ネットワーク104、104’は、一般に、ネットワーク104と称されてよい。ネットワーク104は、有線および無線ネットワークの任意の組み合わせで構成されてよい。
【0019】
サーバー106は、例えば、ファイルサーバー、アプリケーションサーバー、ウェブサーバー、プロキシサーバー、アプライアンス、ネットワークアプライアンス、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバー、仮想サーバー、デプロイメントサーバー、セキュアソケットレイヤー仮想プライベートネットワーク(SSL VPN)サーバー、ファイアウォール、ウェブサーバー、アクティブディレクトリを実行しているサーバー、クラウドサーバー、または、ファイアウォール機能、アプリケーション機能、または負荷バランシング機能を提供するアプリケーションアクセラレーションプログラムを実行するサーバーのような任意のサーバータイプであってよい。
【0020】
サーバー106は、以下の、ソフトウェア、プログラム、実行可能な命令、仮想マシン、ハイパーバイザ、ウェブブラウザー、ウェブベースのクライアント、クライアントサーバーアプリケーション、シンクライアントコンピューティングクライアント、ActiveXコントロール、Javaアプレット、ソフトIP電話のようなボイスオーバーインターネットプロトコル(VoIP)通信に関連するソフトウェア、映像および/または音声をストリーミングするためのアプリケーション、リアルタイムデータ通信を促進にするためのアプリケーション、HTTPクライアント、FTPクライアント、Oscarクライアント、Telnetクライアント、または任意の他の実行可能命令のセットのうちのいずれか1つであり得るアプリケーションを実行、動作、またはそうでなければ提供してよい。
【0021】
ある実施形態において、サーバー106は、シンクライアントまたはリモートディスプレイプロトコルを用いて、サーバー106上で実行されるアプリケーションによって生成されるディスプレイ出力を取得して、アプリケーションディスプレイ出力をクライアントのデバイス102に伝送するリモートプレゼンテーションサービスプログラムまたは他のプログラムを実行することができる。
【0022】
さらに他の実施形態において、サーバー106は、クライアントのデバイス102のユーザーにコンピューティング環境へのアクセスを提供する仮想マシンを実行することができる。クライアントのデバイス102は、仮想マシンであってよい。仮想マシンは、例えば、ハイパーバイザ、仮想マシンマネージャー(VMM)、またはサーバー106内の任意の他のハードウェア仮想技術によって管理されることができる。
【0023】
ある実施形態において、ネットワーク104は、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、プライマリーパブリックネットワーク104、およびプライマリープライベートネットワーク104であってよい。さらなる実施形態は、モバイルデバイス間で通信するためにさまざまなプロトコルを用いる携帯電話ネットワークのネットワーク104を含んでよい。ワイヤレスローカルエリアネットワーク(WLAN)内の短距離通信に対して、プロトコルは、802.11、ブルートゥース、および近距離無線通信(NFC)を含んでよい。
【0024】
図2は、クライアントのデバイス102、アプライアンス108および/またはサーバー106の実施形態を実施するために有用なコンピューティングデバイス100のブロック図を図示する。コンピューティングデバイス100は、1つまたは複数のプロセッサ103、揮発性メモリ122(例えば、ランダムアクセスメモリ(RAM))、不揮発性メモリ128、ユーザーインターフェース(UI)123、1つまたは複数の通信インターフェース118、および通信バス150を含む。
【0025】
不揮発性メモリ128は、1つまたは複数のハードディスクドライブ(HDD)もしくは他の磁気的もしくは光学的なストレージ媒体、フラッシュドライブもしくは他のソリッドステートストレージ媒体のような1つまたは複数のソリッドステートドライブ(SSD)、1つまたは複数のハイブリッド磁気およびソリッドステートドライブ、および/またはクラウドストレージのような1つまたは複数の仮想ストレージボリューム、またはそのような物理的なストレージボリュームと仮想ストレージボリュームまたはそれらのアレイとの組み合わせを含んでよい。
【0026】
ユーザーインターフェース123は、グラフィカルユーザインターフェース(GUI)124(例えば、タッチスクリーン、ディスプレイなど)および1つまたは複数の入出力(I/O)デバイス126(例えば、マウス、キーボード、マイク、1つまたは複数のスピーカー、1つまたは複数のカメラ、1つまたは複数の生体認証スキャナー、1つまたは複数の環境センサー、および1つまたは複数の加速度計など)を含んでよい。
【0027】
不揮発性メモリ128は、オペレーティングシステム115、1つまたは複数のアプリケーション116、およびデータ117を格納することによって、例えば、オペレーティングシステム115および/またはアプリケーション116のコンピュータ命令は、揮発性メモリ122の中からプロセッサ103によって実行される。ある実施形態において、揮発性メモリ122は、メインメモリより速い応答時間を提供することができる1つまたは複数のタイプのRAMおよび/またはキャッシュメモリを含んでよい。データは、GUI124の入力デバイスを用いて入力されるか、または入出力デバイス126から受信されてよい。コンピュータ100のさまざまな要素は、通信バス150を介して通信することができる。
【0028】
説明されるコンピューティングデバイス100は、単に例示的なクライアントのデバイスまたはサーバーとして図示されて、本明細書で説明されるように、動作することが可能である適切なハードウェアおよび/またはソフトウェアを有し得る任意のタイプのマシンまたはマシンのセットを用いて、任意のコンピューティングまたは処理環境によって実装されてよい。
【0029】
プロセッサ103は、1つまたは複数のプログラム可能なプロセッサによって実装されてよく、コンピュータプログラムのようなシステムの機能を実行する。本明細書で用いられるように、「プロセッサ」という用語は、機能、動作、または動作のシーケンスを実行する回路を説明する。機能、動作、または動作のシーケンスは、回路へとハードコードされてよく、またはメモリデバイスの中に保持される命令によってソフトコード化されて、回路によって実行されてよい。プロセッサは、デジタル値を用いて、および/またはアナログ信号を用いて、機能、動作、または動作のシーケンスを実行してよい。
【0030】
ある実施形態において、プロセッサは、1つまたは複数の特定用途向け集積回路(ASIC)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスプロセシングユニット(GPU)、マイクロコントローラ、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、マルチコアプロセッサ、または関連するメモリを有する汎用コンピュータにおいて具現化されることが可能である。
【0031】
プロセッサ103は、アナログ、デジタル、または混合信号であってよい。ある実施形態において、プロセッサ103は、1つまたは複数の物理的なプロセッサ、または1つまたは複数の仮想(例えば、リモートで配置されるまたはクラウド)プロセッサであってよい。多様なプロセッサコアを含むプロセッサおよび/または多様なプロセッサは、命令の並列、同時実行に対して、または1つのデータより多くに対する1つの命令の並列、同時実行に対して機能を提供することができる。
【0032】
通信インターフェース118は、1つまたは複数のインターフェースを含んでよく、コンピューティングデバイス100に、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、パーソナルエリアネットワーク(PAN)、またはセルラー接続を含むさまざまな有線および/または無線接続を通じたインターネットのようなコンピュータネットワークにアクセスすることを可能とする。
【0033】
説明される実施形態において、コンピューティングデバイス100は、クライアントのデバイスのユーザーに代わってアプリケーションを実行することができる。例えば、コンピューティングデバイス100は、ハイパーバイザによって管理される1つまたは複数の仮想マシンを実行することができる。それぞれの仮想マシンは、ホストされるデスクトップセッションのように、ユーザーまたはクライアントのデバイスに代わってアプリケーションが実行される中で実行セッションを提供することができる。コンピューティングデバイス100は、また、端末サービスセッションを実行することができ、ホストされるデスクトップ環境を提供する。コンピューティングデバイス100は、1つまたは複数のアプリケーション、1つまたは複数のデスクトップアプリケーション、および1つまたは複数のアプリケーションが実行することができる1つまたは複数のデスクトップセッションを含むリモートコンピューティング環境へのアクセスを提供することができる。クライアントのデバイス102またはサーバー106として、またはクライアントのデバイス102およびサーバー106へのアプライアンス仲介として構成されるコンピューティングデバイス100のさらなる説明、およびそれらの動作は、米国特許第9,176,744号および第9,538,345号に記載されており、これらは、参照によりそれらの全体が本明細書に組み込まれる。’744および’345の特許は両方とも、本開示の現在の譲受人に譲渡されている。
【0034】
図3および
図10のフロー
図50を参照すると、集中型ブローカーを必要とすることなく、異なるクライアントのコンピューティングデバイス間で仮想コンピューティングセッションをローミングすることを可能とするアプローチがここで説明される。背景として、Citrix XENAPPおよびXENDESKTOPは、クライアントのコンピューティングデバイスが仮想デスクトップセッションおよび仮想アプリケーションセッションのような仮想コンピューティングセッションにリモートでアクセスすることを可能とする製品である。例示として、仮想アプリケーションセッションは、ホストされるアプリケーション、Web/Software as a Service(SaaS)アプリケーションなどを含む共有コンピューティングアプリケーションへのアクセスを提供することができる。仮想デスクトップセッションは、共有アプリケーションとホストされているオペレーティングシステムコンポーネントとの両方を含んでよい。XENAPPおよびXENDESKTOPの場合において、仮想配信エージェント(VDA)は、アプリケーションおよびデスクトップへの接続を可能とし、通常、ユーザーに対してXENAPPおよび/またはXENDESKTOP仮想アプリケーション/デスクトップセッションを実行するサーバー/マシンにインストール(とはいえ、ある実装において、異なるマシンに対してインストールされることがある)される。VDAは、マシンを配信コントローラーに登録して、ユーザーデバイスへの接続を管理することを可能とする。
【0035】
VDIシステムのクラウドベースの実装が増加し続けるにつれて、クラウドサービスまたはインターネットの停止状態にもかかわらず、より高い可用性の推進も増加する。しかしながら、XENAPPおよびXENDESKTOPのようなシステムのクラウドベースのインスタンスは、通常、集中型ブローカーに依存し、クライアントのデバイスとVDAと間のセッションを追跡する。これは、ユーザーが通常、多様なクライアントのデバイスを有するため、重要であり、それ故に、ユーザーが1つのクライアントのデバイスを用いてセッションを既に開いている場合で、ユーザーがそれらの間で切り替えた場合に、一般的に、既存のセッションを次のユーザーデバイスにローミングすることが所望される。しかしながら、通常の構成を用いて、停止状態が発生して、ブローカーがアクセスされることが可能でない場合に、同一のユーザーに関連付けられる異なるクライアントのデバイスに対して多様の異なるセッションが開かれる動作状態の低下が発生することがある。
【0036】
コンピュータシステム30は、例示的に、1つまたは複数のクライアントのコンピューティングデバイス31(例えば、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータなど)、および複数のホストコンピューティングデバイス32a~32n(例えば、サーバーまたは他のアプライアンス)を含み、上記のように、それぞれがクライアントのコンピューティングデバイスに対して仮想コンピューティングセッション33a~33nを提供するよう構成されている。実際には、それぞれのホストコンピューティングデバイス32a~32nは、多数の異なるクライアントのコンピューティングデバイスに対して仮想コンピューティングセッション33a~33nを提供することができるが、単一のクライアントのコンピューティングデバイス31は、説明の明確性のために
図3に図示されている。それぞれのホストコンピューティングデバイス32a~32nは、それとともに関連付けられる1つまたは複数のVDA34a~34nを有し、これらは、上記のように、クライアントのコンピューティングデバイス31を仮想コンピューティングセッション33a~33nに接続するよう構成される。説明される例示において、それぞれのVDA34a~34nは、それぞれのホストコンピューティングデバイス32a~32nに関連付けられているが、ある実施形態において、所与のVDAは、多様なホストコンピューティングデバイスとのセッション接続を促進することに用いられてよく、例えば、単一のVDAは、必要に応じて、多様なホストコンピューティングデバイスに用いられ得る。VDA34a~34nおよびホストコンピューティングデバイス32a~32nは、クラウドまたは異なる実施形態の前提の元に実装されることができることに留意されたい。
【0037】
ブロック51で始まり、クライアントのコンピューティングデバイス31は、VDAの順序付きリストに従って、VDA34a~34nから仮想コンピューティングセッション33a~33nを要求するよう構成される。説明される例示において、順序付きリストは、第1のVDA34a(VDA1)で始まって、最後のVDA34n(VDA N)で終了する。そのため、新しいセッションを要求している場合に、クライアントのコンピューティングデバイス31は、まず、新しいセッションの要求をVDA34aに送信することとし(ブロック52)、このVDAを通じてセッションに接続できない場合、リストにおけるVDAのそれぞれから新しいセッションを接続されるまで降順で要求することを続けることとなる。
【0038】
しかしながら、ある例示において、仮想コンピューティングセッションは、ブロック53でクライアントのコンピューティングデバイス31に関連付けられるユーザーアカウントに対して既にアクティブであってよい。これは、以下でさらに説明するように、セッションが以前にクライアントのコンピューティングデバイス31を通じて開かれて、閉じられなかったか、または同一のユーザーアカウントに関連付けられる別のクライアントのコンピューティングデバイスを通じて開かれたためであることがある。さらに、以前のセッションが作成された場合に、第1のVDA34aが停止したかまたは利用可能でなかった場合、このセッションは、ホストコンピューティングデバイス32aではなく、他のホストコンピューティングデバイス32b~32nのうちの1つで実行されることとなる。つまり、クライアントのコンピューティングデバイス31(または同一のアカウントに関連付けられる別のクライアントのコンピューティングデバイス)は、以前のセッションを要求している場合に、VDA34aに接続することが可能でなくなってから、最終的にセッションを確立されるまで、順序付きリストを通じて低次のVDA34b~34nに次第に進むこととなる。
【0039】
したがって、VDA34aは、それが確立する仮想コンピューティングセッション33aを追跡するだけでなく、順序付きリストにおける低次のVDA34b~34nによってクライアントのコンピューティングデバイス31に対して確立されるセッションを有利に追跡することもできる。このようにして、VDA34aは、同一のユーザーアカウントに対して新しいセッションの要求が受信された場合に、そのような以前の仮想コンピューティングセッションがユーザーアカウントに対して既にアクティブになっていることを識別することとなる。ここで、以前の仮想コンピューティングセッション33a~33nが、ホストコンピューティングデバイス32a~32nのうちのいずれかのユーザーアカウントに対してアクティブでない場合、VDA34aは、ブロック54で、適切にクライアントのコンピューティングデバイスを仮想コンピューティングセッション33aに接続するように進行することができる。しかしながら、VDA34aが、クライアントのコンピューティングデバイス31に関連付けられるユーザーアカウントに対して、以前のセッションが既に確立されていると決定した場合に、VDA34aは、クライアントのコンピューティングデバイス31から順序付きリストにおける適切な低次のVDA34b~34nへの新しいセッションの要求をリダイレクトすることによって、ブロック55で、新しい仮想コンピューティングセッションを確立する代わりに、既存のセッションをクライアントのコンピューティングデバイスにローミングされることができる。これは、
図3に図示される方法を終了する(ブロック56)。
【0040】
上述は、例示的な実装に関してさらに理解されることとなり、その第1のものは、
図4~
図6を参照して説明される。この例示において、2つのクライアントのコンピューティングデバイス31a、31bがあり、それぞれが同一のユーザーアカウント(ユーザーアカウントA)に関連付けられているが、異なる実施形態において、任意の数のクライアントのコンピューティングデバイスは、所与のユーザーアカウントに関連付けられることができる。さらに、すべてのクライアントのデバイス31a、31bは、仮想コンピューティングセッションに対してVDA34a、34b、34c(この順序で)接続する同一の順序付きリスト受信する。例示として、この順序付きリストは、クライアントのコンピューティングデバイス31a、31bがシステム30の一部として登録する場合などに、中央ブローカーまたはクラウドサービスによって提供されることができる。しかしながら、リストはクライアントのデバイス31a、31bに格納されるため、このブローカーまたはサービスの稼働時間は、重要ではない。ある実施形態において、リストは、必要に応じて、所与のアプリまたはアプリのグループに特有であってよく、ある実施形態において、異なるアプリケーションまたはそのグループに対して、異なるリストがクライアントのコンピューティングデバイス31a、31bによって用いられてよい。
【0041】
説明される例示において、初回では(
図4)、クライアントのコンピューティングデバイス31aは、リストの順序に従って、新しい仮想コンピューティングセッションを要求する。この場合において、クライアントのコンピューティングデバイス31aは、第1のVDA34aで開始し、接続することが可能ではない。クライアントのコンピューティングデバイス31aは、以前のVDA(つまり、VDA34a)が停止しているか、または完全にロードされているなどのために接続を拒否した場合にだけ、リストにおける次のVDA(ここではVDA34b)に進む。説明される例示において、これはリストにおける第1のVDA31aおよび第2のVDA31bの両方で起こり、クライアントのコンピューティングデバイス31aは、第3のVDA34cに沿って移動し、これに最終的に接続して、仮想コンピューティングセッション33cを確立することが可能である(説明を明確にするために、仮想コンピューティングセッション33cのホストコンピューティングデバイスは、図示されていないことに留意されたい)。
【0042】
クライアントのコンピューティングデバイスが順序付きリストにおける第1のVDA以外のVDAに接続されている場合に、クライアントのコンピューティングデバイス31aとVDA34cとの間のこの例示における場合のように、クライアントのコンピューティングデバイスは、接続を確立している場合に、高次のランクのVDAのリスト(ここでは、VDA34a、34b)を提供する。VDA34cは、このリストをメモリの中に格納することができることによって、例えば、ピアツーピアプロトコルを介して、それが保持するセッションの高次のランクのVDA34a、34bに(例えば、定期的に)通知することができる(
図5)。クライアントのコンピューティングデバイス31aが切断されたとしても、そのセッションが存在する限り、続けることができる。しかしながら、他の実装において、VDA34cは、リストにおける他のVDAに継続的な更新を送信する必要はない。例えば、以下でさらに説明されることとなるように、高次のVDAは、新しいセッションを確立する前に低次のVDAをポーリングし得るか、または、更新は、ブローカーを通じて実行されることができる。
【0043】
仮想コンピューティングセッション33cが既にユーザーアカウントに対して確立されている状態で、後で(
図6)、VDA34a(またはリストにおけるそれより低次の任意のVDA)がクライアントから接続の要求を受信した場合に、VDA34aは、まずメモリの中に格納している通知リストをチェックし、リストにおける低次の別のVDAによって、所与のユーザーアカウントに対して仮想コンピューティングセッションが既に確立されているかを確認する。本例示において、VDA34aは、ユーザーアカウントに関連付けられる第2のクライアントのコンピューティングデバイス31bから仮想コンピューティングセッションに対する要求を受信する。VDA34aは、仮想コンピューティングセッション34cが以前にVDA34cによって他の場所で確立されたことを発見する。結果として、VDA34aは、クライアントのコンピューティングデバイス31bからの接続を拒否し、その代わりに、既存のセッションの位置のクライアントのコンピューティングデバイスを通知し、クライアントのコンピューティングデバイスをVDA34cにリダイレクトする。セッション33cが既に他の場所で確立されているため、VDA34aから拒否を受信すると、クライアントのコンピューティングデバイス31bは、その代わりに、低次のランクのVDA34cへの第2の接続を行って、次に、VDA34cは、既存のセッションをクライアントのコンピューティングデバイス31bにローミングすることができる。このようにして、仮想コンピューティングセッション33cにおいて、ユーザーによって既に行われた以前の作業/進行は維持されて、第2のクライアントのコンピューティングデバイス31bを通じて、容易にアクセス可能となる。
【0044】
ここで、
図7~
図9に図示される別の例示的な実施形態を参照すると、クライアントのコンピューティングデバイス31a、31bは、ゲートウェイコンピューティングデバイス35を介してVDA34a~34cに接続されてよい。例示として、ゲートウェイコンピューティングデバイス35は、Citrix NetScaler Gatewayを用いて実装されることができる。Citrix NetScaler Gatewayは、リモートアクセスインフラストラクチャを統合し、データセンターにおいて、クラウドにおいて、またはSaaSとして配信されるか、すべてのアプリケーションにわたってシングルサインオンを提供する。ユーザーは、単一のURLを通じて異なるクライアントのコンピューティングデバイスから異なるアプリケーションにアクセスすることを可能とする。また、ファイアウォールの後にあるVDAへの接続のために安全なプロキシを提供する。しかしながら、他のゲートウェイ構成は、異なる実装において用いられてよい。ゲートウェイコンピューティングデバイス35は、クラウドまたはいくつかの実施形態の前提で実装されることができる。
【0045】
一般的に言えば、ゲートウェイ接続が用いられる場合に、セキュリティー上の理由で、クライアントのコンピューティングデバイス31a、31bは、接続するVDA IPアドレスまたはポートのようなVDA34a~34cについての内部の詳細が認識されない。むしろ、クライアントのコンピューティングデバイス31a、31bは、ゲートウェイコンピューティングデバイス35のアドレスだけを知ることができ、ゲートウェイおよび/またはストア(例えば、Citrix STOREFRONT)への認証に続いて、それらは、例えば、ゲートウェイコンピューティングデバイスを介して接続の認証に用いられるセキュアチケットオーソリティ(STA)チケットまたは長期接続リースチケットの認証チケットを用いて提供される。背景として、接続リースは、多用途であるが、有効性の限られた署名されたドキュメントである。これは使い捨て認証チケットに置き換わるものであり、接続リースの有効性は、顧客を制御することができ、且つ広範囲の時間(例えば、数秒から数週間)にわたって変化することができる。
【0046】
ゲートウェイの実装の例示において、単一の結合接続リースの一部として、クライアントのコンピューティングデバイス31a、31bは、それらが接続することができるVDA(ここでも、VDA34a~34c)の順序付きリストを受信する。例示の実装において、順序付きリストは、不透明なVDA IDが含み、内部VDAの詳細はさらされていない。接続リースは、また、承認チケットが含んでよい。別の例示的な実装において、クライアントのコンピューティングデバイス31a、31bは、例えば、STAまたは接続リースチケットの多様な順序付きの結合認証チケットを受信することができ、VDA IDを有するそれぞれがそれによって不透明へと埋め込まれる(または指し示される)。単独に、ゲートウェイコンピューティングデバイス35は、VDA IDから[VDAアドレス、ポート]へのマッピングの完全なリストを受信することができる。このリストは、例えば、すべてのユーザーのためにユーザーに依存せずに集計してよくて、中央ブローカーまたはクラウドサービスによって提供されてよい。
【0047】
図7で見られるように、第1のクライアントのコンピューティングデバイス31aは、その結合接続リース提供するか、または上記の代替の実装を想定して、多様な順序付きの接続リースチケットを提供するゲートウェイコンピューティングデバイス35への接続を行う。次に、VDA ID優先順位において、ゲートウェイコンピューティングデバイス35は、単一の(またはVDAに特有の)チケットに基づいて、接続を認証して、VDAの詳細[VDAアドレス、ポート]を抽出して、接続をそれぞれのVDAに中継する。ここでも、VDAが停止しているか、または完全にロードされているために接続を拒否した場合、ゲートウェイコンピューティングデバイス35は、優先順位に従って次のVDAに後退する。この場合において、ゲートウェイコンピューティングデバイス35は、VDA34a、34bのうちのいずれにも接続することが可能ではなくて、その代わりに、VDA34cを通じて、最後に仮想コンピューティングセッション33cへの接続を確立することになる。つまり、ゲートウェイコンピューティングデバイス35は、クライアントのコンピューティングデバイス31aとVDA34cとの間のプロトコルハンドシェイクを完了する。ある例示の実装において、これは、以下でさらに説明されるように、Citrix SystemsからのCommon Gateway Protocol(CGP)のようなトンネリングプロトコルを用いて実行されることができるが、異なる実施形態において、さまざまな他の適切なプロトコル(例えば、RDPなど)も用いられてよい。
【0048】
別の例示的な実施形態において、
図7Bに図示されるように、VDA34a~34cは、接続要求をリダイレクトするか、且つどこにリダイレクトするかを決定すべく、ブローカーコンピューティングデバイス(ブローカー)36と通信することができる。例えば、ゲートウェイコンピューティングデバイス35から接続要求を受信すると、VDA34aは、ロードのため、接続を拒否することを決定することができる。しかしながら、この例示において、VDA34aは、ブローカー36にコンタクトすることができ、接続がどこにリダイレクトされるべきかを決定する。ブローカー36が利用可能である場合、それは、「その代わりにVDA Nに接続する」と応答することができる。例えば、ブローカー36は、命令に応答することができ、接続をVDA34cにリダイレクトする。VDA34cは、結合接続リースにおけるVDAの順序付きリストの中に既に含まれてもしくは含まれてなくてよく、または、上記の代替実装を想定することで、多様な順序付きの接続リースチケットに含まれてよい。さらに、VDA34cが既に順序付きリストに含まれている場合であったとしても、必ずしも順序の次のものであるとは限らない。次に、VDA34aは、その代わりにVDA34cに接続するように命令する応答をゲートウェイコンピューティングデバイス35に送り返すことができる。例示として、VDA34aは、特別な理由コード(例えば、「VDAフォールバック」)を有するCGP終了メッセージを送信することができ、適切なVDA ID(ここでは、VDA34cに対して)を提供するか、または[VDA Nアドレス、ポート]を介して直接的に接続することを提供する。次に、ゲートウェイコンピューティングデバイス35は、VDA34aへのトランスポート接続を終了して、この例示におけるVDA34cへの新しい接続をする。その間ずっと、ここでコンピューティングセッションを要求しているクライアントのコンピューティングデバイス31bは、それがVDA34cにリダイレクトされたという事実に気づいていない。それ故に、次のVDA(この例示におけるVDA34b)を順に試すことよりもむしろ、ゲートウェイ35は、その代わりに接続要求をVDA34cに直接的に送信する。このアプローチの利点は、ブローカーが利用可能である場合に、接続時間がより短くなることである。このアプローチの別の利点は、ブローカーが利用可能であるが、順序付きリストにおけるすべてのVDAがビジーまたは利用可能でない、例えば、停止している場合に、順序付きリストにおける少なくとも1つのVDAが利用可能である、つまり、コンタクトされることが可能である場合、順序付きリストの外部のVDAへの接続が今もなお確立されていることが可能である。例示的なCGPの実装を続けることは、クライアントのコンピューティングデバイス31aからのCGPハンドシェイクは、続けることができるが、それは、ここで、VDA34cにリダイレクトされる。言い換えれば、ゲートウェイコンピューティングデバイス35は、CGPのバインド要求をVDA34cに送信して、次に、VDA34cからのCGPのバインド応答がゲートウェイコンピューティングデバイスに送り返されて、クライアントのコンピューティングデバイス31aに中継を返されて、ハンドシェイクを完了する。それ故に、ゲートウェイ35は、VDA34bを飛ばしながら、VDA34cを通じて、最終的に仮想コンピューティングセッション33cへの接続を確立することになる。
【0049】
図8に図示される例示において、VDA34a~34c間のピアツーピア接続を利用してそれらの間のセッション情報を更新するよりもむしろ、ここで、VDAは、ブローカーコンピューティングデバイス(ブローカー)36を介して通信する。したがって、VDA34cは、クライアントのコンピューティングデバイス31aに対する仮想コンピューティングセッション33cを確立すると、ブローカー36に通知することができることによって、VDA34a、34bは、必要な場合にこの情報にアクセスすることとなる。VDA34a~34c間のブローカー通信の潜在的な1つの利点は、例えば、具体的に高次のVDA34a、34bへの接続が停止している場合に、VDA34cによって必要となる更新がより少なくてよいことである。ブローカー36は、クラウドまたはいくつかの実施形態の前提において実装されてよい。ブローカー36がその時点で利用可能でない場合、VDA34cは、例えば、前述の上記および
図5に図示されるように、例えば、ピアツーピアプロトコルを介して、それが保持するセッションのすべての高次のランクのVDA34a、34bに通知する。VDA34cが順序付きリストにおいて存在しない場合、順序付きリストにおける任意の他のVDAよりもランクが低次と暗黙にみなされて、また、順序付きリストにおいて存在しない任意の他の不明なVDAと同一のランクを有するとみなされる。それ故に、VDA34cが順序付きリストに存在しない場合、有利なことに、VDA34cは、既に順序付きリストに存在するVDAに通知するだけでよく、つまり、VDA34cは、順序付きリストの外部の任意のVDAに通知する必要がない。
【0050】
VDA34aが最初にトランスポート接続を受け入れたが、次に「その代わりにVDA Nに接続する」と応答した場合、これは、仮想コンピューティングセッション33cが既に他の場所で確立されていることを意味する。
図9に図示される例示において、仮想コンピューティングセッションは、VDA34c(これは、VDA34aがブローカー36を通じて学習する)を通じて確立され、それに応じて、ゲートウェイコンピューティングデバイス35は、この低次のVDAにリダイレクトされる。例示として、VDA34aは、特別な理由コード(例えば、「VDAフォールバック」)を有するCGP終了メッセージを送信することができ、適切なVDA ID(ここで、VDA34cに対して)を提供するか、または[VDA Nのアドレス、ポート]を介して直接的に接続することを提供する。次に、ゲートウェイコンピューティングデバイス35は、VDA34aへのトランスポート接続を終了して、この例示におけるVDA34cへの新しい接続をする。その間ずっと、ここでコンピューティングセッションを要求しているクライアントのコンピューティングデバイス31bは、それがVDA34cにリダイレクトされたという事実に気づいていない。例示的なCGPの実装を続けることは、クライアントのコンピューティングデバイス31aからのCGPハンドシェイクは、続けることができるが、それは、ここで、VDA34cにリダイレクトされる。言い換えれば、ゲートウェイコンピューティングデバイス35は、CGPのバインド要求をVDA34cに送信して、次に、VDA34cからのCGPのバインド応答がゲートウェイコンピューティングデバイスに送り返されて、クライアントのコンピューティングデバイス31aに中継を返されて、ハンドシェイクを完了する。
【0051】
クライアントからVDAへのプロトコルは、Independent Computing Architecture(ICA)接続の前のスタンドアロンプロトコルであるか、またはICAまたはCGPハンドシェイクの初期にメッセージとして構築され、接続数を最小限とし、且つユーザーの起動時間を改善する。ある例示的なアプローチは、CGPプロトコルハンドシェイクを用いることであり、それは、ICAの前に発生して、別のVDAへのフォールバックの場合において、有利にクライアントからVDAへのラウンドトリップの数を最小化することができるためである。さらに、別の例示の実装において、CGPハンドシェイクは、上記のように、Citrix NetScaler Gatewayを用いて統合されることができ、ゲートウェイを介してフォールバックの最適化された方法を可能とする。VDAからVDAへのプロトコルは、アプリケーション特有のプロトコルであってよく、またはそれは、比較的に高い可用性を有し得るある形態の(例えば、Citrix ShareFile、Drobox、MS OneDriveなどを介した)共有ストレージを利用してよい。
【0052】
ある例示において、直接接続とゲートウェイ接続との組み合わせ(つまり、ハイブリッドアプローチ)が用いられることができることに留意されたい。つまり、クライアントのデバイス31a、31bは、1つまたは複数のVDAに直接的に(上記
図4~
図6を参照して説明されるように)接続することができ、他にはゲートウェイコンピューティングデバイス35を介して接続することができる。同様に、ある実装において、異なるVDA31a~31nとの接続を確立することに用いられる多様なゲートウェイコンピューティングデバイス35があってよい。また、上記
図4~
図6に図示されるように、VDA34a~34c間のピアツーピア接続の使用は、それらの間のセッション情報を更新し、ゲートウェイ接続の例示にも適用し得ることに留意されたい。同様に、
図7~
図9に図示されるように、ブローカーコンピューティングデバイス(ブローカー)36の使用は、直接接続の例示にも適用し得る。
【0053】
さまざまなアプローチは、VDAの順序付きリストをユーザーアカウントに割り当てるために用いられてよい。例えば、リストは、性能の観点から、使用可能なVDAへの接続の好ましい順序になっていてよい。別の例示は、それらを均等に分割することであり、例えば、使用可能な3つのVDAに対して、ユーザーの最初の1/3が1-2-3の順序付きリストを取得し、次の1/3が2-3-1の順序付きリストを取得し、最後の1/3が3-1-2の順序付きリストを取得する。他のアプローチは、疑似ランダム選択、地理的近接性に基づく順序付けなどを含んでよい。例示的な実装において、順序付きリストは、クライアントのコンピューティングデバイスが接続し得るVDAのすべて(つまり、サブセット)よりも少ない接続で実装されることができる。他のアプローチは、クライアントのコンピューティングデバイス31aまたは31bが、ユーザーごとに最も頻繁に、または最も最近に用いられた(接続された)VDAに基づいてリストを並べ替えることを含んでよい。ゲートウェイ接続が使用された場合に(上記の
図7~
図9を参照して説明されるように)、ゲートウェイ35は、不透明なVDA IDをクライアントのコンピューティングデバイス31aまたは31bに送り返すことができ、順序付きリストにおける特定のVDAへの接続確立が成功したことを示し、それ故に、有利に、クライアントのコンピューティングデバイスがリストを並べ替えることを可能とする。並び替えられたリストは、例えば、比較的に高い可用性を有し得る、ローミングプロファイルまたはある形態の(Citrix ShareFile、Drobox、MS OneDriveなどを介した)共有ストレージを用いて、同一のユーザーアカウントに関連付けられる他のエンドポイントデバイスと共有されてよい。
【0054】
上記の説明されるアプローチは、有利に、重要な技術的課題、すなわち、クライアントのデバイスとVDAとの間におけるストアフロントおよびブローカーを利用する典型的なアプローチに関連付けられるオーバーヘッドおよび潜在的なダウンタイムなしで、あるクライアントのデバイスから別のものにセッションをローミングすることの克服に役立つ。つまり、例えば、集中型ブローカーの代わりにピアツーピアVDAプロトコルを用いて、ユーザーのセッションのローミングを可能とすることによって、セッションのローミングは、ブローカーまたは個々のVDAの可用性に依存することなく機能し続けることができる。これは、また、有利に、劣化したセッションの例示が少なくなることにつながり、つまり、ここで、以前のセッションが既に他の場所で実行されているにもかかわらず、新しいセッションが確立されている。
【0055】
上記の説明されるアプローチの別の利点は、VDA間で最小限の情報だけが複製される必要があるということである。つまり、VDAは、既存のセッションの高次のリストにおける他のVDAに通知するだけでよく、それぞれのVDAは、(すべてのアクティブなセッションというよりはむしろ)関連のある低次のセッションを追跡し続けるだけでよい。結果として、これは、比較的に複雑なブローカー構成をVDAにシフトすることなく、有利に、VDAロジックを比較的に単純に保つことに役立つことができる。
【0056】
多くの変更例および他の実施形態は、前述の説明および関連する図面に提示される教示の恩恵を有する当業者が想到することとなる。それ故に、前述は、例示の実施形態に限定されるべきではなく、変更および他の実施形態は、添付の特許請求の範囲内に含まれることが意図されていることが理解される。
【国際調査報告】