(57)【要約】説明される実施形態は、複数のサーバのうちのサーバに接続するためのシステムおよび方法を提供する。本システムは、クライアントと複数のサーバとの間のデバイス仲介装置を含み得る。本デバイスは、クライアントから遠隔デスクトッププロトコル（ＲＤＰ）要求を受信し、複数のサーバのうちの１つに接続し得る。ＲＤＰ要求は、トークンを含み得る。本デバイスは、セッションディレクトリ／ブローカの存在に応答して、複数のサーバの負荷分散装置にＲＤＰ要求のトークンを修正または除去させ得る。本デバイスは、クライアントが接続する、セッションディレクトリによって複数のサーバから識別される標的サーバを示す、サーバリダイレクトパケットを受信し得る。本デバイスは、サーバリダイレクトパケットを修正させ、クライアントに標的サーバと接続するためのリダイレクトされた接続要求パケットを送信させ得る。
2020533673.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバのうちのサーバに接続するためのシステムであって、前記システムは、
少なくとも１つのクライアントと複数のサーバとの間のデバイス仲介装置であって、前記デバイスは、
前記少なくとも１つのクライアントの第１のクライアントから、遠隔デスクトッププロトコル（ＲＤＰ）要求を受信し、前記複数のサーバのうちの１つに接続することであって、前記ＲＤＰ要求は、トークンを含む、ことと、
セッションディレクトリの存在に応答して、前記複数のサーバの負荷分散装置に、前記ＲＤＰ要求のトークンを修正または除去させることと、
前記第１のクライアントが接続する前記セッションディレクトリによって前記複数のサーバから識別される標的サーバを示すサーバリダイレクトパケットを受信することと、
前記サーバリダイレクトパケットを修正させ、前記第１のクライアントに、前記標的サーバと接続するためのリダイレクトされた接続要求パケットを送信させることと
を行うように構成される、デバイス仲介装置
を備える、システム。
【請求項２】
前記デバイスは、前記サーバリダイレクトパケットを修正させ、前記第１のクライアントに、トークンを含むリダイレクトされた接続要求パケットを送信させるように構成され、前記トークンは、前記標的サーバのインジケーション、または前記仲介装置が前記標的サーバとのシングルサインオン（ＳＳＯ）を実施するための構成情報、または前記仲介装置が１つ以上のリソースへのアクセスを制御するための構成情報のうちの少なくとも１つを提供する、請求項１に記載のシステム。
【請求項３】
前記デバイスは、前記サーバリダイレクトパケットを修正させ、前記第１のクライアントに、シングルサインオン（ＳＳＯ）の非可用性に応答した前記標的サーバへのＲＤＰ通信ストリーム内の認証証明書、または１つ以上のリソースへのアクセスを制御するための構成情報のうちの少なくとも１つを提供させるように構成される、請求項１に記載のシステム。
【請求項４】
前記デバイスは、前記サーバリダイレクトパケットの前記標的サーバについての情報、認証証明書、または負荷分散のための情報のうちの少なくとも１つを修正させるように構成される、請求項１に記載のシステム。
【請求項５】
前記負荷分散装置をさらに備え、前記負荷分散装置は、前記デバイス上に常駐するかまたは前記デバイスから分離しているように構成される、請求項１に記載のシステム。
【請求項６】
前記デバイスは、前記ＲＤＰ要求を受信するように構成され、前記ＲＤＰ要求は、公開されるかまたは動的に作成されるリンクを介して開始される、請求項１に記載のシステム。
【請求項７】
前記デバイスはさらに、第２のクライアントから第２のＲＤＰ要求を受信し、前記複数のサーバのうちのサーバに接続するように構成され、前記第２のＲＤＰ要求は、前記リンクを介して開始される、請求項６に記載のシステム。
【請求項８】
前記デバイスはさらに、前記修正されたサーバリダイレクトパケットを前記第１のクライアントに送信するように構成される、請求項１に記載のシステム。
【請求項９】
前記デバイスはさらに、前記サーバリダイレクトパケットを受信するように構成され、前記サーバリダイレクトパケットは、前記ＲＤＰ要求に応答して、前記負荷分散装置によって最初に選択される前記複数のサーバのうちの第１のサーバによって生成される、請求項１に記載のシステム。
【請求項１０】
前記デバイスはさらに、前記負荷分散装置に、前記ＲＤＰ要求のトークンを修正または除去させ、前記第１のサーバへの接続が確立されることを可能にするように構成される、請求項１に記載のシステム。
【請求項１１】
複数のサーバのうちのサーバに接続するための方法であって、前記方法は、
少なくとも１つのクライアントと複数のサーバとの間の仲介装置によって、前記少なくとも１つのクライアントの第１のクライアントから、遠隔デスクトッププロトコル（ＲＤＰ）要求を受信し、前記複数のサーバのうちの１つに接続することであって、前記ＲＤＰ要求は、トークンを含む、ことと、
セッションディレクトリの存在に応答して、前記複数のサーバの負荷分散装置に、前記ＲＤＰ要求のトークンを修正または除去させることと、
前記仲介装置によって、前記第１のクライアントが接続する前記セッションディレクトリによって前記複数のサーバから識別される標的サーバを示すサーバリダイレクトパケットを受信することと、
前記サーバリダイレクトパケットを修正し、前記第１のクライアントに、前記標的サーバと接続するためのリダイレクトされた接続要求パケットを送信させることと
を含む、方法。
【請求項１２】
前記サーバリダイレクトパケットを修正することは、前記サーバリダイレクトパケットを修正し、前記第１のクライアントに、トークンを含むリダイレクトされた接続要求パケットを送信させることを含み、前記トークンは、前記標的サーバのインジケーション、前記仲介装置が前記標的サーバとのシングルサインオン（ＳＳＯ）を実施するための構成情報、または前記仲介装置が１つ以上のリソースへのアクセスを制御するための構成情報のうちの少なくとも１つを提供する、請求項１１に記載の方法。
【請求項１３】
前記サーバリダイレクトパケットを修正することは、前記サーバリダイレクトパケットを修正し、前記第１のクライアントに、シングルサインオン（ＳＳＯ）の非可用性に応答した前記標的サーバへのＲＤＰ通信ストリーム内の認証証明書、または１つ以上のリソースへのアクセスを制御するための構成情報を提供させることを含む、請求項１１に記載の方法。
【請求項１４】
前記サーバリダイレクトパケットを修正することは、前記標的サーバについての情報、認証証明書、または負荷分散のための情報のうちの少なくとも１つを修正することを含む、請求項１１に記載の方法。
【請求項１５】
前記サーバリダイレクトパケットを修正することは、前記仲介装置または前記負荷分散装置のうちの少なくとも１つに前記サーバリダイレクトパケットを修正させることを含む、請求項１１に記載の方法。
【請求項１６】
前記第１のクライアントから前記ＲＤＰ要求を受信することは、公開または動的に作成されるリンクを介して開始される前記ＲＤＰ要求を受信することを含む、請求項１１に記載の方法。
【請求項１７】
第２のクライアントから第２のＲＤＰ要求を受信し、前記複数のサーバのうちのサーバに接続することをさらに含み、前記第２のＲＤＰ要求は、前記リンクを介して開始される、請求項１６に記載の方法。
【請求項１８】
前記仲介装置によって、前記修正されたサーバリダイレクトパケットを前記第１のクライアントに送信することをさらに含む、請求項１１に記載の方法。
【請求項１９】
前記サーバリダイレクトパケットを受信することは、前記複数のサーバのうちの第１のサーバによって生成されるサーバリダイレクトパケットを受信することを含み、前記第１のサーバは、前記ＲＤＰ要求に応答して、前記負荷分散装置によって最初に選択される、請求項１１に記載の方法。
【請求項２０】
前記複数のサーバの負荷分散装置に、前記ＲＤＰ要求のトークンを修正または除去させることは、前記トークンを修正または除去し、前記第１のサーバへの接続が確立されることを可能にすることを含む、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、その内容が、あらゆる目的でその全体として参照することによって本明細書に組み込まれる、「ＲＤＰ  ＰＲＯＸＹ  ＳＵＰＰＯＲＴ  ＩＮ  ＰＲＥＳＥＮＣＥ  ＯＦ  ＲＤＰ  ＳＥＲＶＥＲ  ＦＡＲＭ  ＷＩＴＨ  ＳＥＳＳＩＯＮ  ＤＩＲＥＣＴＯＲＹ  ＯＲ  ＢＲＯＫＥＲ」と題され、２０１７年９月８日に出願された、米国非仮特許出願第１５／６９９，８９２号の優先権および利益を主張する。
【０００２】
本開示は、概して、限定ではないが、遠隔デスクトップセッションをプロビジョニングするステップを含む、サーバリソースをプロビジョニングするためのシステムおよび方法に関する。
【背景技術】
【０００３】
遠隔デスクトッププロトコル（ＲＤＰ）は、ネットワークを介してサーバ上にホストされるグラフィカルユーザインターフェースを用いて、リソースへのアクセスをクライアントに提供し得る。クライアント上で実行されるＲＤＰエージェントは、サーバとの認証を実施し、遠隔デスクトップセッションのための接続を確立し得る。プロトコルによると、別個の仮想チャネルが、クライアントとサーバとの間でレンダリング情報および入力／出力データを搬送するために使用されてもよい。いったん接続が確立されると、サーバは、パケット内のホストされたリソースのためのレンダリング情報をクライアントに送信し得る。パケットの受信に応じて、クライアントのＲＤＰエージェントは、レンダリング情報を解釈し、表示するためのリソースを提示し得る。
【発明の概要】
【課題を解決するための手段】
【０００４】
本概要は、発明を実施するための形態において下記でさらに説明される、簡略化された形態で一連の概念を導入するように提供される。本概要は、主要な特徴または不可欠な特徴を識別することも、本明細書とともに含まれる請求項の範囲を限定することも意図していない。
【０００５】
本開示は、複数のサーバのうちのサーバに接続するシステムおよび方法を対象とする。クライアントは、リンクを介してＲＤＰプロキシからダウンロードされるＲＤＰファイルを実行する要求を検出することに応じて、サーバにおいてホストされるリソースのために、遠隔デスクトッププロトコル（ＲＤＰ）に従って遠隔デスクトップセッションを開始してもよい。リンクは、公開されてもよいまたは動的に生成されてもよい。遠隔デスクトップセッションを確立するために、一意のセキュリティトークンを伴う接続要求が、クライアントから送信されてもよく、ＲＤＰプロキシに到着してもよい。セキュリティトークンに基づいて、ＲＤＰプロキシは、適切なサーバを選択してもよく、セッションの確立を完了するための構成に基づいて、サーバと認証（例えば、シングルサインオン（ＳＳＯ））を実施してもよい。サーバは、セッションディレクトリ（またはセッションブローカ）を伴うサーバファームの一部であってもよい。そのような環境では、セッションブローカによって使用されるトークンは、ＲＤＰプロキシによって設定または提供されるトークンと異なり得る。その結果として、接続要求および後続のデータパケットは、不適切に処理および／または（例えば、意図された／適切なＲＤＰサーバの代わりに別のサーバに）ルーティングされ得る。
【０００６】
単一の進入点を通してサーバファームをセッションブローカと接続するクライアントを支援するために、かつ所与の遠隔デスクトップセッションのための持続性を維持するために、ＲＤＰプロキシは、サーバの間で負荷分散を実施し、サーバブローカによる再配分に対処してもよい。その目的で、ＲＤＰプロキシは、負荷分散装置と接続してもよい、または負荷分散装置の機能性のうちの少なくともいくつかを果たしてもよい。負荷分散装置は、ＲＤＰモジュールへのバックエンドサーバとして作用してもよく、サーバファームのサーバを横断して接続を配分してもよい。データパケットがサーバファームとクライアントとの間を移動すると、負荷分散装置（例えば）は、データパケットからのトークンを修正および／または除去してもよい。負荷分散装置は、次いで、接続がいかなるエラーも伴わずに確立され得るように、データパケットをサーバに転送してもよい。
【０００７】
パケットが、異なるサーバに割り当てられたクライアントのためのすでに存在しているセッション用である場合、セッションディレクトリは、他のサーバへの接続をリダイレクトするように、最初にパケットを受信したサーバに命令または通知してもよい。初期サーバは、負荷分散装置を介してＲＤＰプロキシにサーバリダイレクトパケットを返送してもよい。サーバリダイレクトパケットは、標的サーバデータ、負荷分散情報、および／またはクライアントのためのアカウント証明書を有してもよい。
【０００８】
サーバリダイレクトパケットの受信に応答して、ＲＤＰプロキシは、クライアントからの後続のリダイレクトされた接続要求が、パケットを標的サーバにルーティングするため、および／または認証を実施するためのセキュリティトークンを含むように、サーバリダイレクトパケットを修正してもよい。この目的で、ＲＤＰプロキシは、標的サーバデータ、負荷分散情報、および／またはアカウント証明書等のサーバリダイレクトパケットの１つ以上のフィールドを更新、修正、および／または除去してもよい。シングルサインイン（ＳＳＯ）が使用されない接続では、サーバリダイレクトパケットは、クライアントからの結果として生じたリダイレクトされた接続要求パケットが、クライアントとサーバとの間のＲＤＰストリームを通して自動的にパスされたアカウント証明書を伴って、バックエンド標的サーバに接続するために使用され得るように、更新されてもよい。ＲＤＰプロキシは、次いで、修正されたサーバリダイレクトパケットをクライアントに送信してもよく、続いて、クライアントからリダイレクトされた接続要求を受信してもよい。要求を受信することに応じて、セキュリティトークンは、構成に基づいて、認証および／または施行情報とともに、バックエンド標的サーバに接続するようにＲＤＰプロキシによってフェッチされてもよい。
【０００９】
このようにして、クライアントとサーバとの間のセッションのためのデータパケットは、接続のためにセッションディレクトリによって割り当てられる／決定されるバックエンド標的サーバにルーティングされてもよい。さらに、ＲＤＰプロキシは、サーバファームにおけるセッションディレクトリの存在下で、クライアントに提供されるリソースのためにリンクを通して立ち上げられる接続のために、プロキシにおけるシングルサインオン（ＳＳＯ）の有無を問わず、遠隔デスクトップセッションをサポートしてもよい。遠隔デスクトップセッションはまた、シングルサインオンの有無を問わず、サーバファームに接続する全てのクライアントのための単一のリンクを通して複数のクライアントおよびサーバファームの存在下で互換性があり得る。
【００１０】
一側面では、本開示は、複数のサーバのうちのサーバに接続するためのシステムの実施形態を対象とする。本システムは、少なくとも１つのクライアントと複数のサーバとの間のデバイス仲介装置を含んでもよい。本デバイスは、少なくとも１つのクライアントの第１のクライアントから遠隔デスクトッププロトコル（ＲＤＰ）要求を受信し、複数のサーバのうちの１つに接続してもよい。ＲＤＰ要求は、トークンを含んでもよい。本デバイスは、セッションディレクトリの存在に応答して、複数のサーバの負荷分散装置に、ＲＤＰ要求のトークンを修正または除去させてもよい。本デバイスは、第１のクライアントが接続する、セッションディレクトリによって複数のサーバから識別される標的サーバを示す、サーバリダイレクトパケットを受信してもよい。本デバイスは、サーバリダイレクトパケットを修正させ、第１のクライアントに、標的サーバと接続するためのリダイレクトされた接続要求パケットを送信させてもよい。
【００１１】
いくつかの実施形態では、本デバイスは、サーバリダイレクトパケットを修正させ、第１のクライアントに、リダイレクトされた接続要求パケットを送信させてもよい。リダイレクトされた接続要求パケットは、トークンを含んでもよい。トークンは、標的サーバのインジケーション、または仲介装置が標的サーバとのシングルサインオン（ＳＳＯ）を実施するための構成情報、または仲介装置が１つ以上のリソースへのアクセスを制御するための構成情報のうちの少なくとも１つを提供してもよい。
【００１２】
いくつかの実施形態では、本デバイスは、サーバリダイレクトパケットを修正させ、第１のクライアントに、シングルサインオン（ＳＳＯ）の非可用性に応答した、標的サーバへのＲＤＰ通信ストリーム内の認証証明書、または１つ以上のリソースへのアクセスを制御するための構成情報のうちの少なくとも１つを提供させてもよい。いくつかの実施形態では、本デバイスは、サーバリダイレクトパケットの標的サーバについての情報、認証証明書、または負荷分散のための情報のうちの少なくとも１つを修正させてもよい。
【００１３】
いくつかの実施形態では、本システムはさらに、負荷分散装置を含んでもよい。負荷分散装置は、デバイス上に常駐する、またはデバイスから分離していてもよい。いくつかの実施形態では、本デバイスは、ＲＤＰ要求を受信してもよい。ＲＤＰ要求は、公開されるかまたは動的に作成されるリンクを介して開始されてもよい。いくつかの実施形態では、本デバイスは、第２のクライアントから第２のＲＤＰ要求を受信し、複数のサーバのうちのサーバに接続してもよい。第２のＲＤＰ要求は、リンクを介して開始されてもよい。
【００１４】
いくつかの実施形態では、本デバイスは、修正されたサーバリダイレクトパケットを第１のクライアントに送信してもよい。いくつかの実施形態では、本デバイスは、サーバリダイレクトパケットを受信してもよい。サーバリダイレクトパケットは、ＲＤＰ要求に応答して、負荷分散装置によって最初に選択される、複数のサーバのうちの第１のサーバによって生成されてもよい。いくつかの実施形態では、本デバイスは、負荷分散装置に、ＲＤＰ要求のトークンを修正または除去させ、第１のサーバへの接続が確立されることを可能にしてもよい。
【００１５】
別の側面では、本開示は、複数のサーバのうちのサーバに接続するための方法を対象とする。少なくとも１つのクライアントと複数のサーバとの間の仲介装置は、少なくとも１つのクライアントの第１のクライアントから遠隔デスクトッププロトコル（ＲＤＰ）要求を受信し、複数のサーバのうちの１つに接続してもよい。ＲＤＰ要求は、トークンを含んでもよい。複数のサーバの負荷分散装置は、セッションディレクトリの存在に応答して、ＲＤＰ要求のトークンを修正または除去させられてもよい。仲介装置は、第１のクライアントが接続する、セッションディレクトリによって複数のサーバから識別される標的サーバを示す、サーバリダイレクトパケットを受信してもよい。サーバリダイレクトパケットは、第１のクライアントに、標的サーバと接続するためのリダイレクトされた接続要求パケットを送信させるように、修正されてもよい。
【００１６】
いくつかの実施形態では、サーバリダイレクトパケットを修正するステップは、サーバリダイレクトパケットを修正し、第１のクライアントに、リダイレクトされた接続要求パケットを送信させるステップを含んでもよい。リダイレクトされた接続要求パケットは、トークンを含んでもよい。トークンは、標的サーバのインジケーション、仲介装置が標的サーバとのシングルサインオン（ＳＳＯ）を実施するための構成情報、または仲介装置が１つ以上のリソースへのアクセスを制御するための構成情報のうちの少なくとも１つを提供してもよい。
【００１７】
いくつかの実施形態では、サーバリダイレクトパケットを修正するステップは、サーバリダイレクトパケットを修正し、第１のクライアントに、シングルサインオン（ＳＳＯ）の非可用性に応答した、標的サーバへのＲＤＰ通信ストリーム内の認証証明書、または１つ以上のリソースへのアクセスを制御するための構成情報を提供させるステップを含んでもよい。
【００１８】
いくつかの実施形態では、サーバリダイレクトパケットを修正するステップは、標的サーバについての情報、認証証明書、または負荷分散のための情報のうちの少なくとも１つを修正するステップを含んでもよい。いくつかの実施形態では、サーバリダイレクトパケットを修正するステップは、仲介装置または負荷分散装置のうちの少なくとも１つにサーバリダイレクトパケットを修正させるステップを含んでもよい。
【００１９】
いくつかの実施形態では、第１のクライアントからＲＤＰ要求を受信するステップは、公開されるかまたは動的に作成されるリンクを介して開始されるＲＤＰ要求を受信するステップを含んでもよい。いくつかの実施形態では、第２のＲＤＰ要求が、複数のサーバのうちのサーバに接続するように、第２のクライアントから受信されてもよく、第２のＲＤＰ要求は、リンクを介して開始される。
【００２０】
いくつかの実施形態では、仲介装置は、修正されたサーバリダイレクトパケットを第１のクライアントに送信してもよい。いくつかの実施形態では、サーバリダイレクトパケットを受信するステップは、複数のサーバのうちの第１のサーバによって生成される、サーバリダイレクトパケットを受信するステップを含んでもよい。第１のサーバは、ＲＤＰ要求に応答して、負荷分散装置によって最初に選択されてもよい。いくつかの実施形態では、複数のサーバの負荷分散装置に、ＲＤＰ要求のトークンを修正または除去させるステップは、トークンを修正または除去し、第１のサーバへの接続が確立されることを可能にするステップを含んでもよい。
【図面の簡単な説明】
【００２１】
本明細書に開示される実施形態の目的、側面、特徴、および利点は、以下の発明を実施するための形態、添付される請求項、および同様の参照番号が類似または同じ要素を識別する、付随する図面から、より完全に明白となるであろう。図面と関連して本明細書内に導入される参照番号は、他の特徴のための状況を提供するために、本明細書内に付加的説明を伴わずに１つ以上の後続の図内で繰り返され得、全ての要素が、全ての図で標識されるわけではない場合がある。図面は、必ずしも一定の縮尺ではなく、代わりに、実施形態、原理、および概念を例証することが強調されている。図面は、本明細書とともに含まれる請求項の範囲を限定することを意図していない。
【００２２】
【図１Ａ】図１Ａは、例証的実施形態による、ネットワークコンピューティングシステムのブロック図である。
【００２３】
【図１Ｂ】図１Ｂは、例証的実施形態による、アプライアンスを介してサーバからクライアントにコンピューティング環境を配信するためのネットワークコンピューティングシステムのブロック図である。
【００２４】
【図１Ｃ】図１Ｃは、例証的実施形態による、コンピューティングデバイスのブロック図である。
【００２５】
【図２】図２は、例証的実施形態による、クライアントとサーバとの間の通信を処理するためのアプライアンスのブロック図である。
【００２６】
【図３】図３は、例証的実施形態による、仮想化環境のブロック図である。
【００２７】
【図４】図４は、例証的実施形態による、クラスタシステムのブロック図である。
【００２８】
【図５Ａ】図５Ａは、例証的実施形態による、セッションブローカの存在下で複数のサーバのうちのサーバに接続するためのシステムのブロック図である。
【００２９】
【図５Ｂ】図５Ｂおよび５Ｃは、例証的実施形態による、セッションブローカの存在下で複数のサーバのうちのサーバに接続するプロセスのシーケンス図である。
【図５Ｃ】図５Ｂおよび５Ｃは、例証的実施形態による、セッションブローカの存在下で複数のサーバのうちのサーバに接続するプロセスのシーケンス図である。
【００３０】
【図５Ｄ】図５Ｄは、例証的実施形態による、セッションブローカの存在下で複数のサーバのうちのサーバに接続する方法のフロー図である。
【発明を実施するための形態】
【００３１】
下記の種々の実施形態の説明を熟読する目的のために、本明細書の節およびそれらの内容の以下の説明が、有用であり得る。
【００３２】
第Ａ節は、本明細書に説明される実施形態を実施するために有用であり得る、ネットワーク環境およびコンピューティング環境を説明する。
【００３３】
第Ｂ節は、コンピューティング環境を遠隔ユーザに配信するためのシステムおよび方法の実施形態を説明する。
【００３４】
第Ｃ節は、アプリケーション配信コントローラを仮想化するためのシステムおよび方法の実施形態を説明する。
【００３５】
第Ｄ節は、クラスタ化されたアプライアンスアーキテクチャ環境を提供するためのシステムおよび方法の実施形態を説明する。
【００３６】
第Ｅ節は、セッションブローカの存在下で複数のサーバのうちのサーバに接続するためのシステムおよび方法の実施形態を説明する。
【００３７】
Ａ．ネットワークおよびコンピューティング環境
図１Ａを参照すると、例証的ネットワーク環境１００が、描写される。ネットワーク環境１００は、１つ以上のネットワーク１０４（１）−１０４ｎ（概して、ネットワーク１０４と称される）を介して、１つ以上のサーバ１０６（１）−１０６（ｎ）（また、概して、遠隔マシン１０６またはサーバ１０６とも称される）と通信する、１つ以上のクライアント１０２（１）−１０２（ｎ）（また、概して、ローカルマシン１０２またはクライアント１０２とも称される）を含んでもよい。いくつかの実施形態では、クライアント１０２は、１つ以上のアプライアンス２００（１）−２００ｎ（概して、アプライアンス２００またはゲートウェイ２００と称される）を介してサーバ１０６と通信してもよい。
【００３８】
図１Ａに示される実施形態は、クライアント１０２とサーバ１０６との間の１つ以上のネットワーク１０４を示すが、他の実施形態では、クライアント１０２およびサーバ１０６は、同一のネットワーク１０４上にあってもよい。種々のネットワーク１０４は、同一のタイプのネットワークまたは異なるタイプのネットワークであってもよい。例えば、いくつかの実施形態では、ネットワーク１０４（１）が、ローカルエリアネットワーク（ＬＡＮ）または企業イントラネット等の私設ネットワークであってもよい一方で、ネットワーク１０４（２）および／またはネットワーク１０４（ｎ）は、広域ネットワーク（ＷＡＮ）またはインターネット等の公衆ネットワークであってもよい。他の実施形態では、ネットワーク１０４（１）およびネットワーク１０４（ｎ）は両方とも、私設ネットワークであってもよい。ネットワーク１０４は、有線および／または無線ネットワーク等の１つ以上のタイプの物理的ネットワークおよび／またはネットワークトポロジを採用してもよく、伝送制御プロトコル（ＴＣＰ）、インターネットプロトコル（ＩＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、または他の類似プロトコル等の１つ以上の通信トランスポートプロトコルを採用してもよい。
【００３９】
図１Ａに示されるように、１つ以上のアプライアンス２００は、種々の点に、またはネットワーク環境１００の種々の通信パス内に位置してもよい。例えば、アプライアンス２００は、２つのネットワーク１０４（１）と１０４（２）との間に展開されてもよく、アプライアンス２００は、相互と通信し、例えば、クライアント１０２とサーバ１０６との間のネットワークトラフィックを加速するように、連動してもよい。他の実施形態では、アプライアンス２００は、ネットワーク１０４上に位置してもよい。例えば、アプライアンス２００は、クライアント１０２および／またはサーバ１０６のうちの１つの一部として実装されてもよい。実施形態では、アプライアンス２００は、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．（Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，  ＦＬ）によって販売されているＮｅｔＳｃａｌｅｒ（Ｒ）製品等のネットワークデバイスとして実装されてもよい。
【００４０】
図１Ａに示されるように、１つ以上のサーバ１０６は、サーバファーム３８として動作してもよい。サーバファーム３８のサーバ１０６は、論理的にグループ化されてもよく、（例えば、構内に）地理的に共同設置されるか、またはクライアント１０２および／または他のサーバ１０６から地理的に分散される（例えば、クラウドベースである）かのいずれであってもよい。実施形態では、サーバファーム３８は、（例えば、アプリケーションサーバとして）クライアント１０２のうちの１つ以上のものの代わりに、１つ以上のアプリケーションを実行するが、ファイルサーバ、ゲートウェイサーバ、プロキシサーバ、または他の類似サーバ使用等の他の使用も可能である。クライアント１０２は、サーバ１０６上のホストされたアプリケーションへのアクセスを求め得る。
【００４１】
図１Ａに示されるように、いくつかの実施形態では、アプライアンス２００は、概して、ＷＡＮ最適化アプライアンス２０５と称される、ＷＡＮ最適化アプライアンス２０５（１）−２０５（ｎ）等の１つ以上の付加的アプライアンスによって置換される、またはそれと通信してもよい。例えば、ＷＡＮ最適化アプライアンス２０５は、広域ファイルサービス（ＷＡＦＳ）を最適化すること、サーバメッセージブロック（ＳＭＢ）または共通インターネットファイルシステム（ＣＩＦＳ）を加速すること等、ＷＡＮ接続へ、および／またはＷＡＮ接続からのトラフィック等のネットワークトラフィックの性能、動作、フロー制御、サービス品質を加速する、キャッシュする、圧縮する、または別様に最適化または改善してもよい。いくつかの実施形態では、アプライアンス２０５は、性能拡張プロキシまたはＷＡＮ最適化コントローラであってもよい。一実施形態では、アプライアンス２０５は、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．（Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，  ＦＬ）によって販売されているＣｌｏｕｄＢｒｉｄｇｅ（Ｒ）製品として実装されてもよい。
【００４２】
図１Ｂを参照すると、クライアント１０２上のコンピューティングネットワーク環境を配信および／または動作させるための例示的ネットワーク環境１００’が、示される。図１Ｂに示されるように、サーバ１０６は、コンピューティング環境、アプリケーション、および／またはデータファイルを１つ以上のクライアント１０２に配信するためのアプリケーション配信システム１９０を含んでもよい。クライアント１０２は、クライアントエージェント１２０と、コンピューティング環境１５とを含んでもよい。コンピューティング環境１５は、データファイル１７にアクセスする、それを処理する、または使用する、アプリケーション１６を実行または動作させてもよい。コンピューティング環境１５、アプリケーション１６、および／またはデータファイル１７は、アプライアンス２００および／またはサーバ１０６を介して配信されてもよい。
【００４３】
アプライアンス２００は、例えば、アプリケーション配信システム１９０による、クライアント１０２へのコンピューティング環境１５の全てまたは一部の配信を加速してもよい。例えば、アプライアンス２００は、クライアント１０２とサーバ１０６との間のトランスポート層トラフィックを加速することによって、データセンタから遠隔ユーザ場所へのアプリケーションによって処理可能なストリーミングアプリケーションおよびデータファイルの配信を加速してもよい。そのような加速は、１）トランスポート層接続プーリング、２）トランスポート層接続多重化、３）トランスポート制御プロトコルバッファリング、４）圧縮、５）キャッシング、または他の技法等の１つ以上の技法によって、提供されてもよい。アプライアンス２００はまた、クライアント１０２からの要求を処理するためのサーバ１０６の負荷分散を提供する、１つ以上のサーバ１０６へのアクセスを提供するためのプロキシまたはアクセスサーバとして作用する、クライアント１０２とサーバ１０６との間にセキュリティを提供する、および／またはファイアウォールとして作用する、ドメイン名サービス（ＤＮＳ）解決を提供する、１つ以上の仮想サーバまたは仮想インターネットプロトコルサーバを提供する、および／またはセキュアソケットレイヤー（ＳＳＬ）ＶＰＮ接続等のクライアント１０２からのサーバ１０６へのセキュアな仮想私設ネットワーク（ＶＰＮ）接続を提供する、および／または暗号化および暗号解読動作を提供してもよい。
【００４４】
アプリケーション配信管理システム１９０は、ポリシエンジン１９５によって適用される認証および認可ポリシに基づいて、遠隔または別様であるユーザ（例えば、クライアント１０２）にコンピューティング環境１５を配信してもよい。遠隔ユーザは、コンピューティング環境を取得し、任意のネットワーク接続型デバイス（例えば、クライアント１０２）からサーバに記憶されたアプリケーションおよびデータファイルにアクセスしてもよい。例えば、アプライアンス２００は、サーバ１０６からアプリケーションおよびデータファイルを要求してもよい。要求に応答して、アプリケーション配信システム１９０および／またはサーバ１０６は、例えば、クライアント１０２上のコンピューティング環境１５内で動作するためのアプリケーションストリームを介して、または遠隔ディスプレイプロトコルを介して、または別様に遠隔ベースまたはサーバベースのコンピューティングを介して、アプリケーションおよびデータファイルをクライアント１０２に配信してもよい。実施形態では、アプリケーション配信システム１９０は、ＸｅｎＡｐｐ（Ｒ）またはＸｅｎＤｅｓｋｔｏｐ（Ｒ）等のＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．によるＣｉｔｒｉｘ  Ｗｏｒｋｓｐａｃｅ  ＳｕｉｔｅＴＭの任意の部分として実装されてもよい。
【００４５】
ポリシエンジン１９５は、アプリケーションへのアクセス、およびその実行および配信を制御および管理してもよい。例えば、ポリシエンジン１９５は、ユーザまたはクライアント１０２がアクセスし得る１つ以上のアプリケーション、および／またはサーバベースのコンピューティング、ローカル実行のためにアプリケーションをローカルでクライアント１２０にストリーミングまたは配信すること等のアプリケーションがユーザまたはクライアント１０２に配信され得る方法を決定してもよい。
【００４６】
例えば、動作時に、クライアント１０２は、アプリケーション（例えば、アプリケーション１６’）の実行を要求してもよく、サーバ１０６のアプリケーション配信システム１９０は、例えば、クライアント１０２から受信される証明書および証明書と関連付けられるポリシエンジン１９５によって適用されるユーザポリシに基づいて、アプリケーション１６’を実行する方法を決定する。例えば、アプリケーション配信システム１９０は、クライアント１０２がサーバ１０６上のアプリケーションの実行によって生成されるアプリケーション出力データを受信することを可能にし得る、クライアント１０２がサーバ１０６からアプリケーションを受信した後にローカルでアプリケーションを実行することを可能にし得る、またはネットワーク１０４を介してアプリケーションをクライアント１０２にストリーミングしてもよい。例えば、いくつかの実施形態では、アプリケーションは、クライアント１０２の代わりにサーバ１０６上で実行されるサーバベースまたは遠隔ベースのアプリケーションであってもよい。サーバ１０６は、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．（Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，  ＦＬ）による独立コンピューティングアーキテクチャ（ＩＣＡ）プロトコル等のシンクライアントまたは遠隔ディスプレイプロトコルを使用して、クライアント１０２への出力を表示してもよい。アプリケーションは、グラフィックをストリーミングする、ビデオおよび／またはオーディオまたは他のデータをストリーミングする、遠隔デスクトップまたはワークスペースまたはホストされたサービスまたはアプリケーション、例えば、サービスとしてのインフラストラクチャ（ＩａａＳ）、サービスとしてのワークスペース（ＷａａＳ）、サービスとしてのソフトウェア（ＳａａＳ）、またはサービスとしてのプラットフォーム（ＰａａＳ）の配信のためのアプリケーション等のリアルタイムデータ通信に関連する任意のアプリケーションであってもよい。
【００４７】
サーバ１０６のうちの１つ以上のものは、性能監視サービスまたはエージェント１９７を含んでもよい。いくつかの実施形態では、専用の１つ以上のサーバ１０６が、性能監視を実施するために採用されてもよい。性能監視は、例えば、ソフトウェア、ハードウェア、またはそれらの組み合わせによって、データ収集、集約、分析、管理、および報告を使用して、実施されてもよい。性能監視は、クライアント１０２（例えば、クライアントエージェント１２０）、サーバ１０６（例えば、エージェント１９７）、またはアプライアンス２００および／または２０５（示されていないエージェント）上に、性能監視、測定、およびデータ収集アクティビティのための１つ以上のエージェントを含んでもよい。一般に、監視エージェント（例えば、１２０および／または１９７）は、任意のアプリケーションおよび／またはデバイスのユーザに気付かれることなく（例えば、バックグラウンドで）実行される。いくつかの実施形態では、監視エージェント１９７は、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．（Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，  ＦＬ）によるＥｄｇｅＳｉｇｈｔと称される製品の実施形態のうちのいずれかを含む。
【００４８】
監視エージェントは、所定の頻度で、所与のイベントの発生に基づいて、またはネットワーク環境１００の動作中にリアルタイムで、データを監視、測定、収集、および／または分析してもよい。監視エージェントは、クライアント１０２、ネットワーク１０４、アプライアンス２００および／または２０５、および／またはサーバ１０６のハードウェア、ソフトウェア、および／または通信リソースのリソース消費および／または性能を監視してもよい。例えば、トランスポート層接続等のネットワーク接続、ネットワーク待ち時間、帯域幅利用、エンドユーザ応答時間、アプリケーション使用量および性能、アプリケーションへのセッション接続、キャッシュ使用量、メモリ使用量、プロセッサ使用量、記憶装置使用量、データベーストランザクション、クライアントおよび／またはサーバ利用、アクティブユーザ、ユーザアクティビティの持続時間、アプリケーションクラッシュ、エラー、またはハング、アプリケーション、サーバ、またはアプリケーション配信システムにログインするために要求される時間、および／または他の性能条件およびメトリックが、監視されてもよい。
【００４９】
監視エージェントは、アプリケーション配信システム１９０のためのアプリケーション性能管理を提供してもよい。例えば、１つ以上の監視された性能条件またはメトリックに基づいて、アプリケーション配信システム１９０は、ネットワーク環境性能および条件に基づいて、サーバ１０６によるクライアント１０２へのアプリケーション配信を最適化するように、例えば、周期的に、またはリアルタイムで、動的に調節されてもよい。
【００５０】
説明される実施形態では、クライアント１０２、サーバ１０６、およびアプライアンス２００および２０５は、少なくとも１つのネットワークを経由して通信し、本明細書に説明される動作を実施することが可能な任意のデスクトップコンピュータ、ラップトップコンピュータ、またはモバイルデバイス等の任意のタイプおよび形態のコンピューティングデバイスとして、展開される、および／またはその上で実行されてもよい。例えば、クライアント１０２、サーバ１０６、および／またはアプライアンス２００および２０５はそれぞれ、図１Ｃに示されるコンピュータ１０１等の１つのコンピュータ、複数のコンピュータ、または分散型の複数のコンピュータのネットワークに対応し得る。
【００５１】
図１Ｃに示されるように、コンピュータ１０１は、１つ以上のプロセッサ１０３と、揮発性メモリ１２２（例えば、ＲＡＭ）、不揮発性メモリ１２８（例えば、１つ以上のハードディスクドライブ（ＨＤＤ）または他の磁気または光学記憶媒体、フラッシュドライブまたは他のソリッドステート記憶媒体等の１つ以上のソリッドステートドライブ（ＳＳＤ）、１つ以上のハイブリッド磁気およびソリッドステートドライブ、および／またはクラウド記憶装置等の１つ以上の仮想記憶容量、またはそのような物理的記憶容量および仮想記憶容量またはそのアレイの組み合わせ）と、ユーザインターフェース（ＵＩ）１２３と、１つ以上の通信インターフェース１１８と、通信バス１５０とを含んでもよい。ユーザインターフェース１２３は、グラフィカルユーザインターフェース（ＧＵＩ）１２４（例えば、タッチスクリーン、ディスプレイ等）と、１つ以上の入出力（Ｉ／Ｏ）デバイス１２６（例えば、マウス、キーボード等）とを含んでもよい。不揮発性メモリ１２８は、例えば、オペレーティングシステム１１５および／またはアプリケーション１１６のコンピュータ命令が、プロセッサ１０３によって揮発性メモリ１２２から外で実行されるように、オペレーティングシステム１１５、１つ以上のアプリケーション１１６、およびデータ１１７を記憶する。データは、ＧＵＩ１２４の入力デバイスを使用して入力される、またはＩ／Ｏデバイス１２６から受信されてもよい。コンピュータ１０１の種々の要素は、通信バス１５０を介して通信してもよい。図１Ｃに示されるようなコンピュータ１０１は、クライアント１０２、サーバ１０６、および／またはアプライアンス２００および２０５が、任意のコンピューティングまたは処理環境によって、本明細書に説明されるように動作することが可能な好適なハードウェアおよび／またはソフトウェアを有し得る任意のタイプのマシンまたはマシンのセットを伴って、実装されてもよいため、実施例として示されるにすぎない。
【００５２】
プロセッサ１０３は、システムの機能を果たすための１つ以上のコンピュータプログラムを実行する、１つ以上のプログラマブルプロセッサによって実装されてもよい。本明細書で使用されるように、用語「プロセッサ」は、機能、動作、または動作のシーケンスを実施する、電子回路を説明する。機能、動作、または動作のシーケンスは、電子回路の中にコード化される、またはメモリデバイス内で保持された命令を介してソフトコード化されてもよい。「プロセッサ」は、デジタル値を使用して、またはアナログ信号を使用して、機能、動作、または動作のシーケンスを実施してもよい。いくつかの実施形態では、「プロセッサ」は、１つ以上の特定用途向け集積回路（ＡＳＩＣ）、マイクロプロセッサ、デジタル信号プロセッサ、マイクロコントローラ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブル論理アレイ（ＰＬＡ）、マルチコアプロセッサ、または関連付けられるメモリを伴う汎用コンピュータで具現化されることができる。「プロセッサ」は、アナログ、デジタル、または混合信号であってもよい。いくつかの実施形態では、「プロセッサ」は、１つ以上の物理的プロセッサまたは１つ以上の「仮想」（例えば、遠隔に位置する、または「クラウド」）プロセッサであってもよい。
【００５３】
通信インターフェース１１８は、コンピュータ１０１が、種々の有線および／または無線またはセルラー接続を通して、ＬＡＮ、ＷＡＮ、またはインターネット等のコンピュータネットワークにアクセスすることを可能にするための１つ以上のインターフェースを含んでもよい。
【００５４】
説明される実施形態では、第１のコンピューティングデバイス１０１は、クライアントコンピューティングデバイス（例えば、クライアント１０２）のユーザの代わりにアプリケーションを実行してもよい、その内側でユーザまたはクライアントコンピューティングデバイス（例えば、クライアント１０２）の代わりにアプリケーションが実行される、ホストされたデスクトップセッション等の実行セッションを提供する、仮想マシンを実行してもよい、ホストされたデスクトップ環境を提供するための端末サービスセッションを実行してもよい、または１つ以上のアプリケーション、１つ以上のデスクトップアプリケーション、および１つ以上のアプリケーションが実行され得る１つ以上のデスクトップセッションのうちの１つ以上のものを含む、コンピューティング環境へのアクセスを提供してもよい。
【００５５】
ネットワーク環境１００、クライアント１０２、サーバ１０６、およびアプライアンス２００および２０５の実装および動作の付加的詳細は、２０１７年１月３日にＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．（Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，  ＦＬ）に発行された、米国特許第９，５３８，３４５号（その教示が参照することによって本明細書に組み込まれる）に説明される通りであり得る。
【００５６】
Ｂ．アプライアンスアーキテクチャ
図２は、アプライアンス２００の例示的実施形態を示す。本明細書に説明されるように、アプライアンス２００は、サーバ、ゲートウェイ、ルータ、スイッチ、ブリッジ、または他のタイプのコンピューティングまたはネットワークデバイスとして実装されてもよい。図２に示されるように、アプライアンス２００の実施形態は、ハードウェア層２０６と、ユーザ空間２０２およびカーネル空間２０４に分割されるソフトウェア層２０５とを含んでもよい。ハードウェア層２０６は、その上で、カーネル空間２０４およびユーザ空間２０２内のプログラムおよびサービスが実行され、カーネル空間２０４およびユーザ空間２０２内のプログラムおよびサービスが、アプライアンス２００に対して内部および外部の両方でデータを通信することを可能にする、ハードウェア要素を提供する。図２に示されるように、ハードウェア層２０６は、ソフトウェアプログラムおよびサービスを実行するための１つ以上の処理ユニット２６２と、ソフトウェアおよびデータを記憶するためのメモリ２６４と、ネットワークを経由してデータを伝送および受信するためのネットワークポート２６６と、ネットワークを経由して伝送および受信されるデータのセキュアソケットレイヤー（ＳＳＬ）またはトランスポート層セキュリティ（ＴＬＳ）処理に関連するようなデータを暗号化および暗号解除するための暗号化プロセッサ２６０とを含んでもよい。
【００５７】
アプライアンス２００のオペレーティングシステムは、利用可能なシステムメモリを、カーネル空間２０４およびユーザ空間２０２の中に配分、管理、または別様に集約する。カーネル空間２０４は、任意のデバイスドライバ、カーネル拡張機能、または他のカーネル関連ソフトウェアを含む、カーネル２３０を起動するために留保される。当業者に公知であるように、カーネル２３０は、オペレーティングシステムのコアであり、アプリケーション１０４のリソースおよびハードウェア関連要素のアクセス、制御、および管理を提供する。カーネル空間２０４はまた、キャッシュマネージャ２３２と連動する、いくつかのネットワークサービスまたはプロセスを含んでもよい。
【００５８】
アプライアンス２００は、クライアント１０２、サーバ１０６、ネットワーク１０４、および／または他のアプライアンス２００または２０５と通信するためのＴＣＰ／ＩＰベースのスタック等の１つ以上のネットワークスタック２６７を含んでもよい。例えば、アプライアンス２００は、クライアント１０２とサーバ１０６との間の１つ以上のトランスポート層接続を確立および／または終了してもよい。各ネットワークスタック２６７は、アプライアンス２００による伝送のために１つ以上のネットワークパケットを待ち行列に入れるためのバッファ２４３を含んでもよい。
【００５９】
カーネル空間２０４は、キャッシュマネージャ２３２と、パケットエンジン２４０と、暗号化エンジン２３４と、ポリシエンジン２３６と、圧縮エンジン２３８とを含んでもよい。換言すると、プロセス２３２、２４０、２３４、２３６、および２３８のうちの１つ以上のものは、アプライアンス２００のオペレーティングシステムのコアアドレス空間内で起動し、例えば、カーネルモードで取得されるデータが、ユーザプロセス、スレッド、またはユーザレベルデータ構造にパスまたはコピーされる必要がない場合があるため、メモリへ、およびメモリからのデータトランザクション、および／またはカーネルモードとユーザモードとの間のコンテキスト切替の数を削減し得る。
【００６０】
キャッシュマネージャ２３２は、他の場所に記憶されたオリジナルデータ、または前もって算出、生成、または伝送されたデータを複製し、データのアクセス時間を削減し得る。いくつかの実施形態では、キャッシュメモリは、アプライアンス２００のメモリ２６４内のデータオブジェクトであってもよい、またはメモリ２６４よりも速いアクセス時間を有する物理的メモリであってもよい。
【００６１】
ポリシエンジン２３６は、ユーザが、キャシングポリシ、およびアプライアンス２００によってキャッシングされているオブジェクト、データ、またはコンテンツのアクセス、制御、および管理を識別、規定、定義、または構成し、アプライアンス２００によって果たされるセキュリティ、ネットワークトラフィック、ネットワークアクセス、圧縮、または他の機能を定義または構成することを可能にするための統計エンジンまたは他の構成機構を含んでもよい。
【００６２】
暗号化エンジン２３４は、ＳＳＬまたはＴＬＳ等の任意のセキュリティ関連プロトコルを処理してもよい。例えば、暗号化エンジン２３４は、ネットワークパケットを暗号化および暗号解読してもよい、またはアプライアンス２００を介して通信されるその任意の部分は、例えば、クライアント１０２、サーバ１０６、および／または他のアプライアンス２００または２０５の間に、ＳＳＬ、ＴＬＳ、または他のセキュアな接続を設定または確立してもよい。いくつかの実施形態では、暗号化エンジン２３４は、トンネリングプロトコルを使用し、クライアント１０２とサーバ１０６との間にＶＰＮを提供してもよい。いくつかの実施形態では、暗号化エンジン２３４は、暗号化プロセッサ２６０と通信する。圧縮エンジン２３８は、クライアント１０２とサーバ１０６との間、および／または１つ以上のアプライアンス２００の間で、双方向にネットワークパケットを圧縮する。
【００６３】
パケットエンジン２４０は、ネットワークスタック２６７を介してアプライアンス２００によって受信および伝送されるパケットのカーネルレベル処理を管理し、ネットワークポート２６６を介してネットワークパケットを送信および受信してもよい。パケットエンジン２４０は、例えば、暗号化エンジン２３４、キャッシュマネージャ２３２、ポリシエンジン２３６、および圧縮エンジン２３８と併せて動作し、暗号化／暗号解読、要求レベルコンテンツ切替および要求レベルキャッシュリダイレクト等のトラフィック管理、およびデータの圧縮および展開を実施してもよい。
【００６４】
ユーザ空間２０２は、ユーザモードで別様に起動するユーザモードアプリケーションまたはプログラムによって使用される、オペレーティングシステムのメモリエリアまたは部分である。ユーザモードアプリケーションは、カーネル空間２０４に直接アクセスしなくてもよく、カーネルサービスにアクセスするために、サービス呼び出しを使用する。ユーザ空間２０２は、グラフィカルユーザインターフェース（ＧＵＩ）２１０と、コマンドラインインターフェース（ＣＬＩ）２１２と、シェルサービス２１４と、健全性モニタ２１６と、デーモンサービス２１８とを含んでもよい。ＧＵＩ２１０およびＣＬＩ２１２は、システム管理者または他のユーザが、アプライアンス２００のオペレーティングシステムを介して等、アプライアンス２００の動作と相互作用し、それを制御することを可能にする。シェルサービス２１４は、ＧＵＩ２１０および／またはＣＬＩ２１２を介したユーザによるアプライアンス２００との相互作用をサポートするためのプログラム、サービス、タスク、プロセス、または実行可能命令を含む。
【００６５】
健全性モニタ２１６は、ネットワークシステムが適切に機能しており、ユーザが、例えば、アプライアンス２００のアクティビティを監視することによって、ネットワークを経由して要求されたコンテンツを受信していることを監視、チェック、報告し、確実にする。いくつかの実施形態では、健全性モニタ２１６は、アプライアンス２００を介してパスされる任意のネットワークトラフィックを傍受および点検する。例えば、健全性モニタ２１６は、暗号化エンジン２３４、キャッシュマネージャ２３２、ポリシエンジン２３６、圧縮エンジン２３８、パケットエンジン２４０、デーモンサービス２１８、およびシェルサービス２１４のうちの１つ以上のものとインターフェースをとり、アプライアンス２００の任意の部分の状態、ステータス、動作条件、または健全性を決定してもよい。さらに、健全性モニタ２１６は、プログラム、プロセス、サービス、またはタスクがアクティブであり、現在起動しているかどうかを決定し、任意のプログラム、プロセス、サービス、またはタスクによって提供されるステータス、エラー、または履歴ログをチェックし、アプライアンス２００の任意の部分との任意の条件、ステータス、またはエラーを決定してもよい。加えて、健全性モニタ２１６は、アプライアンス２００上で実行される任意のアプリケーション、プログラム、プロセス、サービス、タスク、またはスレッドの性能を測定および監視してもよい。
【００６６】
デーモンサービス２１８は、連続的に、またはバックグラウンドで起動し、アプライアンス２００によって受信される周期的サービス要求に対処する、プログラムである。いくつかの実施形態では、デーモンサービスは、適宜、別のデーモンサービス２１８等の他のプログラムまたはプロセスに要求を転送してもよい。
【００６７】
本明細書に説明されるように、アプライアンス２００は、各サーバ１０６との１つ以上のトランスポート層接続を開き、これらの接続を維持して、インターネットを介したクライアントによる反復データアクセスを可能にすることによって、クライアント１０２へのトランスポート層接続を繰り返し開閉することによって引き起こされる処理負荷の多くからサーバ１０６を解放してもよい（例えば、「接続プーリング」）。接続プーリングを実施するために、アプライアンス２００は、トランスポート層プロトコルレベルにおいてシーケンス番号および確認応答番号を修正することによって、通信を変換または多重化してもよい（例えば、「接続多重化」）。アプライアンス２００はまた、クライアント１０２とサーバ１０６との間の通信のために切替または負荷分散を提供してもよい。
【００６８】
本明細書に説明されるように、各クライアント１０２は、ネットワーク１０４を介したアプライアンス２００および／またはサーバ１０６との通信を確立および交信するためのクライアントエージェント１２０を含んでもよい。クライアント１０２は、ネットワーク１０４と通信する１つ以上のアプリケーションをインストールしている、および／または実行してもよい。クライアントエージェント１２０は、１つ以上のアプリケーションによって使用されるネットワークスタックからネットワーク通信を傍受してもよい。例えば、クライアントエージェント１２０は、ネットワークスタック内の任意の点においてネットワーク通信を傍受し、クライアントエージェント１２０によって所望、管理、または制御される宛先にネットワーク通信をリダイレクトし、例えば、クライアントエージェント１２０によって制御または管理されるＩＰアドレスおよびポートへのトランスポート層接続を傍受およびリダイレクトしてもよい。したがって、クライアントエージェント１２０は、ネットワーク層等のトランスポート層の下方の任意のプロトコル層、およびセッション、プレゼンテーション、またはアプリケーション層等のトランスポート層の上方の任意のプロトコル層を透過的に傍受してもよい。クライアントエージェント１２０は、トランスポート層とインターフェースをとり、トランスポート層によって搬送される任意のプロトコルを介して提供される任意の通信を確実にする、最適化する、加速する、ルーティングする、または負荷分散することができる。
【００６９】
いくつかの実施形態では、クライアントエージェント１２０は、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．（Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，  ＦＬ）によって開発された独立コンピューティングアーキテクチャ（ＩＣＡ）クライアントとして実装される。クライアントエージェント１２０は、加速、ストリーミング、監視、および／または他の動作を実施してもよい。例えば、クライアントエージェント１２０は、サーバ１０６からクライアント１０２にアプリケーションをストリーミングすることを加速してもよい。クライアントエージェント１２０はまた、エンドポイント検出／走査を実施し、アプライアンス２００および／またはサーバ１０６のためのクライアント１０２についてのエンドポイント情報を収集してもよい。アプライアンス２００および／またはサーバ１０６は、収集された情報を使用し、ネットワーク１０４へのクライアントの接続のアクセス、認証、および認可制御を決定および提供してもよい。例えば、クライアントエージェント１２０は、オペレーティングシステムおよび／またはオペレーティングシステムのバージョン、オペレーティングシステムのサービスパック、起動しているサービス、起動しているプロセス、ファイル、アンチウイルス、ファイアウォール、セキュリティ、および／または他のソフトウェア等のクライアントの種々のアプリケーションの存在またはバージョン等の１つ以上のクライアント側属性を識別および決定してもよい。
【００７０】
アプライアンス２００の実装および動作の付加的詳細は、２０１７年１月３日にＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．（Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，  ＦＬ）に発行された、米国特許第９，５３８，３４５号（その教示が参照することによって本明細書に組み込まれる）に説明される通りであり得る。
【００７１】
Ｃ．仮想化されたアプリケーション配信コントローラを提供するためのシステムおよび方法
ここで図３を参照すると、仮想化された環境３００のブロック図が示される。示されるように、仮想化された環境３００内のコンピューティングデバイス３０２は、仮想化層３０３と、ハイパーバイザ層３０４と、ハードウェア層３０７とを含む。ハイパーバイザ層３０４は、仮想化層３０３内で実行される少なくとも１つの仮想マシン（ＶＭ）（例えば、ＶＭ３０６のうちの１つ）によって、ハードウェア層３０７内のいくつかの物理的リソース（例えば、物理的プロセッサ３２１および物理的ディスク３２８）へのアクセスを配分および管理する、１つ以上のハイパーバイザ（または仮想化マネージャ）３０１を含む。各ＶＭ３０６は、仮想プロセッサ３３２および／または仮想ディスク３４２等の配分された仮想リソース、および仮想メモリおよび仮想ネットワークインターフェース等の仮想リソースを含んでもよい。いくつかの実施形態では、ＶＭ３０６のうちの少なくとも１つは、ハイパーバイザ３０１と通信し、デバイス３０２上の他のＶＭ（例えば、ゲストオペレーティングシステム３１０）を管理および構成するためのアプリケーションを実行するために使用される、制御オペレーティングシステム（例えば、３０５）を含んでもよい。
【００７２】
一般に、ハイパーバイザ３０１は、物理的デバイスへのアクセスを有するオペレーティングシステムをシミュレートする任意の様式で、仮想リソースをＶＭ３０６のオペレーティングシステムに提供してもよい。したがって、ハイパーバイザ３０１は、仮想ハードウェアをエミュレートし、物理的ハードウェアをパーティション化し、物理的ハードウェアを仮想化し、コンピューティング環境へのアクセスを提供する仮想マシンを実行するために使用されてもよい。例証的実施形態では、ハイパーバイザ３０１は、例えば、オープンソースであるＸｅｎ．ｏｒｇ  ｃｏｍｍｕｎｉｔｙによって提供されるようなＸＥＮハイパーバイザとして実装されてもよい。例証的実施形態では、ゲストオペレーティングシステムが実行され得る仮想マシンプラットフォームを作成する、ハイパーバイザを実行するデバイス３０２は、ホストサーバと称される。そのような実施形態では、デバイス３０２は、Ｃｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．（Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，  ＦＬ）によって提供されるようなＸＥＮサーバとして実装されてもよい。
【００７３】
ハイパーバイザ３０１は、オペレーティングシステム（例えば、制御オペレーティングシステム３０５および／またはゲストオペレーティングシステム３１０）が実行される、１つ以上のＶＭ３０６を作成してもよい。例えば、ハイパーバイザ３０１は、仮想マシン画像をロードし、ＶＭ３０６を作成してオペレーティングシステムを実行してもよい。ハイパーバイザ３０１は、ハードウェア層３０７の抽象化をＶＭ３０６に提示してもよい、および／またはハードウェア層３０７の物理的能力がＶＭ３０６に提示される方法を制御してもよい。例えば、ハイパーバイザ３０１は、複数の物理的コンピューティングデバイスを横断して分配されるリソースのプールを管理してもよい。
【００７４】
いくつかの実施形態では、ＶＭ３０６のうちの１つ（例えば、制御オペレーティングシステム３０５を実行するＶＭ）は、例えば、ＶＭの実行および／または終了を管理すること、および／またはＶＭへの仮想リソースの配分を管理することによって、他のＶＭ３０６を管理および構成してもよい。種々の実施形態では、ＶＭは、例えば、１つ以上のアプリケーションプログラミングインターフェース（ＡＰＩ）、共有メモリ、および／または他の技法を介して、ハイパーバイザ３０１および／または他のＶＭと通信してもよい。
【００７５】
一般に、ＶＭ３０６は、仮想化されたコンピューティング環境３００内のリソース、例えば、１つ以上のプログラム、アプリケーション、ドキュメント、ファイル、デスクトップ、および／またはコンピューティング環境、または他のリソースへのアクセスをデバイス３０２のユーザに提供してもよい。いくつかの実施形態では、ＶＭ３０６は、それらが仮想マシン（例えば、ハードウェア仮想マシンまたはＨＶＭ）であることを認識していない、完全に仮想化されたＶＭとして実装されてもよい。他の実施形態では、ＶＭは、それが仮想マシンであることを認識してもよい、および／またはＶＭは、準仮想化された（ＰＶ）ＶＭとして実装されてもよい。
【００７６】
単一の仮想化されたデバイス３０２を含むものとして図３に示されるが、仮想化された環境３００は、少なくとも１つの物理的ホストが仮想マシンを実行する、システム内の複数のネットワーク化デバイスを含んでもよい。ＶＭが実行されるデバイスは、物理的ホストおよび／またはホストマシンと称され得る。例えば、アプライアンス２００は、加えて、または代替として、クライアント１０２、サーバ１０６、またはアプライアンス２００等の任意のコンピューティングデバイス上の仮想化された環境３００内で実装されてもよい。仮想アプライアンスは、アプライアンス２００に関して同様に説明されるように、可用性、性能、健全性監視、キャッシングおよび圧縮、接続多重化およびプーリング、および／またはセキュリティ処理（例えば、ファイアウォール、ＶＰＮ、暗号化／暗号解読等）のための機能性を提供してもよい。
【００７７】
仮想化されたコンピューティング環境３００の実装および動作の付加的詳細は、２０１７年１月３日にＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．（Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，  ＦＬ）に発行された、米国特許第９，５３８，３４５号（その教示が参照することによって本明細書に組み込まれる）に説明される通りであり得る。
【００７８】
いくつかの実施形態では、サーバは、例えば、マルチコア処理システムの種々のコアおよび／または多重プロセッサデバイスの種々のプロセッサ上で、複数の仮想マシン３０６を実行してもよい。例えば、概して、（例えば、図１Ｃ、２、および３で）本明細書では「プロセッサ」として示されるが、プロセッサのうちの１つ以上のものは、マルチスレッド、並列アーキテクチャ、および／またはマルチコアアーキテクチャを提供するように、単一またはマルチコアプロセッサのいずれかとして実装されてもよい。各プロセッサおよび／またはコアは、そのプロセッサ／コアのみによってアクセス可能であるプライベートまたはローカル利用のために配分される、または割り当てられる、メモリを有する、または使用してもよい、および／または公開されるかまたは共有され、複数のプロセッサ／コアによってアクセス可能であるメモリを有する、または使用してもよい。そのようなアーキテクチャは、（例えば、機能並列処理、データ並列処理、フローベースのデータ並列処理等によって）１つ以上のプロセッサおよび／または１つ以上のコアを横断して、作業、タスク、負荷、またはネットワークトラフィック分配を可能にし得る。
【００７９】
さらに、物理的プロセッサ／コアの形態で実装されているコアの機能性の代わりに（またはそれに加えて）、そのような機能性は、機能性がコンピューティングデバイスのクラスタ、サーバファーム、またはコンピューティングデバイスのネットワーク等の複数のデバイスを横断して実装され得るように、クライアント１０２、サーバ１０６、またはアプライアンス２００上の仮想化された環境（例えば、３００）内に実装されてもよい。種々のプロセッサ／コアは、コア間メッセージング、共有メモリ、カーネルＡＰＩ等の種々のインターフェース技法を使用して、相互とインターフェースをとる、または通信してもよい。
【００８０】
複数のプロセッサおよび／または複数のプロセッサコアを採用する実施形態では、説明される実施形態は、例えば、コアまたはプロセッサの間でデータパケットを分配し、コアを横断してフローを平衡化してもよい。例えば、パケット分配は、各コアによって果たされる機能の決定、ソースおよび宛先アドレス、および／または関連付けられるコア上の負荷が所定の閾値を上回るかどうか、関連付けられるコア上の負荷が所定の閾値を下回るかどうか、関連付けられるコア上の負荷が他のコア上の負荷未満であるかどうか、またはプロセッサ上の負荷の量に部分的に基づいて、データパケットを転送する場所を決定するために使用され得る、任意の他のメトリックに基づいてもよい。
【００８１】
例えば、データパケットは、ネットワーク内の複数のプロセッサ／コアを使用してパケットを処理するために、受信側スケーリング（ＲＳＳ）を使用して、コアまたはプロセスの間で分配されてもよい。ＲＳＳは、概して、パケットの順序正しい配信を維持しながら、パケット処理が複数のプロセッサ／コアを横断して平衡化されることを可能にする。いくつかの実施形態では、ＲＳＳは、ハッシングスキームを使用し、パケットを処理するためのコアまたはプロセッサを決定してもよい。
【００８２】
ＲＳＳは、値のシーケンス等の任意のタイプおよび形態の入力からハッシュを生成してもよい。本値のシーケンスは、ネットワークパケットの任意のヘッダ、フィールド、またはペイロード等のネットワークパケットの任意の部分を含み、アドレスおよびポート等のネットワークパケットまたはデータフローと関連付けられる情報の任意の組を含むことができる。ハッシュ結果またはその任意の部分は、例えば、ハッシュテーブル、間接テーブル、または他のマッピング技法を介して、ネットワークパケットを分配するためのプロセッサ、コア、エンジン等を識別するために使用されてもよい。
【００８３】
マルチプロセッサおよび／またはマルチコアシステムの実装および動作の付加的詳細は、２０１７年１月３日にＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．（Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，  ＦＬ）に発行された、米国特許第９，５３８，３４５号（その教示が参照することによって本明細書に組み込まれる）に説明される通りであり得る。
【００８４】
Ｄ．分散型クラスタアーキテクチャを提供するためのシステムおよび方法
単一のアプライアンスであるものとして図１Ａおよび１Ｂに示されるが、アプライアンス２００は、１つ以上の分散型またはクラスタ化アプライアンスとして実装されてもよい。個々のコンピューティングデバイスまたはアプライアンスは、クラスタのノードと称され得る。集中型管理システムは、負荷分散、分配、構成、または他のタスクを実施し、ノードが単一のコンピューティングシステムとして併せて動作することを可能にし得る。そのようなクラスタは、単一の仮想アプライアンスまたはコンピューティングデバイスと見なされ得る。図４は、例証的コンピューティングデバイスクラスタまたはアプライアンスクラスタ４００のブロック図を示す。複数のアプライアンス２００または他のコンピューティングデバイス（例えば、ノード）が、単一のクラスタ４００に加えられてもよい。クラスタ４００は、アプリケーションサーバ、ネットワーク記憶サーバ、バックアップサービス、または任意の他のタイプのコンピューティングデバイスとして動作し、アプライアンス２００および／または２０５の機能のうちの多くを果たしてもよい。
【００８５】
いくつかの実施形態では、クラスタ４００の各アプライアンス２００は、本明細書に説明されるように、マルチプロセッサおよび／またはマルチコアアプライアンスとして実装されてもよい。そのような実施形態は、クラスタの１つのアプライアンスがパケットをクラスタのノードに分配し、各ノードが処理のためのパケットをノードのプロセッサ／コアに分配する、２層分配システムを採用してもよい。多くの実施形態では、クラスタ４００のアプライアンス２００のうちの１つ以上のものは、所与のシャーシ、ラック、および／またはデータセンタ内のブレードサーバまたはラックマウントデバイスのグループ等、物理的にグループ化される、または地理的に近接し得る。いくつかの実施形態では、クラスタ４００のアプライアンス２００のうちの１つ以上のものは、アプライアンス２００が物理的または地理的に共同設置されてない状態で、地理的に分配されてもよい。そのような実施形態では、地理的に遠隔のアプライアンスが、専用ネットワーク接続および／またはＶＰＮによって加えられてもよい。地理的に分配された実施形態では、負荷分散もまた、地理的に遠隔のアプライアンスの間の通信待ち時間に対処し得る。
【００８６】
いくつかの実施形態では、クラスタ４００は、物理的グループとしてではなく、共通構成、管理、および目的を介してグループ化される、仮想アプライアンスと見なされ得る。例えば、アプライアンスクラスタは、１つ以上のサーバによって実行される複数の仮想マシンまたはプロセスを備えてもよい。
【００８７】
図４に示されるように、アプライアンスクラスタ４００は、例えば、クライアント１０２とアプライアンスクラスタ４００との間にデータを転送するように、クライアントデータプレーン４０２を介して第１のネットワーク１０４（１）に結合されてもよい。クライアントデータプレーン４０２は、クラスタ４００のノードを横断してトラフィックを分配するように、クラスタ４００の内部または外部のスイッチ、ハブ、ルータ、または他の類似ネットワークデバイスとして実装されてもよい。例えば、トラフィック分配は、クラスタのアプライアンスまたはノードを伴って構成される次のホップを伴う等価コストマルチパス（ＥＣＭＰ）ルーティング、オープン・ショーテスト・パス・ファースト（ＯＳＰＦ）、ステートレスハッシュベースのトラフィック分配、リンク集約（ＬＡＧ）プロトコル、または任意の他のタイプおよび形態のフロー分配、負荷分散、およびルーティングに基づいて、実施されてもよい。
【００８８】
アプライアンスクラスタ４００は、サーバデータプレーン４０４を介して第２のネットワーク１０４（２）に結合されてもよい。クライアントデータプレーン４０２と同様に、サーバデータプレーン４０４は、クラスタ４００の内部または外部にあり得る、スイッチ、ハブ、ルータ、または他のネットワークデバイスとして実装されてもよい。いくつかの実施形態では、クライアントデータプレーン４０２およびサーバデータプレーン４０４は、単一のデバイスに合併される、または組み合わせられてもよい。
【００８９】
いくつかの実施形態では、クラスタ４００の各アプライアンス２００は、内部通信ネットワークまたはバックプレーン４０６を介して接続されてもよい。バックプレーン４０６は、トラフィックのノード間転送のため、および／または管理者またはユーザからクラスタ４００に構成および制御トラフィックを通信するために、ノード間またはアプライアンス間制御および構成メッセージを可能にしてもよい。いくつかの実施形態では、バックプレーン４０６は、物理的ネットワーク、ＶＰＮ、またはトンネル、またはそれらの組み合わせであってもよい。
【００９０】
クラスタ４００の付加的詳細は、２０１７年１月３日にＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，  Ｉｎｃ．（Ｆｏｒｔ  Ｌａｕｄｅｒｄａｌｅ，  ＦＬ）に発行された、米国特許第９，５３８，３４５号（その教示が参照することによって本明細書に組み込まれる）に説明される通りであり得る。
【００９１】
Ｅ．セッションブローカの存在下で複数のサーバのうちのサーバに接続するためのシステムおよび方法
本開示は、複数のサーバのうちのサーバに接続するシステムおよび方法を対象とする。クライアントは、リンクを介してＲＤＰプロキシからダウンロードされるＲＤＰファイルを実行する要求を検出することに応じて、サーバにおいてホストされるリソースのために、遠隔デスクトッププロトコル（ＲＤＰ）に従って遠隔デスクトップセッションを開始してもよい。リンクは、公開されてもよいかまたは動的に生成されてもよい。遠隔デスクトップセッションを確立するために、一意のセキュリティトークンを伴う接続要求が、クライアントから送信されてもよく、ＲＤＰプロキシに到着してもよい。セキュリティトークンに基づいて、ＲＤＰプロキシは、適切なサーバを選択してもよく、セッションの確立を完了するための構成に基づいて、サーバと認証（例えば、シングルサインオン（ＳＳＯ））を実施してもよい。サーバは、セッションディレクトリ（またはセッションブローカ）を伴うサーバファームの一部であってもよい。そのような環境では、セッションブローカによって使用されるトークンは、ＲＤＰプロキシによって設定または提供されるトークンと異なり得る。その結果として、接続要求および後続のデータパケットは、不適切に処理および／または（例えば、意図された／適切なＲＤＰサーバの代わりに別のサーバに）ルーティングされ得る。
【００９２】
単一の進入点を通してサーバファームをセッションブローカと接続するクライアントを支援するために、かつ所与の遠隔デスクトップセッションのための持続性を維持するために、ＲＤＰプロキシは、サーバの間で負荷分散を実施し、サーバブローカによる再配分に対処してもよい。その目的で、ＲＤＰプロキシは、負荷分散装置と接続してもよい、または負荷分散装置の機能性のうちの少なくともいくつかを果たしてもよい。負荷分散装置は、ＲＤＰモジュールへのバックエンドサーバとして作用してもよく、サーバファームのサーバを横断して接続を配分してもよい。データパケットがサーバファームとクライアントとの間を移動すると、負荷分散装置（例えば）は、データパケットからのトークンを修正および／または除去してもよい。負荷分散装置は、次いで、接続がいかなるエラーも伴わずに確立され得るように、データパケットをサーバに転送してもよい。
【００９３】
パケットが、異なるサーバに割り当てられたクライアントのためのすでに存在しているセッション用である場合、セッションディレクトリは、他のサーバへの接続をリダイレクトするように、最初にパケットを受信したサーバに命令または通知してもよい。初期サーバは、負荷分散装置を介してＲＤＰプロキシにサーバリダイレクトパケットを返送してもよい。サーバリダイレクトパケットは、標的サーバデータ、負荷分散情報、および／またはクライアントのためのアカウント証明書を有してもよい。
【００９４】
サーバリダイレクトパケットの受信に応答して、ＲＤＰプロキシは、クライアントからの後続のリダイレクトされた接続要求が、パケットを標的サーバにルーティングするため、および／または認証を実施するためのセキュリティトークンを含むように、サーバリダイレクトパケットを修正してもよい。この目的で、ＲＤＰプロキシは、標的サーバデータ、負荷分散情報、および／またはアカウント証明書等のサーバリダイレクトパケットの１つ以上のフィールドを更新、修正、および／または除去してもよい。シングルサインイン（ＳＳＯ）が使用されない接続では、サーバリダイレクトパケットは、クライアントからの結果として生じたリダイレクトされた接続要求パケットが、クライアントとサーバとの間のＲＤＰストリームを通して自動的にパスされたアカウント証明書を伴って、バックエンド標的サーバを接続するために使用され得るように、更新されてもよい。ＲＤＰプロキシは、次いで、修正されたサーバリダイレクトパケットをクライアントに送信してもよく、続いて、クライアントからリダイレクトされた接続要求を受信してもよい。要求を受信することに応じて、セキュリティトークンは、構成に基づいて、認証および／または施行情報とともに、バックエンド標的サーバに接続するようにＲＤＰプロキシによってフェッチされてもよい。
【００９５】
このようにして、クライアントとサーバとの間のセッションのためのデータパケットは、接続のためにセッションディレクトリによって割り当てられる／決定されるバックエンド標的サーバにルーティングされてもよい。さらに、ＲＤＰプロキシは、サーバファームにおけるセッションディレクトリの存在下で、クライアントに提供されるリソースのためにリンクを通して立ち上げられる接続のために、プロキシにおけるシングルサインオン（ＳＳＯ）の有無を問わず、遠隔デスクトップセッションをサポートしてもよい。遠隔デスクトップセッションはまた、シングルサインオンおよび／またはセキュリティ施行の有無を問わず、サーバファームに接続する全てのクライアントのための単一のリンクを通して、または、シングルサインオンおよび／またはセキュリティ施行の有無を問わず、異なるクライアントおよび／またはサーバへの異なる接続のための別個のリンク（例えば、ＲＤＰプロキシリンク）を通して、複数のクライアントおよびサーバファームの存在下で互換性があり得る。
【００９６】
ここで図５Ａを参照すると、セッションブローカの存在下で複数のサーバのうちのサーバに接続するためのシステム５００の実施形態が、描写される。要するに、システム５００は、１つ以上のクライアント１０２ａ−ｎと、仲介デバイス５０２と、認証サーバ５１４と、負荷分散装置５１６と、サーバファーム３８とを含んでもよい。サーバファーム３８は、１つ以上のサーバ１０６ａ−ｎと、セッションディレクトリ５１８とを含んでもよい。仲介デバイス５０２は、トークン検証装置５０６と、プロトコル検証装置５０８と、リダイレクトハンドラ５１０と、サーバセレクタ５０８とを含んでもよい。いくつかの実施形態では、負荷分散装置５１６は、仲介デバイス５０２の一部であってもよい。１つ以上のクライアント１０２ａ−ｎは、ネットワーク１０４を介して、仲介デバイス５０２、認証サーバ５１４、および／または負荷分散装置５１６に通信可能に接続されてもよい。仲介デバイス５０２、認証サーバ５１４、および／または負荷分散装置５１６は、サーバファーム３８のサーバ１０６ａ−ｎおよび／またはセッションディレクトリ５１８と通信可能に接続されてもよい。
【００９７】
上記の要素またはエンティティはそれぞれ、１つ以上の実施形態では、ハードウェア、またはハードウェアおよびソフトウェアの組み合わせで実装される。例えば、これらの要素またはエンティティはそれぞれ、任意のアプリケーション、プログラム、ライブラリ、スクリプト、タスク、サービス、プロセス、またはデバイス１０２のハードウェア上で実行される任意のタイプおよび形態の実行可能命令を含むことができる。ハードウェアは、１つ以上の実施形態では、例えば、少なくとも１Ｅおよび１Ｆに関連して上記で説明されるように、１つ以上のプロセッサ等の回路を含む。
【００９８】
本ソリューションのシステムおよび方法は、クライアント、サーバ、およびアプライアンス２００を含む、任意のタイプおよび形態のデバイスで実装されてもよい。本明細書で参照されるように、「サーバ」は、時として、クライアント・サーバ関係にある任意のデバイス、例えば、クライアントデバイスとハンドシェイクしているアプライアンスを指し得る。本システムおよび方法は、本明細書に説明されるアプライアンスまたはデバイス２００の任意の実施形態等の任意の仲介デバイスまたはゲートウェイで実装されてもよい。本システムおよび方法のある部分は、例えば、アプライアンスのパケット処理エンジンおよび／または仮想サーバの一部として実装されてもよい。本システムおよび方法は、本明細書に説明されるマルチコアアプライアンス、仮想化された環境、およびクラスタ化環境を含む、任意のタイプおよび形態の環境で実装されてもよい。仲介デバイス５０２は、例えば、少なくとも図１Ａ−１Ｃ、２、および４に関連して上記に説明されるアプライアンス２００の１つ以上の特徴の任意の実施形態を含むことができる。
【００９９】
サーバファーム３８のサーバ１０６ａ−ｎのうちの１つの上にホストされるリソースにアクセスするためのＲＤＰストリームを確立するために、各クライアント１０２ａ−ｎは、最初に、認証する要求を仲介デバイス５０２の認証装置５０４に送信してもよい。認証する要求は、クライアント１０２ａ−ｎのアカウント証明書を含んでもよい。いくつかの実施形態では、アカウント証明書は、複数の認証要因（例えば、ユーザ名、パスワード、およびバイオメトリック情報等）を含んでもよい。認証する要求の受信に応じて、認証装置５０４は、クライアント１０２ａ−ｎからのアカウント証明書を使用して、認証サーバ５１４と認証を実施してもよい。認証は、とりわけ、ライトウェイトディレクトリアクセスプロトコル（ＬＤＡＰ）、遠隔認証ダイヤルインユーザサービス（ＲＡＤＩＵＳ）、セキュリティアカウントマネージャ認証（ＳＡＭ）、ウェブ認証（ＷｅｂＡｕｔｈ）、および／またはオープン認可（ＯＡｕｔｈ）に従い得る。認証の完了に応じて、認証サーバ５１４は、成功インジケータまたは失敗インジケータを認証装置５０４に伝送してもよい。成功インジケータは、トークンの認証が成功したことを示し得る。他方では、失敗インジケータは、トークンの認証が成功していないことを示し得る。失敗インジケータが認証サーバ５１４から受信される場合、認証装置５０４は、失敗インジケータをクライアント１０２ａ−ｎに転送してもよい。いくつかの実施形態では、クライアント１０２ａ−ｎは、本プロセスを繰り返す別の要求を送信することによって、認証を再試行してもよい。
【０１００】
成功インジケータが認証サーバ５１４から受信される場合、認証装置５０４は、認証の確認を送信してもよい。認証装置５０４は、クライアント１０２ａ−ｎに利用可能なサーバ１０６ａ−ｎ上でホストされるリソースを識別する、１つ以上のリンクを送信してもよい。各リソースは、とりわけ、アプリケーション、デスクトップセッション、および／またはウェブページであってもよい。リンクは、アドレス（例えば、ユニフォームリソースロケータ）を含んでもよい。アドレスは、仲介デバイス５０２およびサーバ１０６ａ−ｎ上でホストされるリソースを参照し得る。いくつかの実施形態では、リンクのアドレスは、負荷分散装置５１６を参照し得る。いくつかの実施形態では、認証装置５０４は、リソースのためにサーバ１０６ａ−ｎまたは仲介デバイス５０２によって公開されるリンクを識別してもよい。いくつかの実施形態では、リンクのアドレスは、１つ以上のアクセスパラメータを含んでもよい。１つ以上のアクセスパラメータは、仲介デバイス５０２がリソースへのアクセスを制御するための構成情報に対応し得る。１つ以上のパラメータは、クライアントおよび／またはユーザを認証する要求内のユーザ／アカウント証明書に基づいて、認証装置５０４によって生成されてもよい。いくつかの実施形態では、認証装置５０４は、例えば、リソースの可用性に基づいて、および／またはユーザがログオンすることに応答して、リソースのためのリンクを動的に生成してもよい。いくつかの実施形態では、１つ以上のリンクは、仲介デバイス５０２および／または１つ以上のサーバ１０６ａ−ｎと関連付けられるホームページ上にあってもよい。
【０１０１】
１つ以上のリンクを受信すると、クライアント１０２ａ−ｎは、例えば、１つ以上のリンクのうちの１つを選択またはアクティブ化することによって、遠隔デスクトッププロトコル（ＲＤＰ）に従って、仲介デバイス５０２を介してＲＤＰ接続を確立する、または立ち上げてもよい。クライアント１０２ａ−ｎ上で、各リンクは、その上で実行されるアプリケーションのグラフィカルユーザインターフェース上に提示されてもよい。いくつかの実施形態では、リンクは、サーバ１０６ａ−ｎおよび／または仲介デバイス５０２によって公開されてもよい。リンクの実行または起動に応じて、クライアント１０２ａ−ｎは、リンクを使用して、ＲＤＰ要求を生成してもよい。ＲＤＰ要求は、Ｘ．２２４接続要求プロトコルデータユニット（ＰＤＵ）と一致し得る。ＲＤＰ要求は、トークン（時として、ルーティングトークンまたはクッキーと称される）を含んでもよい。トークンは、ＲＤＰ要求またはＸ．２２４接続要求ＰＤＵのルーティングトークンフィールド内のトークンまたは情報を備えてもよい。トークンは、とりわけ、長さ、長さインジケータ、タイプクレジット、宛先参照、ソース参照（クライアント１０２ａ−ｎに対応する）、および／またはクッキーを含み得る、バイトシーケンスであってもよい。いくつかの実施形態では、宛先参照は、ＲＤＰ要求がルーティングされるものである、負荷分散装置５１６に対応し得る。クッキーは、ＲＤＰ要求が仲介デバイス５０２および／または負荷分散装置５１６によってルーティングされるものである、サーバ１０６ａ−ｎに対応する参照アドレスを含んでもよい。いくつかの実施形態では、仲介デバイス５０２および負荷分散装置は、それぞれ、サーバファームのサーバに接続するため、および負荷分散を実施するために、トークンを使用する。トークンは、ＲＤＰファイルの「負荷分散情報」フィールドから取得されてもよく、Ｘ．２２４接続要求ＰＤＵのルーティングトークンフィールドの中に更新されてもよい。負荷分散装置は、トークンを使用し、例えば、セッションディレクトリ／ブローカの存在下で、サーバファームへのクライアント接続の負荷分散を実施してもよい。
【０１０２】
ＲＤＰ要求は、トークン以外に他のデータを含んでもよい。いくつかの実施形態では、ＲＤＰ要求は、要求されたリソース（例えば、サーバ１０６ａ−ｎの参照アドレス）をホストする標的サーバ１０６ａ−ｎのインジケーションを含んでもよい。いくつかの実施形態では、ＲＤＰ要求は、リソースをホストするサーバ１０６ａ−ｎとシングルサインオン（ＳＳＯ）を実施するための構成情報（例えば、単一のアカウント識別子、パスワード、および／または１つ以上のリソースのための他の認証要因）を含んでもよい。いくつかの実施形態では、ＲＤＰ要求は、リソースのためのアカウント証明書（例えば、ユーザ名、パスワード、および／またはリソースのための他の認証要因）を含んでもよい。いくつかの実施形態では、ＲＤＰ要求は、サーバ１０６ａ−ｎ上でホストされる要求されたリソースへのアクセスを制御するための構成情報を含んでもよい。アクセスを制御するための構成情報は、クライアント１０２ａ−ｎに利用可能であるかまたは利用不可能である要求リソースの特徴を規定してもよい。構成情報は、ＲＤＰ要求を生成するために使用されるリンクのアドレス内に含まれる１つ以上のパラメータに対応し得る。いくつかの実施形態では、前述のうちのいずれかは、構成情報の一部と称され得る。クライアント１０２ａ−ｎは、受信されたＲＤＰ要求を仲介デバイス５０２に伝送してもよい。
【０１０３】
いくつかの実施形態では、クライアント１０２ａ−ｎは、ＳＳＯが仲介デバイス５０２において利用可能であるかどうかを決定してもよい。ＳＳＯが利用可能であるかどうかの決定は、ＲＤＰ要求の送信に先立つ、またはそれに続き得る。クライアント１０２ａ−ｎが、ＳＳＯが仲介デバイス５０２において利用可能であることを決定する場合、クライアント１０２ａ−ｎは、他のデータとともに、ＲＤＰ要求内の要求されたリソースをホストするサーバ１０６ａ−ｎとＳＳＯを実施するための構成情報を含んでもよい。いくつかの実施形態では、クライアント１０２ａ−ｎは、ＲＤＰ要求を送信することに続いて、構成情報を送信し、ＳＳＯを実施してもよい。他方では、クライアント１０２ａ−ｎが、ＳＳＯが仲介デバイス５０２において利用不可能であることを決定する場合、クライアント１０２ａ−ｎは、ＲＤＰ要求内にアカウント証明書を含んでもよい。いくつかの実施形態では、クライアント１０２ａ−ｎは、ＲＤＰ要求を送信することに続いて、アカウント証明書を送信してもよい。
【０１０４】
続いて、仲介デバイス５０２のトークン検証装置５０６は、クライアント１０２ａ−ｎのうちの１つ以上のものからＲＤＰ要求を受信し、サーバファーム３８のサーバ１０６ａ−ｎのうちの１つに接続してもよい。いくつかの実施形態では、トークン検証装置５０６は、クライアント１０２ａ−ｎからＲＤＰ要求を傍受してもよい。１つ以上のクライアントに提供され、ＲＤＰ要求を生成するために使用されるリンクが、仲介デバイス５０２を参照し得るため、１つ以上のクライアント１０２ａ−ｎからの全てのＲＤＰ要求は、仲介デバイス５０２に到着してもよい。システム５００との関連で、ＲＤＰ要求が仲介デバイス５０２を参照し得るため、仲介デバイス５０２は、クライアント１０２ａ−ｎからサーバファーム３８のサーバ１０６ａ−ｎへの単一の進入点として作用してもよい。
【０１０５】
トークンを検証するために、トークン検証装置５０６は、ＲＤＰ要求を解析し、その中に含まれるトークンを識別してもよい。いくつかの実施形態では、トークン検証装置５０６は、トークンに対応するＲＤＰ要求のフィールドを識別してもよい。トークンから、トークン検証装置５０６は、ＲＤＰ要求の宛先参照（例えば、インターネットプロトコル（ＩＰ）アドレスまたは媒体アクセス制御（ＭＡＣ）アドレス）を識別してもよい。トークン検証装置５０６は、負荷分散装置５１６の参照を識別してもよい。ＲＤＰ要求のトークンを検証するために、トークン検証装置５０６は、ＲＤＰ要求の宛先参照を負荷分散装置５１６の参照と比較してもよい。ＲＤＰ要求の宛先参照が負荷分散装置５１６の参照に合致しない場合、トークン検証装置５１６は、失敗インジケータをクライアント１０２ａ−ｎに送信してもよい。いくつかの実施形態では、クライアント１０２ａ−ｎは、ひいては、失敗インジケータの受信に応じて、ＲＤＰセッションを確立することの失敗を示すプロンプトを表示してもよい。
【０１０６】
ＲＤＰ要求の宛先参照が負荷分散装置５１６の参照に合致する場合、トークン検証装置５０６は、ＲＤＰ要求および／またはトークンが検証される、または有効であることを決定してもよい。トークンの検証に応じて、トークン検証装置５０６は、仲介デバイス５０２とクライアント１０２ａ−ｎとの間のＲＤＰ通信ストリームを確立してもよい。ＲＤＰ通信ストリームは、サーバ１０６ａ−ｎからリソースのレンダリング情報を送信するために、仲介デバイス５０２によって使用されてもよい。ＲＤＰ通信ストリームは、入力／出力データを送信するために、クライアント１０２ａ−ｎによって使用されてもよい。いくつかの実施形態では、ＲＤＰストリームを介したデータ交換を促進するために、トークン検証装置５０６は、クライアント１０２ａ−ｎと仲介デバイス５０２との間にセキュアソケットレイヤー（ＳＳＬ）セッションを確立し、クライアント１０２ａ−ｎと仲介デバイス５０２との間に転送されるデータを暗号化してもよい。いくつかの実施形態では、トークン検証装置５０６は、クライアント１０２ａ−ｎとのＳＳＬハンドシェイクプロセスを実施し、ＳＳＬセッションを確立してもよい。
【０１０７】
いくつかの実施形態では、ＲＤＰ通信ストリームを確立する際に、トークン検証装置５０６は、ＳＳＯがクライアント１０２ａ−ｎと接続する際に利用可能であるかまたは利用不可能であるかを識別してもよい。ＳＳＯが利用可能である場合、トークン検証装置５０６は、ＲＤＰ要求内に含まれるＳＳＯを実施するための構成情報を使用して、クライアント１０２ａ−ｎとＳＳＯを実施してもよい。いくつかの実施形態では、トークン検証装置５０６は、ＲＤＰ要求を解析し、構成情報を読み出してもよい。他方では、ＳＳＯが利用不可能である場合、トークン検証装置５０６は、クライアント１０２ａ−ｎがＲＤＰ通信ストリームを介して認証のためのアカウント／ユーザ証明書を送信し得るように、サーバリダイレクトパケットを修正してもよい。例えば、ＳＳＯが利用不可能である場合、トークン検証装置５０６は、サーバリダイレクトパケットを修正し、ＳＳＯの非可用性のインジケーションをクライアント１０２ａ−ｎに送信してもよい。修正されたサーバリダイレクトパケット（例えば、非可用性のインジケーション）の受信に応答して、クライアント１０２ａ−ｎは、トークン検証装置５０６および／または標的サーバへのＲＤＰ通信ストリームを介して、認証のためのアカウント／ユーザ証明書を送信またはパスしてもよい。
【０１０８】
いくつかの実施形態では、仲介デバイス５０２とクライアント１０２ａ−ｎとの間のＲＤＰ通信ストリームの確立により、プロトコルエンフォーサ５０８は、ＲＤＰ要求内に含まれるサーバ１０６ａ−ｎ上でホストされる要求されたリソースへのアクセスを制御するための構成情報を施行してもよい。プロトコルエンフォーサ５０８は、仲介デバイスが、構成に基づいて、いくつかの接続パラメータ、接続能力、またはリソースを可能にする、またはブロックし得る（例えば、そこへのアクセスを制御する）、スマートアクセス制御特徴等のセキュリティ施行を実施してもよい。そのような接続パラメータ、接続能力、および／または関連付けられるリソースの実施例は、クリップボードリソース／データのリダイレクト、プリンタのリダイレクト、ディスクドライブのリダイレクト、ＣＯＭポートのリダイレクト、プラグアンドプレイ（ＰｎＰ）デバイスのリダイレクトを含んでもよい。アクセスを制御するための構成情報は、クライアント１０２ａ−ｎに送信されることを可能にされる能力またはレンダリング情報を規定してもよい。構成情報はまた、リソースをホストするサーバ１０６ａ−ｎに送信されることを可能にされる入力／出力データを規定してもよい。いくつかの実施形態では、プロトコルエンフォーサ５０８は、ＲＤＰ要求を解析し、アクセスを制御するための構成情報を識別してもよい。構成情報の識別に応じて、プロトコルエンフォーサ５０８は、ＲＤＰ通信ストリームを走査し、サーバ１０６ａ−ｎからのレンダリング情報およびクライアント１０２ａ−ｎからの入力／出力データを識別してもよい。プロトコルエンフォーサ５０８は、レンダリング情報および入力／出力データを、構成情報によって許可されるものと比較してもよい。構成情報が、レンダリング情報および入力／出力データが制限されるものであることを規定する場合、プロトコルエンフォーサ５０８は、レンダリング情報をクライアント１０２ａ−ｎに送信されるように、そして入力／出力データをサーバ１０６ａ−ｎに送信されるように制限し得る。他方では、構成情報が、レンダリング情報および入力／出力データが許可されるものであることを規定する場合、プロトコルエンフォーサ５０８は、レンダリング情報がクライアント１０２ａ−ｎに送信され、入力／出力データがサーバ１０６ａ−ｎに送信されることを可能にし得る。
【０１０９】
いくつかの実施形態では、プロトコルエンフォーサ５０８は、ＲＤＰ要求内に含まれるサーバ１０６ａ−ｎ上でホストされる要求されたリソースへのアクセスを制御するための構成情報を更新するかどうかを決定してもよい。更新するかどうかを決定するために、プロトコルエンフォーサ５０８は、要求されたリソースのためのデータベースにアクセスしてもよい。データベースは、要求されたリソースのための構成情報のバージョンを含んでもよい。プロトコルエンフォーサ５０８は、データベースからの直近のバージョンを、ＲＤＰ要求内に含まれる構成情報のバージョンと比較してもよい。２つのバージョンが異なる場合、プロトコルエンフォーサ５０８は、データベースからのアクセスを制御するための更新された構成情報を要求してもよい。プロトコルエンフォーサ５０８は、次いで、アクセスを制御するための構成情報を、ＲＤＰ要求内のアクセスを制御するための更新された構成情報と置換してもよい。
【０１１０】
ＲＤＰ要求の検証により、トークン検証装置５０６は、クライアント１０２ａ−ｎのための負荷分散装置５１６と接続してもよい。いくつかの実施形態では、トークン検証装置５０６は、要求されたリソースをホストするサーバ１０６ａ−ｎと接続する要求を負荷分散装置５１６に伝送してもよい。トークン検証装置５０６は、クライアント１０２ａ−ｎからのＲＤＰ要求内に含まれるデータに基づいて、負荷分散装置５１６と接続する要求を生成してもよい。いくつかの実施形態では、負荷分散装置５１６に接続する要求は、要求されたリソースをホストする標的サーバ１０６ａ−ｎのインジケーション、リソースをホストするサーバ１０６ａ−ｎとシングルサインオン（ＳＳＯ）を実施するための構成情報、リソースのためのアカウント証明書、および／またはサーバ１０６ａ−ｎ上でホストされる要求されたリソースへのアクセスを制御するための構成情報を含んでもよい。
【０１１１】
接続する要求の伝送に応じて、トークン検証装置５０６は、仲介デバイス５０２と負荷分散装置５１６との間のＲＤＰ通信ストリームを確立してもよい。ＲＤＰ通信ストリームは、負荷分散装置５１６を介してサーバ１０６ａ−ｎからリソースのレンダリング情報を送信するために、仲介デバイス５０２によって使用されてもよい。ＲＤＰ通信ストリームは、クライアント１０２ａ−ｎから負荷分散装置５１６に入力／出力データを転送するために、仲介デバイス５０２によって使用されてもよい。いくつかの実施形態では、ＲＤＰストリームを介したデータ交換を促進するために、トークン検証装置５０６は、仲介デバイス５０２と負荷分散装置５１６との間にセキュアソケットレイヤー（ＳＳＬ）セッションを確立し、仲介デバイス５０２と負荷分散装置５１６との間に転送されるデータを暗号化してもよい。いくつかの実施形態では、トークン検証装置５０６は、負荷分散装置５１６とのＳＳＬハンドシェイクプロセスを実施し（またはそれに関与し）、ＳＳＬセッションを確立してもよい。
【０１１２】
いくつかの実施形態では、ＲＤＰ通信ストリームを確立する際に、トークン検証装置５０６は、ＳＳＯが負荷分散装置５１６と接続する際に負荷分散装置５１６とともに利用可能であるかまたは利用不可能であるかを識別してもよい。ＳＳＯが利用可能である場合、トークン検証装置５０６は、ＳＳＯのための構成情報を使用して、クライアント１０２ａ−ｎの代わりに負荷分散装置５１６とＳＳＯを実施してもよい。いくつかの実施形態では、トークン検証装置５０６は、ＲＤＰ要求を解析し、構成情報を読み出してもよい。ＳＳＯが利用可能ではない場合、トークン検証装置５０６は、クライアント１０２ａ−ｎからのＲＤＰ要求の認証証明書を使用して、負荷分散装置５１６（および／または認証サーバ）と認証を実施してもよい。いくつかの実施形態では、トークン検証装置５０６は、ＲＤＰ要求を負荷分散装置５１６に伝送または転送してもよい。いくつかの実施形態では、ＲＤＰ要求は、負荷分散装置５１６に接続する要求とともに伝送または転送されてもよい。
【０１１３】
ＲＤＰ要求の受信に応じて、負荷分散装置５１６は、ＲＤＰ要求を転送するためのサーバファーム３８のサーバ１０６ａ−ｎのうちの１つを選択してもよい。サーバ１０６ａ−ｎを選択する際に、負荷分散装置５１６は、サーバファーム３８のサーバ１０６ａ−ｎを横断して負荷分散を実施し、通信を均等または最適に分配してもよい。いくつかの実施形態では、負荷分散装置５１６は、とりわけ、処理時間、利用可能なメモリ、ネットワーク帯域幅、および／または割り当てられたＲＤＰ通信ストリーム（時として、遠隔デスクトップセッションと称される）の数等のサーバファーム３８のサーバ１０６ａ−ｎ毎のコンピューティングリソースの消費を識別してもよい。サーバファーム３８を横断したコンピューティングリソースの消費に基づいて、負荷分散装置５１６は、ＲＤＰ要求を送信するサーバ１０６ａ−ｎのうちの１つを識別してもよい。いくつかの実施形態では、負荷分散装置５１６は、各サーバ１０６ａ−ｎのコンピューティングリソースの消費を相互と比較してもよい。いくつかの実施形態では、負荷分散装置５１６は、コンピューティングリソースの消費によって、サーバファーム３６のサーバ１０６ａ−ｎをランク付けしてもよく、コンピューティングリソースの最低（相対）消費を伴う、または要求されたＲＤＰセッションをホストするための最高相対可用性を伴うサーバ１０６ａ−ｎ（以降では初期サーバ１０６ａと称される）を選択してもよい。
【０１１４】
ＲＤＰ要求を送信する初期サーバ１０６ａを選択することに応じて、負荷分散装置５１６は、ＲＤＰ要求をサーバ１０６ａに送信または転送してもよい。負荷分散装置５１６は、ＲＤＰ要求を解析し、トークン内に含まれるクッキーを識別してもよい。前述で議論されたように、いくつかの実施形態では、トークンのクッキーは、標的サーバ１０６ａ−ｎの参照アドレスを含んでもよい。負荷分散装置５１６によって識別される初期サーバ１０６ａは、ＲＤＰ要求内に含まれるトークンのクッキーによって参照されるサーバ１０６ａ−ｎと異なり得る。負荷分散装置５１６は、トークンによって規定される標的サーバ１０６ａ−ｎの参照アドレスを用いて、選択されたサーバ１０６ａの参照アドレスを識別してもよい。選択されたサーバ１０６ａの参照アドレスがトークンによって規定される標的サーバ１０６ａ−ｎの参照アドレスに合致する場合、選択されたサーバ（またはセッションブローカ／ディレクトリおよび／または負荷分散装置５１６）は、ＲＤＰ要求を維持または処理してもよい。いくつかの実施形態では、負荷分散装置および／または仲介デバイスは、ＲＤＰ要求のトークンを修正または除去する。負荷分散装置および／または仲介デバイスは、ディレクトリサービス／ブローカが存在するときにＲＤＰ要求のトークンを修正または除去してもよい。いくつかの実施形態では、選択されたサーバ１０６ａ−ｎの参照アドレスがトークンによって規定される標的サーバ１０６ａ−ｎの参照アドレスと異なる場合、負荷分散装置５１６は、ＲＤＰ要求のトークンを修正または除去してもよい。トークンが初期サーバ１０６ａおよび／またはセッションディレクトリ／ブローカと互換性がない（および／または初期サーバ１０６ａおよび／またはセッションディレクトリ／ブローカの誤った動作を潜在的に引き起こし得る）フォーマットまたは形態である場合、負荷分散装置および／または仲介デバイスは、ＲＤＰ要求のトークンを修正または除去してもよい。いくつかの実施形態では、負荷分散装置５１６は、ＲＤＰ要求内のトークンのクッキーまたは宛先参照を修正し、選択されたサーバ１０６ａの参照アドレスを含んでもよい。
【０１１５】
負荷分散装置５１６は、ＲＤＰ要求とともに、選択されたサーバ１０６ａと接続する要求を送信してもよい。負荷分散装置５１６は、クライアント１０２ａ−ｎからのＲＤＰ要求および／またはトークン検証装置５０６からの接続する要求内に含まれるデータに基づいて、初期サーバ１０６ａと接続する要求を生成してもよい。いくつかの実施形態では、初期サーバ１０６ａに接続する要求は、要求されたリソースをホストする標的サーバ１０６ａ−ｎのインジケーション、選択されたサーバ１０６ａのインジケーション、リソースをホストするサーバ１０６ａ−ｎとシングルサインオン（ＳＳＯ）を実施するための構成情報、クライアント１０２ａ−ｎのためのリソースのためのアカウント証明書、および／またはサーバ１０６ａ−ｎ上でホストされる要求されたリソースへのアクセスを制御するための構成情報を含んでもよい。
【０１１６】
接続する要求の伝送に応じて、負荷分散装置５１６は、負荷分散装置５１６と初期サーバ１０６ａとの間のＲＤＰ通信セッション／ストリームを確立してもよい。ＲＤＰ通信ストリームは、仲介デバイス５０２を介してクライアント１０２ａ−ｎにリソースのレンダリング情報を送信するために、初期サーバ１０６ａによって使用されてもよい。ＲＤＰ通信ストリームは、仲介デバイス５０２を介してクライアント１０２ａ−ｎから入力／出力データを転送するために、負荷分散装置５１６によって使用されてもよい。いくつかの実施形態では、ＲＤＰストリームを介したデータ交換を促進するために、負荷分散装置５１６は、負荷分散装置５１６と初期サーバ１０６ａとの間にセキュアソケットレイヤー（ＳＳＬ）セッションを確立し、負荷分散装置５１６と初期サーバ１０６ａとの間に転送されるデータを暗号化してもよい。いくつかの実施形態では、負荷分散装置５１６は、初期サーバ１０６ａとのＳＳＬハンドシェイクプロセスを実施し、ＲＤＰ通信ストリームのためのＳＳＬセッションを確立してもよい。
【０１１７】
いくつかの実施形態では、ＲＤＰ通信ストリームを確立する際に、負荷分散装置５１６は、ＳＳＯが負荷分散装置５１６と接続する際に初期サーバ１０６ａとともに利用可能であるかまたは利用不可能であるかを識別してもよい。ＳＳＯが利用可能である場合、負荷分散装置５１６は、ＳＳＯのための構成情報を使用して、クライアント１０２ａ−ｎの代わりに初期サーバ１０６ａとＳＳＯを実施してもよい。いくつかの実施形態では、負荷分散装置５１６は、ＲＤＰ要求を解析し、構成情報を読み出してもよい。ＳＳＯが利用不可能である場合、負荷分散装置５１６は、クライアント１０２ａ−ｎからのＲＤＰ要求の認証証明書を使用して、初期サーバ１０６ａ（および／または認証サーバ）と認証を実施してもよい。いくつかの実施形態では、負荷分散装置５１６は、ＲＤＰ要求を初期サーバ１０６ａに伝送または転送してもよい。いくつかの実施形態では、ＲＤＰ要求は、初期サーバ１０６ａに接続する要求とともに伝送または転送されてもよい。
【０１１８】
負荷分散装置５１６からＲＤＰ要求を受信することに応じて、初期サーバ１０６ａは、セッションディレクトリ５１８（時として、ディレクトリサービス、セッションブローカ、またはＲＤＰセッションブローカと称される）とのＲＤＰ通信ストリームを検証してもよい。ＲＤＰ通信ストリームを検証するために、初期サーバ１０６ａは、ＲＤＰ要求をセッションディレクトリ５１８に転送してもよい。ＲＤＰ要求を使用して、セッションディレクトリ５１８は、ＲＤＰ通信ストリームが初期サーバ１０６ａに割り当てられるものであるか、または別のサーバサーバ１０６ａ−ｎ（本明細書では標的サーバ１０６ｂと称される）にリダイレクトされるものであるかどうかを決定してもよい。
【０１１９】
いくつかの実施形態では、セッションディレクトリ５１８は、別のＲＤＰ通信セッションがクライアント１０２ａ−ｎのために存在するかどうかを決定してもよい。セッションディレクトリ５１８は、各既存の通信セッションを記録するためのデータベース、対応する通信セッションのための割り当てられたクライアント１０２ａ−ｎ、および／または対応する通信セッションのための割り当てられたサーバ１０２ａ−ｎを含んでもよい。セッションディレクトリ５１８は、データベースにアクセスし、クライアント１０２ａ−ｎのための通信セッションが割り当てられるサーバ１０６ａ−ｎを識別してもよい。セッションディレクトリ５１８は、クライアント１０２ａ−ｎと関連付けられる通信セッションのためのデータベース内に示されるサーバ１０６ａ−ｎを、負荷分散装置５１６がＲＤＰ要求を送信した初期サーバ１０６ａと比較してもよい。データベース内に示されるサーバ１０６ａ−ｎおよび初期サーバ１０６ａが同一であり、既存のセッションが初期サーバ１０６ａに割り当てられていることを示す場合、セッションディレクトリ５１８は、クライアント１０２ａ−ｎのための初期サーバ１０６ａにおいて通信セッションを維持してもよい。他方では、別のＲＤＰ通信セッションがクライアント１０２ａ−ｎのために存在する場合、セッションディレクトリ５１８は、通信セッションが割り当てられる他のサーバ１０６ｂ−ｎ（例えば、標的サーバ１０６ｂ）を識別してもよい。セッションディレクトリ５１８は、リダイレクトコマンドを発行してもよい。リダイレクトコマンドは、クライアント１０２ａ−ｎのためのＲＤＰ通信ストリームが標的サーバ１０６ｂにリダイレクトされるものであることを規定してもよい。
【０１２０】
いくつかの実施形態では、セッションディレクトリ５１８はまた、負荷分散を実施し、サーバファーム３８のサーバ１０６ａ−ｎの間でＲＤＰ通信ストリームを分配してもよい。付加的負荷分散は、クライアント１０２ａ−ｎとの既存の通信セッションが割り当てられる、サーバ１０６ａ−ｎを変更してもよい。いくつかの実施形態では、セッションディレクトリ５１８は、とりわけ、処理時間、利用可能なメモリ、ネットワーク帯域幅、および／または割り当てられたＲＤＰ通信ストリーム（時として、遠隔デスクトップセッションと称される）の数等のサーバファーム３８のサーバ１０６ａ−ｎ毎のコンピューティングリソースの消費のレベルを識別してもよい。サーバファーム３８を横断したコンピューティングリソースの消費に基づいて、セッションディレクトリ５１８は、ＲＤＰ要求を送信するサーバ１０６ａ−ｎのうちの１つを識別してもよい。いくつかの実施形態では、セッションディレクトリ５１８は、各サーバ１０６ａ−ｎのコンピューティングリソースの消費を相互と比較してもよい。いくつかの実施形態では、セッションディレクトリ５１８は、コンピューティングリソースの消費によって、サーバファーム３６のサーバ１０６ａ−ｎをランク付けしてもよく、コンピューティングリソースの最低消費を伴うサーバ１０６ａ−ｎ（以降では初期サーバ１０６ａと称される）を選択してもよい。選択されたサーバ１０６ａ−ｎおよび初期サーバ１０６ａが同一である場合、セッションディレクトリ５１８は、クライアント１０２ａ−ｎのための初期サーバ１０６ａにおける通信セッションを維持してもよい。他方では、選択されたサーバ１０６ａ−ｎおよび初期サーバ１０６ａが異なる場合、セッションディレクトリ５１８は、リダイレクトコマンドを初期サーバ１０６ａに発行してもよい。リダイレクトコマンドは、クライアント１０２ａ−ｎのためのＲＤＰ通信ストリームが標的サーバ１０６ｂにリダイレクトされるものであることを規定してもよい。
【０１２１】
サーバディレクトリ５１８から受信されるリダイレクトコマンドを使用して、負荷分散装置５１６によって最初に選択される初期サーバ１０６ａは、サーバリダイレクトパケットを生成してもよい。初期サーバ１０６ａは、次いで、サーバリダイレクトパケットを負荷分散装置５１６に送信してもよい。いくつかの実施形態では、負荷分散装置５１６は、サーバリダイレクトパケットを仲介デバイス５０２に転送してもよい。サーバリダイレクトパケットは、クライアント１０２ａ−ｎがリダイレクト接続要求を標的サーバ１０６ｂに送信するものであることを規定してもよい。サーバリダイレクトパケットは、Ｘ．２２４接続要求プロトコルデータユニット（ＰＤＵ）と一致し得る。サーバリダイレクトパケットは、トークン（時として、ルーティングトークンと称される）を含んでもよい。トークンは、とりわけ、長さ、長さインジケータ、タイプクレジット、宛先参照（例えば、クライアント、負荷分散装置５１６、または仲介デバイス５０２に対応する）、ソース参照（初期サーバ１０６ａに対応する）、および／またはクッキーを含み得る、バイトシーケンスであってもよい。いくつかの実施形態では、クッキーは、通信セッションが接続するものである標的サーバ１０６ｂに対応する、参照アドレスを含んでもよい。サーバリダイレクトパケットのトークンは、少なくとも部分的に、ＲＤＰ要求のトークン（例えば、宛先参照、ソース参照、構成情報、および／またはクッキー）と異なり得る。いくつかの実施形態では、サーバリダイレクトパケットは、標的サーバ１０６ｂの参照アドレスまたは識別（例えば、ＩＰアドレスまたはＭＡＣアドレス）等の標的サーバ１０６ｂについての情報を含んでもよい。いくつかの実施形態では、サーバリダイレクトパケットは、負荷分散情報（例えば、各サーバ１０６ａ−ｎにおけるコンピューティングリソースの消費）を含んでもよい。
【０１２２】
いくつかの実施形態では、サーバリダイレクトパケットは、クライアント１０２ａ−ｎからのＲＤＰ要求内に含まれるデータを含んでもよい。いくつかの実施形態では、サーバリダイレクトパケットは、リソースをホストするサーバ１０６ａ−ｎとシングルサインオン（ＳＳＯ）を実施するための構成情報（例えば、単一のアカウント識別子、パスワード、および／または１つ以上のリソースのための他の認証要因）を含んでもよい。いくつかの実施形態では、サーバリダイレクトパケットは、リソース（例えば、ユーザ名、パスワード、および／またはリソースのための他の認証要因）のためのアカウント証明書を含んでもよい。いくつかの実施形態では、サーバリダイレクトパケットは、サーバ１０６ａ−ｎ上でホストされる要求されたリソースへのアクセスを制御するための構成情報を含んでもよい。いくつかの実施形態では、要求されたリソースへのアクセスを制御するための構成情報は、ＲＤＰ要求に由来し得る。
【０１２３】
続いて、仲介デバイス５０２のリダイレクトハンドラ５１０は、負荷分散装置５１６からサーバリダイレクトパケットを受信してもよい。前述で議論されたように、仲介デバイス５０２および負荷分散装置５１６によって使用されるＲＤＰ要求のトークンは、例えば、フォーマットおよび／またはコンテンツにおいて、セッションディレクトリ５１８によって発行されるサーバリダイレクトパケットのトークンと異なり得る。例えば、セッションディレクトリ５１８によって使用される参照アドレス（例えば、サーバファーム３８上のサーバ１０６ａ−ｎのもの）は、クライアント、仲介デバイス５０２、および／または負荷分散装置５１６によって使用される参照アドレスと異なり得る。サーバリダイレクトパケットのいかなる調節も伴わずに、サーバリダイレクトパケットがクライアント１０２ａ−ｎに到達するとき、クライアント１０２ａ−ｎは、セッションディレクトリ５１８によって規定される標的サーバ１０６ｂと異なるサーバ１０６ｃ−ｎと接続しようとし得る。
【０１２４】
差異に対処するために、リダイレクトハンドラ５１０は、サーバリダイレクトパケットを修正し、クライアント１０２ａ−ｎに、リダイレクトされた接続要求パケットを標的サーバ１０６ｂに送信させてもよい。いくつかの実施形態では、リダイレクトハンドラ５１０は、サーバリダイレクトパケットを解析し、その中に含まれるトークンを識別してもよい。いくつかの実施形態では、リダイレクトハンドラ５１０は、サーバリダイレクト要求のトークンを解析し、宛先参照および／またはクッキーを識別してもよい。いったん識別されると、リダイレクトハンドラ５１０は、セッションディレクトリ５１８によって使用される参照アドレスを、負荷分散装置５１６および／または仲介デバイス５０２によって使用される参照アドレスと置換してもよい。いくつかの実施形態では、リダイレクトハンドラ５１０は、サーバリダイレクトパケットの宛先参照を、それぞれ、仲介デバイス５０２および負荷分散装置５１６によって使用され得る、仲介デバイス５０２の参照アドレスまたは負荷分散装置５１６の参照アドレスに設定してもよい。いくつかの実施形態では、リダイレクトハンドラ５１０は、サーバリダイレクトパケットのクッキーを、クライアント、仲介デバイス５０２、および／または負荷分散装置５１６によって使用される、標的サーバ１０６ｂの参照アドレスに設定してもよい。いったん修正されると、リダイレクトハンドラ５１０は、修正されたサーバリダイレクトパケットをクライアント１０２ａ−ｎに送信してもよい。このようにして、いったんクライアント１０２ａ−ｎがサーバリダイレクトパケットを受信すると、クライアント１０２ａ−ｎは、セッションディレクトリ５１６によって規定されるように標的サーバ１０６ｂにダイレクトされてもよい。
【０１２５】
いくつかの実施形態では、リダイレクトハンドラ５１０は、セッションディレクトリ５１８の存在を検出してもよい。存在の検出は、サーバリダイレクトパケットの修正に先立って実施されてもよい。セッションディレクトリ５１８の存在の検出は、例えば、後続のＲＤＰ要求に対処するために使用されてもよい。例えば、リダイレクトハンドラ５１０は、サーバリダイレクトパケットを解析し、その中に含まれるトークンを識別してもよい。リダイレクトハンドラ５１０は、初期サーバ１０６ａからのサーバリダイレクトパケットのトークンまたは他の情報を、クライアント１０２ａ−ｎから前もって受信されたＲＤＰ要求のものと比較してもよい。いくつかの実施形態では、リダイレクトハンドラ５１０は、サーバリダイレクトパケットのクッキーをＲＤＰ要求のクッキーと比較してもよい。サーバリダイレクトパケットとＲＤＰ要求との間のトークン（または他の情報）のコンテンツの差異は、例えば、セッションディレクトリ５１８が負荷分散装置５１６および仲介デバイス５０２によって使用されるものと異なる参照アドレスを使用し得るため、セッションディレクトリ５１８の存在を示し得る。サーバリダイレクトパケットのある情報がＲＤＰ要求のものと異なる場合、リダイレクトハンドラ５１０は、サーバファーム３８内のセッションディレクトリ５１８の存在を決定してもよい。いくつかの実施形態では、リダイレクトハンドラ５１０は、セッションディレクトリ５１８の存在を検出することに応じて、上記で説明されるようにサーバリダイレクトパケットを修正してもよい。別様に、トークンまたはある情報が同一である場合、リダイレクトハンドラ５１０は、セッションディレクトリ５１８がサーバファーム３８内に存在しないことを決定してもよい。リダイレクトハンドラ５１０は、次いで、いかなる修正も伴わずに、サーバリダイレクトパケットをクライアント１０２ａ−ｎに転送してもよい。
【０１２６】
いくつかの実施形態では、本明細書に詳述されるリダイレクトハンドラ５１０の機能性は、負荷分散装置５１６によって果たされてもよい。負荷分散装置５１６は、リダイレクトハンドラ５１０と同様に、上記で説明されるように、セッションディレクトリ５１８の存在を検出してもよい。加えて、負荷分散装置５１６は、リダイレクトハンドラ５１６として上記で詳述される様式で、初期サーバ１０６ａから受信されるサーバリダイレクトパケットを修正してもよい。いくつかの実施形態では、負荷分散装置５１６は、リダイレクトハンドラ５１０からサーバリダイレクトパケットを修正するコマンドを受信してもよい。修正するコマンドの受信は、リダイレクトハンドラ５１０に関連して前述で説明されたように、負荷分散装置５１６にサーバリダイレクトパケットを修正させてもよい。いくつかの実施形態では、負荷分散装置５１６は、サーバリダイレクトパケットの修正に続いて、サーバリダイレクトパケットをリダイレクトハンドラ５１０に転送してもよい。リダイレクトハンドラ５１０は、ひいては、修正されたサーバリダイレクトパケットをクライアント１０２ａ−ｎに転送してもよい。
【０１２７】
仲介デバイス５０２から受信される修正されたサーバリダイレクトパケットを使用して、クライアント１０２ａ−ｎは、標的サーバ１０２ｂと接続するため、ＳＳＯを実施するため、および／またはセキュリティ施行のためのリダイレクトされた接続要求パケットを生成してもよい。リダイレクトされた接続要求は、Ｘ．２２４接続要求プロトコルデータユニット（ＰＤＵ）と一致し得る。リダイレクトされた接続要求は、トークン（時として、ルーティングトークンと称される）を含んでもよい。トークンは、とりわけ、長さ、長さインジケータ、タイプクレジット、宛先参照、ソース参照（クライアント１０２ａ−ｎに対応する）、および／またはクッキーを含み得る、バイトシーケンスであってもよい。いくつかの実施形態では、宛先参照は、リダイレクトされた接続要求が送信されるものである、仲介デバイス５０２に対応し得る。いくつかの実施形態では、宛先参照は、リダイレクトされた接続要求が送信されるものである、負荷分散装置５１６に対応し得る。クッキーは、仲介デバイス５０２または負荷分散装置５１６を介して、リダイレクトされた接続要求がルーティングされるものである、標的サーバ１０６ｂに対応する参照アドレスを含んでもよい。
【０１２８】
リダイレクトされた接続要求は、トークン以外に他のデータを含んでもよい。いくつかの実施形態では、リダイレクトされた接続要求は、標的サーバ１０６ｂのインジケーション（例えば、負荷分散装置５１６および／または仲介デバイス５０２によって使用される標的サーバ１０６ｂの識別または参照アドレス）を含んでもよい。いくつかの実施形態では、リダイレクトされた接続要求は、標的サーバ１０５ｂとシングルサインオン（ＳＳＯ）を実施するための構成情報（例えば、単一のアカウント識別子、パスワード、および／または１つ以上のリソースのための他の認証要因）を含んでもよい。いくつかの実施形態では、リダイレクトされた接続要求は、リソースのためのアカウント証明書（例えば、ユーザ名、パスワード、および／またはリソースのための他の認証要因）を含んでもよい。いくつかの実施形態では、リダイレクトされた接続要求は、サーバ１０６ｂ上でホストされる要求されたリソースへのアクセスを制御するための構成情報を含んでもよい。アクセスを制御するための構成情報は、クライアント１０２ａ−ｎに利用可能であるかまたは利用不可能である要求リソースの特徴を規定してもよい。構成情報は、リダイレクトされた接続要求を生成するために使用されるリンクのアドレス内に含まれる１つ以上のパラメータに対応し得る。
【０１２９】
いくつかの実施形態では、クライアント１０２ａ−ｎは、次いで、リダイレクトされた接続要求を仲介デバイス５０２に伝送してもよい。サーバセレクタ５１２は、リダイレクトされた接続要求を受信してもよい。リダイレクトされた接続要求の伝送に応じて、クライアント１０２ａ−ｎは、クライアント１０２ａ−ｎと仲介デバイス５０２との間にＲＤＰ通信ストリームを確立してもよい。ＲＤＰ通信ストリームは、標的サーバ１０６ｂからリソースのレンダリング情報を送信するために仲介デバイス５０２によって使用されてもよい。ＲＤＰ通信ストリームは、入力／出力データを標的サーバ１０６ｂに送信するためにクライアント１０２ａ−ｎによって使用されてもよい。いくつかの実施形態では、ＲＤＰストリームを介したデータ交換を促進するために、クライアント１０２ａ−ｎは、クライアント１０２ａ−ｎと仲介デバイス５０２との間にセキュアソケットレイヤー（ＳＳＬ）セッションを確立し、クライアント１０２ａ−ｎと仲介デバイス５０２との間に転送されるデータを暗号化してもよい。いくつかの実施形態では、クライアント１０２ａ−ｎは、仲介デバイス５０２とのＳＳＬハンドシェイクプロセスを実施し、ＳＳＬセッションを確立してもよい。
【０１３０】
いくつかの実施形態では、リダイレクトされた接続要求に関連してＲＤＰ通信ストリームを確立する際に、サーバセレクタ５１２は、ＳＳＯがクライアント１０２ａ−ｎと接続する際に利用可能であるかまたは利用不可能であるかを識別してもよい。ＳＳＯが利用可能である場合、サーバセレクタ５１２は、リダイレクトされた接続要求内に含まれるＳＳＯを実施するための構成情報を使用して、クライアント１０２ａ−ｎとＳＳＯを実施してもよい。いくつかの実施形態では、サーバセレクタ５１２は、リダイレクトされた接続要求を解析し、構成情報を読み出してもよい。他方では、ＳＳＯが利用不可能である場合、サーバセレクタ５１２は、ＳＳＯの非可用性のインジケーションをクライアント１０２ａ−ｎに送信してもよい。非可用性のインジケーションの受信に応答して、クライアント１０２ａ−ｎは、サーバセレクタ５１２へのＲＤＰ通信ストリームを介して、要求されたリソースのためのアカウントまたはユーザ証明書を送信してもよい。
【０１３１】
いくつかの実施形態では、リダイレクトされた接続要求を使用する、仲介デバイス５０２とクライアント１０２ａ−ｎとの間のＲＤＰ通信ストリームの確立により、プロトコルエンフォーサ５０８は、サーバ１０６ｂ上でホストされる、またはサーバ１０６ｂから潜在的に転送可能である要求されたリソースへのアクセス（例えば、クリップボードからクライアントへのデータのリダイレクト）を制御するための構成情報を施行してもよい。アクセスを制御するための構成情報は、クライアント１０２ａ−ｎに送信されることを可能にされる能力および／またはレンダリング情報を規定してもよい。構成情報はまた、サーバ１０６ｂとクライアントとの間にリダイレクトされることを可能にされる入力／出力データを規定してもよい。いくつかの実施形態では、プロトコルエンフォーサ５０８は、リダイレクトされた接続要求を解析し、アクセスを制御するための構成情報を識別してもよい。構成情報の識別に応じて、プロトコルエンフォーサ５０８は、ＲＤＰ通信ストリームを走査し、サーバ１０６ｂからのレンダリング情報およびクライアント１０２ａ−ｎからの入力／出力データを識別してもよい。プロトコルエンフォーサ５０８は、レンダリング情報および入力／出力データを、構成情報によって許可されるものと比較してもよい。構成情報が、レンダリング情報および入力／出力データが制限されるものであることを規定する場合、プロトコルエンフォーサ５０８は、レンダリング情報をクライアント１０２ａ−ｎに送信されるように、および／または入力／出力データを（例えば、サーバ１０６ａ−ｎに送信されるように）制限し得る。他方では、構成情報が、レンダリング情報および入力／出力データが許可されるものであることを規定する場合、プロトコルエンフォーサ５０８は、レンダリング情報がクライアント１０２ａ−ｎに送信され、入力／出力データが送信されることを可能にし得る。
【０１３２】
いくつかの実施形態では、プロトコルエンフォーサ５０８は、ＲＤＰ要求内に含まれるサーバ１０６ａ−ｎ上でホストされる要求されたリソースへのアクセスを制御するための構成情報を更新するかどうかを決定してもよい。更新するかどうかを決定するために、プロトコルエンフォーサ５０８は、要求されたリソースのためのデータベースにアクセスしてもよい。データベースは、要求されたリソースのための構成情報のバージョンを含んでもよい。プロトコルエンフォーサ５０８は、データベースからの直近のバージョンを、ＲＤＰ要求内に含まれる構成情報のバージョンと比較してもよい。２つのバージョンが異なる場合、プロトコルエンフォーサ５０８は、データベースからのアクセスを制御するための更新された構成情報を要求してもよい。プロトコルエンフォーサ５０８は、次いで、アクセスを制御するための構成情報を、ＲＤＰ要求内のアクセスを制御するための更新された構成情報と置換してもよい。
【０１３３】
リダイレクトされた接続要求に基づいて、サーバセレクタ５１２は、リダイレクトされた接続要求を転送する、サーバファーム３８内のサーバ１０６ｂを識別してもよい。いくつかの実施形態では、サーバセレクタ５１２は、リダイレクトされた接続要求を解析し、リダイレクトされた接続要求をダイレクトする、標的サーバ１０６ｂのインジケーションを識別してもよい。いくつかの実施形態では、サーバセレクタ５１２は、リダイレクトされた接続要求を解析し、その中のトークンを識別してもよい。リダイレクトされた接続要求を解析すると、サーバセレクタ５１２は、トークンのクッキーを解析してもよい。いくつかの実施形態では、サーバセレクタ５１２は、トークンから（例えば、クッキーから）の標的サーバ１０６ｂの参照アドレスを識別してもよい。いくつかの実施形態では、サーバセレクタ５１２は、（例えば、リダイレクトされた接続要求内で決定される他の情報に従って）標的サーバ１０６ｂへのリダイレクトされた接続要求の宛先参照を設定してもよい。標的サーバ１０６ｂを識別すると、サーバセレクタ５１２は、例えば、負荷分散装置を介して、リダイレクトされた接続要求を標的サーバ１０６ｂに送信してもよい。
【０１３４】
サーバセレクタ５１２は、標的サーバ１０６ｂと接続する要求を送信してもよい。サーバセレクタ５１２は、クライアント１０２ａ−ｎからのリダイレクトされた接続要求内に含まれるデータに基づいて、標的サーバ１０６ｂと接続する要求を生成してもよい。いくつかの実施形態では、標的サーバ１０６ｂに接続する要求は、標的サーバ１０６ｂとシングルサインオン（ＳＳＯ）を実施するための構成情報、クライアント１０２ａ−ｎのためのリソースのためのアカウント証明書、および／またはサーバ１０６ｂ上でホストされる要求されたリソースへのアクセスを制御するための構成情報を含んでもよい。
【０１３５】
接続する要求の伝送に応じて、サーバセレクタ５１２は、サーバセレクタ５１２と標的サーバ１０６ｂとの間のＲＤＰ通信ストリームを確立してもよい。ＲＤＰ通信ストリームは、仲介デバイス５０２を介してクライアント１０２ａ−ｎにリソースのレンダリング情報を送信するために、標的サーバ１０６ｂによって使用されてもよい。ＲＤＰ通信ストリームは、クライアント１０２ａ−ｎと標的サーバ１０６ｂとの間で入力／出力データを伝達するために、仲介デバイス５０２によって使用されてもよい。いくつかの実施形態では、ＲＤＰストリームを介したデータ交換を促進するために、サーバセレクタ５１２は、仲介デバイス５０２と標的サーバ１０６ｂとの間にセキュアソケットレイヤー（ＳＳＬ）セッションを確立し、仲介デバイス５０２と標的サーバ１０６ｂとの間に転送されるデータを暗号化してもよい。いくつかの実施形態では、サーバセレクタ５１２は、標的サーバ１０６ｂとのＳＳＬハンドシェイクプロセスを実施し、ＲＤＰ通信ストリームのためのＳＳＬセッションを確立してもよい。
【０１３６】
いくつかの実施形態では、ＲＤＰ通信ストリームを確立する際に、サーバセレクタ５１２は、ＳＳＯが標的サーバ１０６ｂと接続する際に仲介デバイス５０２とともに利用可能であるかまたは利用不可能であるかを識別してもよい。ＳＳＯが利用可能である場合、サーバセレクタ５１２は、ＳＳＯのための（リダイレクトされた接続要求内の）構成情報を使用して、クライアント１０２ａ−ｎの代わりに標的サーバ１０６ｂとＳＳＯを実施してもよい。いくつかの実施形態では、サーバセレクタ５１２は、ＲＤＰ要求を解析し、構成情報を読み出してもよい。ＳＳＯが利用可能ではない場合、サーバセレクタ５１２は、クライアント１０２ａ−ｎからのリダイレクトされた接続要求の認証証明書を使用して、標的サーバ１０６ｂと認証を実施してもよい。いくつかの実施形態では、サーバセレクタ５１２は、リダイレクトされた接続要求を標的サーバ１０６ｂに伝送または転送してもよい。いくつかの実施形態では、リダイレクトされた接続要求は、標的サーバ１０６ｂに接続する要求とともに伝送または転送されてもよい。
【０１３７】
いくつかの実施形態では、クライアント１０２ａ−ｎは、リダイレクトされた接続要求を負荷分散装置５１６に直接伝送してもよい。本明細書に詳述されるサーバセレクタ５１２の機能性は、負荷分散装置５１６によって果たされてもよい。負荷分散装置５１６は、リダイレクトハンドラ５１０として上記で説明されるように、リダイレクトされた接続要求を転送するサーバ１０６ｂを識別してもよい。負荷分散装置５１６は、サーバセレクタ５１２に関連して上記に説明される様式で、標的サーバ１０６ｂとのＲＤＰ通信ストリームを確立してもよい。いくつかの実施形態では、負荷分散装置５１６は、サーバセレクタ５１２から、クライアント１０２ａ−ｎを標的サーバ１０６ｂと接続するコマンドまたは要求を受信してもよい。コマンドの受信は、リダイレクトされた接続要求を使用して、負荷分散装置５１６にＲＤＰ通信ストリームを確立させてもよい。
【０１３８】
このようにして、サーバリダイレクトパケットの修正があると、仲介デバイス５０２および／または負荷分散装置５１６を介して、クライアント１０２ａ−ｎから通信セッションのために送信される後続のデータは、セッションディレクトリ５１８によって決定される／割り当てられる、正しい標的サーバ１０６ｂに到着してもよい。さらに、本プロセスは、サーバ１０６ａ−ｎへの割り当ての以降の変更に応じて、繰り返され、セッションディレクトリ５１８によるクライアント１０２ａ−ｎとの通信セッションに対処し得る。仲介デバイス５０２および負荷分散装置５１６は、したがって、クライアント１０２ａ−ｎとサーバファーム３８のサーバ１０６ａ−ｎとの間の通信セッションの持続性を維持してもよい。
【０１３９】
ここで図５Ｂを参照すると、セッションブローカの存在下で複数のサーバのうちのサーバに接続するプロセス５２０ａのシーケンス図が描写される。プロセス５２０ａの機能性は、上記に説明されるシステム５００を使用して実装されてもよい。ステップ５２２では、クライアントは、認証要求を仲介デバイスに送信してもよい。ステップ５０２では、仲介デバイスは、クライアントの代わりに認証サーバと認証を実施してもよい。ステップ５２６では、いったん認証されると、仲介デバイスは、サーバにおいてホストされるリソースへの１つ以上のリンクを伴うホームページを送信してもよい。ステップ５２８では、クライアントは、ホームページ内に含まれるリンクのうちの１つを使用して、トークンを含む遠隔デスクトッププロトコル（ＲＤＰ）要求を送信してもよい。ステップ５３０では、仲介デバイスは、例えば、宛先参照が負荷分散装置にダイレクトされているかどうかを決定することによって、ＲＤＰ要求のトークンを検証してもよい。ステップ５３２では、クライアントおよび仲介デバイスはＲＤＰ通信ストリームを確立してもよい。
【０１４０】
ステップ５３４では、仲介デバイスは、接続要求を負荷分散装置に送信してもよい。ステップ５３６では、仲介デバイスおよび負荷分散装置は、ＲＤＰ通信ストリームを確立してもよい。ステップ５３８では、仲介デバイスから受信されるＲＤＰ要求を使用して、負荷分散装置は、ＲＤＰ要求を転送する初期サーバを選択してもよく、セッションディレクトリ／ブローカの存在に応答して、トークンを除去または修正してもよい。ステップ５４０では、負荷分散装置は、接続要求を最初に選択されたサーバ（例えば、サーバ１０６ａ）に送信してもよい。ステップ５４２では、負荷分散装置および最初に選択されたサーバは、ＲＤＰ通信ストリームを確立してもよい。ステップ５４４では、初期サーバは、セッションディレクトリとのクライアントのための通信セッションを検証してもよい。ステップ５４６では、セッションディレクトリ／ブローカは、ひいては、リダイレクトコマンドを最初に選択されたサーバに送信してもよい。ステップ５４８では、受信されたリダイレクトコマンドに基づいて、初期サーバは、リダイレクトパケットを負荷分散装置に送信してもよい。リダイレクトパケットは、仲介デバイスおよび負荷分散装置によって使用されるものと異なるトークンおよび／またはクッキーを含んでもよい。リダイレクトパケットは、後続のトラフィックをダイレクトする別のサーバ（例えば、サーバ１０６ｂ）を規定してもよい。ステップ５５０では、負荷分散装置は、ひいては、リダイレクトパケットを仲介デバイスに転送してもよい。
【０１４１】
ステップ５５２では、仲介デバイスは、クライアント１０２が、標的サーバを識別し、ＳＳＯのための情報を含み、および／またはセキュリティ施行のための構成を含み、（例えば、バックエンドサーバを選択し、ＳＳＯを実施するために）仲介デバイスおよび／または負荷分散装置によって使用され得る、リダイレクト要求を送信するように、リダイレクトパケットを修正し、トークンおよび／またはクッキーを設定してもよい。ステップ５５４では、仲介デバイスは、修正されたリダイレクトパケットをクライアントに送信してもよい。ステップ５５６では、修正されたリダイレクトパケットを使用して、仲介デバイスは、リダイレクト要求を仲介デバイスに送信してもよい。リダイレクト要求は、セッションディレクトリとは対照的に、仲介デバイスによって提供される情報を使用してもよい。ステップ５５８では、仲介デバイスは、リダイレクト要求に基づいて、標的サーバを選択してもよい。ステップ５６０では、仲介デバイスは、リダイレクト接続要求をリダイレクト要求内に示される標的サーバに送信してもよい。ステップ５６２では、仲介デバイスおよび標的サーバは、ＲＤＰ通信ストリームを確立してもよい。ステップ５６４では、仲介デバイスおよびクライアントは、別のＲＤＰ通信ストリームを確立してもよい。
【０１４２】
ここで図５Ｃを参照すると、セッションブローカの存在下で複数のサーバのうちのサーバに接続するプロセス５２０ｂのシーケンス図が描写される。プロセス５２０ｂの機能性は、上記に説明されるシステム５００を使用して実装されてもよい。プロセス５２０ｂは、ステップ５２２から５４８に説明されるプロセス５２０ａと類似し得る。プロセス５２０ａ内のステップ５５２において、仲介デバイスにおけるリダイレクトパケットを修正する代わりに、プロセス５２０ｂのステップ５５２’では、負荷分散装置は、クライアント１０２が、標的サーバを識別し、ＳＳＯのための情報を含み、および／またはセキュリティ施行のための構成を含み、仲介デバイスおよび／または負荷分散装置によって使用され得る、リダイレクト要求を送信するように、リダイレクトパケットを修正し、トークンおよび／またはクッキーを設定してもよい。ステップ５５０’では、負荷分散装置は、リダイレクトパケットを仲介デバイスに送信してもよい。ステップ５５４’では、仲介デバイスは、修正されたリダイレクトパケットをクライアントに送信してもよい。ステップ５５６’では、修正されたリダイレクトパケットを使用して、仲介デバイスは、リダイレクト要求を負荷分散装置に送信してもよい。リダイレクト要求は、セッションディレクトリ／ブローカとは対照的に、負荷分散装置によって提供される情報を使用してもよい。ステップ５５８’では、負荷分散装置は、リダイレクト要求に基づいて、標的サーバを選択してもよい。ステップ５６０’では、負荷分散装置は、リダイレクト接続要求をリダイレクト要求内に示される標的サーバに送信してもよい。ステップ５６２’では、負荷分散装置および標的サーバは、ＲＤＰ通信ストリームを確立してもよい。ステップ５６４’では、負荷分散装置およびクライアントは、別のＲＤＰ通信ストリームを確立してもよい。
【０１４３】
ここで図５Ｄを参照すると、セッションブローカの存在下で複数のサーバのうちのサーバに接続する方法５８０のフロー図が描写される。方法５８０の機能性は、上記に説明されるシステム５００を使用して実装されてもよい。要するに、仲介デバイスは、クライアントからＲＤＰ要求を受信し、サーバに接続してもよい（５８２）。仲介デバイスは、負荷分散装置にＲＤＰ要求のトークンを修正させてもよい（５８４）。仲介デバイスは、セッションディレクトリによって示される標的サーバを伴うリダイレクトパケットを受信してもよい（５８６）。仲介デバイスは、クライアントが標的サーバと接続するためにリダイレクトパケットを修正させてもよい（５８８）。
【０１４４】
（５８２）を参照すると、いくつかの実施形態では、仲介デバイスは、クライアントからＲＤＰ要求を受信し、サーバに接続してもよい。ＲＤＰ要求は、サーバ上にホストされるリソースにアクセスするためのリンクの起動に応じて、クライアントによって生成および送信されてもよい。ＲＤＰ要求は、トークン（時として、ルーティングおよび／またはセキュリティトークンと称される）を含んでもよい。トークンは、とりわけ、長さ、長さインジケータ、タイプクレジット、宛先参照（例えば、負荷分散装置に対応する）、ソース参照（例えば、クライアントに対応する）、および／またはクッキーを含み得る、バイトシーケンスであってもよい。トークン／クッキーは、いくつかの実施形態では、ＲＤＰ要求をダイレクトするサーバを含んでもよい。ＲＤＰ要求のトークンによって規定されるように、仲介デバイスは、ＲＤＰ要求を負荷分散装置に転送してもよい。
【０１４５】
（５８４）を参照すると、いくつかの実施形態では、仲介デバイスは、負荷分散装置にＲＤＰ要求のトークンを修正または除去させてもよい。いくつかの実施形態では、トークン（修正または除去されていない場合）は、例えば、セッションディレクトリ／ブローカ、および／または負荷分散装置によって選択されるサーバまたはＲＤＰホストによって、無効である、または欠落していると見なされ得る。負荷分散装置は、ＲＤＰ要求を送信する初期サーバを選択してもよい。いくつかの実施形態では、負荷分散装置は、サーバファームのサーバを横断してリソースの消費を決定してもよく、リソースの決定された消費に基づいて、および／またはＲＤＰ要求に基づいて、サーバのうちの１つを選択してもよい。負荷分散装置は、ＲＤＰ要求を設定し、ＲＤＰ要求を最初に選択されたサーバにダイレクトしてもよい。例えば、負荷分散装置は、トークンの宛先参照を最初に選択されたサーバの参照アドレスと置換してもよい。いったん修正されると、負荷分散装置は、ＲＤＰ要求を初期サーバに送信してもよい。
【０１４６】
（５８６）を参照すると、いくつかの実施形態では、仲介デバイスは、セッションディレクトリ／ブローカによって示される標的サーバを伴うリダイレクトパケットを受信してもよい。リダイレクトパケットは、クライアントがダイレクトされるためのサーバファーム通信のサーバを規定してもよい。セッションディレクトリ／ブローカは、ＲＤＰ要求が、最初に選択されたサーバと異なるサーバとのセッションを（クライアントまたはユーザの別のクライアントを介して）確立したユーザからであることを決定してもよい。セッションディレクトリは、負荷分散に基づいて、負荷分散装置によって最初に識別されるサーバ以外の標的サーバを選択してもよい。選択された標的サーバは、ユーザと確立された既存／以前のセッションを有するサーバに対応し得る。セッションディレクトリは、選択されている標的サーバが、すでに割り当てられている（またはサーババームから最初の）サーバに対応することを識別し、クライアントおよび／または同一のユーザの他のクライアントとのセッション接続に対処してもよい。
【０１４７】
（５８８）を参照すると、いくつかの実施形態では、仲介デバイスは、クライアントが標的サーバと接続するためにリダイレクトパケットを修正させてもよい。仲介デバイス（または負荷分散装置）は、続いてクライアントによって生成されるリダイレクト接続要求が標的サーバにダイレクトされ得るように、リダイレクトパケットを修正してもよい。仲介デバイスおよび／または負荷分散装置は、クライアントからのリダイレクト接続要求が、ＲＤＰセッション接続を確立するための標的サーバを直接選択／識別する、（例えば、リダイレクト接続要求内、または仲介デバイスまたは負荷分散装置における構成情報に基づいて）ＳＳＯを実施する、および／またはセキュリティ施行を実施するために好適なセキュリティトークンを含み得る様式で、サーバリダイレクトパケットを修正してもよい。例えば、仲介デバイスは、例えば、セッションディレクトリによって使用されるものから、標的サーバにダイレクトされるために仲介デバイスまたは負荷分散装置によって使用され得るものへ、リダイレクトパケット内に含まれるアドレス（例えば、標的情報）を変更してもよい。負荷分散に関連する情報および／またはユーザ証明書情報等のサーバリダイレクトパケット内の情報は、修正および／または除去されることができる。いくつかの実施形態では、サーバリダイレクトパケットは、クライアントに、セキュリティトークン、構成情報、および／またはセキュリティ施行を実施するための情報を含む、対応するリダイレクト接続要求を生成させるように、（例えば、クライアントのための具体的トリガマーカまたは構成情報の包含を介して）修正されてもよい。ある実施形態では、サーバリダイレクトパケットは、対応するリダイレクト接続要求に、（例えば、具体的トリガマーカまたは構成情報の包含を介して）セキュリティトークン、構成情報、および／またはセキュリティ施行を実施するための情報をリダイレクト接続要求に組み込むように仲介デバイスおよび／または負荷分散装置をトリガさせるように、修正されてもよい。例えば、仲介デバイスがクライアントからリダイレクトされた接続要求パケットを受信することに応じて、仲介デバイスは、セキュリティトークンをフェッチまたは読み出し、標的サーバに接続する、および／または構成に従って、ＳＳＯおよび／またはセキュリティ施行情報をフェッチしてもよい。いくつかの実施形態では、サーバリダイレクトパケットは、対応するリダイレクト接続要求をクライアントから負荷分散装置に直接送信させる、または仲介デバイスを介して変更なく負荷分散装置に送信させるように、修正されてもよい。
【０１４８】
いくつかの実施形態では、ユーザが最初に（ユーザの第１のクライアントから）サーバファームへのＲＤＰセッション接続要求を開始するとき、接続要求は、潜在的に負荷分散装置によってサーバファーム内の任意のサーバにダイレクトされ得る。そのような場合では、接続要求を受信する（第１の）サーバは、ユーザとの第１のセッションを確立してもよく、いかなるサーバリダイレクトパケットも送信しなくてもよい。ユーザは、第１のクライアントまたは異なるクライアントからの後続の（または第２の）ＲＤＰセッション接続要求を開始してもよい。そのような場合では、負荷分散装置は、第２の接続要求を異なる（例えば、第２の）サーバにダイレクトしてもよい。第２の接続要求が異なるサーバに到着したため、その異なるサーバは、サーバリダイレクトパケットを送信し、第１のセッションがすでに存在している同一の（または第１の）サーバにユーザが接続することに役立つことができる。ユーザが異なる（または第２の）クライアントからの接続を開始する（および接続要求がユーザの第１のクライアントのためのものと異なる（または第２の）サーバに到着する）場合に関して、ユーザのためのセッションが第１のサーバ上にすでに存在しているため、リダイレクトパケットが送信される。異なる／新しいユーザ（サーバファームとのいかなる既存または以前の確立されたセッションも有していない）が第２のクライアントからの後続のセッション接続要求を開始する場合には、異なる／新しいユーザのための既存または以前の確立されたセッションが存在しないため、いかなるリダイレクトパケットも生成されないものとする。
【０１４９】
１つ以上の実施形態との関連で本明細書に説明される種々の要素が、別個に、または任意の好適な副次的組み合わせで、提供され得る。例えば、本明細書に説明されるプロセスは、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装されてもよい。さらに、本明細書に説明されるプロセスは、説明される具体的実施形態に限定されない。例えば、本明細書に説明されるプロセスは、本明細書に説明される具体的処理順序に限定されず、むしろ、プロセスブロックは、本明細書に記載される結果を達成するように、必要に応じて、並べ替えられる、組み合わせられる、除去される、または並行または連続して実施されてもよい。
【０１５０】
本明細書に説明および図示されている部分の詳細、材料、および配列の種々の変更が、以下の請求項の範囲から逸脱することなく、当業者によって行われ得ることを理解されたい。
【図１Ａ】
2020533673.tif 000003
【図１Ｂ】
2020533673.tif 000004
【図１Ｃ】
2020533673.tif 000005
【図２】
2020533673.tif 000006
【図３】
2020533673.tif 000007
【図４】
2020533673.tif 000008
【図５Ａ】
2020533673.tif 000009
【図５Ｂ】
2020533673.tif 000010
【図５Ｃ】
2020533673.tif 000011
【図５Ｄ】
2020533673.tif 000012
【国際調査報告】
2020533673.tif 000013
2020533673.tif 000014
2020533673.tif 000015