(57)【特許請求の範囲】
【請求項１】
実行された時に、
セッションメッセージのセッション識別子フィールドからホスト識別子を確認する動作であって、前記ホスト識別子は、ホストのネットワークアドレスを含む動作と、
前記セッションメッセージを含むパケットを、前記パケットの宛先フィールドに前記ネットワークアドレスを挿入することによりルーティングする動作と
を実行するように装置に指示するプロセッサ実行可能命令を含むことを特徴とするプロセッサアクセス可能な記録媒体。
【請求項２】
確認する前記動作は、
前記セッションメッセージの前記セッション識別子フィールドから前記ホスト識別子を連続するブロックとして抽出する動作
を含むことを特徴とする請求項１に記載のプロセッサアクセス可能な記録媒体。
【請求項３】
装置であって、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサによって実行できるプロセッサ実行可能命令を含む媒体と
を含み、前記プロセッサ実行可能命令は、
ホスト識別子を含むセッション識別子を有するセッションメッセージを受け取る動作であって、前記ホスト識別子は、ホストのネットワークアドレスを含む動作と、
前記セッションメッセージを含むパケットを、前記パケットの宛先フィールドに前記ネットワークアドレスを挿入することによりルーティングする動作と
を実行するように前記装置に指示するように適合されている
ことを特徴とする装置。
【請求項４】
受け取る前記動作は、
前記セッション識別子を有する前記セッションメッセージをクライアントから受け取る動作であって、前記セッションメッセージは、ホストに関連するセッションコンテキストに関連し、前記ホストは、前記ホスト識別子に関連する、動作
を含むことを特徴とする請求項３に記載の装置。
【請求項５】
前記プロセッサ実行可能命令は、
前記ホスト識別子に関連するホストへの前記ルーティングに基づいて前記セッションメッセージを前記装置から送るさらなる動作
を実行するように前記装置に指示するように適合されていることを特徴とする請求項３に記載の装置。
【請求項６】
前記プロセッサ実行可能命令は、
受け取られたセッションメッセージは受け取られたセッション識別子を含むかどうかを判定する動作、及び、
前記受け取られたセッションメッセージは受け取られたセッション識別子を含まないと判定された場合に、少なくとも１つのデフォルトルーティングポリシに従って前記受け取られたセッションメッセージをルーティングする動作、
をさらに実行するように前記装置に指示するように適合されていることを特徴とする請求項３に記載の装置。
【請求項７】
セッション識別子フィールドを有するセッションメッセージを受け入れることができるネットワークゲートウェイであって、前記ネットワークゲートウェイは、前記セッション識別子フィールドに投入される値からホスト識別子を抽出するように適合されており、前記ホスト識別子は、ホストのネットワークアドレスを含み、前記ネットワークゲートウェイは、さらに、パケットの宛先フィールドに前記ネットワークアドレスを挿入することにより前記セッションメッセージを含む前記パケットのルーティング動作を実行するように適合されていることを特徴とするネットワークゲートウェイ。
【請求項８】
実行された時に、
セッションメッセージのセッション識別子フィールドからホスト識別子を確認する動作であって、前記ホスト識別子は、ホストのネットワークアドレスを含む動作と、
前記セッションメッセージを含むパケットを、前記パケットの宛先フィールドに前記ネットワークアドレスを挿入することによりルーティングする動作と
を実行するように装置に指示するプロセッサ実行可能命令を含み、
前記セッション識別子フィールドに投入されるセッション識別子は、前記ホスト識別子を含む第１の部分と、前記セッション識別子の一意性を高める第２の部分を含み、
前記第１の部分は、所与のクラスタのホストにまたがって一意であることを特徴とするプロセッサアクセス可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、全般的にはルーティングヒントに関し、具体的には、制限ではなく例として、イントラネットルーティングを容易にするためにネットワークゲートウェイでそのようなルーティングヒントを使用するためにホストからルーティングヒントを供給することに関する。
【背景技術】
【０００２】
通信は、インターネットの機能によって大きく影響を受けてきた。インターネットは、パケットを使用して２人の人または他のエンティティの間ですばやく比較的簡単に情報を通信できるようにする。インターネットに、情報を含むパケットをそれらの間で転送できるように一緒にリンクされた多数のネットワークノードが含まれる。ネットワークノードには、あるリンクから別のリンクへパケットを伝搬させるルータと、個々のクライアントコンピュータと、完全にパーソナルなネットワーク（たとえば、特定のエンティティ用）などがある。
【０００３】
インターネットでの第１エンティティと第２エンティティの間の通信は、それらの間で接続を構成することによって実現される。これらの接続に、時々、セッションが含まれる。セッションは、対応する１つまたは複数の接続を介して行われる通信交換のコンテキストを提供するために確立される。セッション確立に、通常、第１エンティティと第２エンティティの間の１方向または両方向の情報交換が含まれる。セッションの確立フェーズの複雑さおよび持続時間は、通常、セッションのタイプに基づいて変化する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
各セッション確立は、処理リソースを使用し、ある時間期間を消費し、この時間期間が、ユーザが経験する遅延に変換される。セッション確立フェーズの後に、第１エンティティおよび第２エンティティは、確立されたセッションコンテキストに従って通信する。この通信ならびに接続は、セッションを終了せずに終わる場合がある。いくつかの場合に、そのような既存セッションが、その後、以前のセッション確立フェーズ中に２つのエンティティの間で前に交換された情報がこれらのエンティティによって保持されている場合に、その情報を使用して継続される場合がある。
【０００５】
言い換えると、前に交換された情報が、既存セッションを継続するのに使用される。したがって、既存セッションの継続は、一般に、前にセッションを確立したのと同一の第１エンティティおよび第２エンティティが、そのセッションの継続を試みる状況に関する。その結果、第２エンティティが未知であり、かつ／または識別もしくは連絡が困難である場合に、第１エンティティが既存セッションの継続を試みる時に、問題が生じる可能性がある。
【０００６】
したがって、２つのエンティティの間のセッション継続を改善し、単純化し、かつ／または容易にする方式および／または技法の必要がある。
【課題を解決するための手段】
【０００７】
第１の例示的な媒体実装で、１つまたは複数のプロセッサアクセス可能媒体が、実行された時に、ホスト識別子を使用してセッション識別子を作成する動作と、前記作成されたセッション識別子を用いてホストセッション開始メッセージを定式化する動作とを実行するようにデバイスに指示するプロセッサ実行可能命令を含む。
【０００８】
第１の例示的なデバイス実装で、デバイスが、少なくとも１つのプロセッサと、前記少なくとも１つのプロセッサによって実行できるプロセッサ実行可能命令を含む１つまたは複数の媒体とを含み、前記プロセッサ実行可能命令は、ホスト識別子に応答して作成されるセッション識別子を用いてホストセッションメッセージを定式化する動作と、前記セッション識別子を含む前記定式化されたホストセッションメッセージを前記デバイスから送る動作とを実行するように前記デバイスに指示するように適合されている。
【０００９】
第２の例示的な媒体実装で、１つまたは複数のプロセッサアクセス可能媒体が、データ構造を含み、前記データ構造は、セッション識別子フィールドを含むメッセージであって、前記セッション識別子フィールドの少なくとも一部はホスト識別子を含む。
【００１０】
第２の例示的なデバイス実装で、デバイスが、ホスト識別子と、前記ホスト識別子を使用してセッション識別子を作成するように適合されたセッション識別子クリエータとを含む。
【００１１】
例示的なネットワークゲートウェイ実装で、ネットワークゲートウェイが、セッション識別子フィールドを有するセッション関連メッセージを受け入れることができ、前記ネットワークゲートウェイは、前記セッション識別子フィールドに投入される値からホスト識別子を抽出するように適合されており、前記ネットワークゲートウェイは、さらに、前記ホスト識別子を使用して前記セッション関連メッセージのルーティング動作を実行するように適合されている。
【００１２】
第３の例示的な媒体実装で、１つまたは複数のプロセッサアクセス可能媒体が、実行された時に、セッションメッセージのセッション識別子フィールドからホスト識別子を確認する動作と、前記確認されたホスト識別子に応答して前記セッションメッセージをルーティングする動作とを実行するように装置に指示するプロセッサ実行可能命令を含む。
【００１３】
例示的な装置実装で、装置が、少なくとも１つのプロセッサと、前記少なくとも１つのプロセッサによって実行できるプロセッサ実行可能命令を含む１つまたは複数の媒体とを含み、前記プロセッサ実行可能命令は、ホスト識別子を含むセッション識別子を有するセッションメッセージを受け取る動作と、前記ホスト識別子に応答して前記セッションメッセージをルーティングする動作とを実行するように前記装置に指示するように適合されている。
【００１４】
他の方法、システム、手法、装置、アプリケーションプログラミングインターフェース（ＡＰＩ）、デバイス、媒体、プロシージャ、配置などの実装を、本明細書で説明する。
【００１５】
同一の符号が、複数の図面を通じて、類似するおよび／または対応する態様、特徴、およびコンポーネントを参照するのに使用される。
【図面の簡単な説明】
【００１６】
【図１】セッションを確立する第１接続およびそのセッションを継続する第２接続を示す例示的な通信環境を示す図である。
【図２】セッションメッセージと共にルーティングヒントを供給し、使用する例示的な手法を示す図である。
【図３】ルーティングヒントを含めることができる例示的なセッションメッセージを示す図である。
【図４】ルーティングヒントを供給する例示的な方法を示す流れ図である。
【図５】セッションメッセージと共にルーティングヒントを供給し、使用するもう１つの例示的な手法を示す図である。
【図６Ａ】ルーティングヒントと共に使用されるホスト識別子とネットワークアドレスのリンキングを示す例示的なテーブルを示す図である。
【図６Ｂ】ルーティングヒントと共に使用されるホスト識別子とネットワークアドレスのリンキングを示す例示的なテーブルを示す図である。
【図７】ルーティングヒントを使用する例示的な方法を示す流れ図である。
【図８】本明細書に記載のルーティングヒントの少なくとも１つの態様を実装する（全体をまたは部分的に）ことができる例示的なコンピューティング（または一般デバイス）オペレーティング環境を示す図である。
【発明を実施するための形態】
【００１７】
図１は、セッションを確立する第１接続１１４（１）およびそのセッションを継続する第２接続１１４（２）を示す例示的な通信環境１００である。図からわかるように、例示的な通信環境１００に、複数のクライアント１０２（１）、１０２（２）、…、１０２（ｍ）および複数のホスト１０８（１）、１０８（２）、…、１０８（ｎ）、ならびにネットワーク１０４およびネットワークゲートウェイ（ＮＧ）１０６が含まれる。ネットワークゲートウェイ１０６は、ネットワーク１０４とイントラネット１１０の間のゲートウェイとして働く。ホスト１０８は、イントラネット１１０に結合される。
【００１８】
説明される実装では、クライアント１０２（１）、１０２（２）、…、１０２（ｍ）が、それぞれアドレス「Ｃ１」、「Ｃ２」、…、「Ｃｍ」に対応する。クライアント１０２のそれぞれは、コンピュータ、モバイルステーション、エンターテイメント機器、別のネットワークなど、ネットワーク通信が可能な任意のデバイスとすることができる。クライアント１０２は、クライアントデバイスを操作している人または他のエンティティに対応することもできる。言い換えると、クライアント１０２に、ユーザおよび／または機械である論理クライアントを含めることができる。
【００１９】
ネットワーク１０４は、インターネット、もう１つのイントラネット、有線または無線の電話網、無線ブロードバンドネットワークなど、１つまたは複数のネットワークから形成することができる。クライアント１０２およびネットワーク１０４のネットワークタイプ／トポロジのデバイスの追加の例を、下で図８を参照して説明する。個々のクライアント１０２は、ネットワーク１０４を介し、ネットワークゲートウェイ１０６を介して、１つまたは複数のホスト１０８と通信でき、その逆を行うことができる。
【００２０】
ホスト１０８（１）、１０８（２）、…、１０８（ｎ）は、それぞれアドレス「Ｈ１」、「Ｈ２」、…、「Ｈｎ」に対応する。ホストアドレスＨ１、Ｈ２、…、Ｈｎは、イントラネット１１０上に存在する。ホスト１０８は、通常、１つまたは複数のアプリケーション（図示せず）をホスティングする。これらのアプリケーションは、（ｉ）クライアント１０２との相互作用および／または通信に関するサービスを提供し、（ｉｉ）クライアント１０２などによる使用のためのものである。例のみとして、そのようなアプリケーションに、ファイル配送プログラム、ウェブサイト管理／サーバプログラム、リモートアクセスプログラム、電子メールプログラム、データベースアクセスプログラムなどを含めることができる。
【００２１】
各ホスト１０８は、１つのサーバおよび／または１つのデバイス、複数のサーバおよび／または複数のデバイス、サーバの一部および／またはデバイスの一部、これらのある組合せなどの対応することができる。ホスト１０８の特定の例示的な実装を、さらに、下で図２、４、および５を参照して説明する。さらに、ホスト１０８の追加の例示的なデバイス実装を、下で図８を参照して説明する。
【００２２】
ネットワークゲートウェイ１０６は、１つまたは複数のアドレス「ＮＧＮ」でネットワーク１０４を介して到達可能またはロケータブル（ｌｏｃａｔａｂｌｅ）であり、ネットワークゲートウェイ１０６は、少なくとも１つのアドレス「ＮＧＩ］を有するイントラネット１１０上のプレゼンスも有する。ネットワークゲートウェイ１０６のアドレスＮＧＮに向けられたクライアント１０２（または他のノード）からの通信は、ネットワークゲートウェイ１０６で受け取られ、その後、ホスト１０８（１）、１０８（２）、…、１０８（ｎ）のうちの１つのホスト１０８にルーティングされる。ネットワークゲートウェイ１０６は、１つまたは複数のネットワークゲートウェイ要素（図１には別々に図示せず）からなる。各ネットワークゲートウェイ要素１０６に、ルータ、プロキシ、ロードバランサ、ファイヤウォールデバイスのすべてまたは一部、これらのある組合せなどを含めることができる。ネットワークゲートウェイ要素１０６の例示的な固有でないデバイス実装を、下でも図８を参照して説明する。
【００２３】
一般に、接続１１４は、クライアント１０２とホスト１０８の間で、ネットワーク１０４上でネットワークゲートウェイ１０６を介して構成される。通常、クライアント１０２が接続１１４を開始するが、その代わりに、ホスト１０８がイニシエータになることができる。具体的には、この例で、クライアント１０２（１）が、ホスト１０８（２）との接続１１４（１）を開始する。しかし、クライアント１０２（１）は、ホスト１０８（２）のアドレスＨ２に関与しない。そうではなく、クライアント１０２（１）は、ネットワークゲートウェイ１０６のアドレスＮＧＮにこの接続（たとえば、接続を要求するパケット）を向ける。
【００２４】
次に、ネットワークゲートウェイ１０６が、あるデフォルトポリシ（たとえば、ルール）に従って、接続１１４（１）に対してルーティング動作１１６（１）を実行する。その結果、ネットワークゲートウェイ１０６は、この例について、イントラネット１１０を介してホスト１０８（２）に接続１１４（１）をルーティングする。一般に、ネットワークゲートウェイ１０６は、接続１１４のパケットをクライアント１０２（１）からそのままネットワークアドレスＨ２のホスト１０８（２）に単純に送信することができない。というのは、このパケットが、ネットワークゲートウェイ１０６のアドレスＮＧＮに宛先アドレスを指定されているからである。その代わりに、ネットワークゲートウェイ１０６は、通常、ネットワークアドレス変換（ＮＡＴ）、ｈａｌｆ−ＮＡＴ、トンネリング、これらのある組合せなどの例示的なオプションのうちの１つまたは複数を使用して、イントラネット１１０を介してパケットをルーティングする。
【００２５】
伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）環境では、ＮＡＴが、（ｉ）ソース（すなわち、クライアント１０２（１））ＩＰアドレスＣ１およびポート番号をネットワークゲートウェイ１０６のＩＰアドレスＮＧＩおよびＮＡＴが生成したポート番号で上書きし、（ｉｉ）宛先ＩＰアドレスＮＧＮをホスト１０８（２）のＩＰアドレスＨ２で上書きすることによって実行される。ｈａｌｆ−ＮＡＴは、宛先ＩＰアドレスＮＧＮをホスト１０８（２）のＩＰアドレスＨ２で上書きし、その結果、ソースＩＰアドレスＣ１およびポート番号が保存されるようにすることによって実行される。トンネリングは、各パケットをホスト１０８（２）のアドレスＨ２にアドレッシングされた新しいＩＰパケット内にカプセル化し、カプセル化されたパケットをネットワークゲートウェイ１０６からホスト１０８（２）に送信することによって実行され、ホスト１０８（２）で、このカプセル化されたパケットをカプセル化解除することができる。
【００２６】
接続１１４（１）中に、セッションが、クライアント１０２（１）とホスト１０８（２）の間で確立される。接続１１４（１）の確立されたセッションについて、セッションコンテキスト１１２が、ホスト１０８（２）で作られる。類似する、似た、および／または相互のセッションコンテキスト（図示せず）が、通常はクライアント１０２（１）でも作られる。セッションコンテキスト１１２は、クライアント１０２（１）とホスト１０８（２）の間の通信を容易にする。
【００２７】
したがって、接続１１４（１）は、その上で多数の異なるタイプのセッションのうちの１つまたは複数を確立されている場合とそうでない場合がある。セッションの例示的なタイプに、（ｉ）Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ（ＳＳＬ）セッション、（ｉｉ）Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ（ＴＬＳ）セッション、（ｉｉｉ）セキュアインターネットプロトコル（ＩＰｓｅｃ）セッション、（ｉｖ）ハイパーテキスト転送プロトコル（ＨＴＴＰ）クッキーベースセッション、（ｖ）ｐｏｉｎｔ−ｔｏ−ｐｏｉｎｔトンネリングプロトコル（ＰＰＴＰ）セッション、（ｖｉ）ＩＰＳｅｃ／ｌａｙｅｒ−２  ｔｕｎｎｅｌｉｎｇ  ｐｒｏｔｏｃｏｌ（Ｌ２ＴＰ）セッション、（ｖｉｉ）独自セッション、（ｖｉｉｉ）ターミナルサーバセッション、（ｉｘ）管理者定義のセッション、および（ｘ）その他が含まれる。異なるセッションタイプのこれらの例は、セッションの複数の層がどのように確立され、使用されるかも示す。
【００２８】
セッションコンテキスト１１２の内容は、少なくとも部分的に、それがそのために作られたセッションのタイプに依存して変化する可能性がある。たとえば、特定のセッションコンテキスト１１２に、ＴＣＰ  ４タプル（たとえば、ＴＣＰ接続を用いて確立されたセッション用）、セッション識別子、対応するセッションの永続状態を維持する１つまたは複数のデータベースエントリの位置、ホスト１０８（２）に供給されるクライアント１０２（１）の公開鍵、ネゴシエートされた秘密暗号鍵、他のセキュリティ関連パラメータなどのうちの１つまたは複数を含めることができる。ＴＣＰ  ４タプルに、ソースＩＰアドレス、ソースＴＣＰポート、宛先ＩＰアドレス、および宛先ＴＣＰポートが含まれる。たとえば、現在の標準規格の下のＳＳＬセッションについて、セッション識別子を、３２バイトまでの長さとすることができる。
【００２９】
上で説明したように、現在の例では、接続１１４（１）を構成した後に、セッションが、クライアント１０２（１）とホスト１０８（２）の間で確立される。クライアント１０２（１）は、より具体的には、ホスト１０８（２）に常駐し、かつ／またはホスト１０８（２）で実行される少なくとも１つのアプリケーションとのセッションを確立する。しかし、説明を明瞭にするために、そのようなアプリケーションは、一般に、ホスト１０８（２）に言及する時に含めることができる。
【００３０】
セッション確立フェーズは、セッションコンテキスト１１２を作るかもたらす。セッションコンテキスト１１２は、クライアント１０２（１）とホスト１０８（２）の間の通信交換のコンテキストを提供する。セッションコンテキスト１１２に、これらの通信交換に実際にクリティカルな、単に有益な、またはともかくも他の形で関連する情報を含めることができる。
【００３１】
クライアント１０２（１）を論理クライアントにすることができるならば、セッションコンテキスト１１２は、（１）特定のデバイスおよび／またはデバイスの特定のユーザと（ｉｉ）ホスト１０８（２）との間の通信交換に関するものとすることができる。その結果、ユーザクライアント１０２（１）に関連するセッションコンテキスト１１２は、ユーザクライアント１０２（１）が異なるデバイスからホスト１０８にアクセスする場合であっても、そのユーザクライアント１０２（１）に関連付けられ続けることができる。デバイスは、クライアント１０２（１）のローカルレベルで、ネットワーク１０４レベルで、などで異なるものとすることができる。そのような異なるデバイスシナリオの例に、プロキシシナリオ（たとえば、あるインターネットサービスプロバイダ（ＩＳＰ）のプロキシシナリオ）、ターミナルサーバセッションシナリオなどが含まれる。
【００３２】
セッションコンテキスト１１２は、ホスト１０８（２）に保管され、かつ／またはホスト１０８（２）からアクセス可能である。接続１１４（１）が、完了するか他の形で停止した時に、セッションコンテキスト１１２は、もう一度使用されない可能性がある。逆に、セッションコンテキスト１１２は、クライアント１０２（１）が、同一のセッション、類似するセッション、または関連するセッションなどについてホスト１０８とのもう１つの接続を開始することを試みる場合に、もう一度有用になる可能性がある。このもう１つの接続が、セッションコンテキスト１１２を保管するのと同一のホスト１０８（２）にルーティングされない場合に、クライアント１０２（１）は、新しいセッションを確立しなければならず、これは、時間がかかり、データ／処理集中的であり、かつ／またはユーザ（特に、クライアント１０２（１）に対応するユーザ）をいらいらさせる可能性がある。あるセッションアフィニティ（ｓｅｓｓｉｏｎ  ａｆｆｉｎｉｔｙ）保存機構がネットワークゲートウェイ１０６にない場合に、通常、第２の接続がホスト１０８（２）にルーティングされる、ランダムな機会より高い可能性はない。
【００３３】
セッションアフィニティ保存機構またはセッションアフィニティ保存機能性は、接続と共に継続される既存セッションのセッションコンテキスト１１２に関連するホスト１０８に接続（パケットレベル要求および論理レベル要求を含む）をルーティングするように適合されている。たとえば、セッションアフィニティ保存機能性は、クライアント１０２（１）の接続１１４（２）を、セッションコンテキスト１１２が関連するホスト１０８（２）にルーティングすることを可能にすることを試みる。そのようなセッションアフィニティ保存機構は、１つまたは複数の例示的な戦略に従って実装することができる。一般にネットワークゲートウェイ１０６に適用可能ではあるが、これらの例示的な戦略を、負荷分散実装の展望から説明する。
【００３４】
第１の戦略は、「スティッキィ（ｓｔｉｃｋｙ）」モードを用いる負荷分散に関し、このモードでは、所与の、たとえばＩＰアドレスから来る、すべてではないにしてもほとんどの要求が、単一のホスト１０８にルーティングされる。しかし、この戦略は、所与のＩＰアドレスが、単一のクライアント１０２を表すという仮定に頼るが、この仮定は、プロキシに関して明らかに真でない。プロキシは、ロードバランサには単一のＩＰアドレスに見えるが、実際には、多数の、潜在的に数千個のクライアント１０２の要求を表す。その結果、これらの要求のすべてを単一のホスト１０８にルーティングすることは、デバイスの間の非常に不均一な負荷分散につながる可能性がある。通常、プロキシから着信要求を受け取るデバイスは、結果として、はるかに多数のクライアント１０２を割り当てられる。さらに、変化するＩＰアドレスを有するクライアント１０２からの要求も、この第１の戦略を使用すると不正にルーティングされる。ＩＰアドレスは、モバイル環境で、アドレスがＩＰアドレスプールから一時的に割り当てられる時に、などに変化する可能性がある。
【００３５】
第２の戦略に、セッション識別子を使用する負荷分散ヒューリスティックを使用することが含まれる。既存セッションを継続する要求は、特定の個々のセッション識別子を使用して、そのセッションを前に確立した（たとえば、ネゴシエートした）ホスト１０８にルーティングされる。動作時に、特定のセッションが特定のクライアント１０２と特定のホスト１０８の間で確立された後に、その特定のホスト１０８をその特定のセッションにリンクするマッピングが、保管され、そのセッションは、特定のセッション識別子によって識別される。その特定のクライアント１０２からの特定のセッション識別子を含む要求が受け取られた時に、その要求を、このマッピングを使用してその特定のホスト１０８にルーティングすることができる。したがって、この第２の戦略は、セッションアフィニティの保存を可能にする。
【００３６】
しかし、第２の戦略は、効率の展望から複数の相対的な欠点を伴う。第１に、ロードバランサは、セッション識別子とホスト１０８の間のこれらのマッピングのテーブルを維持する。このテーブルのサイズは、既存のセッションごとに別々のエントリがあるので、巨大になる可能性がある。たとえば、各ホスト１０８が、１００００個のセッションをキャッシングし、５００個のホスト１０８がある場合に、このテーブルは、最適の効率でこれらのセッションに関する要求をルーティングするために、５００万個のエントリを使用する。第２に、新たに確立されるセッションごとに、ロードバランサは、セッション識別子が検出され、エントリをテーブルに追加できるようになるまで、セッション確立フェーズを監視する。第３に、セッションを再開する要求が受け取られるたびに、ロードバランサは、ルーティングを実行するためにこの（非常に大きい可能性が高い）テーブルに問い合わせる。
【００３７】
第４に、セッションが、寿命を有し、混雑に起因してホスト１０８のキャッシュから積極的にエージアウトすなわち追い出されるので、ロードバランサテーブルは、あるエージング機構も実装して、個々のホスト１０８がそれ自体のキャッシュに関して行っていることまたは行っていると期待されることをミラーリングする。ホスト１０８およびロードバランサのエージング機構が同期化されていない場合に、ロードバランサは、まだホスト１０８で有効なセッションに関する状態情報を早すぎる時に削除する可能性があり、あるいはその逆に、どのホスト１０８にももはや存在しないセッションの状態情報を保持する可能性がある。
【００３８】
セッションアフィニティ保存機能性に関する第３の戦略は、新たに確立されるセッションのセッション識別子の選択的な作成／判定を介して、個々のセッションごとにエントリを必要とするテーブルなしで、ネットワークゲートウェイ１０６でのセッションアフィニティ保存を達成することができる。セッション識別子を判定する時に、ホスト１０８は、その中にホスト識別子を埋め込む。
【００３９】
ネットワークゲートウェイ１０６は、セッション識別子からホスト識別子を抽出し、そのホスト識別子に応答して、セッション識別子が割り当てられたセッションのトラフィックをルーティングする。したがって、第３の戦略は、有界の個数のエントリ（たとえば、ホスト１０８の個数と等しい個数のエントリ）を有するテーブルを使用してセッション継続要求をルーティングし、かつ／またはそのようなセッションごとのエントリを有するテーブルを使用せずにセッション継続要求をルーティングする、相対的にステートレスな手法を使用することができる。この第３の戦略の諸態様を、本明細書でさらに説明する。
【００４０】
通信環境１００の例で、セッション確立フェーズが接続１１４（１）の一部として完了した後に、セッションコンテキスト１１２が、ホスト１０８（２）で作られる。その後、接続１１４（１）が終了する。接続１１４（２）に関する要求がネットワークゲートウェイ１０６に到着した時に、それに対してルーティング動作１１６（２）が実行される。この接続１１４（２）は、それに割り当てられたセッション識別子によって、セッションコンテキスト１１２に対応する前に確立されたセッションの継続に関するものであることが示される。このセッション識別子には、第３の戦略に従ってホスト１０８（２）の識別子が含まれる。セッション継続要求のセッション識別子から抽出されたホスト１０８（２）のホスト識別子を使用することによって、接続１１４（２）が、ルーティング動作１１６（２）でホスト１０８（２）にルーティングされ、このホスト１０８（２）は、セッションコンテキスト１１２に関連する。
【００４１】
アイテム１１４（１）および１１４（２）は、単一の接続内で発生するセッション関連メッセージ（たとえば要求）ならびに複数の接続中に発生するセッション関連メッセージも表すことができる。さらに、クライアント１０２とホスト１０８の間のある通信を、本明細書でメッセージとして説明する。メッセージは、通常、１つまたは複数のパケットとして、クライアント１０２からホスト１０８へおよびその逆に伝搬される。クライアントメッセージは、クライアント１０２から送られ、ホストメッセージは、ホスト１０８から送られる。セッションメッセージとは、セッションに関するメッセージ（たとえば、セッションの確立、継続／再開、破壊などに関するメッセージ）である。例示的なセッションメッセージを、さらに、下で図３を参照して説明する。
【００４２】
セッション開始メッセージは、セッションの開始に関する、クライアント１０２および／またはホスト１０８によって送られるメッセージである。セッション継続メッセージは、既存セッションの継続に関する、クライアント１０２および／またはホスト１０８によって送られるメッセージである。セッション開始メッセージおよびセッション継続メッセージは、明らかに異なるフォーマット、類似するフォーマット、同一のフォーマットなどを有することができる。しかし、説明される実装では、セッション開始メッセージおよびセッション継続メッセージが、少なくとも類似するフォーマットを有し、このフォーマットでは、セッション識別子の存在が、あるクライアントセッションメッセージがクライアントセッション継続メッセージであることを示し、セッション識別子の不在が、あるクライアントセッションメッセージがクライアントセッション開始メッセージであることを示す。
【００４３】
本明細書での説明は、それに制限されないが、下で説明する実装は、時々、ネットワークゲートウェイ１０６の負荷分散実装を協調するかこれに焦点を合わせたものである。また、他のプロトコルおよびプロトコルの組合せが、適用可能であり、代わりに使用することができるが、下の説明では、主に、説明を明瞭にするためにＴＣＰ／ＩＰ接続およびＳＳＬ／ＴＬＳセッションを使用する。
【００４４】
制限ではなく例として、クライアントセッション開始メッセージまたはクライアントセッション継続メッセージを、ある仕様（たとえば、「the TLS Protocol Version 1.0 Spec (January 1999)」非特許文献１）に従う「Ｃｌｉｅｎｔ  Ｈｅｌｌｏ」メッセージとすることができる。Ｃｌｉｅｎｔ  Ｈｅｌｌｏメッセージにセッション識別子が含まれる場合に、このメッセージを、クライアントセッション継続メッセージとすることができ、そうでない場合に、このメッセージを、クライアントセッション開始メッセージとすることができる。同様に、ホストセッション開始メッセージまたはホストセッション継続メッセージを、ある仕様（たとえば、非特許文献１参照）に従う「Ｓｅｒｖｅｒ  Ｈｅｌｌｏ」メッセージとすることができる。Ｓｅｒｖｅｒ  Ｈｅｌｌｏメッセージに、そのＳｅｒｖｅｒ  Ｈｅｌｌｏメッセージが応答しているＣｌｉｅｎｔ  Ｈｅｌｌｏメッセージ内でクライアントによって供給されたセッション識別子が含まれる場合に、このメッセージを、ホストセッション継続メッセージとすることができる。Ｓｅｒｖｅｒ  Ｈｅｌｌｏメッセージが、セッション識別子を含まないＣｌｉｅｎｔ  Ｈｅｌｌｏメッセージに応答するものである場合に、このメッセージを、ホストセッション開始メッセージとすることができる。そのようなホストセッション開始メッセージのセッション識別子の作成および定式化を、下でさらに説明する。
【００４５】
図２に、セッションメッセージと共にルーティングヒントを供給し、使用する例示的な手法を示す。セッションメッセージ２０２、２０４、および２０６は、ネットワーク１０４を介し、ネットワークゲートウェイ要素１０６を介して、クライアント１０２からホスト１０８へ、またはその逆に送られる。ネットワークゲートウェイ要素１０６は、ネットワークゲートウェイ１０６（図１の）の要素を表す。セッションメッセージ２０２、２０４、および２０６のそれぞれが、ネットワークゲートウェイ要素１０６によってルーティングされるものとして図示されているが、各個々のセッションメッセージを、その代わりに、ネットワークゲートウェイ１０６の異なる個々の要素によってルーティングすることができる。
【００４６】
図からわかるように、ホスト１０８に、クライアント１０２に送られるメッセージおよびクライアント１０２から受け取られているメッセージを処理するメッセージハンドラ２０８が含まれる。メッセージハンドラ２０８に、着信メッセージハンドラ部分２０８ＩＣおよび発信メッセージハンドラ部分２０８ＯＧが含まれる。ホスト１０８は、ホスト識別子２１４に関連し、ホスト識別子２１４は、ホスト１０８に保管されるか、他の形でホスト１０８からアクセス可能である。ホスト識別子２１４の例を、下で図３を参照してさらに説明する。ホスト１０８に、ホスト識別子２１４を使用してセッション識別子（たとえば、セッション識別子２１０）を作成するセッション識別子クリエータ２１２も含まれる。
【００４７】
説明される実装では、クライアント１０２が、アドレス「Ｃ」を有し、ネットワークゲートウェイ要素１０６が、アドレスＮＧＮおよびＮＧＩを有し、アドレスＣおよびＮＧＮは、ネットワーク１０４上に位置する。ホスト１０８は、アドレス「Ｈ」を有し、これは、アドレスＮＧＩと共にイントラネット１１０上に位置する。クライアント１０２からのセッションメッセージは、ネットワーク１０４を介してネットワークゲートウェイ要素１０６で受け取られる。次に、ネットワークゲートウェイ要素１０６は、これらのセッションメッセージを、イントラネット１１０を介して、ルーティング動作２１６を用いてホスト１０８にルーティングする。逆のパスでは、ホスト１０８からのセッションメッセージが、イントラネット１１０を介してネットワークゲートウェイ要素１０６に送られ／送信され、ネットワークゲートウェイ要素１０６が、このメッセージをルーティング動作２１６を用いてクライアント１０２にルーティングする。
【００４８】
具体的に言うと、クライアント１０２は、クライアントセッション開始メッセージ（ＳＩＭ）２０２を、ネットワーク１０４を介してネットワークゲートウェイ要素１０６に送る。クライアントセッション開始メッセージ２０２には、新しいセッションに関する要求が含まれる限り、セッション識別子が含まれない。クライアントセッション開始メッセージ２０２は、既存セッションに関するものでないので、ネットワークゲートウェイ要素１０６は、ルーティング動作２１６（Ａ）で一般的なポリシを使用して、クライアントセッション開始メッセージ２０２をホスト１０８にルーティングする。たとえば、ネットワークゲートウェイ要素１０６は、現在のおよび／または関連する負荷分散ポリシ（たとえば、着信新規セッション要求のラウンドロビン分配）に従って、クライアントセッション開始メッセージ２０２をルーティングすることができる。
【００４９】
ホスト１０８は、イントラネット１１０を介して着信メッセージハンドラ部分２０８ＩＣでクライアントセッション開始メッセージ２０２を受け取る。セッション識別子がない場合に、着信メッセージハンドラ部分２０８ＩＣは、クライアントセッション開始メッセージ２０２を新規セッションに関するものと認識する。セッション識別子クリエータ２１２が、アクティブ化されて、要求された新規セッションの新しいセッション識別子を作成する。セッション識別子クリエータ２１２は、ホスト識別子２１４を確認し／取り出す。
【００５０】
セッション識別子クリエータ２１２は、ホスト識別子２１４を使用して、セッション識別子２１０を作成する。たとえば、セッション識別子クリエータ２１２は、ホスト識別子２１４をセッション識別子２１０に挿入する。セッション識別子２１０に、ホスト識別子２１４以外の値を含めることもできる。セッション識別子２１０の追加の値は、１つまたは複数の技法のいずれかを使用して作成することができる。そのような技法に、ランダムに選択された値、増分するカウンタからの値、セキュリティ関連の値、ハッシュ化された値、これらのある組合せなどが含まれるが、これに制限はされない。
【００５１】
説明される実装では、セッション識別子２１０の第１部分（すなわち、ホスト識別子２１４）が、対応するセッションを現在所有しているホスト１０８の識別専用である。この第１部分は、所与のクラスタのホスト１０８にまたがって一意である（すなわち、ホスト１０８のどれもが、同一のクラスタ内の他のホスト１０８とホスト識別子２１４を共有しない）。この第１部分は、ホスト１０８が所有するＩＰアドレス、管理者によって割り当てられた整数などとすることができる。セッション識別子２１０の第２部分は、セッション識別子２１０の一意性（および予測不能性）を高めることができる。この第２部分について、新しいセッションごとに１回増分される（０へのロールオーバを有する）グローバルカウンタの使用の組合せならびに擬似乱数および／またはハッシュ化技法の使用の組合せなど、さまざまな技法を使用することができる。
【００５２】
セッション識別子クリエータ２１２は、セッション識別子２１０をメッセージハンドラ２０８に供給する。発信メッセージハンドラ部分２０８ＯＧは、セッション識別子２１０を含むホストセッション開始メッセージ２０４を準備／定式化する。ホストセッション開始メッセージ２０４は、イントラネット１１０を介してネットワークゲートウェイ要素１０６に送られる。次に、ネットワークゲートウェイ要素１０６が、ルートバックルーティング動作２１６（Ｂ）を使用して、ネットワーク１０４を介してクライアント１０２にホストセッション開始メッセージ２０４を送る。そのように示されてはいないが、ホストセッション開始メッセージ２０４を、その代わりに、特にネットワークゲートウェイ要素１０６がセッションごとの状態情報を蓄積せずに後続クライアントメッセージをルーティングできる限り、ネットワークゲートウェイ要素１０６を含まないパスに沿ってルーティングすることができる。
【００５３】
クライアント１０２は、ホストセッション開始メッセージ２０４からセッション識別子２１０を抽出し、確立されたセッションを継続するための将来の可能な使用（および確立されたセッションに関する現在の使用）のためにセッション識別子２１０を保存する。ある点で、確立されたセッションの実際の使用が終了する（たとえば、接続が終了する）。ホスト１０８との確立された既存セッションを継続するために、クライアント１０２は、クライアントセッション継続メッセージ（ＳＣＭ）２０６を定式化する。クライアント１０２は、保存されたセッション識別子２１０をクライアントセッション継続メッセージ２０６に含める。次に、クライアントセッション継続メッセージ２０６が、ネットワーク１０４を介してクライアント１０２からネットワークゲートウェイ要素１０６に送られる。
【００５４】
ネットワークゲートウェイ要素１０６は、クライアントセッション継続メッセージ２０６を受け取った時に、クライアント１０２が、含まれるセッション識別子２１０によって示される既存セッションの継続を試みていることを検出する。ルーティング動作２１６（Ｃ）で、ネットワークゲートウェイ要素１０６は、セッション識別子２１０を使用してクライアントセッション継続メッセージ２０６をルーティングする。具体的に言うと、ネットワークゲートウェイ要素１０６は、セッション識別子２１０の一部であり、これから抽出されたホスト識別子２１４を使用して、クライアントセッション継続メッセージ２０６をルーティングする。
【００５５】
ホスト識別子２１４は、それに関連するホスト１０８を識別する。したがって、ネットワークゲートウェイ要素１０６は、ホスト識別子２１４によって示されるホスト１０８の識別を使用して、ルーティング動作２１６（Ｃ）でクライアントセッション継続メッセージ２０６をルーティングする。したがって、クライアントセッション継続メッセージ２０６は、イントラネット１１０を介してネットワークゲートウェイ要素１０６からホスト１０８に送られる。ホスト１０８で、着信メッセージハンドラ部分２０８ＩＣが、クライアントセッション継続メッセージ２０６を受け取り、保管されたセッションコンテキスト（たとえば、図１に示されたセッションコンテキスト１１２）を使用して、前に確立されたセッションの継続を開始することができる。
【００５６】
ホスト識別子２１４は、それに関連するホスト１０８を複数の形で識別することができる。たとえば、ホスト識別子２１４に、ホスト１０８の（イントラネット）ネットワークアドレスＨを含めることができる。この場合に、ネットワークゲートウェイ要素１０６は、セッション関連テーブルまたはホスト識別子テーブルを使用せずに、クライアントセッション継続メッセージ２０６をホスト１０８にルーティングすることができる。言い換えると、クライアントセッション継続メッセージ２０６に関する、イントラネット１１０に置かれる１つまたは複数のパケットの宛先アドレスとして、ホスト識別子２１４または少なくともその一部を使用することによって、クライアントセッション継続メッセージ２０６をホスト１０８に転送することができる。
【００５７】
その代わりに、ホスト識別子２１４を、ホスト１０８のアドレスＨにマッピングすることができる。このマッピングの形は、テーブル（または計算）を伴うが、このテーブルのエントリの個数「ｎ」は、サーバクラスタ内、イントラネット１１０上、ウェブファーム内などのホスト１０８の個数と同一にすることができる。したがって、このテーブルは、有界の個数のエントリを有し、セッションごとの状態情報を含まない。上で使用した例を参照すると、各ホスト１０８が１００００個のセッションをキャッシングし、５００個のホスト１０８がある場合に、このテーブルは、これらのセッションの要求を効率的にルーティングするために、５００個のエントリ（５００万個ではなく）を使用することができる。
【００５８】
下の表１は、ホスト１０８のアドレスによってホスト識別子２１４をホスト１０８にリンクする、例示的なリンキングデータ構造である。
【００５９】
【表１】
0004828619.tif 000002
【００６０】
動作中に、ネットワークゲートウェイ要素１０６は、クライアント１０２から受け取られた時に、クライアントセッション継続メッセージ２０６のセッション識別子２１０からホスト識別子２１４（＃）を抽出する。次に、ネットワークゲートウェイ要素１０６は、ホスト識別子２１４（＃）を使用することによって表１のリンキングデータ構造などのリンキングデータ構造にアクセスして、それにリンクされたホストアドレスＨ＃を確認する。このホストアドレスＨ＃は、イントラネット１１０上のホスト１０８（＃）のアドレスに対応し、クライアントセッション継続メッセージ２０６をホスト１０８（＃）にルーティングするための宛先アドレスとして使用される。例示的なホスト識別子対ネットワークアドレスリンキングテーブルを、さらに、下で図６Ａおよび６Ｂを参照して説明する。
【００６１】
図３に、ルーティングヒントを含めることができる例示的なセッションメッセージ３０２を示す。セッションメッセージ３０２は、１つまたは複数のセッションに関連するメッセージである。図からわかるように、セッションメッセージ３０２に、複数のフィールドが含まれる。この複数のフィールドに、セッション識別子２１０と、他のフィールド３０４によって表される１つまたは複数の他のフィールドが含まれる。
【００６２】
セッション識別子２１０に、少なくとも１つのホスト識別子２１４が含まれる。ホスト識別子２１４に、デバイス識別子３０６および任意選択としてアプリケーション識別子３０８が含まれる。デバイス識別子３０６に、ネットワークアドレス３１０またはキー３１２（Ａ）を含めることができる。代替案では、ホスト識別子２１４にキー３１２（Ｂ）を含めることができる。
【００６３】
説明される実装では、セッションメッセージ３０２の１つまたは複数のフォーマットが、ＳＳＬ／ＴＬＳなど、ネットワークまたは通信の標準規格またはプロトコルによって定義される。セッション識別子２１０は、特に適用可能な標準規格またはプロトコルによって定義されるように、セッションメッセージ３０２内のどこにでも置くことができる。他のフィールド３０４に、ソースアドレスおよび／または宛先アドレス、一般的なヘッダ情報、セキュリティタイプ情報、他のセッション関連情報、データ、これらのある組合せなどを含めることができる。たとえば、セッションメッセージ３０２を、ＴＬＳ  Ｐｒｏｔｏｃｏｌ  Ｖｅｒｓｉｏｎ  １．０標準規格によって定義されたＣｌｉｅｎｔ  ＨｅｌｌｏメッセージまたはＳｅｒｖｅｒ  Ｈｅｌｌｏメッセージとすることができ、セッション識別子２１０が、いずれかのＴＬＳ  Ｈｅｌｌｏメッセージの「ＳｅｓｓｉｏｎＩＤ」フィールドに対応することができる。セキュリティタイプ情報を含むフィールド３０４の例が、セッションメッセージ３０２を定式化しているセッション参加者（たとえば、クライアントまたはホスト）によってどの暗号オプションがサポートされるかを示す暗号フィールドである。
【００６４】
セッション識別子２１０に、ホスト識別子２１４および任意選択として一緒にセッション識別子を形成する他の値が含まれる。このセッション識別子は、セッションメッセージ３０２のセッション識別子２１０フィールドに投入される。ホスト識別子２１４は、セッション識別子２１０フィールドで分割され、散乱され、かつ／または散布されることを含めて、セッション識別子２１０用のフィールド内のどこにでも置くことができる。
【００６５】
説明される実装では、抽出を簡単にするために、セッション識別子２１０の、ホスト識別子２１４に対応するサブフィールドが、バイトの連続するシーケンスとして実現される。このバイトの連続するシーケンスは、セッション識別子２１０の最上位バイトから固定オフセットの場所に現れる。しかし、固定オフセットを、その代わりに最下位バイトからとすることができる。
【００６６】
追加の柔軟性のために、ホスト識別子２１４を、たとえばＳＳＬ／ＴＬＳコンポーネントによって選択されるのではなく、外部から構成可能にすることができる。たとえば、ホスト識別子２１４を、レジストリキーからの値として読み取ることによって、外部から構成することができる。上で注記したように、管理者は、レジストリキー値を設定することによってまたはある他の機構を介するなど、ホスト識別子２１４を決定することができる。
【００６７】
ホスト識別子２１４を、その代わりに、セッション識別子２１０のフィールドと異なるフィールドに埋め込むことができる。たとえば、クライアント１０２に送られ、そのクライアント１０２が既存セッションの再開を要求している時に無変更で返される特定のフィールドを使用することができる。この代替案は、メッセージフォーマットおよび基礎になるプロトコルが、所望のセッションコンテキスト１１２を有するホスト１０８がこの特定のフィールドの値を作成／選択していることを許可するか要求する場合に、特に適用可能である。この代替案について、ネットワークゲートウェイ要素１０６は、この特定のフィールドの内容の少なくとも一部を使用して、ルーティング動作２１６を実行する。
【００６８】
ホスト識別子２１４に、デバイス識別子３０６が含まれ、アプリケーション識別子３０８も含めることができる。デバイス識別子３０６は、ホスト識別子２１４がホストするホスト１０８の／のためのデバイスに対応する。図からわかるように、デバイス識別子３０６に、ホスト１０８のデバイスを識別するネットワークアドレス３１０またはキー３１２（Ａ）が含まれる。
【００６９】
ネットワークアドレス３１０は、ホスト１０８のデバイスのイントラネット１１０上のネットワークアドレスである。したがって、デバイス識別子３０６にネットワークアドレス３１０が含まれる場合に、ネットワークゲートウェイ要素１０６は、ホスト１０８に転送される１つまたは複数のパケットの宛先フィールドにデバイス識別子３０６を挿入することができる。
【００７０】
キー３１２（Ａ）は、ホスト１０８のデバイスのイントラネット１１０上のネットワークアドレスにマッピングされる値である。このマッピングは、テーブル内でネットワークアドレスをルックアップすること、計算を実行すること（たとえば、式に従う、アルゴリズムを実装するなど）などによって実現することができる。たとえば、キー３１２（Ａ）を、上で表１を参照して説明したものなどのデータ構造でホストアドレスＨにリンクすることができる。キー３１２（Ａ）がネットワークアドレス３１０にリンクされる例示的なテーブルを、さらに、下で図６Ａを参照して説明する。
【００７１】
ホスト識別子２１４にデバイス識別子３０６およびアプリケーション識別子３０８が含まれる場合に、ホスト識別子２１４に、アプリケーションエンドポイントが含まれる。アプリケーション識別子３０８は、デバイス識別子３０６によって識別されるホストデバイス上の特定のアプリケーションを識別する。したがって、デバイス識別子３０６およびアプリケーション識別子３０８を含むホスト識別子２１４は、単一のホスト１０８上にあり、かつ／または複数のホスト１０８にまたがって複製された複数のアプリケーションの中から特定のアプリケーションを識別することができる。
【００７２】
デバイス識別子３０６を含むがアプリケーション識別子３０８を含まないホスト識別子２１４に、アプリケーションエンドポイントを含めることもできる。たとえば、これは、デバイスが１つのアプリケーションだけを有する時、デバイスがマルチホームである時、デバイスのＮＩＣが２つのＩＰアドレスを有する時などに、特に可能性が高い。どの場合でも、ホスト識別子２１４は、特定のアプリケーションならびに特定のホスト１０８を識別するように働く。その結果、クライアントセッション継続メッセージ２０６のルーティングを、要求するクライアント１０２とのセッションアフィニティを有する所望のアプリケーションに向けて迅速に実行することができる。
【００７３】
ホスト識別子２１４に、その代わりにキー３１２（Ｂ）を含めることができる。キー３１２（Ｂ）は、（ｉ）ホスト１０８のデバイスのイントラネット１１０上のネットワークアドレスに、および（ｉｉ）その上の特定のアプリケーションにマッピングされる値である。そのようなマッピングは、別々のアプリケーション識別子３０８を使用せずに、キー３１２（Ｂ）をアプリケーションエンドポイントにマッピングすることを可能にする。このマッピングは、テーブル内のネットワークアドレス／アプリケーション識別子対をルックアップすること、計算を実行すること（たとえば、式に従う、アルゴリズムを実装するなど）などによって実現することができる。たとえば、キー３１２（Ｂ）を、あるデータ構造でネットワークアドレス３１０およびアプリケーション識別子３０８にリンクすることができる。キー３１２（Ｂ）がネットワークアドレス３１０およびアプリケーション識別子３０８にリンクされる例示的なテーブルを、さらに、下で図６Ｂを参照して説明する。
【００７４】
もう１つの代替実装では、コードを、セッションメッセージ３０２のセッション識別子２１０のフィールドに埋め込むことができる。このコードは、セッション識別子２１０フィールド全体の一部を占めることができる。このコードは、ホスト１０８からネットワークゲートウェイ要素１０６および／またはクライアント１０２に情報（たとえば、データ、コマンドなど）を通信するのに使用することができる。セッションメッセージ３０２のセッション識別子フィールドに、コード自体および／またはコードを使用して作成されたセッション識別子２１０を投入することができる。クライアント１０２および／またはネットワークゲートウェイ要素１０６は、このコードを抽出し、そのままで、コードのマッピング（たとえば、ルックアップ、計算など）の後になど、通信された情報を利用することができる。
【００７５】
図４は、ルーティングヒントを供給する例示的な方法を示す流れ図４００である。流れ図４００に、７つのブロック４０２〜４１４が含まれる。流れ図４００の動作を、他の環境でならびにさまざまなハードウェアアーキテクチャおよびソフトウェア方式と共に実行することができるが、図１〜３（および５）が、この方法のある態様および例を示すのに特に使用される。たとえば、ホスト１０８が、説明される動作を実行することができる。
【００７６】
ブロック４０２で、クライアントセッションメッセージを受け取る。たとえば、ホスト１０８が、クライアント１０２からクライアントセッションメッセージ２０２または２０６を受け取ることができる（たとえば、メッセージハンドラ２０８の着信メッセージハンドラ部分２０８ＩＣで）。ブロック４０４で、受け取られたクライアントセッションメッセージにセッション識別子が含まれるかどうかを判定する。たとえば、受け取られたクライアントセッションメッセージ２０２または２０６（たとえば、セッションメッセージ３０２などのフォーマットの）を検査して、それがセッション識別子フィールドにセッション識別子２１０を有するかどうかを判定することができる。
【００７７】
受け取られたクライアントセッションメッセージにセッション識別子２１０が含まれる場合に、その受け取られたクライアントセッションメッセージは、クライアントセッション継続メッセージ（ＳＣＭ）２０６であり、この方法は、ブロック４１２で継続される。その一方で、受け取られたクライアントセッションメッセージにセッション識別子２１０が含まれない場合には、受け取られたクライアントセッションメッセージは、クライアントセッション開始メッセージ（ＳＩＭ）２０２であり、この方法は、ブロック４０６で継続される。
【００７８】
ブロック４０６で、ホスト識別子を用いてセッション識別子を作成する。たとえば、ホスト１０８のホスト識別子２１４が、セッション識別子クリエータ２１２によって、セッション識別子２１０を作成するのに使用される。セッション識別子クリエータ２１２は、他の値と共に、ホスト識別子２１４をセッション識別子２１０に挿入することができる。
【００７９】
ブロック４０８で、作成されたセッション識別子を用いてホストセッション開始メッセージを定式化する。たとえば、発信メッセージハンドラ部分２０８ＯＧが、ホスト識別子２１４を含むセッション識別子２１０を投入されたホストセッション開始メッセージ２０４を定式化することができる（たとえば、セッションメッセージ３０２のフォーマットなどのフォーマットを使用して）。ブロック４１０で、ホストセッション開始メッセージを送る。たとえば、ホスト１０８が、ネットワーク１０４を介し、ネットワークゲートウェイ要素１０６を介してクライアント１０２にホストセッション開始メッセージ２０４を送ることができる。
【００８０】
その一方で、受け取られたクライアントセッションメッセージにセッション識別子が含まれると判定された（ブロック４０４で）場合に、ブロック４１２で、受け取られたセッション識別子を用いてホストセッション継続メッセージを定式化する。たとえば、発信メッセージハンドラ部分２０８ＯＧが、受け取られたセッション識別子２１０（前に埋め込まれたホスト識別子２１４を含む可能性がある）を投入されたホストセッション継続メッセージ（図２には具体的に図示せず）を定式化することができる（たとえば、セッションメッセージ３０２のフォーマットなどのフォーマットを使用して）。ブロック４１４で、ホストセッション継続メッセージを送る。たとえば、ホスト１０８が、ネットワーク１０４を介し、ネットワークゲートウェイ要素１０６を介してクライアント１０２にホストセッション継続メッセージを送ることができる。
【００８１】
図５に、セッションメッセージと共にルーティングヒントを供給し、使用するもう１つの例示的な手法を示す。この例示的な手法は、ネットワークゲートウェイ要素１０６でのルーティングヒントの使用に焦点を合わせたものである。図からわかるように、クライアント１０２（１）、１０２（２）、…、１０２（ｍ）が、ネットワーク１０４を介して、ＮＧＮのネットワークゲートウェイ要素１０６にアドレッシングされたメッセージをサブミットする。
【００８２】
ネットワークゲートウェイ要素１０６は、これらの要求をホスト１０８（１）、１０８（２）、…、１０８（ｎ）にルーティングする。各ホスト１０８（１）、１０８（２）、…、１０８（ｎ）は、それぞれのホスト識別子２１４（１）、２１４（２）、…、２１４（ｎ）に関連する。ホスト識別子２１４は、たとえば、特定の種類のセッションが潜在的に向けられる可能性があるエンドポイントのセットの中から１つのアプリケーションエンドポイントを一意に識別することができる。
【００８３】
説明される実装では、ネットワークゲートウェイ要素１０６が、ネットワーク負荷分散に関する。ネットワーク負荷分散（またはルーティング機能性を有する他のネットワークゲートウェイ）と共に、１つまたは複数のルーティングポリシ５０８を使用することができる。ルーティングポリシ５０８に、たとえば、ネットワークロードバランサに着信パケットおよび／または要求を指定された形でルーティングさせるために管理者がスクリプトを作成するかセットすることができるルーティングポリシを含めることができる。ルーティングポリシ５０８に、ホスト１０８のヘルスおよび負荷情報などのリアルタイムパラメータに頼る、より柔軟なおよび／または拡張的なルーティングポリシを含めることもできる。
【００８４】
ネットワークゲートウェイ要素１０６のネットワーク負荷分散実装は、統合されたネットワーク負荷分散機能性を用いて実現することができる。この実装を、クライアントセッション継続メッセージ２０６（Ａ）およびルーティング動作２１６（Ｃ）に関して説明する。ネットワークゲートウェイ要素１０６のネットワーク負荷分散実装は、分離されたネットワーク負荷分散機能性を用いて実現することもできる。この実装を、クライアントセッション継続メッセージ２０６（Ｂ）およびルーティング動作５１２に関して説明する。
【００８５】
分離された機能性を有するこの例示的なネットワーク負荷分散実装では、ネットワークゲートウェイ要素１０６に、フォワーダ５０２、クラシファイヤ５０４、およびホスト識別子（ＨＩ）対ネットワークアドレス（ＮＡ）リンキングテーブル５０６が含まれる。フォワーダ５０２は、それぞれネットワーク１０４およびイントラネット１１０を使用して、クライアント１０２とホスト１０８の間でパケットを転送する。クラシファイヤ５０４は、ネットワーク負荷分散機能性および／またはセッションアフィニティ保存機能性を実現するために、パケット、要求、接続などを分類して、ルーティング動作を実行する。
【００８６】
フォワーダ５０２およびクラシファイヤ５０４は、ネットワークゲートウェイ１０６の異なるデバイスまたはその単一のデバイスに常駐し、実行中であることができる。さらに、フォワーダ５０２およびクラシファイヤ５０４のそれぞれを、複数のデバイスに分散させることができる。さらに、１つのネットワークゲートウェイ１０６に複数のフォワーダ５０２コンポーネントおよび／またはクラシファイヤ５０４コンポーネントを置くことができる。図からわかるように、各クラシファイヤ５０４に、ホスト識別子対ネットワークアドレスリンキングテーブル５０６が含まれる。代替案では、ネットワークゲートウェイ１０６が、１つのホスト識別子対ネットワークアドレスリンキングテーブル５０６だけを有することができる。ホスト識別子対ネットワークアドレスリンキングテーブル５０６は、異なる機能コンポーネントに置き、かつ／またはこれらに関連付けることができる。
【００８７】
統合されたネットワーク負荷分散実装の動作では、クライアント１０２（１）が、ネットワーク１０４を介してアドレスＮＧＮのネットワークゲートウェイ要素１０６にクライアントセッション継続メッセージ２０６（Ａ）を送る。クライアント１０２（１）は、ホスト１０８（１）で前にセッションを確立しており、その、前に確立されたセッションに割り当てられたセッション識別子２１０（１）を保存している。このセッション識別子２１０（１）に、ホスト１０８（１）に関連するホスト識別子２１４（１）が含まれる。クライアントセッション継続メッセージ２０６（Ａ）に、セッション識別子２１０（１）が含まれる。
【００８８】
統合されたネットワーク負荷分散機能性を有する実装では、ネットワークゲートウェイ要素１０６が、クライアントセッション継続メッセージ２０６（Ａ）に関するルーティング動作２１６（Ｃ）を実行する。クライアントセッション継続メッセージ２０６（Ａ）は、ホスト識別子２１４（１）を含むセッション識別子２１０（１）を有するので、ネットワークゲートウェイ要素１０６は、セッション識別子２１０（１）のホスト識別子２１４（１）部分を使用して、クライアントセッション継続メッセージ２０６（Ａ）をルーティングする。一般に、ネットワークゲートウェイ要素１０６は、セッション識別子２１０（１）から抽出されたホスト識別子２１４（１）を使用して、クライアントセッション継続メッセージ２０６（Ａ）をホスト１０８（１）にルーティングする。
【００８９】
具体的に言うと、ネットワークゲートウェイ要素１０６は、ホスト１０８（１）にルーティングされるクライアントセッション継続メッセージ２０６（Ａ）のパケットの宛先アドレスフィールドにホスト識別子２１４（１）を挿入することができる。この手法は、ホスト識別子２１４（１）にホスト１０８（１）のネットワークアドレスＨ１が含まれる時に効果的である。
【００９０】
代替案では、ネットワークゲートウェイ要素１０６が、ネットワークアドレスＨ１へのホスト識別子２１４（１）のマッピングも実行することができる。たとえば、計算動作またはルックアップ動作を、そのようなマッピングのために実行することができる。計算動作について、ホスト識別子２１４（１）は、ある式、アルゴリズムなどを介してネットワークアドレスＨ１にマッピングされる。ルックアップ動作について、ホスト識別子２１４（１）は、ホスト識別子対ネットワークアドレスリンキングテーブル５０６など、ホスト識別子２１４（１）をネットワークアドレスＨ１にリンクするエントリを含むホスト識別子対ネットワークアドレステーブルにアクセスすることによって、ネットワークアドレスＨ１にマッピングされる。そのようなテーブルの例を、さらに、下で図６Ａを参照して説明する。
【００９１】
分離されたネットワーク負荷分散実装の動作では、クライアント１０２（２）が、ネットワーク１０４を介してアドレスＮＧＮのネットワークゲートウェイ要素１０６にクライアントセッション継続メッセージ２０６（Ｂ）を送る。クライアント１０２（２）は、前にホスト１０８（２）でセッションを確立しており、その、前に確立されたセッションに割り当てられたセッション識別子２１０（２）を保存している。このセッション識別子２１０（２）に、ホスト１０８（２）に関連するホスト識別子２１４（２）が含まれる。クライアントセッション継続メッセージ２０６（Ｂ）に、セッション識別子２１０（２）が含まれる。
【００９２】
分離されたネットワーク負荷分散実装機能性を有する実装では、フォワーダ５０２が、クライアントセッション継続メッセージ２０６（Ｂ）を受け取る。クライアントセッション継続メッセージ２０６（Ｂ）は、フォワーダ５０２に未知のセッションに関する（およびおそらくは新規接続にも関する）ので、フォワーダ５０２は、通信交換５１０でクライアントセッション継続メッセージ２０６（Ｂ）をクラシファイヤ５０４に転送する。クライアントセッション継続メッセージ２０６（Ｂ）は、ホスト識別子２１４（２）を含むセッション識別子２１０（２）を有し、したがって、クラシファイヤ５０４は、ルーティング動作５１２で、セッション識別子２１０（２）のホスト識別子２１４（２）部分を使用して、クライアントセッション継続メッセージ２０６（Ｂ）を分類する。また、通信交換５１０で、クラシファイヤ５０４は、クライアントセッション継続メッセージ２０６（Ｂ）をフォワーダ５０２に転送し、かつ／またはフォワーダ５０２でルーティングエントリを追加して、このセッションのメッセージ／パケットがホスト１０８（２）に転送されなければならないことを示す。
【００９３】
したがって、クラシファイヤ５０４およびフォワーダ５０２は、セッション識別子２１０（２）から抽出されたホスト識別子２１４（２）を使用して、クライアントセッション継続メッセージ２０６（Ｂ）をホスト１０８（２）に共同でルーティングする。ルーティング動作２１６（Ｃ）に関して上で説明したように、フォワーダ５０２およびクラシファイヤ５０４は、（ｉ）宛先アドレスフィールドにホスト識別子２１４（２）を挿入することができ、（ｉｉ）ネットワークアドレスＨ２へのホスト識別子２１４（２）のマッピング（たとえば、計算、ルックアップなど）などを実行することができる。
【００９４】
ホスト識別子対ネットワークアドレスリンキングテーブル５０６を、クラシファイヤ５０４の一部または他の形でこれに関連するものとして説明した。ホスト識別子対ネットワークアドレスリンキングテーブル５０６は、ネットワークゲートウェイ要素１０６に置かれるものとして図示されているが、その代わりに異なるデバイス（たとえば、プロキシデバイス）に常駐することができる。そのようなプロキシデバイスに置かれる時に、分離されたまたは統合された（たとえば、ネットワーク負荷分散関連の）機能性を有するネットワークゲートウェイ要素１０６は、そこからホスト識別子対ネットワークアドレスリンキングテーブル５０６にアクセスすることができる。
【００９５】
図６Ａおよび６Ｂは、ルーティングヒントと共に使用されるホスト識別子２１４とネットワークアドレス３１０のリンキングを示す例示的なテーブル５０６（Ａ）および５０６（Ｂ）である。ホスト識別子対ネットワークアドレスリンキングテーブル５０６（Ａ）は、全般的に、ホスト識別子２１４がデバイスにマッピングされる実装に対応する。ホスト識別子対ネットワークアドレスリンキングテーブル５０６（Ｂ）は、全般的に、ホスト識別子２１４がアプリケーションエンドポイントにマッピングされる実装に対応する。しかし、ホスト識別子対ネットワークアドレスリンキングテーブル５０６（Ａ）を、上で図３を参照して説明したように、アプリケーションエンドポイントにマッピングすることもできる。
【００９６】
図からわかるように、ホスト識別子対ネットワークアドレスリンキングテーブル５０６（Ａ）は、それぞれのホスト識別子２１４をそれぞれのネットワークアドレス３１０にリンクする。テーブル５０６（Ａ）に、複数のエントリ６０２（１Ａ）、６０２（２Ａ）、…、６０２（ｎＡ）が含まれる。各それぞれのエントリ６０２（１Ａ）、６０２（２Ａ）、…、６０２（ｎＡ）に、それぞれのホスト識別子２１４（１）、２１４（２）、…、２１４（ｎ）およびそれにリンクされたそれぞれのネットワークアドレス３１０（１）、３１０（２）、…、３１０（ｎ）が含まれる。
【００９７】
説明される実装では、テーブル５０６（Ａ）に、「ｎ」個のエントリが含まれ、このｎは、ホスト１０８の個数と等しく、各ホスト識別子２１４（１）、２１４（２）、…、２１４（ｎ）は、キー３１５（Ａ）（図３の）に対応する。そのような実装で、ネットワークアドレス３１０（１）、３１０（２）、…、３１０（ｎ）は、それぞれホストアドレスＨ１、Ｈ２、…、Ｈｎ（たとえば図５の）に対応する。動作時に、ネットワークゲートウェイ要素１０６が、ホスト識別子２１４（＃）を用いてテーブル５０６（Ａ）にアクセスして、それに関連するエントリ６０２（＃Ａ）を突き止める。そのエントリ６０２（＃Ａ）から、ホスト識別子２１４（＃）にリンクされたネットワークアドレス３１０（＃）が、クライアントセッション継続メッセージ２０６（Ａ）または２０６（Ｂ）をホスト１０８（＃）にルーティングするのに使用するために抽出される。
【００９８】
図からわかるように、ホスト識別子対ネットワークアドレスリンキングテーブル５０６（Ｂ）は、それぞれのホスト識別子２１４をそれぞれのネットワークアドレス３１０およびアプリケーション識別子３０８にリンクする。テーブル５０６（Ｂ）に、複数のエントリ６０２（１Ｂ）、６０２（２Ｂ）、６０２（３Ｂ）、…、６０２（ｗＢ）が含まれる。各それぞれのエントリ６０２（１Ｂ）、６０２（２Ｂ）、６０２（３Ｂ）、…、６０２（ｗＢ）に、（ｉ）それぞれのホスト識別子２１４（１＊）、２１４（２＊）、２１４（３＊）、…、２１４（ｗ）と、（ｉｉ）ホスト識別子２１４にリンクされたそれぞれのネットワークアドレス３１０（１）、３１０（２）、３１０（２）、…、３１０（ｎ）ならびにそれぞれのアプリケーション識別子３０８（１）、３０８（２）、３０８（３）、…、３０８（ｚ）が含まれる。
【００９９】
説明される実装では、テーブル５０６（Ｂ）に「ｗ」個のエントリが含まれ、ｗは、ホスト１０８上のアプリケーションエンドポイントの個数と等しく、各ホスト識別子２１４（１＊）、２１４（２＊）、２１４（３＊）、…、２１４（ｗ）は、キー３１５（Ｂ）（図３の）に対応する。説明のため、図５を参照すると、図示されたホスト識別子対ネットワークアドレスリンキングテーブル５０６（Ｂ）は、次の例示的な状況で利用することができる。ホスト１０８（１）がホスト識別子２１４（１＊）に関連し、アプリケーション識別子３０８（１）に対応する１つのアプリケーションを有し、アドレスＨ１がネットワークアドレス３１０（１）に対応する。ホスト１０８（２）は、ホスト識別子２１４（２＊）および２１４（３＊）に対応し、アプリケーション識別子３０８（２）および３０８（３）に対応する２つのアプリケーションを有し、アドレスＨ２は、ネットワークアドレス３１０（２）に対応する。
【０１００】
さらに、ホスト１０８（ｎ）は、ホスト識別子２１４（ｗ）に対応し、アプリケーション識別子３０８（ｚ）に対応する１つのアプリケーションを有し、アドレスＨｎは、ネットワークアドレス３１０（ｎ）に対応する。変数「ｚ」は、各アプリケーション識別子３０８が各アプリケーションインストレーションに一意である場合に、アプリケーションエンドポイントの個数ｗと等しくすることができる。その一方で、アプリケーション識別子３０８が、同一のアプリケーションのアプリケーションインストレーションの間で共有される場合には、ｚがｗより小さくなる可能性がある。
【０１０１】
図７は、ルーティングヒントを使用する例示的な方法を示す流れ図７００である。流れ図７００に、８つのブロック７０２〜７１６が含まれる。流れ図７００の動作を、他の環境でならびにさまざまなハードウェアアーキテクチャおよびソフトウェア方式を用いて実行することができるが、図１〜３および５〜６が、この方法のある態様および例を示すのに特に使用される。たとえば、１つまたは複数のネットワークゲートウェイ要素１０６が、説明される動作を実行することができる。
【０１０２】
ブロック７０２で、クライアントメッセージを受け取る。たとえば、ネットワークゲートウェイ要素１０６が、ネットワーク１０４を介してクライアント１０２からクライアントメッセージを受け取ることができる。ブロック７０４で、受け取られたクライアントメッセージの内容を検査する。たとえば、ネットワークゲートウェイ要素１０６が、セッション識別子２１０のフィールドなど、セッションメッセージ３０２の１つまたは複数のフィールドを検査することができる。
【０１０３】
ブロック７０６で、受け取られたクライアントメッセージがセッション関連であるかどうかを判定する。たとえば、受け取られたクライアントメッセージに、セッション識別子２１０のフィールドを有するセッションメッセージ３０２が含まれる場合に、その受け取られたクライアントメッセージは、セッション関連である。その一方で、受け取られたクライアントメッセージが、セッション識別子２１０のフィールドを有しない場合に、その受け取られたクライアントメッセージは、セッション関連ではなく、この方法は、ブロック７０８で継続される。
【０１０４】
ブロック７０８で、受け取られたクライアントメッセージを、デフォルトポリシを使用してルーティングする。たとえば、ネットワークゲートウェイ要素１０６は、デフォルトネットワーク負荷分散ポリシなどのルーティングポリシ５０８の一般的なルーティングポリシを使用して、受け取られたクライアントメッセージをルーティングすることができる。破線の矢印７１８Ａによって示されているように、ネットワークゲートウェイ要素１０６は、その後、次のクライアントメッセージの受け取りを待つことができる。
【０１０５】
その一方で、受け取られたクライアントメッセージがセッション関連であると判定される（ブロック７０６で）場合に、ブロック７１０で、セッション識別子フィールドを検査する。たとえば、ネットワークゲートウェイ要素１０６が、受け取られたクライアントセッションメッセージ３０２のセッション識別子フィールドを検査することができる。ブロック７１２で、クライアントがセッション識別子フィールドを使用してセッション識別子を指定したかどうかを判定する。たとえば、ネットワークゲートウェイ要素１０６は、セッション識別子２１０がセッションメッセージ３０２のセッション識別子フィールドに投入されたかどうかを判定することができる。
【０１０６】
セッション識別子が指定されなかったと判定される（ブロック７１２で）場合に、ブロック７０８で、受け取られたクライアントセッション開始メッセージ２０２をデフォルトポリシを使用してルーティングすることができる。その一方で、セッション識別子がクライアントによって指定されたと判定される（ブロック７１２で）場合に、ブロック７１４で、指定されたセッション識別子からホスト識別子を抽出する。たとえば、ネットワークゲートウェイ要素１０６が、受け取られたクライアントセッション継続メッセージ２０６で指定されたセッション識別子２１０からホスト識別子２１４を抽出することができる。
【０１０７】
ブロック７１６で、抽出されたホスト識別子を使用して、受け取られたクライアントメッセージをルーティングする。たとえば、受け取られたクライアントセッション継続メッセージ２０６を、ネットワークゲートウェイ要素１０６によって、ホスト識別子２１４に関連するホスト１０８にルーティングすることができる。このルーティングに、ホスト１０８に転送される１つまたは複数のパケットの宛先フィールドへのホスト識別子２１４の変更されない挿入または少なくとも１つのネットワークアドレス３１０へのホスト識別子２１４のマッピングを含めることができる。このマッピングは、ホスト識別子２１４を使用してテーブル５０６内でネットワークアドレス３１０をルックアップすること、ネットワークアドレス３１０をもたらすホスト識別子２１４に対する計算（たとえば、式に従う、アルゴリズムを実装するなど）を実行することなどによって実現することができる。
【０１０８】
特にネットワークゲートウェイ要素１０６がネットワークロードバランサである実装について、ネットワークゲートウェイ要素１０６は、複数のホスト１０８に関するヘルス情報および／または負荷情報へのアクセスを有することができる。このヘルス情報および／または負荷情報は、ヘルスおよび／または負荷の理由のゆえに抽出されたホスト識別子２１４に関連する宛先（たとえば、ホスト１０８および／またはそのアプリケーションエンドポイント）がセッション継続を処理するのに適さないかそれができないことを示すことができる。その場合に、ネットワークゲートウェイ要素１０６は、クライアント１０２がホスト識別子２１４を含むセッション識別子２１０を指定した時であっても、デフォルトルーティングポリシに関するブロック７０８の動作を実行することができる。
【０１０９】
ブロック７１６の動作の後に、破線の矢印７１８Ｂによって示されているように、ネットワークゲートウェイ要素１０６は、次のクライアントメッセージの受け取りを待つことができる。ネットワークゲートウェイ要素１０６は、抽出されたホスト識別子２１４のタイプに依存する複数の形で、抽出されたホスト識別子２１４を使用して、受け取られたクライアントセッション継続メッセージ２０６をルーティングすることができる。
【０１１０】
たとえば、ネットワークゲートウェイ要素１０６は、ホスト識別子２１４にデバイス識別子３０６およびアプリケーション識別子３０８が含まれる場合、またはキー３１２（Ｂ）がホスト１０８のデバイスおよびアプリケーションにマッピングされる場合に、受け取られたクライアントセッション継続メッセージ２０６を所期のアプリケーションに直接にルーティングすることができる。さらに、ネットワークゲートウェイ要素１０６は、ホスト識別子２１４のデバイス識別子３０６のネットワークアドレス３１０実装を使用して、受け取られたクライアントセッション継続メッセージ２０６をアフィニタイズ（ａｆｆｉｎｉｔｉｚｅ）されたホスト１０８にルーティングすることができるものとすることができ、ここで、ネットワークアドレス３１０は、１つまたは複数のルーティングされるパケットの宛先アドレスとして使用される。
【０１１１】
代替案では、ネットワークゲートウェイ要素１０６が、ホスト識別子２１４のデバイス識別子３０６のキー３１２（Ａ）実装を使用して、アフィニタイズされたホスト１０８のデバイスのネットワークアドレス３１０をルックアップすることができる。たとえば、キー３１２（＃）を使用して、キー３１２（Ａ）をホスト１０８のネットワークアドレス３１０にマッピングするテーブル５０６（Ａ）（たとえば、データ構造）にアクセスすることができる。キー３１２（＃）を有するエントリ６０２（＃Ａ）が、このデータ構造内で突き止められる。突き止められたエントリ６０２（＃Ａ）内のキー３１２（＃）にリンクされたネットワークアドレス３１０（＃）が、抽出され、アフィニタイズされたホスト１０８にクライアントセッション継続メッセージ２０６をルーティングするのに使用される。
【０１１２】
さらに、ネットワークゲートウェイ要素１０６は、ホスト識別子２１４のデバイス識別子３０６およびアプリケーション識別子３０８のアプリケーションエンドポイント固有のキー３１２（Ｂ）実装を使用して、アフィニタイズされたホスト１０８のデバイスのネットワークアドレス３１０およびそのアプリケーションのアプリケーション識別子３０８をルックアップすることができる。たとえば、キー３１２（＃）を使用して、キー３１２（Ｂ）をホスト１０８のアプリケーションエンドポイントにマッピングするテーブル５０６（Ｂ）（たとえば、データ構造）にアクセスすることができる。キー３１２（＃）を有するエントリ６０２（＃Ｂ）が、このデータ構造内で突き止められる。突き止められたエントリ６０２（＃Ｂ）内のキー３１２（＃）にリンクされたアプリケーションエンドポイント（たとえば、ネットワークアドレス３１０（＃）およびアプリケーション識別子３０８（＃））が、抽出され、アフィニタイズされたホスト１０８の／のための特定のデバイス上の特定のアプリケーションにクライアントセッション継続メッセージ２０６をルーティングするのに使用される。
【０１１３】
図１〜７の動作、態様、特徴、コンポーネントなどは、複数のブロックに分割された図に示されている。しかし、図１〜７のこれらの複数のブロックが説明され、かつ／または図示された順序、個数、配置、相互接続、レイアウトなどは、制限として解釈されることを意図されたものではなく、任意の個数のブロックを任意の形で組み合わせ、再配置し、増補し、省略するなどを行って、ルーティングヒントの１つまたは複数のシステム、方法、デバイス、プロシージャ、媒体、アプリケーションプログラミングインターフェース（ＡＰＩ）、装置、配置などを実装することができる。さらに、本明細書の説明に、特定の実装（および図８の例示的なオペレーティング環境）への言及が含まれるが、図示され、かつ／または説明された実装を、任意の適当なハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せで、任意の適当なネットワーク編成、トランスポート／通信プロトコル、クライアント−サーバアーキテクチャなどを使用して実装することができる。
【０１１４】
図８に、本明細書に記載のルーティングヒントの少なくとも１つのシステム、デバイス、装置、コンポーネント、配置、プロトコル、手法、方法、プロシージャ、媒体、ＡＰＩ、これらの組合せなどを実装する（全体をまたは部分的に）ことができる例示的なコンピューティング（または一般デバイス）オペレーティング環境８００を示す。オペレーティング環境８００は、下で説明するコンピュータおよびネットワークのアーキテクチャで、または独立の状況で利用することができる。
【０１１５】
例示的なオペレーティング環境８００は、環境の１例にすぎず、適用可能なデバイス（コンピュータ、ネットワークノード、エンターテイメントデバイス、モバイル機器、一般的な電子デバイスなど）アーキテクチャの使用または機能性の範囲に関する制限を提案することを意図されたものではない。オペレーティング環境８００（またはそのデバイス）を、図８に示されたコンポーネントのいずれかまたはその組合せに対する依存性または要件を有すると解釈してもならない。
【０１１６】
さらに、ルーティングヒントを、多数の他の汎用デバイスまたは特殊目的デバイス（コンピューティングシステムを含む）の環境またはコンフィギュレーションを用いて実装することができる。使用するのに適する可能性がある周知のデバイス、システム、環境、および／またはコンフィギュレーションの例に、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、携帯情報端末（ＰＤＡ）または携帯電話機、腕時計、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ビデオゲーム機、ゲーム機、ポータブルまたはハンドヘルドのゲーミングユニット、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、ネットワークノード、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境またはマルチプロセッシングコンピューティング環境、これらのある組合せなどが含まれるが、これらに制限はされない。
【０１１７】
ルーティングヒントの実装を、プロセッサ実行可能命令の全般的な文脈で説明することができる。一般に、プロセッサ実行可能命令には、特定のタスクを実行し、かつ／または可能にし、かつ／または特定の抽象データ型を実装する、ルーチン、プログラム、プロトコル、オブジェクト、インターフェース、コンポーネント、データ構造などが含まれる。本明細書で、ある実装で説明されたルーティングヒントは、通信リンクおよび／または通信ネットワークを介して接続されたリモートリンクされた処理デバイスによってタスクが実行される分散処理環境で実践することもできる。特に分散コンピューティング環境で、プロセッサ実行可能命令を、別々の記憶媒体に置き、異なるプロセッサによって実行し、かつ／または伝送媒体を介して伝搬することができる。
【０１１８】
例示的なオペレーティング環境８００に、コンピュータ８０２の形の汎用コンピューティングデバイスが含まれ、コンピュータ８０２に、計算／処理能力を有するすべての（たとえば電子）デバイスを含めることができる。コンピュータ８０２のコンポーネントに、１つまたは複数のプロセッサまたは処理ユニット８０４、システムメモリ８０６、およびプロセッサ８０４を含むさまざまなシステムコンポーネントをシステムメモリ８０６に結合するシステムバス８０８を含めることができるが、これに制限はされない。
【０１１９】
プロセッサ８０４は、それを形成する材料またはその中で使用される処理機構によって制限されない。たとえば、プロセッサ８０４は、半導体および／またはトランジスタ（たとえば、電子集積回路（ＩＣ））からなるものとすることができる。その文脈で、プロセッサ実行可能命令は、電子的に実行可能な命令とすることができる。代替案では、プロセッサ８０４の、したがってコンピュータ８０２の機構に、量子コンピューティング、光コンピューティング、機械コンピューティング（たとえば、ナノテクノロジを使用する）などを含めることができるが、これに制限はされない。
【０１２０】
システムバス８０８は、メモリバスまたはメモリコントローラ、ポイントツーポイント接続、スイッチングファブリック、周辺バス、ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ、およびさまざまなバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含む多数のタイプの有線または無線のバス構造のいずれかの１つまたは複数を表す。たとえば、そのようなアーキテクチャに、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカルバス、メザニンバスとも称するＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ（ＰＣＩ）バス、これらのある組合せなどを含めることができる。
【０１２１】
コンピュータ８０２に、通常はさまざまなプロセッサアクセス可能媒体が含まれる。そのような媒体は、コンピュータ８０２または別の（たとえば電子）デバイスによってアクセス可能なすべての使用可能な媒体とすることができ、揮発性および不揮発性の媒体、リムーバブルおよび固定式の媒体、ならびに記憶媒体および伝送媒体の両方を含む。
【０１２２】
システムメモリ８０６に、ランダムアクセスメモリ（ＲＡＭ）８１０などの揮発性メモリおよび／または読取専用メモリ（ＲＯＭ）８１２などの不揮発性メモリの形のプロセッサアクセス可能記憶媒体が含まれる。スタートアップ中などにコンピュータ８０２内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）８１４が、通常はＲＯＭ  ８１２に保管される。ＲＡＭ  ８１０に、通常は、処理ユニット８０４によって即座にアクセス可能および／または現在操作されつつあるデータおよび／またはプログラムモジュール／命令が含まれる。
【０１２３】
コンピュータ８０２に、他のリムーバブル／固定式および／または揮発性／不揮発性の記憶媒体を含めることもできる。たとえば、図８に、（通常は）固定式の不揮発性磁気媒体（別々には図示せず）から読み取り、これに書き込むハードディスクドライブまたはディスクドライブアレイ８１６、（通常は）リムーバブルの不揮発性磁気ディスク８２０（たとえば、「フロッピディスク」）から読み取り、これに書き込む磁気ディスクドライブ８１８、およびＣＤ、ＤＶＤ、または他の光学媒体などの（通常は）リムーバブルの不揮発性光学ディスク８２４から読み取り、かつ／またはこれに書き込む光学ディスクドライブ８２２が示されている。ハードディスクドライブ８１６、磁気ディスクドライブ８１８、および光学ディスクドライブ８２２は、それぞれ、１つまたは複数の記憶媒体インターフェース８２６によってシステムバス８０８に接続されている。その代わりに、ハードディスクドライブ８１６、磁気ディスクドライブ８１８、および光学ディスクドライブ８２２を、１つまたは複数の他の別々のまたは組み合わされたインターフェース（図示せず）によってシステムバス８０８に接続することができる。
【０１２４】
ディスクドライブおよびそれに関連するプロセッサアクセス可能媒体は、データ構造、プログラムモジュール、および他のデータなどのプロセッサ実行可能命令の不揮発性ストレージをコンピュータ８０２に提供する。例示的なコンピュータ８０２には、ハードディスク８１６、リムーバブル磁気ディスク８２０、およびリムーバブル光学ディスク８２４が示されているが、磁気カセットまたは他の磁気記憶デバイス、フラッシュメモリ、コンパクトディスク（ＣＤ）、ディジタル多用途ディスク（ＤＶＤ）、または他の光学ストレージ、ＲＡＭ、ＲＯＭ、電気的消去可能プログラマブル読取専用メモリ（ＥＥＰＲＯＭ）などの、他のタイプのプロセッサアクセス可能媒体に、デバイスによってアクセス可能な命令を保管できることを諒解されたい。そのような媒体に、いわゆる特殊目的ＩＣチップまたはハードワイヤドＩＣチップを含めることもできる。言い換えると、例示的なオペレーティング環境８００の記憶媒体を実現するのに、どのプロセッサアクセス可能媒体でも利用することができる。
【０１２５】
任意の個数のプログラムモジュール（または命令／コードの他のユニットもしくはセット）を、ハードディスク８１６、磁気ディスク８２０、光学ディスク８２４、ＲＯＭ  ８１２、および／またはＲＡＭ  ８１０に保管することができる。これらのプログラムモジュールに、一般的な例として、オペレーティングシステム８２８、１つまたは複数のアプリケーションプログラム８３０、他のプログラムモジュール８３２、およびプログラムデータ８３４を含めることができる。
【０１２６】
ユーザは、キーボード８３６およびポインティングデバイス８３８（たとえば、「マウス」）などの入力デバイスを介してコンピュータ８０２にコマンドおよび／または情報を入力することができる。他の入力デバイス８４０（具体的には図示せず）に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、シリアルポート、スキャナ、および／または類似物を含めることができる。これらおよび他の入力デバイスは、システムバス８０８に結合された入出力インターフェース８４２を介して処理ユニット８０４に接続される。しかし、入力デバイスおよび／または出力デバイスを、その代わりに、パラレルポート、ゲームポート、ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ（ＵＳＢ）ポート、赤外線ポート、ＩＥＥＥ  １３９４（「Ｆｉｒｅｗｉｒｅ」）インターフェース、ＩＥＥＥ  ８０２．１１無線インターフェース、Ｂｌｕｅｔｏｏｔｈ（登録商標）インターフェースなどの他のインターフェースおよびバス構造によって接続することができる。
【０１２７】
モニタ／ビュースクリーン８４４または他のタイプのディスプレイデバイスも、ビデオアダプタ８４６などのインターフェースを介してシステムバス８０８に接続することができる。ビデオアダプタ８４６（または別のコンポーネント）に、グラフィックス集中型計算を処理し、要求の厳しいディスプレイ要求を処理するグラフィックスカードを含めても含めなくてもよい。通常、グラフィックスカードに、グラフィックスの迅速な表示およびグラフィックス動作の実行を容易にするために、グラフィックス処理ユニット（ＧＰＵ）、ビデオＲＡＭ（ＶＲＡＭ）などが含まれる。モニタ８４４の他に、他の出力周辺デバイスに、入出力インターフェース８４２を介してコンピュータ８０２に接続することができる、スピーカ（図示せず）およびプリンタ８４８などのコンポーネントを含めることができる。
【０１２８】
コンピュータ８０２は、リモートコンピューティングデバイス８５０などの１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。たとえば、リモートコンピューティングデバイス８５０を、パーソナルコンピュータ、ポータブルコンピュータ（たとえば、ラップトップコンピュータ、タブレットコンピュータ、ＰＤＡ、モバイルステーションなど）、パームサイズまたはポケットサイズのコンピュータ、腕時計、ゲーム機、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、別のネットワークノード、または上にリストしたもう１つのデバイスタイプなどとすることができる。しかし、リモートコンピューティングデバイス８５０は、コンピュータ８０２に関して本明細書で説明した要素および特徴の多くまたはすべてを含めることができるポータブルコンピュータとして図示されている。
【０１２９】
コンピュータ８０２とリモートコンピュータ８５０の間の論理接続は、ローカルエリアネットワーク（ＬＡＮ）８５２および一般的な広域ネットワーク（ＷＡＮ）８５４として図示されている。そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、インターネット、固定電話網および携帯電話網、アドホック無線ネットワークおよびインフラストラクチャ無線ネットワーク、他の無線ネットワーク、ゲーミングネットワーク、これらのある組合せなどでありふれたものである。そのようなネットワークおよび通信接続が、伝送媒体の例である。
【０１３０】
ＬＡＮネットワーキング環境で実装される時に、コンピュータ８０２は、通常、ネットワークインターフェースまたはネットワークアダプタ８５６を介してＬＡＮ  ８５２に接続される。ＷＡＮネットワーキング環境で実装される時に、コンピュータ８０２に、通常、ＷＡＮ  ８５４を介する通信を確立する、モデム８５８または他の手段が含まれる。モデム８５８は、コンピュータ８０２に内蔵するか外付けとすることができるが、入出力インターフェース８４２または他の適当な機構を介してシステムバス８０８に接続することができる。図示のネットワーク接続が、例示的であることと、コンピュータ８０２と８５０の間の通信リンクを確立する他の手段を使用できることを諒解されたい。
【０１３１】
さらに、特にサーバ用に設計された他のハードウェアを使用することができる。たとえば、ＳＳＬアクセラレーションカードを使用して、ＳＳＬ計算をオフロードすることができる。さらに、特にネットワーク負荷分散オペレーティング環境で、ネットワークインターフェースまたはネットワークアダプタ８５６上（たとえば、ネットワークインターフェースカード上）のＴＰＣオフロードハードウェアおよび／またはパケットクラシファイヤをサーバデバイスにインストールし、使用することができる。
【０１３２】
オペレーティング環境８００と共に図示されたものなどのネットワーク化された環境で、コンピュータ８０２に関して図示されたプログラムモジュールもしくは他の命令またはその一部を、リモート媒体ストレージデバイスに全体的にまたは部分的に保管することができる。たとえば、リモートアプリケーションプログラム８６０が、リモートコンピュータ８５０のメモリコンポーネントに常駐するが、コンピュータ８０２を介して使用可能または他の形でアクセス可能とすることができる。また、例示のために、アプリケーションプログラム８３０と、オペレーティングシステム８２８などの他のプロセッサ実行可能命令が、本明細書では別個のブロックとして示されているが、そのようなプログラム、コンポーネント、おおび他の命令が、さまざまな時にコンピューティングデバイス８０２（および／またはリモートコンピューティングデバイス８５０）の異なるストレージコンポーネントに常駐し、コンピュータ８０２（および／またはリモートコンピューティングデバイス８５０）のプロセッサ８０４によって実行されることを諒解されたい。
【０１３３】
システム、媒体、デバイス、方法、プロシージャ、装置、技法、方式、手法、プロシージャ、配置、および他の実装を、構造的、論理的、アルゴリズム的、および機能的な特徴および／または図に固有の言葉で説明したが、請求項で定義される本発明が、説明された特定の特徴または図面に必ずしも制限されないことを理解されたい。そうではなく、特定の特徴および図面は、請求される発明を実装する例示的な形として開示されたものである。
【図１】
0004828619.tif 000003
【図２】
0004828619.tif 000004
【図３】
0004828619.tif 000005
【図４】
0004828619.tif 000006
【図５】
0004828619.tif 000007
【図６Ａ】
0004828619.tif 000008
【図６Ｂ】
0004828619.tif 000009
【図７】
0004828619.tif 000010
【図８】
0004828619.tif 000011