JP2007521684A - ルーティングヒント - Google Patents

ルーティングヒント Download PDF

Info

Publication number
JP2007521684A
JP2007521684A JP2005508267A JP2005508267A JP2007521684A JP 2007521684 A JP2007521684 A JP 2007521684A JP 2005508267 A JP2005508267 A JP 2005508267A JP 2005508267 A JP2005508267 A JP 2005508267A JP 2007521684 A JP2007521684 A JP 2007521684A
Authority
JP
Japan
Prior art keywords
session
identifier
host
processor
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005508267A
Other languages
English (en)
Inventor
エイ.バネス ジョン
エム.ジョイ ジョーゼフ
アール.モウアーズ デイヴィッド
パヤ セム
サン フォン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/639,516 external-priority patent/US7882251B2/en
Priority claimed from US10/639,727 external-priority patent/US8266294B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2007521684A publication Critical patent/JP2007521684A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1017Server selection for load balancing based on a round robin mechanism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1019Random or heuristic server selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1027Persistence of sessions during load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/10015Access to distributed or replicated servers, e.g. using brokers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

ホスト識別子(214)を使用してセッション識別子(210)を作成する動作と;作成されたセッション識別子を用いてホストセッション開始メッセージを定式化する動作とを実行するようにデバイスに指示するプロセッサ実行可能命令が含まれる。少なくとも1つのプロセッサと、1つまたは複数の媒体が含まれ、この媒体に、ホスト識別子に応答して作成されたセッション識別子を用いてホストセッションメッセージを定式化する動作と;セッション識別子を含む定式化されたホストセッションメッセージをデバイスから送る動作とを実行するようにデバイスに指示するプロセッサ実行可能命令が含まれる。セッションメッセージのセッション識別子フィールドからホスト識別子を確認する動作と;確認されたホスト識別子に応答してセッションメッセージをルーティングする動作とを実行するように装置に指示するプロセッサ実行可能命令が含まれる。

Description

この開示は、全般的にはルーティングヒントに関し、具体的には、制限ではなく例として、イントラネットルーティングを容易にするためにネットワークゲートウェイでそのようなルーティングヒントを使用するためにホストからルーティングヒントを供給することに関する。
通信は、インターネットの機能によって大きく影響を受けてきた。インターネットは、パケットを使用して2人の人または他のエンティティの間ですばやく比較的簡単に情報を通信できるようにする。インターネットに、情報を含むパケットをそれらの間で転送できるように一緒にリンクされた多数のネットワークノードが含まれる。ネットワークノードには、あるリンクから別のリンクへパケットを伝搬させるルータと、個々のクライアントコンピュータと、完全にパーソナルなネットワーク(たとえば、特定のエンティティ用)などがある。
インターネットでの第1エンティティと第2エンティティの間の通信は、それらの間で接続を構成することによって実現される。これらの接続に、時々、セッションが含まれる。セッションは、対応する1つまたは複数の接続を介して行われる通信交換のコンテキストを提供するために確立される。セッション確立に、通常、第1エンティティと第2エンティティの間の1方向または両方向の情報交換が含まれる。セッションの確立フェーズの複雑さおよび持続時間は、通常、セッションのタイプに基づいて変化する。
各セッション確立は、処理リソースを使用し、ある時間期間を消費し、この時間期間が、ユーザが経験する遅延に変換される。セッション確立フェーズの後に、第1エンティティおよび第2エンティティは、確立されたセッションコンテキストに従って通信する。この通信ならびに接続は、セッションを終了せずに終わる場合がある。いくつかの場合に、そのような既存セッションが、その後、以前のセッション確立フェーズ中に2つのエンティティの間で前に交換された情報がこれらのエンティティによって保持されている場合に、その情報を使用して継続される場合がある。
言い換えると、前に交換された情報が、既存セッションを継続するのに使用される。したがって、既存セッションの継続は、一般に、前にセッションを確立したのと同一の第1エンティティおよび第2エンティティが、そのセッションの継続を試みる状況に関する。その結果、第2エンティティが未知であり、かつ/または識別もしくは連絡が困難である場合に、第1エンティティが既存セッションの継続を試みる時に、問題が生じる可能性がある。
したがって、2つのエンティティの間のセッション継続を改善し、単純化し、かつ/または容易にする方式および/または技法の必要がある。
第1の例示的な媒体実装で、1つまたは複数のプロセッサアクセス可能媒体が、実行された時に、ホスト識別子を使用してセッション識別子を作成する動作と、前記作成されたセッション識別子を用いてホストセッション開始メッセージを定式化する動作とを実行するようにデバイスに指示するプロセッサ実行可能命令を含む。
第1の例示的なデバイス実装で、デバイスが、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサによって実行できるプロセッサ実行可能命令を含む1つまたは複数の媒体とを含み、前記プロセッサ実行可能命令は、ホスト識別子に応答して作成されるセッション識別子を用いてホストセッションメッセージを定式化する動作と、前記セッション識別子を含む前記定式化されたホストセッションメッセージを前記デバイスから送る動作とを実行するように前記デバイスに指示するように適合されている。
第2の例示的な媒体実装で、1つまたは複数のプロセッサアクセス可能媒体が、データ構造を含み、前記データ構造は、セッション識別子フィールドを含むメッセージであって、前記セッション識別子フィールドの少なくとも一部はホスト識別子を含む。
第2の例示的なデバイス実装で、デバイスが、ホスト識別子と、前記ホスト識別子を使用してセッション識別子を作成するように適合されたセッション識別子クリエータとを含む。
例示的なネットワークゲートウェイ実装で、ネットワークゲートウェイが、セッション識別子フィールドを有するセッション関連メッセージを受け入れることができ、前記ネットワークゲートウェイは、前記セッション識別子フィールドに投入される値からホスト識別子を抽出するように適合されており、前記ネットワークゲートウェイは、さらに、前記ホスト識別子を使用して前記セッション関連メッセージのルーティング動作を実行するように適合されている。
第3の例示的な媒体実装で、1つまたは複数のプロセッサアクセス可能媒体が、実行された時に、セッションメッセージのセッション識別子フィールドからホスト識別子を確認する動作と、前記確認されたホスト識別子に応答して前記セッションメッセージをルーティングする動作とを実行するように装置に指示するプロセッサ実行可能命令を含む。
例示的な装置実装で、装置が、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサによって実行できるプロセッサ実行可能命令を含む1つまたは複数の媒体とを含み、前記プロセッサ実行可能命令は、ホスト識別子を含むセッション識別子を有するセッションメッセージを受け取る動作と、前記ホスト識別子に応答して前記セッションメッセージをルーティングする動作とを実行するように前記装置に指示するように適合されている。
他の方法、システム、手法、装置、アプリケーションプログラミングインターフェース(API)、デバイス、媒体、プロシージャ、配置などの実装を、本明細書で説明する。
同一の符号が、複数の図面を通じて、類似するおよび/または対応する態様、特徴、およびコンポーネントを参照するのに使用される。
図1は、セッションを確立する第1接続114(1)およびそのセッションを継続する第2接続114(2)を示す例示的な通信環境100である。図からわかるように、例示的な通信環境100に、複数のクライアント102(1)、102(2)、…、102(m)および複数のホスト108(1)、108(2)、…、108(n)、ならびにネットワーク104およびネットワークゲートウェイ(NG)106が含まれる。ネットワークゲートウェイ106は、ネットワーク104とイントラネット110の間のゲートウェイとして働く。ホスト108は、イントラネット110に結合される。
説明される実装では、クライアント102(1)、102(2)、…、102(m)が、それぞれアドレス「C1」、「C2」、…、「Cm」に対応する。クライアント102のそれぞれは、コンピュータ、モバイルステーション、エンターテイメント機器、別のネットワークなど、ネットワーク通信が可能な任意のデバイスとすることができる。クライアント102は、クライアントデバイスを操作している人または他のエンティティに対応することもできる。言い換えると、クライアント102に、ユーザおよび/または機械である論理クライアントを含めることができる。
ネットワーク104は、インターネット、もう1つのイントラネット、有線または無線の電話網、無線ブロードバンドネットワークなど、1つまたは複数のネットワークから形成することができる。クライアント102およびネットワーク104のネットワークタイプ/トポロジのデバイスの追加の例を、下で図8を参照して説明する。個々のクライアント102は、ネットワーク104を介し、ネットワークゲートウェイ106を介して、1つまたは複数のホスト108と通信でき、その逆を行うことができる。
ホスト108(1)、108(2)、…、108(n)は、それぞれアドレス「H1」、「H2」、…、「Hn」に対応する。ホストアドレスH1、H2、…、Hnは、イントラネット110上に存在する。ホスト108は、通常、1つまたは複数のアプリケーション(図示せず)をホスティングする。これらのアプリケーションは、(i)クライアント102との相互作用および/または通信に関するサービスを提供し、(ii)クライアント102などによる使用のためのものである。例のみとして、そのようなアプリケーションに、ファイル配送プログラム、ウェブサイト管理/サーバプログラム、リモートアクセスプログラム、電子メールプログラム、データベースアクセスプログラムなどを含めることができる。
各ホスト108は、1つのサーバおよび/または1つのデバイス、複数のサーバおよび/または複数のデバイス、サーバの一部および/またはデバイスの一部、これらのある組合せなどの対応することができる。ホスト108の特定の例示的な実装を、さらに、下で図2、4、および5を参照して説明する。さらに、ホスト108の追加の例示的なデバイス実装を、下で図8を参照して説明する。
ネットワークゲートウェイ106は、1つまたは複数のアドレス「NGN」でネットワーク104を介して到達可能またはロケータブル(locatable)であり、ネットワークゲートウェイ106は、少なくとも1つのアドレス「NGI]を有するイントラネット110上のプレゼンスも有する。ネットワークゲートウェイ106のアドレスNGNに向けられたクライアント102(または他のノード)からの通信は、ネットワークゲートウェイ106で受け取られ、その後、ホスト108(1)、108(2)、…、108(n)のうちの1つのホスト108にルーティングされる。ネットワークゲートウェイ106は、1つまたは複数のネットワークゲートウェイ要素(図1には別々に図示せず)からなる。各ネットワークゲートウェイ要素106に、ルータ、プロキシ、ロードバランサ、ファイヤウォールデバイスのすべてまたは一部、これらのある組合せなどを含めることができる。ネットワークゲートウェイ要素106の例示的な固有でないデバイス実装を、下でも図8を参照して説明する。
一般に、接続114は、クライアント102とホスト108の間で、ネットワーク104上でネットワークゲートウェイ106を介して構成される。通常、クライアント102が接続114を開始するが、その代わりに、ホスト108がイニシエータになることができる。具体的には、この例で、クライアント102(1)が、ホスト108(2)との接続114(1)を開始する。しかし、クライアント102(1)は、ホスト108(2)のアドレスH2に関与しない。そうではなく、クライアント102(1)は、ネットワークゲートウェイ106のアドレスNGNにこの接続(たとえば、接続を要求するパケット)を向ける。
次に、ネットワークゲートウェイ106が、あるデフォルトポリシ(たとえば、ルール)に従って、接続114(1)に対してルーティング動作116(1)を実行する。その結果、ネットワークゲートウェイ106は、この例について、イントラネット110を介してホスト108(2)に接続114(1)をルーティングする。一般に、ネットワークゲートウェイ106は、接続114のパケットをクライアント102(1)からそのままネットワークアドレスH2のホスト108(2)に単純に送信することができない。というのは、このパケットが、ネットワークゲートウェイ106のアドレスNGNに宛先アドレスを指定されているからである。その代わりに、ネットワークゲートウェイ106は、通常、ネットワークアドレス変換(NAT)、half−NAT、トンネリング、これらのある組合せなどの例示的なオプションのうちの1つまたは複数を使用して、イントラネット110を介してパケットをルーティングする。
伝送制御プロトコル/インターネットプロトコル(TCP/IP)環境では、NATが、(i)ソース(すなわち、クライアント102(1))IPアドレスC1およびポート番号をネットワークゲートウェイ106のIPアドレスNGIおよびNATが生成したポート番号で上書きし、(ii)宛先IPアドレスNGNをホスト108(2)のIPアドレスH2で上書きすることによって実行される。half−NATは、宛先IPアドレスNGNをホスト108(2)のIPアドレスH2で上書きし、その結果、ソースIPアドレスC1およびポート番号が保存されるようにすることによって実行される。トンネリングは、各パケットをホスト108(2)のアドレスH2にアドレッシングされた新しいIPパケット内にカプセル化し、カプセル化されたパケットをネットワークゲートウェイ106からホスト108(2)に送信することによって実行され、ホスト108(2)で、このカプセル化されたパケットをカプセル化解除することができる。
接続114(1)中に、セッションが、クライアント102(1)とホスト108(2)の間で確立される。接続114(1)の確立されたセッションについて、セッションコンテキスト112が、ホスト108(2)で作られる。類似する、似た、および/または相互のセッションコンテキスト(図示せず)が、通常はクライアント102(1)でも作られる。セッションコンテキスト112は、クライアント102(1)とホスト108(2)の間の通信を容易にする。
したがって、接続114(1)は、その上で多数の異なるタイプのセッションのうちの1つまたは複数を確立されている場合とそうでない場合がある。セッションの例示的なタイプに、(i)Secure Sockets Layer(SSL)セッション、(ii)Transport Layer Security(TLS)セッション、(iii)セキュアインターネットプロトコル(IPsec)セッション、(iv)ハイパーテキスト転送プロトコル(HTTP)クッキーベースセッション、(v)point−to−pointトンネリングプロトコル(PPTP)セッション、(vi)IPSec/layer−2 tunneling protocol(L2TP)セッション、(vii)独自セッション、(viii)ターミナルサーバセッション、(ix)管理者定義のセッション、および(x)その他が含まれる。異なるセッションタイプのこれらの例は、セッションの複数の層がどのように確立され、使用されるかも示す。
セッションコンテキスト112の内容は、少なくとも部分的に、それがそのために作られたセッションのタイプに依存して変化する可能性がある。たとえば、特定のセッションコンテキスト112に、TCP 4タプル(たとえば、TCP接続を用いて確立されたセッション用)、セッション識別子、対応するセッションの永続状態を維持する1つまたは複数のデータベースエントリの位置、ホスト108(2)に供給されるクライアント102(1)の公開鍵、ネゴシエートされた秘密暗号鍵、他のセキュリティ関連パラメータなどのうちの1つまたは複数を含めることができる。TCP 4タプルに、ソースIPアドレス、ソースTCPポート、宛先IPアドレス、および宛先TCPポートが含まれる。たとえば、現在の標準規格の下のSSLセッションについて、セッション識別子を、32バイトまでの長さとすることができる。
上で説明したように、現在の例では、接続114(1)を構成した後に、セッションが、クライアント102(1)とホスト108(2)の間で確立される。クライアント102(1)は、より具体的には、ホスト108(2)に常駐し、かつ/またはホスト108(2)で実行される少なくとも1つのアプリケーションとのセッションを確立する。しかし、説明を明瞭にするために、そのようなアプリケーションは、一般に、ホスト108(2)に言及する時に含めることができる。
セッション確立フェーズは、セッションコンテキスト112を作るかもたらす。セッションコンテキスト112は、クライアント102(1)とホスト108(2)の間の通信交換のコンテキストを提供する。セッションコンテキスト112に、これらの通信交換に実際にクリティカルな、単に有益な、またはともかくも他の形で関連する情報を含めることができる。
クライアント102(1)を論理クライアントにすることができるならば、セッションコンテキスト112は、(1)特定のデバイスおよび/またはデバイスの特定のユーザと(ii)ホスト108(2)との間の通信交換に関するものとすることができる。その結果、ユーザクライアント102(1)に関連するセッションコンテキスト112は、ユーザクライアント102(1)が異なるデバイスからホスト108にアクセスする場合であっても、そのユーザクライアント102(1)に関連付けられ続けることができる。デバイスは、クライアント102(1)のローカルレベルで、ネットワーク104レベルで、などで異なるものとすることができる。そのような異なるデバイスシナリオの例に、プロキシシナリオ(たとえば、あるインターネットサービスプロバイダ(ISP)のプロキシシナリオ)、ターミナルサーバセッションシナリオなどが含まれる。
セッションコンテキスト112は、ホスト108(2)に保管され、かつ/またはホスト108(2)からアクセス可能である。接続114(1)が、完了するか他の形で停止した時に、セッションコンテキスト112は、もう一度使用されない可能性がある。逆に、セッションコンテキスト112は、クライアント102(1)が、同一のセッション、類似するセッション、または関連するセッションなどについてホスト108とのもう1つの接続を開始することを試みる場合に、もう一度有用になる可能性がある。このもう1つの接続が、セッションコンテキスト112を保管するのと同一のホスト108(2)にルーティングされない場合に、クライアント102(1)は、新しいセッションを確立しなければならず、これは、時間がかかり、データ/処理集中的であり、かつ/またはユーザ(特に、クライアント102(1)に対応するユーザ)をいらいらさせる可能性がある。あるセッションアフィニティ(session affinity)保存機構がネットワークゲートウェイ106にない場合に、通常、第2の接続がホスト108(2)にルーティングされる、ランダムな機会より高い可能性はない。
セッションアフィニティ保存機構またはセッションアフィニティ保存機能性は、接続と共に継続される既存セッションのセッションコンテキスト112に関連するホスト108に接続(パケットレベル要求および論理レベル要求を含む)をルーティングするように適合されている。たとえば、セッションアフィニティ保存機能性は、クライアント102(1)の接続114(2)を、セッションコンテキスト112が関連するホスト108(2)にルーティングすることを可能にすることを試みる。そのようなセッションアフィニティ保存機構は、1つまたは複数の例示的な戦略に従って実装することができる。一般にネットワークゲートウェイ106に適用可能ではあるが、これらの例示的な戦略を、負荷分散実装の展望から説明する。
第1の戦略は、「スティッキィ(sticky)」モードを用いる負荷分散に関し、このモードでは、所与の、たとえばIPアドレスから来る、すべてではないにしてもほとんどの要求が、単一のホスト108にルーティングされる。しかし、この戦略は、所与のIPアドレスが、単一のクライアント102を表すという仮定に頼るが、この仮定は、プロキシに関して明らかに真でない。プロキシは、ロードバランサには単一のIPアドレスに見えるが、実際には、多数の、潜在的に数千個のクライアント102の要求を表す。その結果、これらの要求のすべてを単一のホスト108にルーティングすることは、デバイスの間の非常に不均一な負荷分散につながる可能性がある。通常、プロキシから着信要求を受け取るデバイスは、結果として、はるかに多数のクライアント102を割り当てられる。さらに、変化するIPアドレスを有するクライアント102からの要求も、この第1の戦略を使用すると不正にルーティングされる。IPアドレスは、モバイル環境で、アドレスがIPアドレスプールから一時的に割り当てられる時に、などに変化する可能性がある。
第2の戦略に、セッション識別子を使用する負荷分散ヒューリスティックを使用することが含まれる。既存セッションを継続する要求は、特定の個々のセッション識別子を使用して、そのセッションを前に確立した(たとえば、ネゴシエートした)ホスト108にルーティングされる。動作時に、特定のセッションが特定のクライアント102と特定のホスト108の間で確立された後に、その特定のホスト108をその特定のセッションにリンクするマッピングが、保管され、そのセッションは、特定のセッション識別子によって識別される。その特定のクライアント102からの特定のセッション識別子を含む要求が受け取られた時に、その要求を、このマッピングを使用してその特定のホスト108にルーティングすることができる。したがって、この第2の戦略は、セッションアフィニティの保存を可能にする。
しかし、第2の戦略は、効率の展望から複数の相対的な欠点を伴う。第1に、ロードバランサは、セッション識別子とホスト108の間のこれらのマッピングのテーブルを維持する。このテーブルのサイズは、既存のセッションごとに別々のエントリがあるので、巨大になる可能性がある。たとえば、各ホスト108が、10000個のセッションをキャッシングし、500個のホスト108がある場合に、このテーブルは、最適の効率でこれらのセッションに関する要求をルーティングするために、500万個のエントリを使用する。第2に、新たに確立されるセッションごとに、ロードバランサは、セッション識別子が検出され、エントリをテーブルに追加できるようになるまで、セッション確立フェーズを監視する。第3に、セッションを再開する要求が受け取られるたびに、ロードバランサは、ルーティングを実行するためにこの(非常に大きい可能性が高い)テーブルに問い合わせる。
第4に、セッションが、寿命を有し、混雑に起因してホスト108のキャッシュから積極的にエージアウトすなわち追い出されるので、ロードバランサテーブルは、あるエージング機構も実装して、個々のホスト108がそれ自体のキャッシュに関して行っていることまたは行っていると期待されることをミラーリングする。ホスト108およびロードバランサのエージング機構が同期化されていない場合に、ロードバランサは、まだホスト108で有効なセッションに関する状態情報を早すぎる時に削除する可能性があり、あるいはその逆に、どのホスト108にももはや存在しないセッションの状態情報を保持する可能性がある。
セッションアフィニティ保存機能性に関する第3の戦略は、新たに確立されるセッションのセッション識別子の選択的な作成/判定を介して、個々のセッションごとにエントリを必要とするテーブルなしで、ネットワークゲートウェイ106でのセッションアフィニティ保存を達成することができる。セッション識別子を判定する時に、ホスト108は、その中にホスト識別子を埋め込む。
ネットワークゲートウェイ106は、セッション識別子からホスト識別子を抽出し、そのホスト識別子に応答して、セッション識別子が割り当てられたセッションのトラフィックをルーティングする。したがって、第3の戦略は、有界の個数のエントリ(たとえば、ホスト108の個数と等しい個数のエントリ)を有するテーブルを使用してセッション継続要求をルーティングし、かつ/またはそのようなセッションごとのエントリを有するテーブルを使用せずにセッション継続要求をルーティングする、相対的にステートレスな手法を使用することができる。この第3の戦略の諸態様を、本明細書でさらに説明する。
通信環境100の例で、セッション確立フェーズが接続114(1)の一部として完了した後に、セッションコンテキスト112が、ホスト108(2)で作られる。その後、接続114(1)が終了する。接続114(2)に関する要求がネットワークゲートウェイ106に到着した時に、それに対してルーティング動作116(2)が実行される。この接続114(2)は、それに割り当てられたセッション識別子によって、セッションコンテキスト112に対応する前に確立されたセッションの継続に関するものであることが示される。このセッション識別子には、第3の戦略に従ってホスト108(2)の識別子が含まれる。セッション継続要求のセッション識別子から抽出されたホスト108(2)のホスト識別子を使用することによって、接続114(2)が、ルーティング動作116(2)でホスト108(2)にルーティングされ、このホスト108(2)は、セッションコンテキスト112に関連する。
アイテム114(1)および114(2)は、単一の接続内で発生するセッション関連メッセージ(たとえば要求)ならびに複数の接続中に発生するセッション関連メッセージも表すことができる。さらに、クライアント102とホスト108の間のある通信を、本明細書でメッセージとして説明する。メッセージは、通常、1つまたは複数のパケットとして、クライアント102からホスト108へおよびその逆に伝搬される。クライアントメッセージは、クライアント102から送られ、ホストメッセージは、ホスト108から送られる。セッションメッセージとは、セッションに関するメッセージ(たとえば、セッションの確立、継続/再開、破壊などに関するメッセージ)である。例示的なセッションメッセージを、さらに、下で図3を参照して説明する。
セッション開始メッセージは、セッションの開始に関する、クライアント102および/またはホスト108によって送られるメッセージである。セッション継続メッセージは、既存セッションの継続に関する、クライアント102および/またはホスト108によって送られるメッセージである。セッション開始メッセージおよびセッション継続メッセージは、明らかに異なるフォーマット、類似するフォーマット、同一のフォーマットなどを有することができる。しかし、説明される実装では、セッション開始メッセージおよびセッション継続メッセージが、少なくとも類似するフォーマットを有し、このフォーマットでは、セッション識別子の存在が、あるクライアントセッションメッセージがクライアントセッション継続メッセージであることを示し、セッション識別子の不在が、あるクライアントセッションメッセージがクライアントセッション開始メッセージであることを示す。
本明細書での説明は、それに制限されないが、下で説明する実装は、時々、ネットワークゲートウェイ106の負荷分散実装を協調するかこれに焦点を合わせたものである。また、他のプロトコルおよびプロトコルの組合せが、適用可能であり、代わりに使用することができるが、下の説明では、主に、説明を明瞭にするためにTCP/IP接続およびSSL/TLSセッションを使用する。
制限ではなく例として、クライアントセッション開始メッセージまたはクライアントセッション継続メッセージを、ある仕様(たとえば、「the TLS Protocol Version 1.0 Spec (January 1999)」非特許文献1)に従う「Client Hello」メッセージとすることができる。Client Helloメッセージにセッション識別子が含まれる場合に、このメッセージを、クライアントセッション継続メッセージとすることができ、そうでない場合に、このメッセージを、クライアントセッション開始メッセージとすることができる。同様に、ホストセッション開始メッセージまたはホストセッション継続メッセージを、ある仕様(たとえば、非特許文献1参照)に従う「Server Hello」メッセージとすることができる。Server Helloメッセージに、そのServer Helloメッセージが応答しているClient Helloメッセージ内でクライアントによって供給されたセッション識別子が含まれる場合に、このメッセージを、ホストセッション継続メッセージとすることができる。Server Helloメッセージが、セッション識別子を含まないClient Helloメッセージに応答するものである場合に、このメッセージを、ホストセッション開始メッセージとすることができる。そのようなホストセッション開始メッセージのセッション識別子の作成および定式化を、下でさらに説明する。
図2に、セッションメッセージと共にルーティングヒントを供給し、使用する例示的な手法を示す。セッションメッセージ202、204、および206は、ネットワーク104を介し、ネットワークゲートウェイ要素106を介して、クライアント102からホスト108へ、またはその逆に送られる。ネットワークゲートウェイ要素106は、ネットワークゲートウェイ106(図1の)の要素を表す。セッションメッセージ202、204、および206のそれぞれが、ネットワークゲートウェイ要素106によってルーティングされるものとして図示されているが、各個々のセッションメッセージを、その代わりに、ネットワークゲートウェイ106の異なる個々の要素によってルーティングすることができる。
図からわかるように、ホスト108に、クライアント102に送られるメッセージおよびクライアント102から受け取られているメッセージを処理するメッセージハンドラ208が含まれる。メッセージハンドラ208に、着信メッセージハンドラ部分208ICおよび発信メッセージハンドラ部分208OGが含まれる。ホスト108は、ホスト識別子214に関連し、ホスト識別子214は、ホスト108に保管されるか、他の形でホスト108からアクセス可能である。ホスト識別子214の例を、下で図3を参照してさらに説明する。ホスト108に、ホスト識別子214を使用してセッション識別子(たとえば、セッション識別子210)を作成するセッション識別子クリエータ212も含まれる。
説明される実装では、クライアント102が、アドレス「C」を有し、ネットワークゲートウェイ要素106が、アドレスNGNおよびNGIを有し、アドレスCおよびNGNは、ネットワーク104上に位置する。ホスト108は、アドレス「H」を有し、これは、アドレスNGIと共にイントラネット110上に位置する。クライアント102からのセッションメッセージは、ネットワーク104を介してネットワークゲートウェイ要素106で受け取られる。次に、ネットワークゲートウェイ要素106は、これらのセッションメッセージを、イントラネット110を介して、ルーティング動作216を用いてホスト108にルーティングする。逆のパスでは、ホスト108からのセッションメッセージが、イントラネット110を介してネットワークゲートウェイ要素106に送られ/送信され、ネットワークゲートウェイ要素106が、このメッセージをルーティング動作216を用いてクライアント102にルーティングする。
具体的に言うと、クライアント102は、クライアントセッション開始メッセージ(SIM)202を、ネットワーク104を介してネットワークゲートウェイ要素106に送る。クライアントセッション開始メッセージ202には、新しいセッションに関する要求が含まれる限り、セッション識別子が含まれない。クライアントセッション開始メッセージ202は、既存セッションに関するものでないので、ネットワークゲートウェイ要素106は、ルーティング動作216(A)で一般的なポリシを使用して、クライアントセッション開始メッセージ202をホスト108にルーティングする。たとえば、ネットワークゲートウェイ要素106は、現在のおよび/または関連する負荷分散ポリシ(たとえば、着信新規セッション要求のラウンドロビン分配)に従って、クライアントセッション開始メッセージ202をルーティングすることができる。
ホスト108は、イントラネット110を介して着信メッセージハンドラ部分208ICでクライアントセッション開始メッセージ202を受け取る。セッション識別子がない場合に、着信メッセージハンドラ部分208ICは、クライアントセッション開始メッセージ202を新規セッションに関するものと認識する。セッション識別子クリエータ212が、アクティブ化されて、要求された新規セッションの新しいセッション識別子を作成する。セッション識別子クリエータ212は、ホスト識別子214を確認し/取り出す。
セッション識別子クリエータ212は、ホスト識別子214を使用して、セッション識別子210を作成する。たとえば、セッション識別子クリエータ212は、ホスト識別子214をセッション識別子210に挿入する。セッション識別子210に、ホスト識別子214以外の値を含めることもできる。セッション識別子210の追加の値は、1つまたは複数の技法のいずれかを使用して作成することができる。そのような技法に、ランダムに選択された値、増分するカウンタからの値、セキュリティ関連の値、ハッシュ化された値、これらのある組合せなどが含まれるが、これに制限はされない。
説明される実装では、セッション識別子210の第1部分(すなわち、ホスト識別子214)が、対応するセッションを現在所有しているホスト108の識別専用である。この第1部分は、所与のクラスタのホスト108にまたがって一意である(すなわち、ホスト108のどれもが、同一のクラスタ内の他のホスト108とホスト識別子214を共有しない)。この第1部分は、ホスト108が所有するIPアドレス、管理者によって割り当てられた整数などとすることができる。セッション識別子210の第2部分は、セッション識別子210の一意性(および予測不能性)を高めることができる。この第2部分について、新しいセッションごとに1回増分される(0へのロールオーバを有する)グローバルカウンタの使用の組合せならびに擬似乱数および/またはハッシュ化技法の使用の組合せなど、さまざまな技法を使用することができる。
セッション識別子クリエータ212は、セッション識別子210をメッセージハンドラ208に供給する。発信メッセージハンドラ部分208OGは、セッション識別子210を含むホストセッション開始メッセージ204を準備/定式化する。ホストセッション開始メッセージ204は、イントラネット110を介してネットワークゲートウェイ要素106に送られる。次に、ネットワークゲートウェイ要素106が、ルートバックルーティング動作216(B)を使用して、ネットワーク104を介してクライアント102にホストセッション開始メッセージ204を送る。そのように示されてはいないが、ホストセッション開始メッセージ204を、その代わりに、特にネットワークゲートウェイ要素106がセッションごとの状態情報を蓄積せずに後続クライアントメッセージをルーティングできる限り、ネットワークゲートウェイ要素106を含まないパスに沿ってルーティングすることができる。
クライアント102は、ホストセッション開始メッセージ204からセッション識別子210を抽出し、確立されたセッションを継続するための将来の可能な使用(および確立されたセッションに関する現在の使用)のためにセッション識別子210を保存する。ある点で、確立されたセッションの実際の使用が終了する(たとえば、接続が終了する)。ホスト108との確立された既存セッションを継続するために、クライアント102は、クライアントセッション継続メッセージ(SCM)206を定式化する。クライアント102は、保存されたセッション識別子210をクライアントセッション継続メッセージ206に含める。次に、クライアントセッション継続メッセージ206が、ネットワーク104を介してクライアント102からネットワークゲートウェイ要素106に送られる。
ネットワークゲートウェイ要素106は、クライアントセッション継続メッセージ206を受け取った時に、クライアント102が、含まれるセッション識別子210によって示される既存セッションの継続を試みていることを検出する。ルーティング動作216(C)で、ネットワークゲートウェイ要素106は、セッション識別子210を使用してクライアントセッション継続メッセージ206をルーティングする。具体的に言うと、ネットワークゲートウェイ要素106は、セッション識別子210の一部であり、これから抽出されたホスト識別子214を使用して、クライアントセッション継続メッセージ206をルーティングする。
ホスト識別子214は、それに関連するホスト108を識別する。したがって、ネットワークゲートウェイ要素106は、ホスト識別子214によって示されるホスト108の識別を使用して、ルーティング動作216(C)でクライアントセッション継続メッセージ206をルーティングする。したがって、クライアントセッション継続メッセージ206は、イントラネット110を介してネットワークゲートウェイ要素106からホスト108に送られる。ホスト108で、着信メッセージハンドラ部分208ICが、クライアントセッション継続メッセージ206を受け取り、保管されたセッションコンテキスト(たとえば、図1に示されたセッションコンテキスト112)を使用して、前に確立されたセッションの継続を開始することができる。
ホスト識別子214は、それに関連するホスト108を複数の形で識別することができる。たとえば、ホスト識別子214に、ホスト108の(イントラネット)ネットワークアドレスHを含めることができる。この場合に、ネットワークゲートウェイ要素106は、セッション関連テーブルまたはホスト識別子テーブルを使用せずに、クライアントセッション継続メッセージ206をホスト108にルーティングすることができる。言い換えると、クライアントセッション継続メッセージ206に関する、イントラネット110に置かれる1つまたは複数のパケットの宛先アドレスとして、ホスト識別子214または少なくともその一部を使用することによって、クライアントセッション継続メッセージ206をホスト108に転送することができる。
その代わりに、ホスト識別子214を、ホスト108のアドレスHにマッピングすることができる。このマッピングの形は、テーブル(または計算)を伴うが、このテーブルのエントリの個数「n」は、サーバクラスタ内、イントラネット110上、ウェブファーム内などのホスト108の個数と同一にすることができる。したがって、このテーブルは、有界の個数のエントリを有し、セッションごとの状態情報を含まない。上で使用した例を参照すると、各ホスト108が10000個のセッションをキャッシングし、500個のホスト108がある場合に、このテーブルは、これらのセッションの要求を効率的にルーティングするために、500個のエントリ(500万個ではなく)を使用することができる。
下の表1は、ホスト108のアドレスによってホスト識別子214をホスト108にリンクする、例示的なリンキングデータ構造である。
Figure 2007521684
動作中に、ネットワークゲートウェイ要素106は、クライアント102から受け取られた時に、クライアントセッション継続メッセージ206のセッション識別子210からホスト識別子214(#)を抽出する。次に、ネットワークゲートウェイ要素106は、ホスト識別子214(#)を使用することによって表1のリンキングデータ構造などのリンキングデータ構造にアクセスして、それにリンクされたホストアドレスH#を確認する。このホストアドレスH#は、イントラネット110上のホスト108(#)のアドレスに対応し、クライアントセッション継続メッセージ206をホスト108(#)にルーティングするための宛先アドレスとして使用される。例示的なホスト識別子対ネットワークアドレスリンキングテーブルを、さらに、下で図6Aおよび6Bを参照して説明する。
図3に、ルーティングヒントを含めることができる例示的なセッションメッセージ302を示す。セッションメッセージ302は、1つまたは複数のセッションに関連するメッセージである。図からわかるように、セッションメッセージ302に、複数のフィールドが含まれる。この複数のフィールドに、セッション識別子210と、他のフィールド304によって表される1つまたは複数の他のフィールドが含まれる。
セッション識別子210に、少なくとも1つのホスト識別子214が含まれる。ホスト識別子214に、デバイス識別子306および任意選択としてアプリケーション識別子308が含まれる。デバイス識別子306に、ネットワークアドレス310またはキー312(A)を含めることができる。代替案では、ホスト識別子214にキー312(B)を含めることができる。
説明される実装では、セッションメッセージ302の1つまたは複数のフォーマットが、SSL/TLSなど、ネットワークまたは通信の標準規格またはプロトコルによって定義される。セッション識別子210は、特に適用可能な標準規格またはプロトコルによって定義されるように、セッションメッセージ302内のどこにでも置くことができる。他のフィールド304に、ソースアドレスおよび/または宛先アドレス、一般的なヘッダ情報、セキュリティタイプ情報、他のセッション関連情報、データ、これらのある組合せなどを含めることができる。たとえば、セッションメッセージ302を、TLS Protocol Version 1.0標準規格によって定義されたClient HelloメッセージまたはServer Helloメッセージとすることができ、セッション識別子210が、いずれかのTLS Helloメッセージの「SessionID」フィールドに対応することができる。セキュリティタイプ情報を含むフィールド304の例が、セッションメッセージ302を定式化しているセッション参加者(たとえば、クライアントまたはホスト)によってどの暗号オプションがサポートされるかを示す暗号フィールドである。
セッション識別子210に、ホスト識別子214および任意選択として一緒にセッション識別子を形成する他の値が含まれる。このセッション識別子は、セッションメッセージ302のセッション識別子210フィールドに投入される。ホスト識別子214は、セッション識別子210フィールドで分割され、散乱され、かつ/または散布されることを含めて、セッション識別子210用のフィールド内のどこにでも置くことができる。
説明される実装では、抽出を簡単にするために、セッション識別子210の、ホスト識別子214に対応するサブフィールドが、バイトの連続するシーケンスとして実現される。このバイトの連続するシーケンスは、セッション識別子210の最上位バイトから固定オフセットの場所に現れる。しかし、固定オフセットを、その代わりに最下位バイトからとすることができる。
追加の柔軟性のために、ホスト識別子214を、たとえばSSL/TLSコンポーネントによって選択されるのではなく、外部から構成可能にすることができる。たとえば、ホスト識別子214を、レジストリキーからの値として読み取ることによって、外部から構成することができる。上で注記したように、管理者は、レジストリキー値を設定することによってまたはある他の機構を介するなど、ホスト識別子214を決定することができる。
ホスト識別子214を、その代わりに、セッション識別子210のフィールドと異なるフィールドに埋め込むことができる。たとえば、クライアント102に送られ、そのクライアント102が既存セッションの再開を要求している時に無変更で返される特定のフィールドを使用することができる。この代替案は、メッセージフォーマットおよび基礎になるプロトコルが、所望のセッションコンテキスト112を有するホスト108がこの特定のフィールドの値を作成/選択していることを許可するか要求する場合に、特に適用可能である。この代替案について、ネットワークゲートウェイ要素106は、この特定のフィールドの内容の少なくとも一部を使用して、ルーティング動作216を実行する。
ホスト識別子214に、デバイス識別子306が含まれ、アプリケーション識別子308も含めることができる。デバイス識別子306は、ホスト識別子214がホストするホスト108の/のためのデバイスに対応する。図からわかるように、デバイス識別子306に、ホスト108のデバイスを識別するネットワークアドレス310またはキー312(A)が含まれる。
ネットワークアドレス310は、ホスト108のデバイスのイントラネット110上のネットワークアドレスである。したがって、デバイス識別子306にネットワークアドレス310が含まれる場合に、ネットワークゲートウェイ要素106は、ホスト108に転送される1つまたは複数のパケットの宛先フィールドにデバイス識別子306を挿入することができる。
キー312(A)は、ホスト108のデバイスのイントラネット110上のネットワークアドレスにマッピングされる値である。このマッピングは、テーブル内でネットワークアドレスをルックアップすること、計算を実行すること(たとえば、式に従う、アルゴリズムを実装するなど)などによって実現することができる。たとえば、キー312(A)を、上で表1を参照して説明したものなどのデータ構造でホストアドレスHにリンクすることができる。キー312(A)がネットワークアドレス310にリンクされる例示的なテーブルを、さらに、下で図6Aを参照して説明する。
ホスト識別子214にデバイス識別子306およびアプリケーション識別子308が含まれる場合に、ホスト識別子214に、アプリケーションエンドポイントが含まれる。アプリケーション識別子308は、デバイス識別子306によって識別されるホストデバイス上の特定のアプリケーションを識別する。したがって、デバイス識別子306およびアプリケーション識別子308を含むホスト識別子214は、単一のホスト108上にあり、かつ/または複数のホスト108にまたがって複製された複数のアプリケーションの中から特定のアプリケーションを識別することができる。
デバイス識別子306を含むがアプリケーション識別子308を含まないホスト識別子214に、アプリケーションエンドポイントを含めることもできる。たとえば、これは、デバイスが1つのアプリケーションだけを有する時、デバイスがマルチホームである時、デバイスのNICが2つのIPアドレスを有する時などに、特に可能性が高い。どの場合でも、ホスト識別子214は、特定のアプリケーションならびに特定のホスト108を識別するように働く。その結果、クライアントセッション継続メッセージ206のルーティングを、要求するクライアント102とのセッションアフィニティを有する所望のアプリケーションに向けて迅速に実行することができる。
ホスト識別子214に、その代わりにキー312(B)を含めることができる。キー312(B)は、(i)ホスト108のデバイスのイントラネット110上のネットワークアドレスに、および(ii)その上の特定のアプリケーションにマッピングされる値である。そのようなマッピングは、別々のアプリケーション識別子308を使用せずに、キー312(B)をアプリケーションエンドポイントにマッピングすることを可能にする。このマッピングは、テーブル内のネットワークアドレス/アプリケーション識別子対をルックアップすること、計算を実行すること(たとえば、式に従う、アルゴリズムを実装するなど)などによって実現することができる。たとえば、キー312(B)を、あるデータ構造でネットワークアドレス310およびアプリケーション識別子308にリンクすることができる。キー312(B)がネットワークアドレス310およびアプリケーション識別子308にリンクされる例示的なテーブルを、さらに、下で図6Bを参照して説明する。
もう1つの代替実装では、コードを、セッションメッセージ302のセッション識別子210のフィールドに埋め込むことができる。このコードは、セッション識別子210フィールド全体の一部を占めることができる。このコードは、ホスト108からネットワークゲートウェイ要素106および/またはクライアント102に情報(たとえば、データ、コマンドなど)を通信するのに使用することができる。セッションメッセージ302のセッション識別子フィールドに、コード自体および/またはコードを使用して作成されたセッション識別子210を投入することができる。クライアント102および/またはネットワークゲートウェイ要素106は、このコードを抽出し、そのままで、コードのマッピング(たとえば、ルックアップ、計算など)の後になど、通信された情報を利用することができる。
図4は、ルーティングヒントを供給する例示的な方法を示す流れ図400である。流れ図400に、7つのブロック402〜414が含まれる。流れ図400の動作を、他の環境でならびにさまざまなハードウェアアーキテクチャおよびソフトウェア方式と共に実行することができるが、図1〜3(および5)が、この方法のある態様および例を示すのに特に使用される。たとえば、ホスト108が、説明される動作を実行することができる。
ブロック402で、クライアントセッションメッセージを受け取る。たとえば、ホスト108が、クライアント102からクライアントセッションメッセージ202または206を受け取ることができる(たとえば、メッセージハンドラ208の着信メッセージハンドラ部分208ICで)。ブロック404で、受け取られたクライアントセッションメッセージにセッション識別子が含まれるかどうかを判定する。たとえば、受け取られたクライアントセッションメッセージ202または206(たとえば、セッションメッセージ302などのフォーマットの)を検査して、それがセッション識別子フィールドにセッション識別子210を有するかどうかを判定することができる。
受け取られたクライアントセッションメッセージにセッション識別子210が含まれる場合に、その受け取られたクライアントセッションメッセージは、クライアントセッション継続メッセージ(SCM)206であり、この方法は、ブロック412で継続される。その一方で、受け取られたクライアントセッションメッセージにセッション識別子210が含まれない場合には、受け取られたクライアントセッションメッセージは、クライアントセッション開始メッセージ(SIM)202であり、この方法は、ブロック406で継続される。
ブロック406で、ホスト識別子を用いてセッション識別子を作成する。たとえば、ホスト108のホスト識別子214が、セッション識別子クリエータ212によって、セッション識別子210を作成するのに使用される。セッション識別子クリエータ212は、他の値と共に、ホスト識別子214をセッション識別子210に挿入することができる。
ブロック408で、作成されたセッション識別子を用いてホストセッション開始メッセージを定式化する。たとえば、発信メッセージハンドラ部分208OGが、ホスト識別子214を含むセッション識別子210を投入されたホストセッション開始メッセージ204を定式化することができる(たとえば、セッションメッセージ302のフォーマットなどのフォーマットを使用して)。ブロック410で、ホストセッション開始メッセージを送る。たとえば、ホスト108が、ネットワーク104を介し、ネットワークゲートウェイ要素106を介してクライアント102にホストセッション開始メッセージ204を送ることができる。
その一方で、受け取られたクライアントセッションメッセージにセッション識別子が含まれると判定された(ブロック404で)場合に、ブロック412で、受け取られたセッション識別子を用いてホストセッション継続メッセージを定式化する。たとえば、発信メッセージハンドラ部分208OGが、受け取られたセッション識別子210(前に埋め込まれたホスト識別子214を含む可能性がある)を投入されたホストセッション継続メッセージ(図2には具体的に図示せず)を定式化することができる(たとえば、セッションメッセージ302のフォーマットなどのフォーマットを使用して)。ブロック414で、ホストセッション継続メッセージを送る。たとえば、ホスト108が、ネットワーク104を介し、ネットワークゲートウェイ要素106を介してクライアント102にホストセッション継続メッセージを送ることができる。
図5に、セッションメッセージと共にルーティングヒントを供給し、使用するもう1つの例示的な手法を示す。この例示的な手法は、ネットワークゲートウェイ要素106でのルーティングヒントの使用に焦点を合わせたものである。図からわかるように、クライアント102(1)、102(2)、…、102(m)が、ネットワーク104を介して、NGNのネットワークゲートウェイ要素106にアドレッシングされたメッセージをサブミットする。
ネットワークゲートウェイ要素106は、これらの要求をホスト108(1)、108(2)、…、108(n)にルーティングする。各ホスト108(1)、108(2)、…、108(n)は、それぞれのホスト識別子214(1)、214(2)、…、214(n)に関連する。ホスト識別子214は、たとえば、特定の種類のセッションが潜在的に向けられる可能性があるエンドポイントのセットの中から1つのアプリケーションエンドポイントを一意に識別することができる。
説明される実装では、ネットワークゲートウェイ要素106が、ネットワーク負荷分散に関する。ネットワーク負荷分散(またはルーティング機能性を有する他のネットワークゲートウェイ)と共に、1つまたは複数のルーティングポリシ508を使用することができる。ルーティングポリシ508に、たとえば、ネットワークロードバランサに着信パケットおよび/または要求を指定された形でルーティングさせるために管理者がスクリプトを作成するかセットすることができるルーティングポリシを含めることができる。ルーティングポリシ508に、ホスト108のヘルスおよび負荷情報などのリアルタイムパラメータに頼る、より柔軟なおよび/または拡張的なルーティングポリシを含めることもできる。
ネットワークゲートウェイ要素106のネットワーク負荷分散実装は、統合されたネットワーク負荷分散機能性を用いて実現することができる。この実装を、クライアントセッション継続メッセージ206(A)およびルーティング動作216(C)に関して説明する。ネットワークゲートウェイ要素106のネットワーク負荷分散実装は、分離されたネットワーク負荷分散機能性を用いて実現することもできる。この実装を、クライアントセッション継続メッセージ206(B)およびルーティング動作512に関して説明する。
分離された機能性を有するこの例示的なネットワーク負荷分散実装では、ネットワークゲートウェイ要素106に、フォワーダ502、クラシファイヤ504、およびホスト識別子(HI)対ネットワークアドレス(NA)リンキングテーブル506が含まれる。フォワーダ502は、それぞれネットワーク104およびイントラネット110を使用して、クライアント102とホスト108の間でパケットを転送する。クラシファイヤ504は、ネットワーク負荷分散機能性および/またはセッションアフィニティ保存機能性を実現するために、パケット、要求、接続などを分類して、ルーティング動作を実行する。
フォワーダ502およびクラシファイヤ504は、ネットワークゲートウェイ106の異なるデバイスまたはその単一のデバイスに常駐し、実行中であることができる。さらに、フォワーダ502およびクラシファイヤ504のそれぞれを、複数のデバイスに分散させることができる。さらに、1つのネットワークゲートウェイ106に複数のフォワーダ502コンポーネントおよび/またはクラシファイヤ504コンポーネントを置くことができる。図からわかるように、各クラシファイヤ504に、ホスト識別子対ネットワークアドレスリンキングテーブル506が含まれる。代替案では、ネットワークゲートウェイ106が、1つのホスト識別子対ネットワークアドレスリンキングテーブル506だけを有することができる。ホスト識別子対ネットワークアドレスリンキングテーブル506は、異なる機能コンポーネントに置き、かつ/またはこれらに関連付けることができる。
統合されたネットワーク負荷分散実装の動作では、クライアント102(1)が、ネットワーク104を介してアドレスNGNのネットワークゲートウェイ要素106にクライアントセッション継続メッセージ206(A)を送る。クライアント102(1)は、ホスト108(1)で前にセッションを確立しており、その、前に確立されたセッションに割り当てられたセッション識別子210(1)を保存している。このセッション識別子210(1)に、ホスト108(1)に関連するホスト識別子214(1)が含まれる。クライアントセッション継続メッセージ206(A)に、セッション識別子210(1)が含まれる。
統合されたネットワーク負荷分散機能性を有する実装では、ネットワークゲートウェイ要素106が、クライアントセッション継続メッセージ206(A)に関するルーティング動作216(C)を実行する。クライアントセッション継続メッセージ206(A)は、ホスト識別子214(1)を含むセッション識別子210(1)を有するので、ネットワークゲートウェイ要素106は、セッション識別子210(1)のホスト識別子214(1)部分を使用して、クライアントセッション継続メッセージ206(A)をルーティングする。一般に、ネットワークゲートウェイ要素106は、セッション識別子210(1)から抽出されたホスト識別子214(1)を使用して、クライアントセッション継続メッセージ206(A)をホスト108(1)にルーティングする。
具体的に言うと、ネットワークゲートウェイ要素106は、ホスト108(1)にルーティングされるクライアントセッション継続メッセージ206(A)のパケットの宛先アドレスフィールドにホスト識別子214(1)を挿入することができる。この手法は、ホスト識別子214(1)にホスト108(1)のネットワークアドレスH1が含まれる時に効果的である。
代替案では、ネットワークゲートウェイ要素106が、ネットワークアドレスH1へのホスト識別子214(1)のマッピングも実行することができる。たとえば、計算動作またはルックアップ動作を、そのようなマッピングのために実行することができる。計算動作について、ホスト識別子214(1)は、ある式、アルゴリズムなどを介してネットワークアドレスH1にマッピングされる。ルックアップ動作について、ホスト識別子214(1)は、ホスト識別子対ネットワークアドレスリンキングテーブル506など、ホスト識別子214(1)をネットワークアドレスH1にリンクするエントリを含むホスト識別子対ネットワークアドレステーブルにアクセスすることによって、ネットワークアドレスH1にマッピングされる。そのようなテーブルの例を、さらに、下で図6Aを参照して説明する。
分離されたネットワーク負荷分散実装の動作では、クライアント102(2)が、ネットワーク104を介してアドレスNGNのネットワークゲートウェイ要素106にクライアントセッション継続メッセージ206(B)を送る。クライアント102(2)は、前にホスト108(2)でセッションを確立しており、その、前に確立されたセッションに割り当てられたセッション識別子210(2)を保存している。このセッション識別子210(2)に、ホスト108(2)に関連するホスト識別子214(2)が含まれる。クライアントセッション継続メッセージ206(B)に、セッション識別子210(2)が含まれる。
分離されたネットワーク負荷分散実装機能性を有する実装では、フォワーダ502が、クライアントセッション継続メッセージ206(B)を受け取る。クライアントセッション継続メッセージ206(B)は、フォワーダ502に未知のセッションに関する(およびおそらくは新規接続にも関する)ので、フォワーダ502は、通信交換510でクライアントセッション継続メッセージ206(B)をクラシファイヤ504に転送する。クライアントセッション継続メッセージ206(B)は、ホスト識別子214(2)を含むセッション識別子210(2)を有し、したがって、クラシファイヤ504は、ルーティング動作512で、セッション識別子210(2)のホスト識別子214(2)部分を使用して、クライアントセッション継続メッセージ206(B)を分類する。また、通信交換510で、クラシファイヤ504は、クライアントセッション継続メッセージ206(B)をフォワーダ502に転送し、かつ/またはフォワーダ502でルーティングエントリを追加して、このセッションのメッセージ/パケットがホスト108(2)に転送されなければならないことを示す。
したがって、クラシファイヤ504およびフォワーダ502は、セッション識別子210(2)から抽出されたホスト識別子214(2)を使用して、クライアントセッション継続メッセージ206(B)をホスト108(2)に共同でルーティングする。ルーティング動作216(C)に関して上で説明したように、フォワーダ502およびクラシファイヤ504は、(i)宛先アドレスフィールドにホスト識別子214(2)を挿入することができ、(ii)ネットワークアドレスH2へのホスト識別子214(2)のマッピング(たとえば、計算、ルックアップなど)などを実行することができる。
ホスト識別子対ネットワークアドレスリンキングテーブル506を、クラシファイヤ504の一部または他の形でこれに関連するものとして説明した。ホスト識別子対ネットワークアドレスリンキングテーブル506は、ネットワークゲートウェイ要素106に置かれるものとして図示されているが、その代わりに異なるデバイス(たとえば、プロキシデバイス)に常駐することができる。そのようなプロキシデバイスに置かれる時に、分離されたまたは統合された(たとえば、ネットワーク負荷分散関連の)機能性を有するネットワークゲートウェイ要素106は、そこからホスト識別子対ネットワークアドレスリンキングテーブル506にアクセスすることができる。
図6Aおよび6Bは、ルーティングヒントと共に使用されるホスト識別子214とネットワークアドレス310のリンキングを示す例示的なテーブル506(A)および506(B)である。ホスト識別子対ネットワークアドレスリンキングテーブル506(A)は、全般的に、ホスト識別子214がデバイスにマッピングされる実装に対応する。ホスト識別子対ネットワークアドレスリンキングテーブル506(B)は、全般的に、ホスト識別子214がアプリケーションエンドポイントにマッピングされる実装に対応する。しかし、ホスト識別子対ネットワークアドレスリンキングテーブル506(A)を、上で図3を参照して説明したように、アプリケーションエンドポイントにマッピングすることもできる。
図からわかるように、ホスト識別子対ネットワークアドレスリンキングテーブル506(A)は、それぞれのホスト識別子214をそれぞれのネットワークアドレス310にリンクする。テーブル506(A)に、複数のエントリ602(1A)、602(2A)、…、602(nA)が含まれる。各それぞれのエントリ602(1A)、602(2A)、…、602(nA)に、それぞれのホスト識別子214(1)、214(2)、…、214(n)およびそれにリンクされたそれぞれのネットワークアドレス310(1)、310(2)、…、310(n)が含まれる。
説明される実装では、テーブル506(A)に、「n」個のエントリが含まれ、このnは、ホスト108の個数と等しく、各ホスト識別子214(1)、214(2)、…、214(n)は、キー315(A)(図3の)に対応する。そのような実装で、ネットワークアドレス310(1)、310(2)、…、310(n)は、それぞれホストアドレスH1、H2、…、Hn(たとえば図5の)に対応する。動作時に、ネットワークゲートウェイ要素106が、ホスト識別子214(#)を用いてテーブル506(A)にアクセスして、それに関連するエントリ602(#A)を突き止める。そのエントリ602(#A)から、ホスト識別子214(#)にリンクされたネットワークアドレス310(#)が、クライアントセッション継続メッセージ206(A)または206(B)をホスト108(#)にルーティングするのに使用するために抽出される。
図からわかるように、ホスト識別子対ネットワークアドレスリンキングテーブル506(B)は、それぞれのホスト識別子214をそれぞれのネットワークアドレス310およびアプリケーション識別子308にリンクする。テーブル506(B)に、複数のエントリ602(1B)、602(2B)、602(3B)、…、602(wB)が含まれる。各それぞれのエントリ602(1B)、602(2B)、602(3B)、…、602(wB)に、(i)それぞれのホスト識別子214(1*)、214(2*)、214(3*)、…、214(w)と、(ii)ホスト識別子214にリンクされたそれぞれのネットワークアドレス310(1)、310(2)、310(2)、…、310(n)ならびにそれぞれのアプリケーション識別子308(1)、308(2)、308(3)、…、308(z)が含まれる。
説明される実装では、テーブル506(B)に「w」個のエントリが含まれ、wは、ホスト108上のアプリケーションエンドポイントの個数と等しく、各ホスト識別子214(1*)、214(2*)、214(3*)、…、214(w)は、キー315(B)(図3の)に対応する。説明のため、図5を参照すると、図示されたホスト識別子対ネットワークアドレスリンキングテーブル506(B)は、次の例示的な状況で利用することができる。ホスト108(1)がホスト識別子214(1*)に関連し、アプリケーション識別子308(1)に対応する1つのアプリケーションを有し、アドレスH1がネットワークアドレス310(1)に対応する。ホスト108(2)は、ホスト識別子214(2*)および214(3*)に対応し、アプリケーション識別子308(2)および308(3)に対応する2つのアプリケーションを有し、アドレスH2は、ネットワークアドレス310(2)に対応する。
さらに、ホスト108(n)は、ホスト識別子214(w)に対応し、アプリケーション識別子308(z)に対応する1つのアプリケーションを有し、アドレスHnは、ネットワークアドレス310(n)に対応する。変数「z」は、各アプリケーション識別子308が各アプリケーションインストレーションに一意である場合に、アプリケーションエンドポイントの個数wと等しくすることができる。その一方で、アプリケーション識別子308が、同一のアプリケーションのアプリケーションインストレーションの間で共有される場合には、zがwより小さくなる可能性がある。
図7は、ルーティングヒントを使用する例示的な方法を示す流れ図700である。流れ図700に、8つのブロック702〜716が含まれる。流れ図700の動作を、他の環境でならびにさまざまなハードウェアアーキテクチャおよびソフトウェア方式を用いて実行することができるが、図1〜3および5〜6が、この方法のある態様および例を示すのに特に使用される。たとえば、1つまたは複数のネットワークゲートウェイ要素106が、説明される動作を実行することができる。
ブロック702で、クライアントメッセージを受け取る。たとえば、ネットワークゲートウェイ要素106が、ネットワーク104を介してクライアント102からクライアントメッセージを受け取ることができる。ブロック704で、受け取られたクライアントメッセージの内容を検査する。たとえば、ネットワークゲートウェイ要素106が、セッション識別子210のフィールドなど、セッションメッセージ302の1つまたは複数のフィールドを検査することができる。
ブロック706で、受け取られたクライアントメッセージがセッション関連であるかどうかを判定する。たとえば、受け取られたクライアントメッセージに、セッション識別子210のフィールドを有するセッションメッセージ302が含まれる場合に、その受け取られたクライアントメッセージは、セッション関連である。その一方で、受け取られたクライアントメッセージが、セッション識別子210のフィールドを有しない場合に、その受け取られたクライアントメッセージは、セッション関連ではなく、この方法は、ブロック708で継続される。
ブロック708で、受け取られたクライアントメッセージを、デフォルトポリシを使用してルーティングする。たとえば、ネットワークゲートウェイ要素106は、デフォルトネットワーク負荷分散ポリシなどのルーティングポリシ508の一般的なルーティングポリシを使用して、受け取られたクライアントメッセージをルーティングすることができる。破線の矢印718Aによって示されているように、ネットワークゲートウェイ要素106は、その後、次のクライアントメッセージの受け取りを待つことができる。
その一方で、受け取られたクライアントメッセージがセッション関連であると判定される(ブロック706で)場合に、ブロック710で、セッション識別子フィールドを検査する。たとえば、ネットワークゲートウェイ要素106が、受け取られたクライアントセッションメッセージ302のセッション識別子フィールドを検査することができる。ブロック712で、クライアントがセッション識別子フィールドを使用してセッション識別子を指定したかどうかを判定する。たとえば、ネットワークゲートウェイ要素106は、セッション識別子210がセッションメッセージ302のセッション識別子フィールドに投入されたかどうかを判定することができる。
セッション識別子が指定されなかったと判定される(ブロック712で)場合に、ブロック708で、受け取られたクライアントセッション開始メッセージ202をデフォルトポリシを使用してルーティングすることができる。その一方で、セッション識別子がクライアントによって指定されたと判定される(ブロック712で)場合に、ブロック714で、指定されたセッション識別子からホスト識別子を抽出する。たとえば、ネットワークゲートウェイ要素106が、受け取られたクライアントセッション継続メッセージ206で指定されたセッション識別子210からホスト識別子214を抽出することができる。
ブロック716で、抽出されたホスト識別子を使用して、受け取られたクライアントメッセージをルーティングする。たとえば、受け取られたクライアントセッション継続メッセージ206を、ネットワークゲートウェイ要素106によって、ホスト識別子214に関連するホスト108にルーティングすることができる。このルーティングに、ホスト108に転送される1つまたは複数のパケットの宛先フィールドへのホスト識別子214の変更されない挿入または少なくとも1つのネットワークアドレス310へのホスト識別子214のマッピングを含めることができる。このマッピングは、ホスト識別子214を使用してテーブル506内でネットワークアドレス310をルックアップすること、ネットワークアドレス310をもたらすホスト識別子214に対する計算(たとえば、式に従う、アルゴリズムを実装するなど)を実行することなどによって実現することができる。
特にネットワークゲートウェイ要素106がネットワークロードバランサである実装について、ネットワークゲートウェイ要素106は、複数のホスト108に関するヘルス情報および/または負荷情報へのアクセスを有することができる。このヘルス情報および/または負荷情報は、ヘルスおよび/または負荷の理由のゆえに抽出されたホスト識別子214に関連する宛先(たとえば、ホスト108および/またはそのアプリケーションエンドポイント)がセッション継続を処理するのに適さないかそれができないことを示すことができる。その場合に、ネットワークゲートウェイ要素106は、クライアント102がホスト識別子214を含むセッション識別子210を指定した時であっても、デフォルトルーティングポリシに関するブロック708の動作を実行することができる。
ブロック716の動作の後に、破線の矢印718Bによって示されているように、ネットワークゲートウェイ要素106は、次のクライアントメッセージの受け取りを待つことができる。ネットワークゲートウェイ要素106は、抽出されたホスト識別子214のタイプに依存する複数の形で、抽出されたホスト識別子214を使用して、受け取られたクライアントセッション継続メッセージ206をルーティングすることができる。
たとえば、ネットワークゲートウェイ要素106は、ホスト識別子214にデバイス識別子306およびアプリケーション識別子308が含まれる場合、またはキー312(B)がホスト108のデバイスおよびアプリケーションにマッピングされる場合に、受け取られたクライアントセッション継続メッセージ206を所期のアプリケーションに直接にルーティングすることができる。さらに、ネットワークゲートウェイ要素106は、ホスト識別子214のデバイス識別子306のネットワークアドレス310実装を使用して、受け取られたクライアントセッション継続メッセージ206をアフィニタイズ(affinitize)されたホスト108にルーティングすることができるものとすることができ、ここで、ネットワークアドレス310は、1つまたは複数のルーティングされるパケットの宛先アドレスとして使用される。
代替案では、ネットワークゲートウェイ要素106が、ホスト識別子214のデバイス識別子306のキー312(A)実装を使用して、アフィニタイズされたホスト108のデバイスのネットワークアドレス310をルックアップすることができる。たとえば、キー312(#)を使用して、キー312(A)をホスト108のネットワークアドレス310にマッピングするテーブル506(A)(たとえば、データ構造)にアクセスすることができる。キー312(#)を有するエントリ602(#A)が、このデータ構造内で突き止められる。突き止められたエントリ602(#A)内のキー312(#)にリンクされたネットワークアドレス310(#)が、抽出され、アフィニタイズされたホスト108にクライアントセッション継続メッセージ206をルーティングするのに使用される。
さらに、ネットワークゲートウェイ要素106は、ホスト識別子214のデバイス識別子306およびアプリケーション識別子308のアプリケーションエンドポイント固有のキー312(B)実装を使用して、アフィニタイズされたホスト108のデバイスのネットワークアドレス310およびそのアプリケーションのアプリケーション識別子308をルックアップすることができる。たとえば、キー312(#)を使用して、キー312(B)をホスト108のアプリケーションエンドポイントにマッピングするテーブル506(B)(たとえば、データ構造)にアクセスすることができる。キー312(#)を有するエントリ602(#B)が、このデータ構造内で突き止められる。突き止められたエントリ602(#B)内のキー312(#)にリンクされたアプリケーションエンドポイント(たとえば、ネットワークアドレス310(#)およびアプリケーション識別子308(#))が、抽出され、アフィニタイズされたホスト108の/のための特定のデバイス上の特定のアプリケーションにクライアントセッション継続メッセージ206をルーティングするのに使用される。
図1〜7の動作、態様、特徴、コンポーネントなどは、複数のブロックに分割された図に示されている。しかし、図1〜7のこれらの複数のブロックが説明され、かつ/または図示された順序、個数、配置、相互接続、レイアウトなどは、制限として解釈されることを意図されたものではなく、任意の個数のブロックを任意の形で組み合わせ、再配置し、増補し、省略するなどを行って、ルーティングヒントの1つまたは複数のシステム、方法、デバイス、プロシージャ、媒体、アプリケーションプログラミングインターフェース(API)、装置、配置などを実装することができる。さらに、本明細書の説明に、特定の実装(および図8の例示的なオペレーティング環境)への言及が含まれるが、図示され、かつ/または説明された実装を、任意の適当なハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せで、任意の適当なネットワーク編成、トランスポート/通信プロトコル、クライアント−サーバアーキテクチャなどを使用して実装することができる。
図8に、本明細書に記載のルーティングヒントの少なくとも1つのシステム、デバイス、装置、コンポーネント、配置、プロトコル、手法、方法、プロシージャ、媒体、API、これらの組合せなどを実装する(全体をまたは部分的に)ことができる例示的なコンピューティング(または一般デバイス)オペレーティング環境800を示す。オペレーティング環境800は、下で説明するコンピュータおよびネットワークのアーキテクチャで、または独立の状況で利用することができる。
例示的なオペレーティング環境800は、環境の1例にすぎず、適用可能なデバイス(コンピュータ、ネットワークノード、エンターテイメントデバイス、モバイル機器、一般的な電子デバイスなど)アーキテクチャの使用または機能性の範囲に関する制限を提案することを意図されたものではない。オペレーティング環境800(またはそのデバイス)を、図8に示されたコンポーネントのいずれかまたはその組合せに対する依存性または要件を有すると解釈してもならない。
さらに、ルーティングヒントを、多数の他の汎用デバイスまたは特殊目的デバイス(コンピューティングシステムを含む)の環境またはコンフィギュレーションを用いて実装することができる。使用するのに適する可能性がある周知のデバイス、システム、環境、および/またはコンフィギュレーションの例に、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、携帯情報端末(PDA)または携帯電話機、腕時計、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ビデオゲーム機、ゲーム機、ポータブルまたはハンドヘルドのゲーミングユニット、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、ネットワークノード、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境またはマルチプロセッシングコンピューティング環境、これらのある組合せなどが含まれるが、これらに制限はされない。
ルーティングヒントの実装を、プロセッサ実行可能命令の全般的な文脈で説明することができる。一般に、プロセッサ実行可能命令には、特定のタスクを実行し、かつ/または可能にし、かつ/または特定の抽象データ型を実装する、ルーチン、プログラム、プロトコル、オブジェクト、インターフェース、コンポーネント、データ構造などが含まれる。本明細書で、ある実装で説明されたルーティングヒントは、通信リンクおよび/または通信ネットワークを介して接続されたリモートリンクされた処理デバイスによってタスクが実行される分散処理環境で実践することもできる。特に分散コンピューティング環境で、プロセッサ実行可能命令を、別々の記憶媒体に置き、異なるプロセッサによって実行し、かつ/または伝送媒体を介して伝搬することができる。
例示的なオペレーティング環境800に、コンピュータ802の形の汎用コンピューティングデバイスが含まれ、コンピュータ802に、計算/処理能力を有するすべての(たとえば電子)デバイスを含めることができる。コンピュータ802のコンポーネントに、1つまたは複数のプロセッサまたは処理ユニット804、システムメモリ806、およびプロセッサ804を含むさまざまなシステムコンポーネントをシステムメモリ806に結合するシステムバス808を含めることができるが、これに制限はされない。
プロセッサ804は、それを形成する材料またはその中で使用される処理機構によって制限されない。たとえば、プロセッサ804は、半導体および/またはトランジスタ(たとえば、電子集積回路(IC))からなるものとすることができる。その文脈で、プロセッサ実行可能命令は、電子的に実行可能な命令とすることができる。代替案では、プロセッサ804の、したがってコンピュータ802の機構に、量子コンピューティング、光コンピューティング、機械コンピューティング(たとえば、ナノテクノロジを使用する)などを含めることができるが、これに制限はされない。
システムバス808は、メモリバスまたはメモリコントローラ、ポイントツーポイント接続、スイッチングファブリック、周辺バス、accelerated graphics port、およびさまざまなバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含む多数のタイプの有線または無線のバス構造のいずれかの1つまたは複数を表す。たとえば、そのようなアーキテクチャに、Industry Standard Architecture(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、メザニンバスとも称するPeripheral Component Interconnects(PCI)バス、これらのある組合せなどを含めることができる。
コンピュータ802に、通常はさまざまなプロセッサアクセス可能媒体が含まれる。そのような媒体は、コンピュータ802または別の(たとえば電子)デバイスによってアクセス可能なすべての使用可能な媒体とすることができ、揮発性および不揮発性の媒体、リムーバブルおよび固定式の媒体、ならびに記憶媒体および伝送媒体の両方を含む。
システムメモリ806に、ランダムアクセスメモリ(RAM)810などの揮発性メモリおよび/または読取専用メモリ(ROM)812などの不揮発性メモリの形のプロセッサアクセス可能記憶媒体が含まれる。スタートアップ中などにコンピュータ802内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BIOS)814が、通常はROM 812に保管される。RAM 810に、通常は、処理ユニット804によって即座にアクセス可能および/または現在操作されつつあるデータおよび/またはプログラムモジュール/命令が含まれる。
コンピュータ802に、他のリムーバブル/固定式および/または揮発性/不揮発性の記憶媒体を含めることもできる。たとえば、図8に、(通常は)固定式の不揮発性磁気媒体(別々には図示せず)から読み取り、これに書き込むハードディスクドライブまたはディスクドライブアレイ816、(通常は)リムーバブルの不揮発性磁気ディスク820(たとえば、「フロッピディスク」)から読み取り、これに書き込む磁気ディスクドライブ818、およびCD、DVD、または他の光学媒体などの(通常は)リムーバブルの不揮発性光学ディスク824から読み取り、かつ/またはこれに書き込む光学ディスクドライブ822が示されている。ハードディスクドライブ816、磁気ディスクドライブ818、および光学ディスクドライブ822は、それぞれ、1つまたは複数の記憶媒体インターフェース826によってシステムバス808に接続されている。その代わりに、ハードディスクドライブ816、磁気ディスクドライブ818、および光学ディスクドライブ822を、1つまたは複数の他の別々のまたは組み合わされたインターフェース(図示せず)によってシステムバス808に接続することができる。
ディスクドライブおよびそれに関連するプロセッサアクセス可能媒体は、データ構造、プログラムモジュール、および他のデータなどのプロセッサ実行可能命令の不揮発性ストレージをコンピュータ802に提供する。例示的なコンピュータ802には、ハードディスク816、リムーバブル磁気ディスク820、およびリムーバブル光学ディスク824が示されているが、磁気カセットまたは他の磁気記憶デバイス、フラッシュメモリ、コンパクトディスク(CD)、ディジタル多用途ディスク(DVD)、または他の光学ストレージ、RAM、ROM、電気的消去可能プログラマブル読取専用メモリ(EEPROM)などの、他のタイプのプロセッサアクセス可能媒体に、デバイスによってアクセス可能な命令を保管できることを諒解されたい。そのような媒体に、いわゆる特殊目的ICチップまたはハードワイヤドICチップを含めることもできる。言い換えると、例示的なオペレーティング環境800の記憶媒体を実現するのに、どのプロセッサアクセス可能媒体でも利用することができる。
任意の個数のプログラムモジュール(または命令/コードの他のユニットもしくはセット)を、ハードディスク816、磁気ディスク820、光学ディスク824、ROM 812、および/またはRAM 810に保管することができる。これらのプログラムモジュールに、一般的な例として、オペレーティングシステム828、1つまたは複数のアプリケーションプログラム830、他のプログラムモジュール832、およびプログラムデータ834を含めることができる。
ユーザは、キーボード836およびポインティングデバイス838(たとえば、「マウス」)などの入力デバイスを介してコンピュータ802にコマンドおよび/または情報を入力することができる。他の入力デバイス840(具体的には図示せず)に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、シリアルポート、スキャナ、および/または類似物を含めることができる。これらおよび他の入力デバイスは、システムバス808に結合された入出力インターフェース842を介して処理ユニット804に接続される。しかし、入力デバイスおよび/または出力デバイスを、その代わりに、パラレルポート、ゲームポート、universal serial bus(USB)ポート、赤外線ポート、IEEE 1394(「Firewire」)インターフェース、IEEE 802.11無線インターフェース、Bluetooth(登録商標)インターフェースなどの他のインターフェースおよびバス構造によって接続することができる。
モニタ/ビュースクリーン844または他のタイプのディスプレイデバイスも、ビデオアダプタ846などのインターフェースを介してシステムバス808に接続することができる。ビデオアダプタ846(または別のコンポーネント)に、グラフィックス集中型計算を処理し、要求の厳しいディスプレイ要求を処理するグラフィックスカードを含めても含めなくてもよい。通常、グラフィックスカードに、グラフィックスの迅速な表示およびグラフィックス動作の実行を容易にするために、グラフィックス処理ユニット(GPU)、ビデオRAM(VRAM)などが含まれる。モニタ844の他に、他の出力周辺デバイスに、入出力インターフェース842を介してコンピュータ802に接続することができる、スピーカ(図示せず)およびプリンタ848などのコンポーネントを含めることができる。
コンピュータ802は、リモートコンピューティングデバイス850などの1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。たとえば、リモートコンピューティングデバイス850を、パーソナルコンピュータ、ポータブルコンピュータ(たとえば、ラップトップコンピュータ、タブレットコンピュータ、PDA、モバイルステーションなど)、パームサイズまたはポケットサイズのコンピュータ、腕時計、ゲーム機、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、別のネットワークノード、または上にリストしたもう1つのデバイスタイプなどとすることができる。しかし、リモートコンピューティングデバイス850は、コンピュータ802に関して本明細書で説明した要素および特徴の多くまたはすべてを含めることができるポータブルコンピュータとして図示されている。
コンピュータ802とリモートコンピュータ850の間の論理接続は、ローカルエリアネットワーク(LAN)852および一般的な広域ネットワーク(WAN)854として図示されている。そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、インターネット、固定電話網および携帯電話網、アドホック無線ネットワークおよびインフラストラクチャ無線ネットワーク、他の無線ネットワーク、ゲーミングネットワーク、これらのある組合せなどでありふれたものである。そのようなネットワークおよび通信接続が、伝送媒体の例である。
LANネットワーキング環境で実装される時に、コンピュータ802は、通常、ネットワークインターフェースまたはネットワークアダプタ856を介してLAN 852に接続される。WANネットワーキング環境で実装される時に、コンピュータ802に、通常、WAN 854を介する通信を確立する、モデム858または他の手段が含まれる。モデム858は、コンピュータ802に内蔵するか外付けとすることができるが、入出力インターフェース842または他の適当な機構を介してシステムバス808に接続することができる。図示のネットワーク接続が、例示的であることと、コンピュータ802と850の間の通信リンクを確立する他の手段を使用できることを諒解されたい。
さらに、特にサーバ用に設計された他のハードウェアを使用することができる。たとえば、SSLアクセラレーションカードを使用して、SSL計算をオフロードすることができる。さらに、特にネットワーク負荷分散オペレーティング環境で、ネットワークインターフェースまたはネットワークアダプタ856上(たとえば、ネットワークインターフェースカード上)のTPCオフロードハードウェアおよび/またはパケットクラシファイヤをサーバデバイスにインストールし、使用することができる。
オペレーティング環境800と共に図示されたものなどのネットワーク化された環境で、コンピュータ802に関して図示されたプログラムモジュールもしくは他の命令またはその一部を、リモート媒体ストレージデバイスに全体的にまたは部分的に保管することができる。たとえば、リモートアプリケーションプログラム860が、リモートコンピュータ850のメモリコンポーネントに常駐するが、コンピュータ802を介して使用可能または他の形でアクセス可能とすることができる。また、例示のために、アプリケーションプログラム830と、オペレーティングシステム828などの他のプロセッサ実行可能命令が、本明細書では別個のブロックとして示されているが、そのようなプログラム、コンポーネント、おおび他の命令が、さまざまな時にコンピューティングデバイス802(および/またはリモートコンピューティングデバイス850)の異なるストレージコンポーネントに常駐し、コンピュータ802(および/またはリモートコンピューティングデバイス850)のプロセッサ804によって実行されることを諒解されたい。
システム、媒体、デバイス、方法、プロシージャ、装置、技法、方式、手法、プロシージャ、配置、および他の実装を、構造的、論理的、アルゴリズム的、および機能的な特徴および/または図に固有の言葉で説明したが、請求項で定義される本発明が、説明された特定の特徴または図面に必ずしも制限されないことを理解されたい。そうではなく、特定の特徴および図面は、請求される発明を実装する例示的な形として開示されたものである。
セッションを確立する第1接続およびそのセッションを継続する第2接続を示す例示的な通信環境を示す図である。 セッションメッセージと共にルーティングヒントを供給し、使用する例示的な手法を示す図である。 ルーティングヒントを含めることができる例示的なセッションメッセージを示す図である。 ルーティングヒントを供給する例示的な方法を示す流れ図である。 セッションメッセージと共にルーティングヒントを供給し、使用するもう1つの例示的な手法を示す図である。 ルーティングヒントと共に使用されるホスト識別子とネットワークアドレスのリンキングを示す例示的なテーブルを示す図である。 ルーティングヒントと共に使用されるホスト識別子とネットワークアドレスのリンキングを示す例示的なテーブルを示す図である。 ルーティングヒントを使用する例示的な方法を示す流れ図である。 本明細書に記載のルーティングヒントの少なくとも1つの態様を実装する(全体をまたは部分的に)ことができる例示的なコンピューティング(または一般デバイス)オペレーティング環境を示す図である。

Claims (89)

  1. 実行された時に、デバイスに、
    ホスト識別子を使用してセッション識別子を作成する動作と、
    前記作成されたセッション識別子を用いてホストセッション開始メッセージを定式化する動作と
    を実行するように指示するプロセッサ実行可能命令を含むことを特徴とするプロセッサアクセス可能媒体。
  2. 実行された時に、前記デバイスに、
    前記作成されたセッション識別子を含む前記定式化されたホストセッション開始メッセージを前記デバイスから送るさらなる動作
    を実行するように指示するプロセッサ実行可能命令を含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  3. 実行された時に、前記デバイスに、
    クライアントセッションメッセージを受け取るさらなる動作と、
    前記受け取られたクライアントセッションメッセージは受け取られたセッション識別子を含むかどうかを判定するさらなる動作と
    を実行するように指示するプロセッサ実行可能命令を含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  4. 実行された時に、前記デバイスに、
    前記受け取られたクライアントセッションメッセージは受け取られたセッション識別子を含まないと判定された場合に、作成する前記動作および定式化する前記動作を実行するさらなる動作
    を実行するように指示するプロセッサ実行可能命令を含むことを特徴とする請求項3に記載のプロセッサアクセス可能媒体。
  5. 実行された時に、前記デバイスに、
    前記受け取られたクライアントセッションメッセージは受け取られたセッション識別子を含むと判定された場合に、
    前記受け取られたセッション識別子を用いてホストセッション継続メッセージを定式化する動作と、
    前記受け取られたセッション識別子を含む前記定式化されたホストセッション継続メッセージを送る動作と
    を実行するさらなる動作
    を実行するように指示するプロセッサ実行可能命令を含むことを特徴とする請求項3に記載のプロセッサアクセス可能媒体。
  6. 定式化する前記動作は、
    前記定式化されたホストセッション開始メッセージを生成するためにホストセッションメッセージのセッション識別子フィールドに前記作成されたセッション識別子を挿入する動作
    を含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  7. 定式化する前記動作は、さらに、
    前記定式化されたホストセッション開始メッセージを生成するために前記ホストセッションメッセージの複数の他のフィールドを投入する動作
    を含むことを特徴とする請求項6に記載のプロセッサアクセス可能媒体。
  8. 作成する前記動作は、
    前記作成されたセッション識別子の少なくとも一部として前記ホスト識別子を含めることによって前記セッション識別子を作成する動作
    を含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  9. 作成する前記動作は、
    前記作成されたセッション識別子の一部として前記ホスト識別子を含めることによって前記セッション識別子を作成する動作であって、前記ホスト識別子は、デバイス識別子を含む、動作
    を含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  10. 前記デバイス識別子は、ネットワークアドレスおよび前記ネットワークアドレスにマッピングされるキーのうちの少なくとも1つを含むことを特徴とする請求項9に記載のプロセッサアクセス可能媒体。
  11. 作成する前記動作は、
    前記作成されたセッション識別子の一部として前記ホスト識別子を含めることによって前記セッション識別子を作成する動作であって、前記ホスト識別子は、デバイス識別子およびアプリケーション識別子を含む、動作
    を含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  12. 作成する前記動作は、
    前記作成されたセッション識別子の一部として前記ホスト識別子を含めることによって前記セッション識別子を作成する動作であって、前記ホスト識別子は、ネットワークアドレスにマッピングされるキーおよびアプリケーション識別子を含む、動作
    を含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  13. 作成する前記動作は、
    前記作成されたセッション識別子の最上位部分または最下位部分からの所定のオフセットに前記ホスト識別子を挿入することによって前記セッション識別子を作成する動作
    を含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  14. 作成する前記動作は、
    前記作成されたセッション識別子の上で前記ホスト識別子を散乱することおよび散布することのうちの少なくとも1つによって前記セッション識別子を作成する動作
    を含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  15. 前記プロセッサ実行可能命令の少なくとも一部は、サーバプログラムの少なくとも一部を含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  16. 前記プロセッサ実行可能命令の少なくとも一部は、オペレーティングシステムプログラムの少なくとも一部を含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  17. 前記プロセッサアクセス可能媒体は、(i)記憶媒体および(ii)伝送媒体のうちの少なくとも1つを含むことを特徴とする請求項1に記載のプロセッサアクセス可能媒体。
  18. デバイスであって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサによって実行できるプロセッサ実行可能命令を含む媒体と
    を含み、前記プロセッサ実行可能命令は、
    ホスト識別子に応答して作成されるセッション識別子を用いてホストセッションメッセージを定式化する動作と、
    前記セッション識別子を含む前記定式化されたホストセッションメッセージを前記デバイスから送る動作と
    を実行するように前記デバイスに指示するように適合されている
    ことを特徴とするデバイス。
  19. 前記ホストセッションメッセージは、ホストセッション開始メッセージを含むことを特徴とする請求項18に記載のデバイス。
  20. 前記ホストセッションメッセージは、ホストセッション継続メッセージを含むことを特徴とする請求項18に記載のデバイス。
  21. 前記ホスト識別子は、前記デバイスに関連することを特徴とする請求項18に記載のデバイス。
  22. 前記プロセッサ実行可能命令は、
    前記ホスト識別子に応答して前記セッション識別子を作成するさらなる動作
    を実行するように前記デバイスに指示するように適合されていることを特徴とする請求項18に記載のデバイス。
  23. 作成する前記動作は、
    ランダムに選択された値、増分するカウンタからの値、セキュリティ関連の値、およびハッシュ化された値を含む群から選択された少なくとも1つの値と前記ホスト識別子とを使用して前記セッション識別子を作成する動作
    を含むことを特徴とする請求項22に記載のデバイス。
  24. 送る前記動作は、
    前記セッション識別子を含む前記定式化されたホストセッションメッセージを前記デバイスからクライアントに向かって送る動作
    を含むことを特徴とする請求項18に記載のデバイス。
  25. 送る前記動作は、
    前記セッション識別子を含む前記定式化されたホストセッションメッセージを前記デバイスからクライアントに向かってネットワークゲートウェイを介し、前記デバイスは接続されたイントラネットを介して送る動作
    を含むことを特徴とする請求項18に記載のデバイス。
  26. 前記プロセッサ実行可能命令は、
    クライアントセッションメッセージを受け取るさらなる動作と、
    前記受け取られたクライアントセッションメッセージは受け取られたセッション識別子を含むかどうかを判定するさらなる動作と
    を実行するように前記デバイスに指示するように適合されていることを特徴とする請求項18に記載のデバイス。
  27. 前記プロセッサ実行可能命令は、
    前記受け取られたクライアントセッションメッセージは受け取られたセッション識別子を含まないと判定された場合に、定式化する前記動作および送る前記動作を実行するさらなる動作
    を実行するように前記デバイスに指示するように適合されていることを特徴とする請求項26に記載のデバイス。
  28. 前記プロセッサ実行可能命令は、
    前記受け取られたクライアントセッションメッセージは受け取られたセッション識別子を含むと判定された場合に、
    前記受け取られたセッション識別子を用いてホストセッション継続メッセージを定式化する動作と、
    前記受け取られたセッション識別子を含む前記定式化されたホストセッション継続メッセージを前記デバイスから送る動作と
    を実行するさらなる動作
    を実行するように前記デバイスに指示するように適合されていることを特徴とする請求項26に記載のデバイス。
  29. 定式化する前記動作は、
    前記定式化されたホストセッションメッセージを生成するために前記ホストセッションメッセージのセッション識別子フィールドに前記作成されたセッション識別子を挿入する動作
    を含むことを特徴とする請求項18に記載のデバイス。
  30. 前記デバイスは、ホストデバイスおよび/またはサーバデバイスを含むことを特徴とする請求項18に記載のデバイス。
  31. 前記媒体は、前記ホスト識別子を保管することを特徴とする請求項18に記載のデバイス。
  32. 前記定式化されたホストセッションメッセージは、(i)secure sockets layer(SSL)標準規格および(ii)transport layer security(TLS)標準規格のうちの少なくとも1つに適合することを特徴とする請求項18に記載のデバイス。
  33. データ構造を含むプロセッサアクセス可能媒体であって、前記データ構造は、
    セッション識別子フィールドを含むメッセージであって、前記セッション識別子フィールドの少なくとも一部はホスト識別子を含む、メッセージ
    を含むことを特徴とするプロセッサアクセス可能媒体。
  34. 前記メッセージは、さらに、複数のフィールドを含み、前記複数のフィールドは、ソースアドレスフィールドおよび宛先アドレスフィールドを有することを特徴とする請求項33に記載のプロセッサアクセス可能媒体。
  35. 前記メッセージは、さらに、複数のフィールドを含み、前記複数のフィールドは、前記メッセージを定式化するセッション参加者によってどの暗号オプションはサポートされるかを示す暗号フィールドを有することを特徴とする請求項33に記載のプロセッサアクセス可能媒体。
  36. 前記ホスト識別子は、デバイス識別子およびアプリケーション識別子を含むことを特徴とする請求項33に記載のプロセッサアクセス可能媒体。
  37. 前記デバイス識別子は、ネットワークアドレスを含むことを特徴とする請求項36に記載のプロセッサアクセス可能媒体。
  38. 前記デバイス識別子は、ネットワークアドレスにマッピング可能なキーを含むことを特徴とする請求項36に記載のプロセッサアクセス可能媒体。
  39. 前記ホスト識別子は、前記セッション識別子フィールドの最上位部分から所定のオフセットに置かれることを特徴とする請求項33に記載のプロセッサアクセス可能媒体。
  40. 前記ホスト識別子は、デバイス識別子を含むことを特徴とする請求項33に記載のプロセッサアクセス可能媒体。
  41. 前記デバイス識別子は、ネットワークアドレスを含むことを特徴とする請求項40に記載のプロセッサアクセス可能媒体。
  42. 前記ネットワークアドレスは、イントラネットアドレスを含むことを特徴とする請求項41に記載のプロセッサアクセス可能媒体。
  43. 前記デバイス識別子は、ネットワークアドレスにマッピング可能なキーを含むことを特徴とする請求項40に記載のプロセッサアクセス可能媒体。
  44. 前記ホスト識別子は、ネットワークアドレスにマッピング可能なキーおよびアプリケーション識別子を含むことを特徴とする請求項33に記載のプロセッサアクセス可能媒体。
  45. 前記ホスト識別子は、セッション識別子フィールド上で散乱されるおよび散布されるうちの少なくとも1つであることを特徴とする請求項33に記載のプロセッサアクセス可能媒体。
  46. 前記データ構造の少なくとも一部は、セッションベースプロトコルに従って定式化された通信の少なくとも一部を含むことを特徴とする請求項33に記載のプロセッサアクセス可能媒体。
  47. 前記データ構造の少なくとも一部は、セキュアプロトコルに従って定式化された通信の少なくとも一部を含むことを特徴とする請求項33に記載のプロセッサアクセス可能媒体。
  48. 前記セキュアプロトコルは、(i)secure sockets layer(SSL)標準規格および(ii)transport layer security(TLS)標準規格のうちの少なくとも1つに適合することを特徴とする請求項47に記載のプロセッサアクセス可能媒体。
  49. 前記メッセージは、client helloメッセージおよびserver helloメッセージのうちの少なくとも1つを含むことを特徴とする請求項33に記載のプロセッサアクセス可能媒体。
  50. 前記プロセッサアクセス可能媒体は、(i)記憶媒体および(ii)伝送媒体のうちの少なくとも1つを含むことを特徴とする請求項33に記載のプロセッサアクセス可能媒体。
  51. デバイスであって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサによって実行できるプロセッサ実行可能命令を含む媒体と
    を含み、前記プロセッサ実行可能命令は、
    ホストからホストセッション開始メッセージを受け取る動作であって、前記ホストセッション開始メッセージは、ホスト識別子を含むセッション識別子フィールドを有する、動作と、
    前記ホストに向かってクライアントセッション継続メッセージを送る動作であって、前記クライアントセッション継続メッセージは、前記ホスト識別子を含むセッション識別子フィールドを有する、動作と
    を実行するように前記デバイスに指示するように適合されている
    ことを特徴とするデバイス。
  52. 前記プロセッサ実行可能命令は、
    受け取る前記動作の前に、前記ホストに向かってクライアントセッション開始メッセージを送るさらなる動作
    を実行するように前記デバイスに指示するように適合されていることを特徴とする請求項51に記載のデバイス。
  53. 前記セッション識別子フィールドは、前記ホスト識別子を含むセッション識別子を投入され、
    前記プロセッサ実行可能命令は、
    前記ホスト識別子を含む前記セッション識別子を保存するさらなる動作
    を実行するように前記デバイスに指示するように適合されていることを特徴とする請求項51に記載のデバイス。
  54. 前記媒体は、前記ホスト識別子を含む前記保存されたセッション識別子を保管することを特徴とする請求項53に記載のデバイス。
  55. 前記デバイスは、クライアントデバイスを含むことを特徴とする請求項51に記載のデバイス。
  56. ルーティングヒントの方法であって、
    受け取られたセッション識別子を含まないセッションメッセージをクライアントから受け取ることと、
    前記受け取られたセッションメッセージに応答して、ホスト識別子を使用してセッション識別子を作成することと、
    前記作成されたセッション識別子は割り当てられるセッションを確立することと、
    前記作成されたセッション識別子を含むセッションメッセージを定式化することと
    を含むことを特徴とする方法。
  57. 前記作成されたセッション識別子を含む前記定式化されたセッションメッセージをネットワークゲートウェイを介して前記クライアントに向かって送ること
    をさらに含むことを特徴とする請求項56に記載の方法。
  58. 前記受け取られたセッション識別子を含まない前記セッションメッセージを前記クライアントから受け取ることと、
    前記作成されたセッション識別子を含む前記定式化されたセッションメッセージを前記クライアントで受け取ることと、
    前記作成されたセッション識別子を前記クライアントで保存することと、
    前記作成され保存されたセッション識別子を含むセッションメッセージを前記クライアントから送ることと
    をさらに含むことを特徴とする請求項57に記載の方法。
  59. 前記作成されたセッション識別子を含むセッションメッセージを前記クライアントから受け取ることと、
    前記作成され受け取られたセッション識別子は割り当てられた前記セッションを再開することと、
    前記作成されたセッション識別子を含む前記受け取られたセッションメッセージに応答して、前記作成され受け取られたセッション識別子を含むセッションメッセージを定式化することと、
    前記セッションを継続できることを示すために、前記作成され受け取られたセッション識別子を含む前記定式化されたセッションメッセージを前記クライアントに向けて前記ネットワークゲートウェイを介して送ることと
    をさらに含むことを特徴とする請求項57に記載の方法。
  60. 実行された時に、請求項56に記載の方法を実行するように装置に指示するプロセッサ実行可能命令を含むことを特徴とするプロセッサアクセス可能媒体。
  61. ホスト識別子と、
    前記ホスト識別子を使用してセッション識別子を作成するように適合されたセッション識別子クリエータと
    を含むことを特徴とするデバイス。
  62. 前記デバイスは、さらに、
    着信セッションメッセージを受け入れることができ、前記着信セッションメッセージは既存セッションに関する既存セッション識別子を含むかどうかを判定することができるメッセージハンドラであって、前記メッセージハンドラは、着信セッションメッセージは既存セッション識別子を欠くと判定された時に前記セッション識別子クリエータをアクティブ化するように適合されている、メッセージハンドラ
    を含むことを特徴とする請求項61に記載のデバイス。
  63. 前記メッセージハンドラは、さらに、ホストセッション開始メッセージのセッション識別子フィールドに前記作成されたセッション識別子を挿入することによって、少なくとも部分的に前記ホストセッション開始メッセージを定式化するように適合されていることを特徴とする請求項62に記載のデバイス。
  64. 前記デバイスは、さらに、
    前記作成されたセッション識別子は割り当てられるセッションコンテキスト
    を含むことを特徴とする請求項61に記載のデバイス。
  65. 実行された時に、
    セッションメッセージのセッション識別子フィールドからホスト識別子を確認する動作と、
    前記確認されたホスト識別子に応答して前記セッションメッセージをルーティングする動作と
    を実行するように装置に指示するプロセッサ実行可能命令を含むことを特徴とするプロセッサアクセス可能媒体。
  66. 確認する前記動作は、
    前記セッションメッセージの前記セッション識別子フィールドから前記ホスト識別子を連続するブロックとして抽出する動作
    を含むことを特徴とする請求項65に記載のプロセッサアクセス可能媒体。
  67. ルーティングする前記動作は、
    前記確認されたホスト識別子を含むエントリを突き止めるために前記確認されたホスト識別子を用いてテーブルにアクセスする動作と、
    前記突き止められたエントリで前記確認されたホスト識別子にリンクされたネットワークアドレスを判定する動作と
    を含むことを特徴とする請求項65に記載のプロセッサアクセス可能媒体。
  68. ルーティングする前記動作は、
    前記確認されたホスト識別子を含むエントリを突き止めるために前記確認されたホスト識別子を用いてテーブルにアクセスする動作と、
    前記突き止められたエントリで前記確認されたホスト識別子にリンクされたネットワークアドレスおよびアプリケーション識別子を判定する動作と
    を含むことを特徴とする請求項65に記載のプロセッサアクセス可能媒体。
  69. 前記プロセッサ実行可能命令の少なくとも一部は、ルーティング、ファイヤウォール、および/またはネットワーク負荷分散ソフトウェアのうちの少なくとも一部を含むことを特徴とする請求項65に記載のプロセッサアクセス可能媒体。
  70. ルーティングする前記動作は、
    前記確認されたホスト識別子を少なくとも1つのネットワークアドレスにマッピングする動作
    を含むことを特徴とする請求項65に記載のプロセッサアクセス可能媒体。
  71. マッピングする前記動作は、
    前記確認されたホスト識別子を使用してテーブル内で前記ネットワークアドレスをルックアップする動作
    を含むことを特徴とする請求項70に記載のプロセッサアクセス可能媒体。
  72. マッピングする前記動作は、
    前記確認されたホスト識別子から前記ネットワークアドレスを計算する動作
    を含むことを特徴とする請求項70に記載のプロセッサアクセス可能媒体。
  73. 計算する前記動作は、
    前記確認されたホスト識別子から前記ネットワークアドレスを計算するために式に従う動作
    を含むことを特徴とする請求項72に記載のプロセッサアクセス可能媒体。
  74. 計算する前記動作は、
    前記確認されたホスト識別子から前記ネットワークアドレスを計算するためにアルゴリズムを実装する動作
    を含むことを特徴とする請求項72に記載のプロセッサアクセス可能媒体。
  75. 装置であって、
    少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサによって実行できるプロセッサ実行可能命令を含む媒体と
    を含み、前記プロセッサ実行可能命令は、
    ホスト識別子を含むセッション識別子を有するセッションメッセージを受け取る動作と、
    前記ホスト識別子に応答して前記セッションメッセージをルーティングする動作と
    を実行するように前記装置に指示するように適合されている
    ことを特徴とする装置。
  76. 受け取る前記動作は、
    前記セッション識別子を有する前記セッションメッセージをクライアントから受け取る動作であって、前記セッションメッセージは、ホストに関連するセッションコンテキストに関連し、前記ホストは、前記ホスト識別子に関連する、動作
    を含むことを特徴とする請求項75に記載の装置。
  77. 前記プロセッサ実行可能命令は、
    前記ホスト識別子に関連するホストへの前記ルーティングに基づいて前記セッションメッセージを前記装置から送るさらなる動作
    を実行するように前記装置に指示するように適合されていることを特徴とする請求項75に記載の装置。
  78. 前記プロセッサ実行可能命令は、
    イントラネット上でのホストへの前記ルーティングに基づいて前記セッションメッセージを前記装置から送るさらなる動作であって、前記ホストは、前記ホスト識別子に関連する、動作
    を実行するように前記装置に指示するように適合されていることを特徴とする請求項75に記載の装置。
  79. 前記プロセッサ実行可能命令は、
    受け取られたセッションメッセージは受け取られたセッション識別子を含むかどうかを判定するさらなる動作
    を実行するように前記装置に指示するように適合されていることを特徴とする請求項75に記載の装置。
  80. 前記プロセッサ実行可能命令は、
    前記受け取られたセッションメッセージは受け取られたセッション識別子を含むと判定された場合に、前記受け取られたセッション識別子の少なくとも一部として含まれる受け取られたホスト識別子に応答して前記受け取られたセッションメッセージをルーティングするさらなる動作
    を実行するように前記装置に指示するように適合されていることを特徴とする請求項79に記載の装置。
  81. 前記プロセッサ実行可能命令は、
    前記受け取られたセッションメッセージは受け取られたセッション識別子を含まないと判定された場合に、少なくとも1つのデフォルトルーティングポリシに従って前記受け取られたセッションメッセージをルーティングするさらなる動作
    を実行するように前記装置に指示するように適合されていることを特徴とする請求項79に記載の装置。
  82. 前記媒体は、さらに、それぞれのホスト識別子を少なくともそれぞれのネットワークアドレスにリンクするテーブルを含み、前記ルーティングは、少なくとも部分的に、前記テーブルにアクセスすることによって実現されることを特徴とする請求項75に記載の装置。
  83. 前記装置は、複数のデバイスを含むことを特徴とする請求項75に記載の装置。
  84. セッション識別子フィールドを有するセッション関連メッセージを受け入れることができるネットワークゲートウェイであって、前記ネットワークゲートウェイは、前記セッション識別子フィールドに投入される値からホスト識別子を抽出するように適合されており、前記ネットワークゲートウェイは、さらに、前記ホスト識別子を使用して前記セッション関連メッセージのルーティング動作を実行するように適合されていることを特徴とするネットワークゲートウェイ。
  85. 前記セッション識別子フィールドに投入される前記値は、セッション識別子を含むことを特徴とする請求項84に記載のネットワークゲートウェイ。
  86. 前記ネットワークゲートウェイは、ルータ、ファイヤウォールデバイス、プロキシ、およびネットワーク負荷分散デバイスのうちの少なくとも1つを含むことを特徴とする請求項84に記載のネットワークゲートウェイ。
  87. 前記ネットワークゲートウェイは、さらに、少なくとも1つのホスト識別子対ネットワークアドレスリンキングテーブルを使用して前記ルーティング動作を実行するように適合されていることを特徴とする請求項84に記載のネットワークゲートウェイ。
  88. 前記ネットワークゲートウェイは、さらに、ネットワークアドレスへの前記ホスト識別子のマッピングを用いて前記ルーティング動作を実行するように適合されていることを特徴とする請求項84に記載のネットワークゲートウェイ。
  89. 前記ネットワークゲートウェイは、さらに、パケットの宛先アドレスフィールドに前記ホスト識別子を挿入することによって前記ルーティング動作を実行するように適合されていることを特徴とする請求項84に記載のネットワークゲートウェイ。
JP2005508267A 2003-08-13 2003-08-18 ルーティングヒント Pending JP2007521684A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/639,516 US7882251B2 (en) 2003-08-13 2003-08-13 Routing hints
US10/639,727 US8266294B2 (en) 2003-08-13 2003-08-13 Routing hints
PCT/US2003/025747 WO2005020085A1 (en) 2003-08-13 2003-08-18 Routing hints

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009151291A Division JP4828619B2 (ja) 2003-08-13 2009-06-25 ルーティングヒント

Publications (1)

Publication Number Publication Date
JP2007521684A true JP2007521684A (ja) 2007-08-02

Family

ID=34221832

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2005508267A Pending JP2007521684A (ja) 2003-08-13 2003-08-18 ルーティングヒント
JP2009151291A Expired - Fee Related JP4828619B2 (ja) 2003-08-13 2009-06-25 ルーティングヒント

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009151291A Expired - Fee Related JP4828619B2 (ja) 2003-08-13 2009-06-25 ルーティングヒント

Country Status (14)

Country Link
EP (1) EP1654665A4 (ja)
JP (2) JP2007521684A (ja)
KR (1) KR101026600B1 (ja)
AU (1) AU2003263873B2 (ja)
BR (1) BR0318416A (ja)
CA (1) CA2532185A1 (ja)
IL (1) IL173157A (ja)
MX (1) MXPA06001530A (ja)
MY (1) MY144263A (ja)
NO (1) NO20060471L (ja)
NZ (1) NZ544663A (ja)
RU (1) RU2365046C2 (ja)
TW (1) TWI337822B (ja)
WO (1) WO2005020085A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011039681A (ja) * 2009-08-07 2011-02-24 Fujitsu Ltd 中継装置及び転送ルールに関連する情報処理方法並びにプログラム
JP2012510651A (ja) * 2008-09-02 2012-05-10 マイクロソフト コーポレーション サービスのロードバランシング
JP2013239045A (ja) * 2012-05-15 2013-11-28 Hitachi Ltd シンクライアントシステム及びリモートアクセス方法
KR20140015395A (ko) * 2011-03-15 2014-02-06 아마데우스 에스.에이.에스. 이종 환경에서 세션을 제공하는 방법 및 시스템

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7882251B2 (en) 2003-08-13 2011-02-01 Microsoft Corporation Routing hints
US8266294B2 (en) 2003-08-13 2012-09-11 Microsoft Corporation Routing hints
US7340744B2 (en) * 2005-04-08 2008-03-04 Cisco Technology, Inc. System and method for optimizing sessions and network resources in a loadbalancing environment
KR100825724B1 (ko) * 2005-12-08 2008-04-29 한국전자통신연구원 직접접속방식을 적용하는 고속 전송이 가능한PMEM(PCI Memory)를 이용한 객체 기반저장시스템 및 그 시스템에서의 전송 방법
KR100892609B1 (ko) 2007-03-22 2009-04-09 주식회사 올앳 보안 통신 시스템, 방법, 및 상기 방법을 실행시키기 위한컴퓨터 프로그램을 기록한 매체
CN101296176B (zh) 2007-04-25 2010-12-22 阿里巴巴集团控股有限公司 一种基于群集的数据处理方法和装置
TWI396089B (zh) * 2009-10-16 2013-05-11 Moxa Inc 以參數提供多通道傳輸串列資料之裝置及其方法
KR102043658B1 (ko) * 2013-08-30 2019-11-12 한국전력공사 일방향 데이터 전송 장치 및 그 방법
CN111385377B (zh) * 2020-03-03 2022-08-09 深信服科技股份有限公司 一种ip地址冲突处理方法、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1051459A (ja) * 1996-07-31 1998-02-20 Oki Electric Ind Co Ltd Atm交換機およびatmネットワークならびにマルチキャスト設定方法
JP2001265680A (ja) * 2000-03-15 2001-09-28 Fujitsu Ltd 複数メディアのセッションを管理する装置および方法
US6539494B1 (en) * 1999-06-17 2003-03-25 Art Technology Group, Inc. Internet server session backup apparatus

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05327704A (ja) * 1992-05-15 1993-12-10 Oki Electric Ind Co Ltd 一斉同報通信システム及びメッセージ生成装置
US6085247A (en) * 1998-06-08 2000-07-04 Microsoft Corporation Server operating system for supporting multiple client-server sessions and dynamic reconnection of users to previous sessions using different computers
US6374300B2 (en) 1999-07-15 2002-04-16 F5 Networks, Inc. Method and system for storing load balancing information with an HTTP cookie
US6947992B1 (en) * 2000-05-01 2005-09-20 International Business Machines Corporation Maintaining HTTP session affinity in a cluster environment
US7193980B2 (en) * 2000-07-06 2007-03-20 Nortel Networks Limited Continuation session attribute
JP2002176432A (ja) * 2000-12-05 2002-06-21 Sony Corp 通信中継装置、通信中継方法、および通信端末装置、並びにプログラム記憶媒体
JP2002189646A (ja) * 2000-12-22 2002-07-05 Matsushita Electric Ind Co Ltd 中継装置
JP3963690B2 (ja) * 2001-03-27 2007-08-22 富士通株式会社 パケット中継処理装置
JP2002351760A (ja) * 2001-05-30 2002-12-06 Mitsubishi Electric Corp サーバ負荷分散装置、サーバ負荷分散方法およびその方法をコンピュータに実行させるプログラム
US7406524B2 (en) 2001-07-26 2008-07-29 Avaya Communication Isael Ltd. Secret session supporting load balancer
US7243366B2 (en) 2001-11-15 2007-07-10 General Instrument Corporation Key management protocol and authentication system for secure internet protocol rights management architecture
US7644434B2 (en) * 2002-04-25 2010-01-05 Applied Identity, Inc. Computer security system
US7373423B2 (en) * 2002-09-11 2008-05-13 Trend Micro Incorporated Network infrastructure management and data routing framework and method thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1051459A (ja) * 1996-07-31 1998-02-20 Oki Electric Ind Co Ltd Atm交換機およびatmネットワークならびにマルチキャスト設定方法
US6539494B1 (en) * 1999-06-17 2003-03-25 Art Technology Group, Inc. Internet server session backup apparatus
JP2001265680A (ja) * 2000-03-15 2001-09-28 Fujitsu Ltd 複数メディアのセッションを管理する装置および方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012510651A (ja) * 2008-09-02 2012-05-10 マイクロソフト コーポレーション サービスのロードバランシング
JP2011039681A (ja) * 2009-08-07 2011-02-24 Fujitsu Ltd 中継装置及び転送ルールに関連する情報処理方法並びにプログラム
KR20140015395A (ko) * 2011-03-15 2014-02-06 아마데우스 에스.에이.에스. 이종 환경에서 세션을 제공하는 방법 및 시스템
JP2014509803A (ja) * 2011-03-15 2014-04-21 アマデウス エス.アー.エス. ヘテロジニアスな環境においてセッションを提供するための方法およびシステム
KR101640296B1 (ko) 2011-03-15 2016-07-15 아마데우스 에스.에이.에스. 이종 환경에서 세션을 제공하는 방법 및 시스템
JP2013239045A (ja) * 2012-05-15 2013-11-28 Hitachi Ltd シンクライアントシステム及びリモートアクセス方法

Also Published As

Publication number Publication date
IL173157A (en) 2011-10-31
TWI337822B (en) 2011-02-21
MY144263A (en) 2011-08-29
CA2532185A1 (en) 2005-03-03
IL173157A0 (en) 2006-06-11
MXPA06001530A (es) 2006-05-15
RU2365046C2 (ru) 2009-08-20
AU2003263873A1 (en) 2005-03-10
KR20060070529A (ko) 2006-06-23
BR0318416A (pt) 2006-08-01
EP1654665A1 (en) 2006-05-10
JP2009260988A (ja) 2009-11-05
KR101026600B1 (ko) 2011-04-04
RU2006104109A (ru) 2006-07-27
EP1654665A4 (en) 2010-06-30
NZ544663A (en) 2008-09-26
TW200507548A (en) 2005-02-16
WO2005020085A1 (en) 2005-03-03
JP4828619B2 (ja) 2011-11-30
AU2003263873B2 (en) 2010-04-08
NO20060471L (no) 2006-03-16

Similar Documents

Publication Publication Date Title
JP4828619B2 (ja) ルーティングヒント
US7882251B2 (en) Routing hints
US8266294B2 (en) Routing hints
US8897299B2 (en) Method and systems for routing packets from a gateway to an endpoint
US8244881B2 (en) Service virtualization over content-centric networks
KR20050002608A (ko) 접속 조정을 이용한 네트워크 로드 밸런싱
JP4429059B2 (ja) 通信制御方法及びプログラム、並びに通信制御システム及び通信制御関連装置
US10412122B1 (en) Dynamic per-session NAT-behavior selection
US20070147376A1 (en) Router-assisted DDoS protection by tunneling replicas
US20240121222A1 (en) Anonymous proxying
CN117318974A (zh) 用于代理设备的非转换端口超额订阅

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090227

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20090319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090319

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090527

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090603

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090625

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100401

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20100402

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100402

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100423

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20100521

RD16 Notification of change of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7431

Effective date: 20111024

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111024

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120321