JP4828619B2 - Routing hint - Google Patents
Routing hint Download PDFInfo
- Publication number
- JP4828619B2 JP4828619B2 JP2009151291A JP2009151291A JP4828619B2 JP 4828619 B2 JP4828619 B2 JP 4828619B2 JP 2009151291 A JP2009151291 A JP 2009151291A JP 2009151291 A JP2009151291 A JP 2009151291A JP 4828619 B2 JP4828619 B2 JP 4828619B2
- Authority
- JP
- Japan
- Prior art keywords
- session
- host
- identifier
- message
- client
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1017—Server selection for load balancing based on a round robin mechanism
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1019—Random or heuristic server selection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1027—Persistence of sessions during load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/10015—Access to distributed or replicated servers, e.g. using brokers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/561—Adding application-functional data or data for application control, e.g. adding metadata
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/564—Enhancement of application control based on intercepted application data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer 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
Description
この開示は、全般的にはルーティングヒントに関し、具体的には、制限ではなく例として、イントラネットルーティングを容易にするためにネットワークゲートウェイでそのようなルーティングヒントを使用するためにホストからルーティングヒントを供給することに関する。 This disclosure relates generally to routing hints, and specifically provides routing hints from hosts to use such routing hints at network gateways to facilitate intranet routing as an example rather than a limitation. About doing.
通信は、インターネットの機能によって大きく影響を受けてきた。インターネットは、パケットを使用して2人の人または他のエンティティの間ですばやく比較的簡単に情報を通信できるようにする。インターネットに、情報を含むパケットをそれらの間で転送できるように一緒にリンクされた多数のネットワークノードが含まれる。ネットワークノードには、あるリンクから別のリンクへパケットを伝搬させるルータと、個々のクライアントコンピュータと、完全にパーソナルなネットワーク(たとえば、特定のエンティティ用)などがある。 Communication has been greatly influenced by the capabilities of the Internet. The Internet makes it possible to communicate information quickly and relatively easily between two people or other entities using packets. The Internet includes a number of network nodes linked together so that packets containing information can be transferred between them. Network nodes include routers that propagate packets from one link to another, individual client computers, a completely personal network (eg, for a particular entity), and the like.
インターネットでの第1エンティティと第2エンティティの間の通信は、それらの間で接続を構成することによって実現される。これらの接続に、時々、セッションが含まれる。セッションは、対応する1つまたは複数の接続を介して行われる通信交換のコンテキストを提供するために確立される。セッション確立に、通常、第1エンティティと第2エンティティの間の1方向または両方向の情報交換が含まれる。セッションの確立フェーズの複雑さおよび持続時間は、通常、セッションのタイプに基づいて変化する。 Communication between the first entity and the second entity on the Internet is realized by configuring a connection between them. These connections sometimes include sessions. A session is established to provide a context for communication exchanges that take place over the corresponding connection or connections. Session establishment typically includes one-way or two-way information exchange between the first entity and the second entity. The complexity and duration of the session establishment phase usually varies based on the type of session.
各セッション確立は、処理リソースを使用し、ある時間期間を消費し、この時間期間が、ユーザが経験する遅延に変換される。セッション確立フェーズの後に、第1エンティティおよび第2エンティティは、確立されたセッションコンテキストに従って通信する。この通信ならびに接続は、セッションを終了せずに終わる場合がある。いくつかの場合に、そのような既存セッションが、その後、以前のセッション確立フェーズ中に2つのエンティティの間で前に交換された情報がこれらのエンティティによって保持されている場合に、その情報を使用して継続される場合がある。 Each session establishment uses processing resources and consumes a certain time period, which is converted into a delay experienced by the user. After the session establishment phase, the first entity and the second entity communicate according to the established session context. This communication and connection may end without ending the session. In some cases, such an existing session then uses that information if the information previously exchanged between the two entities during the previous session establishment phase is held by these entities May continue.
言い換えると、前に交換された情報が、既存セッションを継続するのに使用される。したがって、既存セッションの継続は、一般に、前にセッションを確立したのと同一の第1エンティティおよび第2エンティティが、そのセッションの継続を試みる状況に関する。その結果、第2エンティティが未知であり、かつ/または識別もしくは連絡が困難である場合に、第1エンティティが既存セッションの継続を試みる時に、問題が生じる可能性がある。 In other words, previously exchanged information is used to continue the existing session. Thus, continuation of an existing session generally relates to a situation where the same first and second entities that previously established the session attempt to continue that session. As a result, problems may arise when the first entity attempts to continue an existing session if the second entity is unknown and / or difficult to identify or contact.
したがって、2つのエンティティの間のセッション継続を改善し、単純化し、かつ/または容易にする方式および/または技法の必要がある。 Accordingly, there is a need for schemes and / or techniques that improve, simplify, and / or facilitate session continuity between two entities.
第1の例示的な媒体実装で、1つまたは複数のプロセッサアクセス可能媒体が、実行された時に、ホスト識別子を使用してセッション識別子を作成する動作と、前記作成されたセッション識別子を用いてホストセッション開始メッセージを定式化する動作とを実行するようにデバイスに指示するプロセッサ実行可能命令を含む。 In a first exemplary media implementation, when one or more processor-accessible media are executed, the host identifier is used to create a session identifier, and the created session identifier is used to host Processor executable instructions that instruct the device to perform operations that formulate a session initiation message.
第1の例示的なデバイス実装で、デバイスが、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサによって実行できるプロセッサ実行可能命令を含む1つまたは複数の媒体とを含み、前記プロセッサ実行可能命令は、ホスト識別子に応答して作成されるセッション識別子を用いてホストセッションメッセージを定式化する動作と、前記セッション識別子を含む前記定式化されたホストセッションメッセージを前記デバイスから送る動作とを実行するように前記デバイスに指示するように適合されている。 In a first exemplary device implementation, a device includes at least one processor and one or more media including processor executable instructions that can be executed by the at least one processor, the processor executable instructions comprising: Performing an operation of formulating a host session message using a session identifier created in response to the host identifier and an operation of sending the formulated host session message including the session identifier from the device. Adapted to instruct the device.
第2の例示的な媒体実装で、1つまたは複数のプロセッサアクセス可能媒体が、データ構造を含み、前記データ構造は、セッション識別子フィールドを含むメッセージであって、前記セッション識別子フィールドの少なくとも一部はホスト識別子を含む。 In a second exemplary media implementation, one or more processor-accessible media includes a data structure, the data structure being a message including a session identifier field, wherein at least a portion of the session identifier field is Contains the host identifier.
第2の例示的なデバイス実装で、デバイスが、ホスト識別子と、前記ホスト識別子を使用してセッション識別子を作成するように適合されたセッション識別子クリエータとを含む。 In a second exemplary device implementation, a device includes a host identifier and a session identifier creator adapted to create a session identifier using the host identifier.
例示的なネットワークゲートウェイ実装で、ネットワークゲートウェイが、セッション識別子フィールドを有するセッション関連メッセージを受け入れることができ、前記ネットワークゲートウェイは、前記セッション識別子フィールドに投入される値からホスト識別子を抽出するように適合されており、前記ネットワークゲートウェイは、さらに、前記ホスト識別子を使用して前記セッション関連メッセージのルーティング動作を実行するように適合されている。 In an exemplary network gateway implementation, a network gateway can accept a session related message having a session identifier field, and the network gateway is adapted to extract a host identifier from a value entered in the session identifier field. And the network gateway is further adapted to perform a routing operation of the session related message using the host identifier.
第3の例示的な媒体実装で、1つまたは複数のプロセッサアクセス可能媒体が、実行された時に、セッションメッセージのセッション識別子フィールドからホスト識別子を確認する動作と、前記確認されたホスト識別子に応答して前記セッションメッセージをルーティングする動作とを実行するように装置に指示するプロセッサ実行可能命令を含む。 In a third exemplary media implementation, one or more processor-accessible media, when executed, responds to the confirmed host identifier with an operation of confirming a host identifier from a session identifier field of a session message. Processor-executable instructions for instructing the device to perform operations to route the session message.
例示的な装置実装で、装置が、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサによって実行できるプロセッサ実行可能命令を含む1つまたは複数の媒体とを含み、前記プロセッサ実行可能命令は、ホスト識別子を含むセッション識別子を有するセッションメッセージを受け取る動作と、前記ホスト識別子に応答して前記セッションメッセージをルーティングする動作とを実行するように前記装置に指示するように適合されている。 In an exemplary apparatus implementation, an apparatus includes at least one processor and one or more media including processor-executable instructions that can be executed by the at least one processor, wherein the processor-executable instructions include a host identifier. The apparatus is adapted to instruct the apparatus to perform an operation of receiving a session message having a session identifier including and an operation of routing the session message in response to the host identifier.
他の方法、システム、手法、装置、アプリケーションプログラミングインターフェース(API)、デバイス、媒体、プロシージャ、配置などの実装を、本明細書で説明する。 Implementations of other methods, systems, techniques, devices, application programming interfaces (APIs), devices, media, procedures, arrangements, etc. are described herein.
同一の符号が、複数の図面を通じて、類似するおよび/または対応する態様、特徴、およびコンポーネントを参照するのに使用される。 The same numbers are used throughout the drawings to reference like and / or corresponding aspects, features, and components.
図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に結合される。
FIG. 1 is an
説明される実装では、クライアント102(1)、102(2)、…、102(m)が、それぞれアドレス「C1」、「C2」、…、「Cm」に対応する。クライアント102のそれぞれは、コンピュータ、モバイルステーション、エンターテイメント機器、別のネットワークなど、ネットワーク通信が可能な任意のデバイスとすることができる。クライアント102は、クライアントデバイスを操作している人または他のエンティティに対応することもできる。言い換えると、クライアント102に、ユーザおよび/または機械である論理クライアントを含めることができる。
In the described implementation, clients 102 (1), 102 (2),..., 102 (m) correspond to addresses “C1”, “C2”,. Each of the
ネットワーク104は、インターネット、もう1つのイントラネット、有線または無線の電話網、無線ブロードバンドネットワークなど、1つまたは複数のネットワークから形成することができる。クライアント102およびネットワーク104のネットワークタイプ/トポロジのデバイスの追加の例を、下で図8を参照して説明する。個々のクライアント102は、ネットワーク104を介し、ネットワークゲートウェイ106を介して、1つまたは複数のホスト108と通信でき、その逆を行うことができる。
The
ホスト108(1)、108(2)、…、108(n)は、それぞれアドレス「H1」、「H2」、…、「Hn」に対応する。ホストアドレスH1、H2、…、Hnは、イントラネット110上に存在する。ホスト108は、通常、1つまたは複数のアプリケーション(図示せず)をホスティングする。これらのアプリケーションは、(i)クライアント102との相互作用および/または通信に関するサービスを提供し、(ii)クライアント102などによる使用のためのものである。例のみとして、そのようなアプリケーションに、ファイル配送プログラム、ウェブサイト管理/サーバプログラム、リモートアクセスプログラム、電子メールプログラム、データベースアクセスプログラムなどを含めることができる。
The hosts 108 (1), 108 (2),..., 108 (n) correspond to the addresses “H1”, “H2”,. The host addresses H1, H2,..., Hn exist on the
各ホスト108は、1つのサーバおよび/または1つのデバイス、複数のサーバおよび/または複数のデバイス、サーバの一部および/またはデバイスの一部、これらのある組合せなどの対応することができる。ホスト108の特定の例示的な実装を、さらに、下で図2、4、および5を参照して説明する。さらに、ホスト108の追加の例示的なデバイス実装を、下で図8を参照して説明する。
Each
ネットワークゲートウェイ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を参照して説明する。
The
一般に、接続114は、クライアント102とホスト108の間で、ネットワーク104上でネットワークゲートウェイ106を介して構成される。通常、クライアント102が接続114を開始するが、その代わりに、ホスト108がイニシエータになることができる。具体的には、この例で、クライアント102(1)が、ホスト108(2)との接続114(1)を開始する。しかし、クライアント102(1)は、ホスト108(2)のアドレスH2に関与しない。そうではなく、クライアント102(1)は、ネットワークゲートウェイ106のアドレスNGNにこの接続(たとえば、接続を要求するパケット)を向ける。
In general, the
次に、ネットワークゲートウェイ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を介してパケットをルーティングする。
The
伝送制御プロトコル/インターネットプロトコル(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)で、このカプセル化されたパケットをカプセル化解除することができる。
In a Transmission Control Protocol / Internet Protocol (TCP / IP) environment, the NAT has (i) the source (ie, client 102 (1)) IP address C1 and port number generated by the IP address NGI and NAT of the
接続114(1)中に、セッションが、クライアント102(1)とホスト108(2)の間で確立される。接続114(1)の確立されたセッションについて、セッションコンテキスト112が、ホスト108(2)で作られる。類似する、似た、および/または相互のセッションコンテキスト(図示せず)が、通常はクライアント102(1)でも作られる。セッションコンテキスト112は、クライアント102(1)とホスト108(2)の間の通信を容易にする。
During connection 114 (1), a session is established between client 102 (1) and host 108 (2). For the established session of connection 114 (1), a
したがって、接続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)その他が含まれる。異なるセッションタイプのこれらの例は、セッションの複数の層がどのように確立され、使用されるかも示す。 Accordingly, connection 114 (1) may or may not have established one or more of a number of different types of sessions thereon. Exemplary types of sessions include: (i) Secure Sockets Layer (SSL) session, (ii) Transport Layer Security (TLS) session, (iii) Secure Internet Protocol (IPsec) session, (iv) Hypertext Transfer Protocol (HTTP) ) Cookie-based session, (v) point-to-point tunneling protocol (PPTP) session, (vi) IPSec / layer-2 tunneling protocol (L2TP) session, (vii) proprietary session, (viii) terminal server session, (ix) ) Administrator-defined sessions, and (x) others. These examples of different session types also show how multiple layers of sessions are established and used.
セッションコンテキスト112の内容は、少なくとも部分的に、それがそのために作られたセッションのタイプに依存して変化する可能性がある。たとえば、特定のセッションコンテキスト112に、TCP 4タプル(たとえば、TCP接続を用いて確立されたセッション用)、セッション識別子、対応するセッションの永続状態を維持する1つまたは複数のデータベースエントリの位置、ホスト108(2)に供給されるクライアント102(1)の公開鍵、ネゴシエートされた秘密暗号鍵、他のセキュリティ関連パラメータなどのうちの1つまたは複数を含めることができる。TCP 4タプルに、ソースIPアドレス、ソースTCPポート、宛先IPアドレス、および宛先TCPポートが含まれる。たとえば、現在の標準規格の下のSSLセッションについて、セッション識別子を、32バイトまでの長さとすることができる。
The content of the
上で説明したように、現在の例では、接続114(1)を構成した後に、セッションが、クライアント102(1)とホスト108(2)の間で確立される。クライアント102(1)は、より具体的には、ホスト108(2)に常駐し、かつ/またはホスト108(2)で実行される少なくとも1つのアプリケーションとのセッションを確立する。しかし、説明を明瞭にするために、そのようなアプリケーションは、一般に、ホスト108(2)に言及する時に含めることができる。 As explained above, in the current example, after configuring connection 114 (1), a session is established between client 102 (1) and host 108 (2). Client 102 (1) more specifically establishes a session with at least one application that resides on and / or runs on host 108 (2). However, for clarity of explanation, such applications can generally be included when referring to the host 108 (2).
セッション確立フェーズは、セッションコンテキスト112を作るかもたらす。セッションコンテキスト112は、クライアント102(1)とホスト108(2)の間の通信交換のコンテキストを提供する。セッションコンテキスト112に、これらの通信交換に実際にクリティカルな、単に有益な、またはともかくも他の形で関連する情報を含めることができる。
The session establishment phase creates or provides a
クライアント102(1)を論理クライアントにすることができるならば、セッションコンテキスト112は、(1)特定のデバイスおよび/またはデバイスの特定のユーザと(ii)ホスト108(2)との間の通信交換に関するものとすることができる。その結果、ユーザクライアント102(1)に関連するセッションコンテキスト112は、ユーザクライアント102(1)が異なるデバイスからホスト108にアクセスする場合であっても、そのユーザクライアント102(1)に関連付けられ続けることができる。デバイスは、クライアント102(1)のローカルレベルで、ネットワーク104レベルで、などで異なるものとすることができる。そのような異なるデバイスシナリオの例に、プロキシシナリオ(たとえば、あるインターネットサービスプロバイダ(ISP)のプロキシシナリオ)、ターミナルサーバセッションシナリオなどが含まれる。
If the client 102 (1) can be a logical client, the
セッションコンテキスト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に適用可能ではあるが、これらの例示的な戦略を、負荷分散実装の展望から説明する。
The session affinity storage mechanism or session affinity storage functionality is adapted to route connections (including packet level requests and logical level requests) to the
第1の戦略は、「スティッキィ(sticky)」モードを用いる負荷分散に関し、このモードでは、所与の、たとえばIPアドレスから来る、すべてではないにしてもほとんどの要求が、単一のホスト108にルーティングされる。しかし、この戦略は、所与のIPアドレスが、単一のクライアント102を表すという仮定に頼るが、この仮定は、プロキシに関して明らかに真でない。プロキシは、ロードバランサには単一のIPアドレスに見えるが、実際には、多数の、潜在的に数千個のクライアント102の要求を表す。その結果、これらの要求のすべてを単一のホスト108にルーティングすることは、デバイスの間の非常に不均一な負荷分散につながる可能性がある。通常、プロキシから着信要求を受け取るデバイスは、結果として、はるかに多数のクライアント102を割り当てられる。さらに、変化するIPアドレスを有するクライアント102からの要求も、この第1の戦略を使用すると不正にルーティングされる。IPアドレスは、モバイル環境で、アドレスがIPアドレスプールから一時的に割り当てられる時に、などに変化する可能性がある。
The first strategy relates to load balancing using a “sticky” mode, in which most, if not all requests coming from a given, eg, IP address, go to a
第2の戦略に、セッション識別子を使用する負荷分散ヒューリスティックを使用することが含まれる。既存セッションを継続する要求は、特定の個々のセッション識別子を使用して、そのセッションを前に確立した(たとえば、ネゴシエートした)ホスト108にルーティングされる。動作時に、特定のセッションが特定のクライアント102と特定のホスト108の間で確立された後に、その特定のホスト108をその特定のセッションにリンクするマッピングが、保管され、そのセッションは、特定のセッション識別子によって識別される。その特定のクライアント102からの特定のセッション識別子を含む要求が受け取られた時に、その要求を、このマッピングを使用してその特定のホスト108にルーティングすることができる。したがって、この第2の戦略は、セッションアフィニティの保存を可能にする。
The second strategy involves using a load balancing heuristic that uses session identifiers. A request to continue an existing session is routed to the
しかし、第2の戦略は、効率の展望から複数の相対的な欠点を伴う。第1に、ロードバランサは、セッション識別子とホスト108の間のこれらのマッピングのテーブルを維持する。このテーブルのサイズは、既存のセッションごとに別々のエントリがあるので、巨大になる可能性がある。たとえば、各ホスト108が、10000個のセッションをキャッシングし、500個のホスト108がある場合に、このテーブルは、最適の効率でこれらのセッションに関する要求をルーティングするために、500万個のエントリを使用する。第2に、新たに確立されるセッションごとに、ロードバランサは、セッション識別子が検出され、エントリをテーブルに追加できるようになるまで、セッション確立フェーズを監視する。第3に、セッションを再開する要求が受け取られるたびに、ロードバランサは、ルーティングを実行するためにこの(非常に大きい可能性が高い)テーブルに問い合わせる。
However, the second strategy has several relative drawbacks from an efficiency perspective. First, the load balancer maintains a table of these mappings between session identifiers and hosts 108. The size of this table can be huge because there is a separate entry for each existing session. For example, if each
第4に、セッションが、寿命を有し、混雑に起因してホスト108のキャッシュから積極的にエージアウトすなわち追い出されるので、ロードバランサテーブルは、あるエージング機構も実装して、個々のホスト108がそれ自体のキャッシュに関して行っていることまたは行っていると期待されることをミラーリングする。ホスト108およびロードバランサのエージング機構が同期化されていない場合に、ロードバランサは、まだホスト108で有効なセッションに関する状態情報を早すぎる時に削除する可能性があり、あるいはその逆に、どのホスト108にももはや存在しないセッションの状態情報を保持する可能性がある。
Fourth, because the session has a lifetime and is actively aged out of the
セッションアフィニティ保存機能性に関する第3の戦略は、新たに確立されるセッションのセッション識別子の選択的な作成/判定を介して、個々のセッションごとにエントリを必要とするテーブルなしで、ネットワークゲートウェイ106でのセッションアフィニティ保存を達成することができる。セッション識別子を判定する時に、ホスト108は、その中にホスト識別子を埋め込む。
A third strategy for session affinity storage functionality is through the selective creation / determination of session identifiers for newly established sessions, without a table requiring an entry for each individual session, at the
ネットワークゲートウェイ106は、セッション識別子からホスト識別子を抽出し、そのホスト識別子に応答して、セッション識別子が割り当てられたセッションのトラフィックをルーティングする。したがって、第3の戦略は、有界の個数のエントリ(たとえば、ホスト108の個数と等しい個数のエントリ)を有するテーブルを使用してセッション継続要求をルーティングし、かつ/またはそのようなセッションごとのエントリを有するテーブルを使用せずにセッション継続要求をルーティングする、相対的にステートレスな手法を使用することができる。この第3の戦略の諸態様を、本明細書でさらに説明する。
The
通信環境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に関連する。
In the
アイテム114(1)および114(2)は、単一の接続内で発生するセッション関連メッセージ(たとえば要求)ならびに複数の接続中に発生するセッション関連メッセージも表すことができる。さらに、クライアント102とホスト108の間のある通信を、本明細書でメッセージとして説明する。メッセージは、通常、1つまたは複数のパケットとして、クライアント102からホスト108へおよびその逆に伝搬される。クライアントメッセージは、クライアント102から送られ、ホストメッセージは、ホスト108から送られる。セッションメッセージとは、セッションに関するメッセージ(たとえば、セッションの確立、継続/再開、破壊などに関するメッセージ)である。例示的なセッションメッセージを、さらに、下で図3を参照して説明する。
Items 114 (1) and 114 (2) can also represent session related messages (eg, requests) that occur within a single connection as well as session related messages that occur during multiple connections. Further, certain communications between the
セッション開始メッセージは、セッションの開始に関する、クライアント102および/またはホスト108によって送られるメッセージである。セッション継続メッセージは、既存セッションの継続に関する、クライアント102および/またはホスト108によって送られるメッセージである。セッション開始メッセージおよびセッション継続メッセージは、明らかに異なるフォーマット、類似するフォーマット、同一のフォーマットなどを有することができる。しかし、説明される実装では、セッション開始メッセージおよびセッション継続メッセージが、少なくとも類似するフォーマットを有し、このフォーマットでは、セッション識別子の存在が、あるクライアントセッションメッセージがクライアントセッション継続メッセージであることを示し、セッション識別子の不在が、あるクライアントセッションメッセージがクライアントセッション開始メッセージであることを示す。
A session start message is a message sent by the
本明細書での説明は、それに制限されないが、下で説明する実装は、時々、ネットワークゲートウェイ106の負荷分散実装を協調するかこれに焦点を合わせたものである。また、他のプロトコルおよびプロトコルの組合せが、適用可能であり、代わりに使用することができるが、下の説明では、主に、説明を明瞭にするためにTCP/IP接続およびSSL/TLSセッションを使用する。
Although the description herein is not limited thereto, the implementation described below sometimes coordinates or focuses on the load balancing implementation of the
制限ではなく例として、クライアントセッション開始メッセージまたはクライアントセッション継続メッセージを、ある仕様(たとえば、「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メッセージに応答するものである場合に、このメッセージを、ホストセッション開始メッセージとすることができる。そのようなホストセッション開始メッセージのセッション識別子の作成および定式化を、下でさらに説明する。 By way of example and not limitation, a client session start message or a client session continuation message may be a “Client Hello” message that conforms to a certain specification (eg, “the TLS Protocol Version 1.0 Spec (January 1999)”). . If the Client Hello message includes a session identifier, this message can be a client session continuation message; otherwise, this message can be a client session start message. Similarly, the host session start message or the host session continuation message may be a “Server Hello” message according to a certain specification (for example, see Non-Patent Document 1). If the Server Hello message includes the session identifier supplied by the client in the Client Hello message to which the Server Hello message is responding, this message can be a host session continuation message. If the Server Hello message is in response to a Client Hello message that does not include a session identifier, this message can be a host session start message. The creation and formulation of a session identifier for such a host session initiation message is further described below.
図2に、セッションメッセージと共にルーティングヒントを供給し、使用する例示的な手法を示す。セッションメッセージ202、204、および206は、ネットワーク104を介し、ネットワークゲートウェイ要素106を介して、クライアント102からホスト108へ、またはその逆に送られる。ネットワークゲートウェイ要素106は、ネットワークゲートウェイ106(図1の)の要素を表す。セッションメッセージ202、204、および206のそれぞれが、ネットワークゲートウェイ要素106によってルーティングされるものとして図示されているが、各個々のセッションメッセージを、その代わりに、ネットワークゲートウェイ106の異なる個々の要素によってルーティングすることができる。
FIG. 2 illustrates an exemplary approach for providing and using routing hints with session messages.
図からわかるように、ホスト108に、クライアント102に送られるメッセージおよびクライアント102から受け取られているメッセージを処理するメッセージハンドラ208が含まれる。メッセージハンドラ208に、着信メッセージハンドラ部分208ICおよび発信メッセージハンドラ部分208OGが含まれる。ホスト108は、ホスト識別子214に関連し、ホスト識別子214は、ホスト108に保管されるか、他の形でホスト108からアクセス可能である。ホスト識別子214の例を、下で図3を参照してさらに説明する。ホスト108に、ホスト識別子214を使用してセッション識別子(たとえば、セッション識別子210)を作成するセッション識別子クリエータ212も含まれる。
As can be seen, the
説明される実装では、クライアント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にルーティングする。
In the described implementation,
具体的に言うと、クライアント102は、クライアントセッション開始メッセージ(SIM)202を、ネットワーク104を介してネットワークゲートウェイ要素106に送る。クライアントセッション開始メッセージ202には、新しいセッションに関する要求が含まれる限り、セッション識別子が含まれない。クライアントセッション開始メッセージ202は、既存セッションに関するものでないので、ネットワークゲートウェイ要素106は、ルーティング動作216(A)で一般的なポリシを使用して、クライアントセッション開始メッセージ202をホスト108にルーティングする。たとえば、ネットワークゲートウェイ要素106は、現在のおよび/または関連する負荷分散ポリシ(たとえば、着信新規セッション要求のラウンドロビン分配)に従って、クライアントセッション開始メッセージ202をルーティングすることができる。
Specifically, the
ホスト108は、イントラネット110を介して着信メッセージハンドラ部分208ICでクライアントセッション開始メッセージ202を受け取る。セッション識別子がない場合に、着信メッセージハンドラ部分208ICは、クライアントセッション開始メッセージ202を新規セッションに関するものと認識する。セッション識別子クリエータ212が、アクティブ化されて、要求された新規セッションの新しいセッション識別子を作成する。セッション識別子クリエータ212は、ホスト識別子214を確認し/取り出す。
The
セッション識別子クリエータ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へのロールオーバを有する)グローバルカウンタの使用の組合せならびに擬似乱数および/またはハッシュ化技法の使用の組合せなど、さまざまな技法を使用することができる。
In the described implementation, the first portion of session identifier 210 (ie, host identifier 214) is dedicated to identifying the
セッション識別子クリエータ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に送られる。
The
ネットワークゲートウェイ要素106は、クライアントセッション継続メッセージ206を受け取った時に、クライアント102が、含まれるセッション識別子210によって示される既存セッションの継続を試みていることを検出する。ルーティング動作216(C)で、ネットワークゲートウェイ要素106は、セッション識別子210を使用してクライアントセッション継続メッセージ206をルーティングする。具体的に言うと、ネットワークゲートウェイ要素106は、セッション識別子210の一部であり、これから抽出されたホスト識別子214を使用して、クライアントセッション継続メッセージ206をルーティングする。
When the
ホスト識別子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に転送することができる。
The
その代わりに、ホスト識別子214を、ホスト108のアドレスHにマッピングすることができる。このマッピングの形は、テーブル(または計算)を伴うが、このテーブルのエントリの個数「n」は、サーバクラスタ内、イントラネット110上、ウェブファーム内などのホスト108の個数と同一にすることができる。したがって、このテーブルは、有界の個数のエントリを有し、セッションごとの状態情報を含まない。上で使用した例を参照すると、各ホスト108が10000個のセッションをキャッシングし、500個のホスト108がある場合に、このテーブルは、これらのセッションの要求を効率的にルーティングするために、500個のエントリ(500万個ではなく)を使用することができる。
Instead, the
下の表1は、ホスト108のアドレスによってホスト識別子214をホスト108にリンクする、例示的なリンキングデータ構造である。
Table 1 below is an exemplary linking data structure that links
動作中に、ネットワークゲートウェイ要素106は、クライアント102から受け取られた時に、クライアントセッション継続メッセージ206のセッション識別子210からホスト識別子214(#)を抽出する。次に、ネットワークゲートウェイ要素106は、ホスト識別子214(#)を使用することによって表1のリンキングデータ構造などのリンキングデータ構造にアクセスして、それにリンクされたホストアドレスH#を確認する。このホストアドレスH#は、イントラネット110上のホスト108(#)のアドレスに対応し、クライアントセッション継続メッセージ206をホスト108(#)にルーティングするための宛先アドレスとして使用される。例示的なホスト識別子対ネットワークアドレスリンキングテーブルを、さらに、下で図6Aおよび6Bを参照して説明する。
In operation, the
図3に、ルーティングヒントを含めることができる例示的なセッションメッセージ302を示す。セッションメッセージ302は、1つまたは複数のセッションに関連するメッセージである。図からわかるように、セッションメッセージ302に、複数のフィールドが含まれる。この複数のフィールドに、セッション識別子210と、他のフィールド304によって表される1つまたは複数の他のフィールドが含まれる。
FIG. 3 illustrates an exemplary session message 302 that can include a routing hint. Session message 302 is a message associated with one or more sessions. As can be seen, the session message 302 includes a plurality of fields. The plurality of fields includes a
セッション識別子210に、少なくとも1つのホスト識別子214が含まれる。ホスト識別子214に、デバイス識別子306および任意選択としてアプリケーション識別子308が含まれる。デバイス識別子306に、ネットワークアドレス310またはキー312(A)を含めることができる。代替案では、ホスト識別子214にキー312(B)を含めることができる。
The
説明される実装では、セッションメッセージ302の1つまたは複数のフォーマットが、SSL/TLSなど、ネットワークまたは通信の標準規格またはプロトコルによって定義される。セッション識別子210は、特に適用可能な標準規格またはプロトコルによって定義されるように、セッションメッセージ302内のどこにでも置くことができる。他のフィールド304に、ソースアドレスおよび/または宛先アドレス、一般的なヘッダ情報、セキュリティタイプ情報、他のセッション関連情報、データ、これらのある組合せなどを含めることができる。たとえば、セッションメッセージ302を、TLS Protocol Version 1.0標準規格によって定義されたClient HelloメッセージまたはServer Helloメッセージとすることができ、セッション識別子210が、いずれかのTLS Helloメッセージの「SessionID」フィールドに対応することができる。セキュリティタイプ情報を含むフィールド304の例が、セッションメッセージ302を定式化しているセッション参加者(たとえば、クライアントまたはホスト)によってどの暗号オプションがサポートされるかを示す暗号フィールドである。
In the described implementation, one or more formats of the session message 302 are defined by a network or communication standard or protocol, such as SSL / TLS.
セッション識別子210に、ホスト識別子214および任意選択として一緒にセッション識別子を形成する他の値が含まれる。このセッション識別子は、セッションメッセージ302のセッション識別子210フィールドに投入される。ホスト識別子214は、セッション識別子210フィールドで分割され、散乱され、かつ/または散布されることを含めて、セッション識別子210用のフィールド内のどこにでも置くことができる。
説明される実装では、抽出を簡単にするために、セッション識別子210の、ホスト識別子214に対応するサブフィールドが、バイトの連続するシーケンスとして実現される。このバイトの連続するシーケンスは、セッション識別子210の最上位バイトから固定オフセットの場所に現れる。しかし、固定オフセットを、その代わりに最下位バイトからとすることができる。
In the described implementation, the subfield of
追加の柔軟性のために、ホスト識別子214を、たとえばSSL/TLSコンポーネントによって選択されるのではなく、外部から構成可能にすることができる。たとえば、ホスト識別子214を、レジストリキーからの値として読み取ることによって、外部から構成することができる。上で注記したように、管理者は、レジストリキー値を設定することによってまたはある他の機構を介するなど、ホスト識別子214を決定することができる。
For additional flexibility, the
ホスト識別子214を、その代わりに、セッション識別子210のフィールドと異なるフィールドに埋め込むことができる。たとえば、クライアント102に送られ、そのクライアント102が既存セッションの再開を要求している時に無変更で返される特定のフィールドを使用することができる。この代替案は、メッセージフォーマットおよび基礎になるプロトコルが、所望のセッションコンテキスト112を有するホスト108がこの特定のフィールドの値を作成/選択していることを許可するか要求する場合に、特に適用可能である。この代替案について、ネットワークゲートウェイ要素106は、この特定のフィールドの内容の少なくとも一部を使用して、ルーティング動作216を実行する。
The
ホスト識別子214に、デバイス識別子306が含まれ、アプリケーション識別子308も含めることができる。デバイス識別子306は、ホスト識別子214がホストするホスト108の/のためのデバイスに対応する。図からわかるように、デバイス識別子306に、ホスト108のデバイスを識別するネットワークアドレス310またはキー312(A)が含まれる。
The
ネットワークアドレス310は、ホスト108のデバイスのイントラネット110上のネットワークアドレスである。したがって、デバイス識別子306にネットワークアドレス310が含まれる場合に、ネットワークゲートウェイ要素106は、ホスト108に転送される1つまたは複数のパケットの宛先フィールドにデバイス識別子306を挿入することができる。
The
キー312(A)は、ホスト108のデバイスのイントラネット110上のネットワークアドレスにマッピングされる値である。このマッピングは、テーブル内でネットワークアドレスをルックアップすること、計算を実行すること(たとえば、式に従う、アルゴリズムを実装するなど)などによって実現することができる。たとえば、キー312(A)を、上で表1を参照して説明したものなどのデータ構造でホストアドレスHにリンクすることができる。キー312(A)がネットワークアドレス310にリンクされる例示的なテーブルを、さらに、下で図6Aを参照して説明する。
The key 312 (A) is a value mapped to the network address on the
ホスト識別子214にデバイス識別子306およびアプリケーション識別子308が含まれる場合に、ホスト識別子214に、アプリケーションエンドポイントが含まれる。アプリケーション識別子308は、デバイス識別子306によって識別されるホストデバイス上の特定のアプリケーションを識別する。したがって、デバイス識別子306およびアプリケーション識別子308を含むホスト識別子214は、単一のホスト108上にあり、かつ/または複数のホスト108にまたがって複製された複数のアプリケーションの中から特定のアプリケーションを識別することができる。
When the
デバイス識別子306を含むがアプリケーション識別子308を含まないホスト識別子214に、アプリケーションエンドポイントを含めることもできる。たとえば、これは、デバイスが1つのアプリケーションだけを有する時、デバイスがマルチホームである時、デバイスのNICが2つのIPアドレスを有する時などに、特に可能性が高い。どの場合でも、ホスト識別子214は、特定のアプリケーションならびに特定のホスト108を識別するように働く。その結果、クライアントセッション継続メッセージ206のルーティングを、要求するクライアント102とのセッションアフィニティを有する所望のアプリケーションに向けて迅速に実行することができる。
An application endpoint can also be included in the
ホスト識別子214に、その代わりにキー312(B)を含めることができる。キー312(B)は、(i)ホスト108のデバイスのイントラネット110上のネットワークアドレスに、および(ii)その上の特定のアプリケーションにマッピングされる値である。そのようなマッピングは、別々のアプリケーション識別子308を使用せずに、キー312(B)をアプリケーションエンドポイントにマッピングすることを可能にする。このマッピングは、テーブル内のネットワークアドレス/アプリケーション識別子対をルックアップすること、計算を実行すること(たとえば、式に従う、アルゴリズムを実装するなど)などによって実現することができる。たとえば、キー312(B)を、あるデータ構造でネットワークアドレス310およびアプリケーション識別子308にリンクすることができる。キー312(B)がネットワークアドレス310およびアプリケーション識別子308にリンクされる例示的なテーブルを、さらに、下で図6Bを参照して説明する。
The
もう1つの代替実装では、コードを、セッションメッセージ302のセッション識別子210のフィールドに埋め込むことができる。このコードは、セッション識別子210フィールド全体の一部を占めることができる。このコードは、ホスト108からネットワークゲートウェイ要素106および/またはクライアント102に情報(たとえば、データ、コマンドなど)を通信するのに使用することができる。セッションメッセージ302のセッション識別子フィールドに、コード自体および/またはコードを使用して作成されたセッション識別子210を投入することができる。クライアント102および/またはネットワークゲートウェイ要素106は、このコードを抽出し、そのままで、コードのマッピング(たとえば、ルックアップ、計算など)の後になど、通信された情報を利用することができる。
In another alternative implementation, the code can be embedded in the
図4は、ルーティングヒントを供給する例示的な方法を示す流れ図400である。流れ図400に、7つのブロック402〜414が含まれる。流れ図400の動作を、他の環境でならびにさまざまなハードウェアアーキテクチャおよびソフトウェア方式と共に実行することができるが、図1〜3(および5)が、この方法のある態様および例を示すのに特に使用される。たとえば、ホスト108が、説明される動作を実行することができる。
FIG. 4 is a flow diagram 400 illustrating an exemplary method for providing routing hints. The
ブロック402で、クライアントセッションメッセージを受け取る。たとえば、ホスト108が、クライアント102からクライアントセッションメッセージ202または206を受け取ることができる(たとえば、メッセージハンドラ208の着信メッセージハンドラ部分208ICで)。ブロック404で、受け取られたクライアントセッションメッセージにセッション識別子が含まれるかどうかを判定する。たとえば、受け取られたクライアントセッションメッセージ202または206(たとえば、セッションメッセージ302などのフォーマットの)を検査して、それがセッション識別子フィールドにセッション識別子210を有するかどうかを判定することができる。
At
受け取られたクライアントセッションメッセージにセッション識別子210が含まれる場合に、その受け取られたクライアントセッションメッセージは、クライアントセッション継続メッセージ(SCM)206であり、この方法は、ブロック412で継続される。その一方で、受け取られたクライアントセッションメッセージにセッション識別子210が含まれない場合には、受け取られたクライアントセッションメッセージは、クライアントセッション開始メッセージ(SIM)202であり、この方法は、ブロック406で継続される。
If the received client session message includes a
ブロック406で、ホスト識別子を用いてセッション識別子を作成する。たとえば、ホスト108のホスト識別子214が、セッション識別子クリエータ212によって、セッション識別子210を作成するのに使用される。セッション識別子クリエータ212は、他の値と共に、ホスト識別子214をセッション識別子210に挿入することができる。
At
ブロック408で、作成されたセッション識別子を用いてホストセッション開始メッセージを定式化する。たとえば、発信メッセージハンドラ部分208OGが、ホスト識別子214を含むセッション識別子210を投入されたホストセッション開始メッセージ204を定式化することができる(たとえば、セッションメッセージ302のフォーマットなどのフォーマットを使用して)。ブロック410で、ホストセッション開始メッセージを送る。たとえば、ホスト108が、ネットワーク104を介し、ネットワークゲートウェイ要素106を介してクライアント102にホストセッション開始メッセージ204を送ることができる。
At
その一方で、受け取られたクライアントセッションメッセージにセッション識別子が含まれると判定された(ブロック404で)場合に、ブロック412で、受け取られたセッション識別子を用いてホストセッション継続メッセージを定式化する。たとえば、発信メッセージハンドラ部分208OGが、受け取られたセッション識別子210(前に埋め込まれたホスト識別子214を含む可能性がある)を投入されたホストセッション継続メッセージ(図2には具体的に図示せず)を定式化することができる(たとえば、セッションメッセージ302のフォーマットなどのフォーマットを使用して)。ブロック414で、ホストセッション継続メッセージを送る。たとえば、ホスト108が、ネットワーク104を介し、ネットワークゲートウェイ要素106を介してクライアント102にホストセッション継続メッセージを送ることができる。
On the other hand, if it is determined (at block 404) that the received client session message includes a session identifier, at block 412 a host session continuation message is formulated using the received session identifier. For example, a host session continuation message (not specifically shown in FIG. 2) in which the outgoing message handler portion 208OG is populated with a received session identifier 210 (which may include a previously embedded
図5に、セッションメッセージと共にルーティングヒントを供給し、使用するもう1つの例示的な手法を示す。この例示的な手法は、ネットワークゲートウェイ要素106でのルーティングヒントの使用に焦点を合わせたものである。図からわかるように、クライアント102(1)、102(2)、…、102(m)が、ネットワーク104を介して、NGNのネットワークゲートウェイ要素106にアドレッシングされたメッセージをサブミットする。
FIG. 5 illustrates another exemplary technique for providing and using routing hints with session messages. This exemplary approach focuses on the use of routing hints at the
ネットワークゲートウェイ要素106は、これらの要求をホスト108(1)、108(2)、…、108(n)にルーティングする。各ホスト108(1)、108(2)、…、108(n)は、それぞれのホスト識別子214(1)、214(2)、…、214(n)に関連する。ホスト識別子214は、たとえば、特定の種類のセッションが潜在的に向けられる可能性があるエンドポイントのセットの中から1つのアプリケーションエンドポイントを一意に識別することができる。
The
説明される実装では、ネットワークゲートウェイ要素106が、ネットワーク負荷分散に関する。ネットワーク負荷分散(またはルーティング機能性を有する他のネットワークゲートウェイ)と共に、1つまたは複数のルーティングポリシ508を使用することができる。ルーティングポリシ508に、たとえば、ネットワークロードバランサに着信パケットおよび/または要求を指定された形でルーティングさせるために管理者がスクリプトを作成するかセットすることができるルーティングポリシを含めることができる。ルーティングポリシ508に、ホスト108のヘルスおよび負荷情報などのリアルタイムパラメータに頼る、より柔軟なおよび/または拡張的なルーティングポリシを含めることもできる。
In the described implementation, the
ネットワークゲートウェイ要素106のネットワーク負荷分散実装は、統合されたネットワーク負荷分散機能性を用いて実現することができる。この実装を、クライアントセッション継続メッセージ206(A)およびルーティング動作216(C)に関して説明する。ネットワークゲートウェイ要素106のネットワーク負荷分散実装は、分離されたネットワーク負荷分散機能性を用いて実現することもできる。この実装を、クライアントセッション継続メッセージ206(B)およびルーティング動作512に関して説明する。
A network load balancing implementation of the
分離された機能性を有するこの例示的なネットワーク負荷分散実装では、ネットワークゲートウェイ要素106に、フォワーダ502、クラシファイヤ504、およびホスト識別子(HI)対ネットワークアドレス(NA)リンキングテーブル506が含まれる。フォワーダ502は、それぞれネットワーク104およびイントラネット110を使用して、クライアント102とホスト108の間でパケットを転送する。クラシファイヤ504は、ネットワーク負荷分散機能性および/またはセッションアフィニティ保存機能性を実現するために、パケット、要求、接続などを分類して、ルーティング動作を実行する。
In this exemplary network load balancing implementation with isolated functionality,
フォワーダ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)が含まれる。
In operation of an integrated network load balancing implementation, client 102 (1) sends a client session continuation message 206 (A) over
統合されたネットワーク負荷分散機能性を有する実装では、ネットワークゲートウェイ要素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)にルーティングする。
In implementations with integrated network load balancing functionality, the
具体的に言うと、ネットワークゲートウェイ要素106は、ホスト108(1)にルーティングされるクライアントセッション継続メッセージ206(A)のパケットの宛先アドレスフィールドにホスト識別子214(1)を挿入することができる。この手法は、ホスト識別子214(1)にホスト108(1)のネットワークアドレスH1が含まれる時に効果的である。
Specifically, the
代替案では、ネットワークゲートウェイ要素106が、ネットワークアドレスH1へのホスト識別子214(1)のマッピングも実行することができる。たとえば、計算動作またはルックアップ動作を、そのようなマッピングのために実行することができる。計算動作について、ホスト識別子214(1)は、ある式、アルゴリズムなどを介してネットワークアドレスH1にマッピングされる。ルックアップ動作について、ホスト識別子214(1)は、ホスト識別子対ネットワークアドレスリンキングテーブル506など、ホスト識別子214(1)をネットワークアドレスH1にリンクするエントリを含むホスト識別子対ネットワークアドレステーブルにアクセスすることによって、ネットワークアドレスH1にマッピングされる。そのようなテーブルの例を、さらに、下で図6Aを参照して説明する。
Alternatively,
分離されたネットワーク負荷分散実装の動作では、クライアント102(2)が、ネットワーク104を介してアドレスNGNのネットワークゲートウェイ要素106にクライアントセッション継続メッセージ206(B)を送る。クライアント102(2)は、前にホスト108(2)でセッションを確立しており、その、前に確立されたセッションに割り当てられたセッション識別子210(2)を保存している。このセッション識別子210(2)に、ホスト108(2)に関連するホスト識別子214(2)が含まれる。クライアントセッション継続メッセージ206(B)に、セッション識別子210(2)が含まれる。
In operation of the isolated network load balancing implementation, the client 102 (2) sends a client session continuation message 206 (B) via the
分離されたネットワーク負荷分散実装機能性を有する実装では、フォワーダ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)に転送されなければならないことを示す。
In implementations with isolated network load balancing implementation functionality,
したがって、クラシファイヤ504およびフォワーダ502は、セッション識別子210(2)から抽出されたホスト識別子214(2)を使用して、クライアントセッション継続メッセージ206(B)をホスト108(2)に共同でルーティングする。ルーティング動作216(C)に関して上で説明したように、フォワーダ502およびクラシファイヤ504は、(i)宛先アドレスフィールドにホスト識別子214(2)を挿入することができ、(ii)ネットワークアドレスH2へのホスト識別子214(2)のマッピング(たとえば、計算、ルックアップなど)などを実行することができる。
Accordingly, classifier 504 and forwarder 502 jointly route client session continuation message 206 (B) to host 108 (2) using host identifier 214 (2) extracted from session identifier 210 (2). . As described above with respect to routing operation 216 (C),
ホスト識別子対ネットワークアドレスリンキングテーブル506を、クラシファイヤ504の一部または他の形でこれに関連するものとして説明した。ホスト識別子対ネットワークアドレスリンキングテーブル506は、ネットワークゲートウェイ要素106に置かれるものとして図示されているが、その代わりに異なるデバイス(たとえば、プロキシデバイス)に常駐することができる。そのようなプロキシデバイスに置かれる時に、分離されたまたは統合された(たとえば、ネットワーク負荷分散関連の)機能性を有するネットワークゲートウェイ要素106は、そこからホスト識別子対ネットワークアドレスリンキングテーブル506にアクセスすることができる。
Host identifier-to-network address linking table 506 has been described as part of classifier 504 or otherwise associated with it. Although the host identifier-to-network address linking table 506 is illustrated as being located at the
図6Aおよび6Bは、ルーティングヒントと共に使用されるホスト識別子214とネットワークアドレス310のリンキングを示す例示的なテーブル506(A)および506(B)である。ホスト識別子対ネットワークアドレスリンキングテーブル506(A)は、全般的に、ホスト識別子214がデバイスにマッピングされる実装に対応する。ホスト識別子対ネットワークアドレスリンキングテーブル506(B)は、全般的に、ホスト識別子214がアプリケーションエンドポイントにマッピングされる実装に対応する。しかし、ホスト識別子対ネットワークアドレスリンキングテーブル506(A)を、上で図3を参照して説明したように、アプリケーションエンドポイントにマッピングすることもできる。
6A and 6B are exemplary tables 506 (A) and 506 (B) showing the linking of the
図からわかるように、ホスト識別子対ネットワークアドレスリンキングテーブル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)が含まれる。
As can be seen, the host identifier to network address linking table 506 (A) links each
説明される実装では、テーブル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(#)にルーティングするのに使用するために抽出される。
In the described implementation, table 506 (A) includes “n” entries, where n is equal to the number of
図からわかるように、ホスト識別子対ネットワークアドレスリンキングテーブル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)が含まれる。
As can be seen, the host identifier-to-network address linking table 506 (B) links each
説明される実装では、テーブル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)に対応する。
In the described implementation, table 506 (B) contains “w” entries, where w is equal to the number of application endpoints on
さらに、ホスト108(n)は、ホスト識別子214(w)に対応し、アプリケーション識別子308(z)に対応する1つのアプリケーションを有し、アドレスHnは、ネットワークアドレス310(n)に対応する。変数「z」は、各アプリケーション識別子308が各アプリケーションインストレーションに一意である場合に、アプリケーションエンドポイントの個数wと等しくすることができる。その一方で、アプリケーション識別子308が、同一のアプリケーションのアプリケーションインストレーションの間で共有される場合には、zがwより小さくなる可能性がある。
Further, the host 108 (n) corresponds to the host identifier 214 (w), has one application corresponding to the application identifier 308 (z), and the address Hn corresponds to the network address 310 (n). The variable “z” may be equal to the number w of application endpoints where each
図7は、ルーティングヒントを使用する例示的な方法を示す流れ図700である。流れ図700に、8つのブロック702〜716が含まれる。流れ図700の動作を、他の環境でならびにさまざまなハードウェアアーキテクチャおよびソフトウェア方式を用いて実行することができるが、図1〜3および5〜6が、この方法のある態様および例を示すのに特に使用される。たとえば、1つまたは複数のネットワークゲートウェイ要素106が、説明される動作を実行することができる。
FIG. 7 is a flow diagram 700 illustrating an exemplary method for using routing hints. The flow diagram 700 includes eight blocks 702-716. Although the operations of
ブロック702で、クライアントメッセージを受け取る。たとえば、ネットワークゲートウェイ要素106が、ネットワーク104を介してクライアント102からクライアントメッセージを受け取ることができる。ブロック704で、受け取られたクライアントメッセージの内容を検査する。たとえば、ネットワークゲートウェイ要素106が、セッション識別子210のフィールドなど、セッションメッセージ302の1つまたは複数のフィールドを検査することができる。
At
ブロック706で、受け取られたクライアントメッセージがセッション関連であるかどうかを判定する。たとえば、受け取られたクライアントメッセージに、セッション識別子210のフィールドを有するセッションメッセージ302が含まれる場合に、その受け取られたクライアントメッセージは、セッション関連である。その一方で、受け取られたクライアントメッセージが、セッション識別子210のフィールドを有しない場合に、その受け取られたクライアントメッセージは、セッション関連ではなく、この方法は、ブロック708で継続される。
At
ブロック708で、受け取られたクライアントメッセージを、デフォルトポリシを使用してルーティングする。たとえば、ネットワークゲートウェイ要素106は、デフォルトネットワーク負荷分散ポリシなどのルーティングポリシ508の一般的なルーティングポリシを使用して、受け取られたクライアントメッセージをルーティングすることができる。破線の矢印718Aによって示されているように、ネットワークゲートウェイ要素106は、その後、次のクライアントメッセージの受け取りを待つことができる。
At
その一方で、受け取られたクライアントメッセージがセッション関連であると判定される(ブロック706で)場合に、ブロック710で、セッション識別子フィールドを検査する。たとえば、ネットワークゲートウェイ要素106が、受け取られたクライアントセッションメッセージ302のセッション識別子フィールドを検査することができる。ブロック712で、クライアントがセッション識別子フィールドを使用してセッション識別子を指定したかどうかを判定する。たとえば、ネットワークゲートウェイ要素106は、セッション識別子210がセッションメッセージ302のセッション識別子フィールドに投入されたかどうかを判定することができる。
On the other hand, if the received client message is determined to be session related (at block 706), at
セッション識別子が指定されなかったと判定される(ブロック712で)場合に、ブロック708で、受け取られたクライアントセッション開始メッセージ202をデフォルトポリシを使用してルーティングすることができる。その一方で、セッション識別子がクライアントによって指定されたと判定される(ブロック712で)場合に、ブロック714で、指定されたセッション識別子からホスト識別子を抽出する。たとえば、ネットワークゲートウェイ要素106が、受け取られたクライアントセッション継続メッセージ206で指定されたセッション識別子210からホスト識別子214を抽出することができる。
If it is determined that the session identifier was not specified (at block 712), then at
ブロック716で、抽出されたホスト識別子を使用して、受け取られたクライアントメッセージをルーティングする。たとえば、受け取られたクライアントセッション継続メッセージ206を、ネットワークゲートウェイ要素106によって、ホスト識別子214に関連するホスト108にルーティングすることができる。このルーティングに、ホスト108に転送される1つまたは複数のパケットの宛先フィールドへのホスト識別子214の変更されない挿入または少なくとも1つのネットワークアドレス310へのホスト識別子214のマッピングを含めることができる。このマッピングは、ホスト識別子214を使用してテーブル506内でネットワークアドレス310をルックアップすること、ネットワークアドレス310をもたらすホスト識別子214に対する計算(たとえば、式に従う、アルゴリズムを実装するなど)を実行することなどによって実現することができる。
At
特にネットワークゲートウェイ要素106がネットワークロードバランサである実装について、ネットワークゲートウェイ要素106は、複数のホスト108に関するヘルス情報および/または負荷情報へのアクセスを有することができる。このヘルス情報および/または負荷情報は、ヘルスおよび/または負荷の理由のゆえに抽出されたホスト識別子214に関連する宛先(たとえば、ホスト108および/またはそのアプリケーションエンドポイント)がセッション継続を処理するのに適さないかそれができないことを示すことができる。その場合に、ネットワークゲートウェイ要素106は、クライアント102がホスト識別子214を含むセッション識別子210を指定した時であっても、デフォルトルーティングポリシに関するブロック708の動作を実行することができる。
Particularly for implementations in which the
ブロック716の動作の後に、破線の矢印718Bによって示されているように、ネットワークゲートウェイ要素106は、次のクライアントメッセージの受け取りを待つことができる。ネットワークゲートウェイ要素106は、抽出されたホスト識別子214のタイプに依存する複数の形で、抽出されたホスト識別子214を使用して、受け取られたクライアントセッション継続メッセージ206をルーティングすることができる。
After the operation of
たとえば、ネットワークゲートウェイ要素106は、ホスト識別子214にデバイス識別子306およびアプリケーション識別子308が含まれる場合、またはキー312(B)がホスト108のデバイスおよびアプリケーションにマッピングされる場合に、受け取られたクライアントセッション継続メッセージ206を所期のアプリケーションに直接にルーティングすることができる。さらに、ネットワークゲートウェイ要素106は、ホスト識別子214のデバイス識別子306のネットワークアドレス310実装を使用して、受け取られたクライアントセッション継続メッセージ206をアフィニタイズ(affinitize)されたホスト108にルーティングすることができるものとすることができ、ここで、ネットワークアドレス310は、1つまたは複数のルーティングされるパケットの宛先アドレスとして使用される。
For example, the
代替案では、ネットワークゲートウェイ要素106が、ホスト識別子214のデバイス識別子306のキー312(A)実装を使用して、アフィニタイズされたホスト108のデバイスのネットワークアドレス310をルックアップすることができる。たとえば、キー312(#)を使用して、キー312(A)をホスト108のネットワークアドレス310にマッピングするテーブル506(A)(たとえば、データ構造)にアクセスすることができる。キー312(#)を有するエントリ602(#A)が、このデータ構造内で突き止められる。突き止められたエントリ602(#A)内のキー312(#)にリンクされたネットワークアドレス310(#)が、抽出され、アフィニタイズされたホスト108にクライアントセッション継続メッセージ206をルーティングするのに使用される。
Alternatively, the
さらに、ネットワークゲートウェイ要素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をルーティングするのに使用される。
Further, the
図1〜7の動作、態様、特徴、コンポーネントなどは、複数のブロックに分割された図に示されている。しかし、図1〜7のこれらの複数のブロックが説明され、かつ/または図示された順序、個数、配置、相互接続、レイアウトなどは、制限として解釈されることを意図されたものではなく、任意の個数のブロックを任意の形で組み合わせ、再配置し、増補し、省略するなどを行って、ルーティングヒントの1つまたは複数のシステム、方法、デバイス、プロシージャ、媒体、アプリケーションプログラミングインターフェース(API)、装置、配置などを実装することができる。さらに、本明細書の説明に、特定の実装(および図8の例示的なオペレーティング環境)への言及が含まれるが、図示され、かつ/または説明された実装を、任意の適当なハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せで、任意の適当なネットワーク編成、トランスポート/通信プロトコル、クライアント−サーバアーキテクチャなどを使用して実装することができる。 The operations, aspects, features, components, etc. of FIGS. 1-7 are shown in a diagram divided into a plurality of blocks. However, the order, number, arrangement, interconnections, layout, etc., illustrated and / or illustrated in these blocks of FIGS. 1-7 are not intended to be construed as limitations and are arbitrary. One or more systems, methods, devices, procedures, media, application programming interfaces (APIs) of routing hints, in any number of combinations, rearrangements, augmentations, omissions, etc. Device, arrangement, etc. can be implemented. Further, although the description herein includes references to a particular implementation (and the exemplary operating environment of FIG. 8), the illustrated and / or described implementation may be replaced with any suitable hardware, It can be implemented in software, firmware, or a combination thereof using any suitable network organization, transport / communication protocol, client-server architecture, etc.
図8に、本明細書に記載のルーティングヒントの少なくとも1つのシステム、デバイス、装置、コンポーネント、配置、プロトコル、手法、方法、プロシージャ、媒体、API、これらの組合せなどを実装する(全体をまたは部分的に)ことができる例示的なコンピューティング(または一般デバイス)オペレーティング環境800を示す。オペレーティング環境800は、下で説明するコンピュータおよびネットワークのアーキテクチャで、または独立の状況で利用することができる。
FIG. 8 implements (in whole or in part) at least one system, device, apparatus, component, arrangement, protocol, technique, method, procedure, medium, API, combinations thereof, etc. of the routing hints described herein. 2 illustrates an exemplary computing (or general device) operating
例示的なオペレーティング環境800は、環境の1例にすぎず、適用可能なデバイス(コンピュータ、ネットワークノード、エンターテイメントデバイス、モバイル機器、一般的な電子デバイスなど)アーキテクチャの使用または機能性の範囲に関する制限を提案することを意図されたものではない。オペレーティング環境800(またはそのデバイス)を、図8に示されたコンポーネントのいずれかまたはその組合せに対する依存性または要件を有すると解釈してもならない。
The
さらに、ルーティングヒントを、多数の他の汎用デバイスまたは特殊目的デバイス(コンピューティングシステムを含む)の環境またはコンフィギュレーションを用いて実装することができる。使用するのに適する可能性がある周知のデバイス、システム、環境、および/またはコンフィギュレーションの例に、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、携帯情報端末(PDA)または携帯電話機、腕時計、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルコンシューマエレクトロニクス、ビデオゲーム機、ゲーム機、ポータブルまたはハンドヘルドのゲーミングユニット、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、ネットワークノード、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境またはマルチプロセッシングコンピューティング環境、これらのある組合せなどが含まれるが、これらに制限はされない。 Furthermore, routing hints can be implemented using the environment or configuration of many other general purpose or special purpose devices (including computing systems). Examples of well-known devices, systems, environments and / or configurations that may be suitable for use include personal computers, server computers, thin clients, thick clients, personal digital assistants (PDAs) or mobile phones, watches, Handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, video game consoles, game consoles, portable or handheld gaming units, network PCs, minicomputers, mainframe computers, networks Node, distributed computing environment or multi-processing machine containing any of the above systems or devices Computing environment, etc. some combination thereof, these limitations are not.
ルーティングヒントの実装を、プロセッサ実行可能命令の全般的な文脈で説明することができる。一般に、プロセッサ実行可能命令には、特定のタスクを実行し、かつ/または可能にし、かつ/または特定の抽象データ型を実装する、ルーチン、プログラム、プロトコル、オブジェクト、インターフェース、コンポーネント、データ構造などが含まれる。本明細書で、ある実装で説明されたルーティングヒントは、通信リンクおよび/または通信ネットワークを介して接続されたリモートリンクされた処理デバイスによってタスクが実行される分散処理環境で実践することもできる。特に分散コンピューティング環境で、プロセッサ実行可能命令を、別々の記憶媒体に置き、異なるプロセッサによって実行し、かつ/または伝送媒体を介して伝搬することができる。 Routing hint implementations can be described in the general context of processor-executable instructions. Generally, processor-executable instructions include routines, programs, protocols, objects, interfaces, components, data structures, etc. that perform and / or enable specific tasks and / or implement specific abstract data types. included. The routing hints described herein in an implementation may also be practiced in distributed processing environments where tasks are performed by remote linked processing devices that are connected through a communication link and / or a communication network. In particular, in a distributed computing environment, processor-executable instructions can be located on separate storage media, executed by different processors, and / or propagated through a transmission medium.
例示的なオペレーティング環境800に、コンピュータ802の形の汎用コンピューティングデバイスが含まれ、コンピュータ802に、計算/処理能力を有するすべての(たとえば電子)デバイスを含めることができる。コンピュータ802のコンポーネントに、1つまたは複数のプロセッサまたは処理ユニット804、システムメモリ806、およびプロセッサ804を含むさまざまなシステムコンポーネントをシステムメモリ806に結合するシステムバス808を含めることができるが、これに制限はされない。
The
プロセッサ804は、それを形成する材料またはその中で使用される処理機構によって制限されない。たとえば、プロセッサ804は、半導体および/またはトランジスタ(たとえば、電子集積回路(IC))からなるものとすることができる。その文脈で、プロセッサ実行可能命令は、電子的に実行可能な命令とすることができる。代替案では、プロセッサ804の、したがってコンピュータ802の機構に、量子コンピューティング、光コンピューティング、機械コンピューティング(たとえば、ナノテクノロジを使用する)などを含めることができるが、これに制限はされない。
The
システムバス808は、メモリバスまたはメモリコントローラ、ポイントツーポイント接続、スイッチングファブリック、周辺バス、accelerated graphics port、およびさまざまなバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含む多数のタイプの有線または無線のバス構造のいずれかの1つまたは複数を表す。たとえば、そのようなアーキテクチャに、Industry Standard Architecture(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、メザニンバスとも称するPeripheral Component Interconnects(PCI)バス、これらのある組合せなどを含めることができる。
The
コンピュータ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に接続することができる。
The
ディスクドライブおよびそれに関連するプロセッサアクセス可能媒体は、データ構造、プログラムモジュール、および他のデータなどのプロセッサ実行可能命令の不揮発性ストレージをコンピュータ802に提供する。例示的なコンピュータ802には、ハードディスク816、リムーバブル磁気ディスク820、およびリムーバブル光学ディスク824が示されているが、磁気カセットまたは他の磁気記憶デバイス、フラッシュメモリ、コンパクトディスク(CD)、ディジタル多用途ディスク(DVD)、または他の光学ストレージ、RAM、ROM、電気的消去可能プログラマブル読取専用メモリ(EEPROM)などの、他のタイプのプロセッサアクセス可能媒体に、デバイスによってアクセス可能な命令を保管できることを諒解されたい。そのような媒体に、いわゆる特殊目的ICチップまたはハードワイヤドICチップを含めることもできる。言い換えると、例示的なオペレーティング環境800の記憶媒体を実現するのに、どのプロセッサアクセス可能媒体でも利用することができる。
The disk drive and associated processor-accessible medium provide
任意の個数のプログラムモジュール(または命令/コードの他のユニットもしくはセット)を、ハードディスク816、磁気ディスク820、光学ディスク824、ROM 812、および/またはRAM 810に保管することができる。これらのプログラムモジュールに、一般的な例として、オペレーティングシステム828、1つまたは複数のアプリケーションプログラム830、他のプログラムモジュール832、およびプログラムデータ834を含めることができる。
Any number of program modules (or other units or sets of instructions / code) may be stored on the
ユーザは、キーボード836およびポインティングデバイス838(たとえば、「マウス」)などの入力デバイスを介してコンピュータ802にコマンドおよび/または情報を入力することができる。他の入力デバイス840(具体的には図示せず)に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、シリアルポート、スキャナ、および/または類似物を含めることができる。これらおよび他の入力デバイスは、システムバス808に結合された入出力インターフェース842を介して処理ユニット804に接続される。しかし、入力デバイスおよび/または出力デバイスを、その代わりに、パラレルポート、ゲームポート、universal serial bus(USB)ポート、赤外線ポート、IEEE 1394(「Firewire」)インターフェース、IEEE 802.11無線インターフェース、Bluetooth(登録商標)インターフェースなどの他のインターフェースおよびバス構造によって接続することができる。
A user can enter commands and / or information into
モニタ/ビュースクリーン844または他のタイプのディスプレイデバイスも、ビデオアダプタ846などのインターフェースを介してシステムバス808に接続することができる。ビデオアダプタ846(または別のコンポーネント)に、グラフィックス集中型計算を処理し、要求の厳しいディスプレイ要求を処理するグラフィックスカードを含めても含めなくてもよい。通常、グラフィックスカードに、グラフィックスの迅速な表示およびグラフィックス動作の実行を容易にするために、グラフィックス処理ユニット(GPU)、ビデオRAM(VRAM)などが含まれる。モニタ844の他に、他の出力周辺デバイスに、入出力インターフェース842を介してコンピュータ802に接続することができる、スピーカ(図示せず)およびプリンタ848などのコンポーネントを含めることができる。
A monitor / view screen 844 or other type of display device can also be connected to the
コンピュータ802は、リモートコンピューティングデバイス850などの1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。たとえば、リモートコンピューティングデバイス850を、パーソナルコンピュータ、ポータブルコンピュータ(たとえば、ラップトップコンピュータ、タブレットコンピュータ、PDA、モバイルステーションなど)、パームサイズまたはポケットサイズのコンピュータ、腕時計、ゲーム機、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、別のネットワークノード、または上にリストしたもう1つのデバイスタイプなどとすることができる。しかし、リモートコンピューティングデバイス850は、コンピュータ802に関して本明細書で説明した要素および特徴の多くまたはすべてを含めることができるポータブルコンピュータとして図示されている。
コンピュータ802とリモートコンピュータ850の間の論理接続は、ローカルエリアネットワーク(LAN)852および一般的な広域ネットワーク(WAN)854として図示されている。そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、インターネット、固定電話網および携帯電話網、アドホック無線ネットワークおよびインフラストラクチャ無線ネットワーク、他の無線ネットワーク、ゲーミングネットワーク、これらのある組合せなどでありふれたものである。そのようなネットワークおよび通信接続が、伝送媒体の例である。
The logical connections between the
LANネットワーキング環境で実装される時に、コンピュータ802は、通常、ネットワークインターフェースまたはネットワークアダプタ856を介してLAN 852に接続される。WANネットワーキング環境で実装される時に、コンピュータ802に、通常、WAN 854を介する通信を確立する、モデム858または他の手段が含まれる。モデム858は、コンピュータ802に内蔵するか外付けとすることができるが、入出力インターフェース842または他の適当な機構を介してシステムバス808に接続することができる。図示のネットワーク接続が、例示的であることと、コンピュータ802と850の間の通信リンクを確立する他の手段を使用できることを諒解されたい。
When implemented in a LAN networking environment, the
さらに、特にサーバ用に設計された他のハードウェアを使用することができる。たとえば、SSLアクセラレーションカードを使用して、SSL計算をオフロードすることができる。さらに、特にネットワーク負荷分散オペレーティング環境で、ネットワークインターフェースまたはネットワークアダプタ856上(たとえば、ネットワークインターフェースカード上)のTPCオフロードハードウェアおよび/またはパケットクラシファイヤをサーバデバイスにインストールし、使用することができる。 In addition, other hardware specifically designed for the server can be used. For example, an SSL acceleration card can be used to offload SSL calculations. In addition, TPC offload hardware and / or packet classifiers on a network interface or network adapter 856 (eg, on a network interface card) can be installed and used on a server device, particularly in a network load balancing operating environment.
オペレーティング環境800と共に図示されたものなどのネットワーク化された環境で、コンピュータ802に関して図示されたプログラムモジュールもしくは他の命令またはその一部を、リモート媒体ストレージデバイスに全体的にまたは部分的に保管することができる。たとえば、リモートアプリケーションプログラム860が、リモートコンピュータ850のメモリコンポーネントに常駐するが、コンピュータ802を介して使用可能または他の形でアクセス可能とすることができる。また、例示のために、アプリケーションプログラム830と、オペレーティングシステム828などの他のプロセッサ実行可能命令が、本明細書では別個のブロックとして示されているが、そのようなプログラム、コンポーネント、おおび他の命令が、さまざまな時にコンピューティングデバイス802(および/またはリモートコンピューティングデバイス850)の異なるストレージコンポーネントに常駐し、コンピュータ802(および/またはリモートコンピューティングデバイス850)のプロセッサ804によって実行されることを諒解されたい。
In a networked environment, such as that illustrated with
システム、媒体、デバイス、方法、プロシージャ、装置、技法、方式、手法、プロシージャ、配置、および他の実装を、構造的、論理的、アルゴリズム的、および機能的な特徴および/または図に固有の言葉で説明したが、請求項で定義される本発明が、説明された特定の特徴または図面に必ずしも制限されないことを理解されたい。そうではなく、特定の特徴および図面は、請求される発明を実装する例示的な形として開示されたものである。 System, media, device, method, procedure, apparatus, technique, scheme, approach, procedure, arrangement, and other implementation, structural, logical, algorithmic, and functional features and / or diagrams specific terms However, it is to be understood that the invention as defined in the claims is not necessarily limited to the specific features or drawings described. Rather, the specific features and drawings are disclosed as exemplary forms of implementing the claimed invention.
Claims (8)
セッションメッセージのセッション識別子フィールドからホスト識別子を確認する動作であって、前記ホスト識別子は、ホストのネットワークアドレスを含む動作と、
前記セッションメッセージを含むパケットを、前記パケットの宛先フィールドに前記ネットワークアドレスを挿入することによりルーティングする動作と
を実行するように装置に指示するプロセッサ実行可能命令を含むことを特徴とするプロセッサアクセス可能な記録媒体。 When executed
An operation of confirming a host identifier from a session identifier field of a session message, the host identifier including an operation including a network address of the host ;
A processor-accessible instruction for instructing a device to perform the operation of routing the packet containing the session message by inserting the network address in a destination field of the packet. recoding media.
前記セッションメッセージの前記セッション識別子フィールドから前記ホスト識別子を連続するブロックとして抽出する動作
を含むことを特徴とする請求項1に記載のプロセッサアクセス可能な記録媒体。 The operation to check is
The processor-accessible recording medium according to claim 1, further comprising: an operation of extracting the host identifier as a continuous block from the session identifier field of the session message.
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行できるプロセッサ実行可能命令を含む媒体と
を含み、前記プロセッサ実行可能命令は、
ホスト識別子を含むセッション識別子を有するセッションメッセージを受け取る動作であって、前記ホスト識別子は、ホストのネットワークアドレスを含む動作と、
前記セッションメッセージを含むパケットを、前記パケットの宛先フィールドに前記ネットワークアドレスを挿入することによりルーティングする動作と
を実行するように前記装置に指示するように適合されている
ことを特徴とする装置。 A device,
At least one processor;
A medium containing processor-executable instructions that can be executed by the at least one processor, the processor-executable instructions comprising:
Receiving a session message having a session identifier including a host identifier , wherein the host identifier includes a network address of the host ;
An apparatus adapted to instruct the apparatus to perform an operation of routing a packet containing the session message by inserting the network address in a destination field of the packet .
前記セッション識別子を有する前記セッションメッセージをクライアントから受け取る動作であって、前記セッションメッセージは、ホストに関連するセッションコンテキストに関連し、前記ホストは、前記ホスト識別子に関連する、動作
を含むことを特徴とする請求項3に記載の装置。 The action to receive is
Receiving the session message having the session identifier from a client, wherein the session message is associated with a session context associated with a host, and the host is associated with the host identifier. The apparatus according to claim 3 .
前記ホスト識別子に関連するホストへの前記ルーティングに基づいて前記セッションメッセージを前記装置から送るさらなる動作
を実行するように前記装置に指示するように適合されていることを特徴とする請求項3に記載の装置。 The processor executable instructions are:
4. The apparatus of claim 3 , wherein the apparatus is adapted to instruct the apparatus to perform a further action of sending the session message from the apparatus based on the routing to a host associated with the host identifier. Equipment.
受け取られたセッションメッセージは受け取られたセッション識別子を含むかどうかを判定する動作、及び、
前記受け取られたセッションメッセージは受け取られたセッション識別子を含まないと判定された場合に、少なくとも1つのデフォルトルーティングポリシに従って前記受け取られたセッションメッセージをルーティングする動作、
をさらに実行するように前記装置に指示するように適合されていることを特徴とする請求項3に記載の装置。 The processor executable instructions are:
An operation of determining whether the received session message includes a received session identifier; and
Routing the received session message according to at least one default routing policy if it is determined that the received session message does not include a received session identifier;
4. The apparatus of claim 3 , wherein the apparatus is adapted to instruct the apparatus to further perform.
セッションメッセージのセッション識別子フィールドからホスト識別子を確認する動作であって、前記ホスト識別子は、ホストのネットワークアドレスを含む動作と、
前記セッションメッセージを含むパケットを、前記パケットの宛先フィールドに前記ネットワークアドレスを挿入することによりルーティングする動作と
を実行するように装置に指示するプロセッサ実行可能命令を含み、
前記セッション識別子フィールドに投入されるセッション識別子は、前記ホスト識別子を含む第1の部分と、前記セッション識別子の一意性を高める第2の部分を含み、
前記第1の部分は、所与のクラスタのホストにまたがって一意であることを特徴とするプロセッサアクセス可能な記録媒体。 When executed
An operation of confirming a host identifier from a session identifier field of a session message, the host identifier including an operation including a network address of the host ;
A processor-executable instruction for instructing a device to perform the operation of routing the packet containing the session message by inserting the network address in a destination field of the packet ;
The session identifier entered in the session identifier field includes a first portion including the host identifier and a second portion that increases the uniqueness of the session identifier;
The processor-accessible recording medium, wherein the first part is unique across hosts of a given cluster .
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/639,516 US7882251B2 (en) | 2003-08-13 | 2003-08-13 | Routing hints |
US10/639,727 | 2003-08-13 | ||
US10/639,727 US8266294B2 (en) | 2003-08-13 | 2003-08-13 | Routing hints |
US10/639,516 | 2003-08-13 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005508267A Division JP2007521684A (en) | 2003-08-13 | 2003-08-18 | Routing hint |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009260988A JP2009260988A (en) | 2009-11-05 |
JP4828619B2 true JP4828619B2 (en) | 2011-11-30 |
Family
ID=34221832
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005508267A Pending JP2007521684A (en) | 2003-08-13 | 2003-08-18 | Routing hint |
JP2009151291A Expired - Fee Related JP4828619B2 (en) | 2003-08-13 | 2009-06-25 | Routing hint |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005508267A Pending JP2007521684A (en) | 2003-08-13 | 2003-08-18 | Routing hint |
Country Status (14)
Country | Link |
---|---|
EP (1) | EP1654665A4 (en) |
JP (2) | JP2007521684A (en) |
KR (1) | KR101026600B1 (en) |
AU (1) | AU2003263873B2 (en) |
BR (1) | BR0318416A (en) |
CA (1) | CA2532185A1 (en) |
IL (1) | IL173157A (en) |
MX (1) | MXPA06001530A (en) |
MY (1) | MY144263A (en) |
NO (1) | NO20060471L (en) |
NZ (1) | NZ544663A (en) |
RU (1) | RU2365046C2 (en) |
TW (1) | TWI337822B (en) |
WO (1) | WO2005020085A1 (en) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266294B2 (en) | 2003-08-13 | 2012-09-11 | Microsoft Corporation | Routing hints |
US7882251B2 (en) | 2003-08-13 | 2011-02-01 | 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 (en) * | 2005-12-08 | 2008-04-29 | 한국전자통신연구원 | Object-based storage system using PMEM useful for high speed transmission with DMA and method thereof |
KR100892609B1 (en) | 2007-03-22 | 2009-04-09 | 주식회사 올앳 | System and method for secure communication, and a medium having computer readable program executing the method |
CN101296176B (en) * | 2007-04-25 | 2010-12-22 | 阿里巴巴集团控股有限公司 | Data processing method and apparatus based on cluster |
US8447881B2 (en) * | 2008-09-02 | 2013-05-21 | Microsoft Corporation | Load balancing for services |
JP5218323B2 (en) * | 2009-08-07 | 2013-06-26 | 富士通株式会社 | Information processing method and program related to relay device and transfer rule |
TWI396089B (en) * | 2009-10-16 | 2013-05-11 | Moxa Inc | System for using multi-channels to transmit serial data according to arguments and method thereof |
PL2501107T3 (en) * | 2011-03-15 | 2014-08-29 | Amadeus Sas | Method and system for providing a session in a heterogeneous environment |
JP2013239045A (en) * | 2012-05-15 | 2013-11-28 | Hitachi Ltd | Thin client system and remote access method |
KR102043658B1 (en) * | 2013-08-30 | 2019-11-12 | 한국전력공사 | Apparatus and method for transferring data only in one direction |
CN111385377B (en) * | 2020-03-03 | 2022-08-09 | 深信服科技股份有限公司 | IP address conflict processing method, equipment and storage medium |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05327704A (en) * | 1992-05-15 | 1993-12-10 | Oki Electric Ind Co Ltd | Broadcast system and message generating device |
JPH1051459A (en) * | 1996-07-31 | 1998-02-20 | Oki Electric Ind Co Ltd | Atm exchange, atm network and multi-cast setting method |
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 |
US6539494B1 (en) * | 1999-06-17 | 2003-03-25 | Art Technology Group, Inc. | Internet server session backup apparatus |
US6374300B2 (en) | 1999-07-15 | 2002-04-16 | F5 Networks, Inc. | Method and system for storing load balancing information with an HTTP cookie |
JP2001265680A (en) * | 2000-03-15 | 2001-09-28 | Fujitsu Ltd | Device and method for managing session of plural media |
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 (en) * | 2000-12-05 | 2002-06-21 | Sony Corp | Communication relay system, communication relay method, and communication terminal, and program storage medium |
JP2002189646A (en) * | 2000-12-22 | 2002-07-05 | Matsushita Electric Ind Co Ltd | Repeating installation |
JP3963690B2 (en) * | 2001-03-27 | 2007-08-22 | 富士通株式会社 | Packet relay processor |
JP2002351760A (en) * | 2001-05-30 | 2002-12-06 | Mitsubishi Electric Corp | Device and method for decentralizing server load, and program making computer implement the same method |
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 |
-
2003
- 2003-08-18 EP EP03818350A patent/EP1654665A4/en not_active Ceased
- 2003-08-18 BR BRPI0318416-1A patent/BR0318416A/en not_active IP Right Cessation
- 2003-08-18 AU AU2003263873A patent/AU2003263873B2/en not_active Ceased
- 2003-08-18 RU RU2006104109/09A patent/RU2365046C2/en not_active IP Right Cessation
- 2003-08-18 WO PCT/US2003/025747 patent/WO2005020085A1/en active Application Filing
- 2003-08-18 JP JP2005508267A patent/JP2007521684A/en active Pending
- 2003-08-18 MX MXPA06001530A patent/MXPA06001530A/en active IP Right Grant
- 2003-08-18 CA CA002532185A patent/CA2532185A1/en not_active Abandoned
- 2003-08-18 KR KR1020067001629A patent/KR101026600B1/en active IP Right Grant
- 2003-08-18 NZ NZ544663A patent/NZ544663A/en not_active IP Right Cessation
- 2003-08-20 TW TW092122932A patent/TWI337822B/en not_active IP Right Cessation
- 2003-08-20 MY MYPI20033159A patent/MY144263A/en unknown
-
2006
- 2006-01-16 IL IL173157A patent/IL173157A/en active IP Right Grant
- 2006-01-30 NO NO20060471A patent/NO20060471L/en unknown
-
2009
- 2009-06-25 JP JP2009151291A patent/JP4828619B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR20060070529A (en) | 2006-06-23 |
IL173157A (en) | 2011-10-31 |
AU2003263873A1 (en) | 2005-03-10 |
JP2007521684A (en) | 2007-08-02 |
TWI337822B (en) | 2011-02-21 |
BR0318416A (en) | 2006-08-01 |
KR101026600B1 (en) | 2011-04-04 |
NO20060471L (en) | 2006-03-16 |
WO2005020085A1 (en) | 2005-03-03 |
TW200507548A (en) | 2005-02-16 |
EP1654665A1 (en) | 2006-05-10 |
IL173157A0 (en) | 2006-06-11 |
MY144263A (en) | 2011-08-29 |
MXPA06001530A (en) | 2006-05-15 |
EP1654665A4 (en) | 2010-06-30 |
AU2003263873B2 (en) | 2010-04-08 |
NZ544663A (en) | 2008-09-26 |
RU2006104109A (en) | 2006-07-27 |
JP2009260988A (en) | 2009-11-05 |
RU2365046C2 (en) | 2009-08-20 |
CA2532185A1 (en) | 2005-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4828619B2 (en) | Routing hint | |
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 (en) | Network load balancing with connection manipulation | |
JP4429059B2 (en) | Communication control method and program, communication control system, and communication control related apparatus | |
US10412122B1 (en) | Dynamic per-session NAT-behavior selection | |
US11818104B2 (en) | Anonymous proxying | |
US20230412690A1 (en) | Non-translated port oversubscribing for a proxy device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110209 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110308 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110608 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110613 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110701 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110909 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110914 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140922 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |