JP4942921B2 - ホスト状態情報を用いるネットワーク負荷分散 - Google Patents

ホスト状態情報を用いるネットワーク負荷分散 Download PDF

Info

Publication number
JP4942921B2
JP4942921B2 JP2004192284A JP2004192284A JP4942921B2 JP 4942921 B2 JP4942921 B2 JP 4942921B2 JP 2004192284 A JP2004192284 A JP 2004192284A JP 2004192284 A JP2004192284 A JP 2004192284A JP 4942921 B2 JP4942921 B2 JP 4942921B2
Authority
JP
Japan
Prior art keywords
host
load
load balancing
application
health
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
Application number
JP2004192284A
Other languages
English (en)
Other versions
JP2005025756A (ja
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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005025756A publication Critical patent/JP2005025756A/ja
Application granted granted Critical
Publication of JP4942921B2 publication Critical patent/JP4942921B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • 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/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • 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]

Description

この開示は、一般にネットワーク負荷分散(network load balancing)に関し、詳細には、制限ではなく例として、ホスト状態情報を用いるネットワーク負荷分散に関する。
通信、および通信と絡む生活の多数の様相は、インターネットによって大きく影響を受けた。インターネットによって、2人の人および/または2つのエンティティの間ですばやく比較的簡単に情報を通信することができる。インターネットには、情報を人および/またはエンティティの間で転送できるように共にリンクされた多数のネットワークノードが含まれる。一部のネットワークノードは、あるリンクから別のリンクへパケットを伝搬するルータであり、個々のクライアントコンピュータであり、異なるエンティティのパーソナルネットワーク(会社のイントラネットなど)である。
このパーソナルネットワークの場合ならびに他の場合において、1つまたは複数のインターネットノードに到着するパケットは、パーソナルネットワーク内の他のノードに分散される。そのようなパーソナルネットワークは、たとえば、パーソナルネットワークに到着するパケットに対してそれぞれ作用する一連のサーバから形成され得る。会社、大学、官庁などは、そのパーソナルネットワークにおいて、短いタイムフレームに多数のパケットを受信する場合がある。タイムリーに応答し、到着パケットの拒否または消失の可能性を減らすために、パーソナルネットワークは、各々が到着パケットを同時に処理できる複数のサーバに依存する場合がある。
到着パケットは、文書、カタログ品目、ウェブページ等のある種の情報に関する質問である場合が多い。到着パケットは、顧客と販売者の間の経済上の取引に関する場合もある。パケットベース通信のパケットには、他の目的が考えられる。いずれにせよ、到着パケットを一連のサーバの中の異なるサーバ間で分散させることにより、素早く到着するパケットおよび/または複雑な通信交換に対応する。
一連のサーバの中の異なるサーバ間で到着パケットを分散(distribution)することは、ネットワーク負荷分散と称される場合が多い。言い換えると、負荷分散動作は、1つまたは複数のノードがパーソナルネットワークを構成する場合、および/またはそれらがパーソナルネットワークをインターネットに接続する場合、パケットがインターネットの1つまたは複数のノードに到着するときに、それらのパケットに対して実行され得る。
そのような負荷分散動作は、パーソナルネットワークをインターネットに接続し、かつ/またはインターネット上のパーソナルネットワークの存在を提供する1つまたは複数のノードでパーソナルネットワークに面する専用ハードウェアを使用することにより達成される。負荷分散動作を実行する物理的ハードウェアは、通常は、完全に複製化され、冗長性を実現し、負荷分散動作の可用性を高める。負荷分散動作の能力を高めるために、前の負荷分散ハードウェアの全体を複製し、その動作機能を複製する一層強力なハードウェアを前の負荷分散ハードウェアと置き換える。したがって、そのような負荷分散動作能力を高めることは、置き換えによってハードウェアのパワーを高めることに限られる。
負荷分散動作を実施するために、ハードウェアは、通常、到着する接続リクエストのラウンドロビン分散を実行する。言い換えると、到着する接続リクエストは、単一の接続リクエストを各サーバに分散する方法を繰り返して、一連のサーバの中のサーバに線形的に分散される。この接続のラウンドロビン負荷分散分配は、通常は、パーソナルネットワークの状態または到着する接続リクエストの種類とは関係なく利用される。負荷分散動作が、ラウンドロビン分散を超えて拡大される場合、これらの他の要因は、ネットワークトラフィックおよび/またはパーソナルネットワークの輻輳レベルから推論できる範囲で考慮されるに過ぎない。
したがって、ネットワーク負荷分散および/またはそれと関連するオプションを改善する方式および/または技法が必要である。
第1の例示的媒体実施形態では、1つまたは複数のプロセッサアクセス可能媒体に、プロセッサ実行可能命令が含まれ、前記プロセッサ実行可能命令は、実行されたとき、複数のホストでホスト状態情報を蓄積する動作と、前記複数のホストから前記蓄積されたホスト状態情報を送信する動作とを実行するようにシステムに指示する。第2の例示的媒体実施形態では、1つまたは複数のプロセッサアクセス可能媒体に、プロセッサ実行可能命令が含まれ、前記プロセッサ実行可能命令は、実行されたとき、システムに、複数のホストからホスト状態情報を受信する動作と、前記受け取ったホスト状態情報に応答して負荷分散判断を行う動作とを実行するように指示する。第3の例示的媒体実施形態では、1つまたは複数のプロセッサアクセス可能媒体に、プロセッサ実行可能命令が含まれ、前記プロセッサ実行可能命令は、実行されたとき、システムに、アプリケーションごとのベースでヘルス(health)および負荷情報を判定する動作と、前記ヘルスおよび負荷情報に応答して複数のアプリケーションの中からアプリケーションを選択する動作とを実行するように指示する。
第4の例示的媒体実施形態では、1つまたは複数のプロセッサアクセス可能媒体に、プロセッサ実行可能命令が含まれ、前記プロセッサ実行可能命令は、実行されたとき、システムに、複数のアプリケーションエンドポイントのヘルスおよび/または負荷情報を分析する動作と、前記分析に応答して、前記複数のアプリケーションエンドポイントのトークン割当を確定する動作とを実行するように指示する。
第5の例示的媒体実施形態では、1つまたは複数のプロセッサアクセス可能媒体に、プロセッサ実行可能命令が含まれ、前記プロセッサ実行可能命令は、実行されたとき、システムが少なくとも1つのホストと1つまたは複数の負荷分散ユニットとの間のメッセージプロトコルを実行できるようにし、前記メッセージプロトコルは、前記少なくとも1つのホストおよび前記1つまたは複数の負荷分散ユニットとの間でヘルスおよび/または負荷情報を通信するのに使用可能である。
例示的システム実施形態では、システムに、1つまたは複数のアプリケーションをホスト(host)している少なくとも1つの装置であって、前記少なくとも1つの装置は、複数のエントリを含むヘルスおよび負荷テーブルを含み、前記複数のエントリの各エントリは、前記1つまたは複数のアプリケーションの中のアプリケーションに関連し、前記複数のエントリの中の各エントリは、前記1つまたは複数のアプリケーションの中の特定のアプリケーションのアプリケーション識別子と、前記特定のアプリケーションの少なくとも1つの状態の特性を表す情報と、前記特定のアプリケーションに関する少なくとも1つの負荷分散命令とを含む、少なくとも1つの装置が含まれる。
他の方法、システム、手法、装置、アプリケーションプログラミングインターフェース(API)、装置、メディア、プロシージャ、構成などの実施形態を、本明細書で説明する。
図面全体を通じて、同一の符号は、類似するおよび/または対応する態様、特徴、および構成要素を参照するのに使用される。
(ネットワーク負荷分散のパラダイムの一例)
この節では、ネットワーク負荷分散のパラダイムの一例を説明し、次の節の説明の基礎、環境、コンテキストなどを提供する。この節では、主に図1〜3を参照する。
図1は、負荷分散インフラストラクチャ106および複数のホスト108を示す例示的なネットワーク負荷分散のパラダイム100である。例示的なネットワーク負荷分散のパラダイム100は、複数のクライアント102(1)、102(2)...102(m)、複数のホスト108(1)、108(2)...108(n)、ネットワーク104および負荷分散インフラストラクチャ106を含む。
各クライアント102は、コンピュータ、モバイルステーション、エンターテイメント機器、その他のネットワークなどのネットワーク通信可能な装置であれば何でもよい。クライアント102は、クライアント装置を操作している人及び/又はエンティティとも関係する。言い換えると、クライアント102は、ユーザおよび/または機械である論理的クライアントを備えることができる。ネットワーク104は、インターネット、イントラネット、有線電話網、無線電話網などの1つまたは複数のネットワークから形成される場合がある。クライアント102の装置の追加例およびネットワーク104のネットワーク種類/トポロジの別の例については、「コンピュータまたは他の装置のオペレーティング環境の例」という題名の節で、図40を参照しつつ説明する。
個々のクライアント102は、ネットワーク104にまたがって負荷分散インフラストラクチャ106を介して1つまたは複数のホスト108と通信でき、逆も同様である。ホスト108は、クライアント102による使用のために、クライアント102と相互作用/通信をする1つまたは複数のアプリケーションをホスト(host)する。各ホスト108は、1つのサーバおよび/または装置、複数のサーバおよび/または複数の装置、サーバの一部および/または装置の一部、これらの組合せなどに対応する場合がある。ホスト108の特定の実施形態を、異なるネットワーク負荷分散状態と絡めて以下でさらに説明する(しかし、ホスト108のバックエンドサポートは、明確にするために、示さない)。さらに、ホスト108の装置の別の例については、以下で、「コンピュータまたは他の装置のオペレーティング環境の例」という題名の節で、図40を参照しつつ説明する。
負荷分散インフラストラクチャ106は、ネットワーク104を介して1つまたは複数の仮想インターネットプロトコル(IP)アドレスで連絡可能(reachable)または位置づけ可能(locatable)である。負荷分散インフラストラクチャ106の仮想IPアドレス宛のクライアント102(または他のノード)からの通信は、そこで受信され、ホスト108に転送される。負荷分散インフラストラクチャ106は、ハードウェア構成要素および/またはソフトウェアコンポーネントからなる(図1には明示的に図示せず)。
負荷分散インフラストラクチャ106は、完全な楕円として図示されているが、負荷分散を達成するインフラストラクチャは、ネットワーク負荷分散パラダイム100の他の態様に分配されてもよい。たとえば、負荷分散インフラストラクチャ106のソフトウェアコンポーネントは、以下でさらに説明するように、1つまたは複数のホスト108上に配置されてもよい。負荷分散インフラストラクチャ106のアーキテクチャの例については、「コンピュータまたは他の装置のオペレーティング環境の例」という題名の節で、図40を参照しつつ説明する。
(1)に示されているように、1つまたは複数のホスト108は、ホスト108からのホスト状態情報を負荷分散インフラストラクチャ106に提供することができる。このホスト状態情報は、アプリケーション固有とすることができる。そのようなホスト状態情報の例を、以下でさらに説明するが、この例は、ホスト108に関する、ヘルス(health)情報および/または負荷情報、セッション情報などを含む。ホスト108から負荷分散インフラストラクチャ106へのヘルス情報および/または負荷情報の提供を含む特定の実施形態については、「ヘルスおよび負荷の処理」という題名の節で説明する。
(2)において、リクエストは、クライアント102(1)からネットワーク104を介して負荷分散インフラストラクチャ106の仮想IPアドレスに送信される。クライアント102からのリクエストの内容、フォーマットなどは、リクエストが向けられるアプリケーションに依存し、用語「リクエスト」には、文脈に応じて、ホスト108からの1つまたは複数の応答が暗に含まれる場合がある。クライアントリクエストの種類に、下記が含まれるが、これに制限はされない。
1.ブラウザプログラムを使用するクライアントからのハイパーテキスト転送プロトコル(HTTP)GETリクエスト。アプリケーション(より詳細には、リクエストのuniform resource locator(URL))に応じて、様々なホストのセットによってリクエストにサービスすることがよい場合があり、ホスト上のクライアント「セッション」状態の存在は、特定のクライアントからの特定のホストへのリクエストのルーティングに影響を及ぼす場合がある。リクエストは、secure sockets layer(SSL)(または他の形で暗号化された)接続を通っても良い。
2.仮想プライベートネットワーク(VPN)接続(たとえば、ホストがVPNサーバの組である)。この場合に、「リクエスト」を、レイヤ2トンネリングプロトコル(layer−2 tunneling protocol)(L2TP)「接続」またはポイントツーポイントトンネリングプロトコル(point−to−point tunneling protocol)(PPTP)「接続」とみなすことができる(後者は、伝送制御プロトコル(transmission control protocol)(TCP)制御接続と、関連する一般的ルーティングカプセル化(generic routing encapsulation)(GRE)データトラフィックの組み合わせである)。
3.ターミナルサーバ接続(たとえば、ホストが、ターミナルサーバの組である)。
4.独自仕様(proprietary)のアプリケーション固有プロトコルを使用する個々のTCP接続(リクエストごとに1つ)の形の独自仕様リクエスト。
5.シンプルオブジェクトアクセスプロトコル(simple object access protocol)(SOAP)リクエスト。
6.TCP接続を介する制御情報およびリアルタイムプロトコル(real−time protocol)(RTP)を介する待ち時間に敏感な(latency−sensitive)メディアストリームを用いるリアルタイム通信リクエスト。
したがって、リクエストは、多数の多種多様なアプリケーション固有の形になり得る。ある本明細書で説明される実施形態では、負荷分散インフラストラクチャ106によって、アプリケーション固有転送判断を行うことができる。
(3)で、(この例では)負荷分散インフラストラクチャ106は、リクエストをクライアント102(1)からホスト108(2)に転送する。負荷分散インフラストラクチャ106は、リクエストが転送されるホスト108を選択する時に、本明細書に記載のどの実施形態が使用されているかに応じて、多数の要因のうちの1つまたは複数を検討することができる。たとえば、負荷分散インフラストラクチャ106は、各ホスト108のアプリケーションヘルスおよび/または負荷情報、ホスト108に記憶されるクライアント102(1)に関するセッション情報などを考慮に入れることができる。
図2は、複数の負荷分散ユニット106および複数のホスト108を示す例示的なネットワーク負荷分散パラダイム200を示す図である。具体的に言うと、負荷分散インフラストラクチャ106は、例示的なネットワーク負荷分散パラダイム200内では複数の負荷分散ユニット106(1)、106(2)...106(u)として図示されている。さらに、2つのルータおよび/またはスイッチ202(1)および202(2)が図示されている。
ルータ/スイッチ202は、存在する場合に、負荷分散インフラストラクチャ106(図1の)の一部またはこれと分離していると考えることができる。ルータ/スイッチ202は、ネットワーク104から受信される全部のリクエストおよび個々のパケットを負荷分散ユニット106の共有仮想IP(VIP)アドレスに向ける責任を負う。第1のルータ/スイッチ202に障害が発生する場合に、第2のルータ/スイッチ202は、第1のルータ/スイッチの引継ぎをすることができる。2つのルータ/スイッチ202が示されているが、その代わりに1つまたは3つ以上のルータ/スイッチ202を使用することができる。
ルータ/スイッチ202は、負荷分散インフラストラクチャについて知らないか、負荷分散対応(load−balancing aware)である。ルータ/スイッチ202が負荷分散対応でない場合には、2つの例示的オプションの1つを使用することができる。第1のオプションでは、1つの負荷分散ユニット106に、共有VIPアドレスが「割り当てられ」、すべてのネットワークトラフィックが、これに転送される。この1つの負荷分散ユニット106は、トラフィックを他の負荷分散ユニット106の間に均等に再分配する。しかし、第1のオプションには、ボトルネックおよびフェールオーバ(failover)の問題がある(複数のVIPアドレスが共有され、複数の負荷分散ユニット106の間で分割される場合に、軽減することができる)。第2のオプションでは、ルータ/スイッチ202を「だまして」(tricked)ネットワークトラフィックをすべての負荷分散ユニット106に向けさせ、この負荷分散ユニット106は、個別に、負荷分散のためにどのトラフィックが受け入れるかを判断する。しかし、この第2のオプションには、非効率的な労力の重複と、スイッチ性能/互換性の問題がある。
その一方で、ルータ/スイッチ202が、負荷分散対応である場合には、ルータ/スイッチ202を、入力ネットワークトラフィックを複数の負荷分散ユニット106の間で分配(たとえばラウンドロビン式で)するようにすることができる。そのような負荷分散対応ルータ/スイッチ202が、基本レベル(たとえばハードウェア)で負荷分散機能を実行できることを理解されたい。たとえば、負荷分散対応ルータ/スイッチ202によって、単純なIPアドレスベースのセッションアフィニティ(session affinity)を実行し、その結果、特定の発信元IPアドレスからのすべてのパケットを、同一の負荷分散ユニット106に向けることができるようになる。
負荷分散ユニット106の各別々に図示された負荷分散ユニット106によって、1つの物理装置、複数の物理装置、または単一の物理装置の一部を表すことができる。たとえば、負荷分散ユニット106(1)は、1つのサーバ、2つのサーバ、またはより多くのサーバに対応するものとすることができる。その代わりに、負荷分散ユニット106(1)および負荷分散ユニット106(2)が、一緒に、単一のサーバに対応するものとすることができる。例示的な負荷分散ユニット106を、図3を参照して、機能的考え方からさらに以下に説明する。
2つの例示的なリクエストパス[1]および[2]が、図2に示されている。リクエストパス[1]では、クライアント102(2)は、ネットワーク104を介してリクエストを送信し、このリクエストは、ルータ/スイッチ202(1)に到達する。ルータ/スイッチ202(1)は、クライアント102(2)から発せられたリクエストのパケットを負荷分散ユニット106(1)に向ける。負荷分散ユニット106(1)は、ある負荷分散機能(たとえばポリシ)に従って、このリクエストのパケットをホスト108(1)に転送する。リクエストパス[2]では、クライアント102(m)は、ネットワーク104を介してリクエストを送信し、このリクエストは、ルータ/スイッチ202(2)に到達する。ルータ/スイッチ202(2)は、クライアント102(m)から発せられたリクエストのパケットを負荷分散ユニット106(u)に向ける。負荷分散ユニット106(u)は、ある負荷分散機能に従って、このリクエストのパケットをホスト108(n)に転送する。例示的な負荷分散機能を、以下で図3を参照してさらに説明する。
図3は、分離された機能を有する例示的な負荷分散ユニット106および例示的なホスト108を示す。負荷分散ユニット106は、7つの機能ブロック302〜314を含む。負荷分散ユニット106のこれらの機能ブロックは、少なくとも部分的にソフトウェアを使用して実現される。ホスト108には、1つまたは複数のアプリケーション316が含まれる。実施形態では、負荷分散ユニット106には、フォワーダ(forwarder)302、クラシファイヤ(classifier)304、リクエストルータ306、セッショントラッカ(session tracker)308、接続マイグレータ(connection migrator)310、トンネラ(tunneler)312、ならびにヘルスおよび負荷ハンドラ314が含まれる。
ヘルスおよび負荷ハンドラ314は、一部がホスト108に、一部が負荷分散ユニット106の装置に位置する。ヘルスおよび負荷ハンドラ314は、ホスト108のヘルスおよび/または負荷(あるいはより一般的に状況)を監視し、その結果、ヘルスおよび/または負荷情報は、負荷分散機能のために使用できるようになる(たとえば、負荷分散決定を行う時)。ヘルスおよび負荷ハンドラ314の例示的実施形態を、以下で、特に「例示的ヘルスおよび負荷の処理」という題名の節で説明する。
セッショントラッカ308もまた、一部をホスト108に、一部を負荷分散ユニット106の装置に配置することができる。セッショントラッカ308は、クライアント102によって確立されるセッションを監視し、その結果、前に確立されたセッションの再接続/継続を、負荷分散機能によって実現できるようになる。たとえば、一部のアプリケーションは、ホスト上で(ホスト状態情報の1つの種類でもある)アプリケーション固有クライアントセッションデータを保持する。これらのアプリケーションは、通常、クライアントが所与のセッションの持続時間中に同一のホストを使用することを予期する。セッションの例示的な種類には(i)TCP接続(厳密に言えばセッション)、(ii)SSLセッション、(iii)セキュアIP(IPsec)セッション、(iv)HTTPクッキーベースセッションなどが含まれる。
セッショントラッカ308は、負荷分散ユニット106内の別個のブロックとして図示されているが、セッショントラッカ308のセッショントラッキング機能は、実際には、グローバルレベルで実施することができる。言い換えると、セッションアフィニティは、複数の負荷分散ユニット106にまたがってサポートされる。セッショントラッカ308には、セッションアフィニティを保存するために、セッション情報の集中データベースおよび/または分散データベースが含まれる。セッショントラッカ308の例示的実施形態を、分散データベース手法を強調して、下の「セッショントラッキングの例」という題名の節でさらに説明する。
クラシファイヤ304は、ヘルスおよび負荷ハンドラ314および/またはセッショントラッカ308によって獲得され維持されるデータを、おそらくは他の要因と共に使用して、入力リクエストを分類する。言い換えると、クラシファイヤ304は、クライアント102からの入力リクエストのそれぞれについてターゲットのホスト108を選択する。フォワーダ302は、クラシファイヤ304によって選択されたターゲットホスト108に従って、クライアントリクエスト(および/またはそのパケット)を転送する。フォワーダ302およびクラシファイヤ304は、パケットごとのベースで動作することができる。フォワーダ302およびクラシファイヤ304の例示的実施形態を、以下で、特に「柔軟なネットワーク負荷分散に対する手法の例」および「分類、転送、およびリクエストルーティングの例」という題名の節でさらに説明する。
リクエストルータ306は、フォワーダ302およびクラシファイヤ304のパケットごとの実施形態とは対照的に、ホスト108上で動作するアプリケーションのプロキシとしての役割をはたすことができる。たとえば、リクエストルータ306は、TCP接続の終端、クライアント102からの各論理リクエストの(おそらくは部分的な)解析、およびターゲットホスト108への各論理リクエストの再提出(resubmit)を行うことができる。その結果、クライアント102からの各論理リクエストを、リクエストルータ306によって行われる判断に基づいて、異なるホスト108に向けることができる。さらに、リクエストルータ306は、接続に関する処理ごとに(たとえばSSL暗号化)動作でき、あるリクエストを吸収することを選択でき(たとえば、リクエストルータ306が応答のキャッシュを維持するので)、リクエストをホスト108に転送する前に任意にリクエストを修正することなどができる。リクエストルータ306の例示的実施形態を、以下で、特に「柔軟なネットワーク負荷分散に対する手法の例」および「分類、転送、およびリクエストルーティングの例」という題名の節でさらに説明する。
接続マイグレータ310によって、まず負荷分散ユニット106で接続を終端し、その後、接続が後にホスト108で終端されるように、その接続を移行することができる。この接続移行によって、アプリケーションレベルの負荷分散を容易にすることができる。接続マイグレータ310は、負荷分散ユニット106での元々の終端がリクエスト元のクライアント102および新たに終端するホスト108のアプリケーション316に透過的になる形で、負荷分散ユニット106からホスト108に接続を移行することができる。トンネラ312によって、各トンネルされるパケット(tunneled packet)に対するオーバーヘッドを導入しないパケットのトンネリングに関するカプセル化方式を利用することができる。
トンネラ312の機能を、接続移行を必要としない状況でも使用することができる。さらに、接続マイグレータ310および/またはトンネラ312を、非負荷分散の実施形態で追加して使用することができる。接続マイグレータ310ならびにトンネラ312の例示的実施形態を、以下で、特に「任意のトンネリングおよび/またはアプリケーションレベルロードバランシングを伴う接続移行の例」という題名の節でさらに説明する。
負荷分散ユニット106の任意の所与の実施形態は、1つまたは複数の図示された機能を含むことができる。別々に図示されてはいるが、ブロック302〜314の機能のそれぞれは、実際には、他の機能と相関し、オーバーラップし、かつ/または他の機能を含む場合がある。たとえば、ヘルスおよび負荷ハンドラ314のヘルスおよび/または負荷情報を、クラシファイヤ304によって使用することができる。また、接続マイグレータ310およびトンネラ312は、フォワーダ302およびクラシファイヤ304と共に機能する。他の例示的なオーバーラップおよび相互作用を、以下で説明する。
説明される実施形態で、ホスト108は、実行され、1つまたは複数のアプリケーション316に対するアクセスを提供する。一般に、アプリケーション316には、ファイル配信プログラム、ウェブサイト管理/サーバプログラム、リモートアクセスプログラム、電子メールプログラム、データベースアクセスプログラムなどが含まれる。具体的には、アプリケーション316に、Microsoft(登録商標)Corporation社のInternet Information Server(登録商標)(IIS)などのウェブサーバ、Microsoft(登録商標)Terminal Server(商標)などのターミナルサーバ、ならびにInternet Security and Acceleration Server(商標)(ISA)などのファイヤウォールおよびプロキシ製品を含めることができるが、これに制限はされない。前の文の特定のアプリケーション316の例は、Microsoft(登録商標)社の製品に関するが、本明細書に記載のネットワーク負荷分散は、特定のベンダ、アプリケーション、またはオペレーティングシステムに制限されない。
(柔軟なネットワーク負荷分散へのアプローチ例)
この節では、本明細書のこの節および他の節に記載のネットワーク負荷分散実施形態によって、ネットワーク負荷分散に対する柔軟な手法がどのように提供されるかを示す。この節では、主に図4〜9Bを参照する。
上記で注記したように、ネットワーク負荷分散機能は、第1のネットワーク負荷バランサ(network load balancer)を、第2のより大きく強力なネットワーク負荷バランサに置換することによってスケールアップすることができる。第2のネットワーク負荷バランサのハードウェア機能は、より高い能力を提供することを除いて、第1のネットワーク負荷バランサのハードウェア機能全体を複製する。これは、特に1つのネットワーク負荷分散機能だけが性能を制限し、ネットワーク負荷バランサのアップグレードを早める場合に、非常に非効率的である可能性がある柔軟でない手法である。
図4に、分離された分類機能および転送機能を有するネットワーク負荷分散インフラストラクチャの例を示す。分離された分類機能および転送機能は、それぞれクラシファイヤ304およびフォワーダ302によって表される。分類機能および転送機能は、以下で、特に「分類、転送、およびリクエストルーティングの例」という題名の節でさらに説明するが、ネットワーク負荷分散インフラストラクチャ機能とホスト108の間の相互作用の例として、最初の説明をここで提示する。
説明される実施形態で、フォワーダ302は、仮想IP(VIP)アドレス(1つまたは複数)に対応し、それに関するネットワークエンドポイントである。フォワーダ302は、パケットをさらなる宛先または最終的な宛先にルーティングする場合に、単純化されたおよび/または基本的なポリシ決定をする比較的低レベルの構成要素である。フォワーダ302は、ルーティングテーブルを調べてこの宛先を決定する。クラシファイヤ304は、1つまたは複数の要因(たとえば、ホスト状態情報)に基づいてルーティングテーブルに投入(populate)するが、これは本明細書の他の節でさらに説明する。
クライアント102およびホスト108は、示されたネットワークアドレスにも対応する。具体的に言うと、クライアント102(1)は、アドレスC1に対応し、クライアント102(2)は、アドレスC2に対応し...クライアント102(m)は、アドレスCmに対応する。また、ホスト108(1)は、アドレスH1に対応し、ホスト108(2)は、アドレスH2に対応し...ホスト108(n)は、アドレスHnに対応する。
5つの通信パス(1)〜(5)が、図4に示されている。通信パス(1)は、クライアント102(1)とフォワーダ302の間のパスであり、通信パス(5)は、フォワーダ302とホスト108(1)の間のパスである。通信パス(2)〜(4)は、フォワーダ302とクラシファイヤ304の間のパスである。この例では、説明を簡単にするために、通信パス(1)〜(5)に関連する接続は、HTTP TCP接続である。さらに、この例の負荷分散は、少なくともアプリケーションレベル負荷分散の明示的な考察なしの、最小の負荷のホスト108への入力接続のルーティングに関する。
通信パス(1)〜(5)は、フォワーダ302およびクラシファイヤ304がクライアント102(1)からの単一のHTTP TCP接続をどのように負荷分散するかを示す。(1)において、クライアント102(1)は、VIPアドレス宛のTCP SYNパケットを送信することによって、TCP接続を開始する。ネットワーク104のルーティングインフラストラクチャは、このパケットを、ルータ/スイッチ202(1)を介してフォワーダ302にルーティングし、このルータ/スイッチ202(1)は、フォワーダ302に「最も近い」ルータ/スイッチ202である。
(2)において、フォワーダ302は、この接続をルックアップするために、フォワーダ302の内部または他の形でフォワーダからアクセス可能なルーティングテーブルを調べる。この接続は、TCP/IP4―タプル(tuple)(すなわち、発信元IPアドレス、発信元TCPポート、宛先IPアドレス、宛先TCPポート)によって、ルーティングテーブル内で識別することができる。これは、接続の最初のパケットなので、ルーティングテーブルにはエントリがない。したがって、フォワーダ302は、「デフォルトルート」アクションを適用するが、これは、このパケットをクラシファイヤ304に送ることである。
(3)において、クラシファイヤ304は、ホスト108(1)、108(2)...108(n)に関するホスト状態情報のキャッシュ(たとえば統合キャッシュ)を調べる。クラシファイヤ304は、たとえば、この瞬間に、ホスト108(1)が使用可能であり、最小の負荷を有するホスト108であると結論付ける。また、クラシファイヤ304は、このTCP接続に関してフォワーダ302によって調べられたルーティングテーブル内のルートを「プラム(plumb)」する。例えば、クラシファイヤ304は、(例えばTCP4タプルによって識別される)TCP接続を特定の宛先ホスト108にマッピングするルーティングテーブルにルートエントリを追加するか、追加することをフォワーダ302に指示を出す。この例では、宛先ホストは、ホスト108(1)である。具体的に言うと、このルートエントリは、ホスト108(1)のネットワークアドレスH1を指定する。
(4)において、クラシファイヤ304は、TCP SYNパケットを、フォワーダ302に送り返す。あるいは、クラシファイヤ304は、この最初のTCP SYNパケットを、フォワーダ302を使用せずにホスト108(1)に転送することができる。クラシファイヤ304が使用可能な他のオプションを、以下でさらに説明する。
(5)において、フォワーダ302は、SYNパケットによって表される接続のルートエントリにアクセスすることができ、したがって、フォワーダ302は、アドレスH1のホスト108(1)にパケットを転送する。フォワーダ302は、この接続に関するクライアント102(1)からのすべての後続パケットを、ホスト108(1)に直接に転送する。言い換えると、フォワーダ302は、この接続に関するクラシファイヤ304とのさらなる相互作用を避けることができる。以下でさらに説明する機構の1つまたは組合せを使用して、接続終了時にルートエントリを削除することができる。
多くのプロトコル環境の通信パス(5)について、フォワーダ302は、ネットワークアドレスH1のホスト108(1)にクライアント102(1)からのパケットを単純にそのままで送ることはできない。というのは、これらのパケットは、VIPアドレス宛であり、これがフォワーダ302自体によってホストされるからである。その代わりに、フォワーダ302は、下記の例示的オプションの1つまたは複数を使用することができる。
1.フォワーダ302は、(i)発信元(クライアント102(1))IPアドレス(C1)およびポート番号をフォワーダ302のIPアドレスおよびネットワークアドレス変換(NAT)によって生成されたポート番号によって上書きし、(ii)宛先IPアドレス(VIP)をホスト(108(1))のIPアドレス(H1)によって上書きすることによって、NATを実行する。
2.フォワーダ302は、宛先IPアドレス(VIP)をホスト(108(1))のIPアドレス(H1)によって上書きし、その結果、発信元(クライアント102(1))IPアドレス(C1)およびポート番号が保存されるようにすることによって、「半NAT」(Half−NAT)を実行する。
3.フォワーダ302は、クライアント102(1)から受信されたパケットを、フォワーダ302からホスト108(1)に「トンネリング」する。具体的には、この例では、各パケットを、ホスト108(1)にアドレッシングされた新しいIPパケット内にカプセル化することによって、トンネリングを実現することができる。ホスト108(1)上のネットワーク負荷分散対応ソフトウェアは、クライアント102(1)からフォワーダ302によって受信された元々のパケットを再構成する。この元々のパケットは、ホスト108(1)の仮想インターフェースに示される(たとえば、フォワーダ302に対応するVIPアドレスは、ホスト108(1)のこの仮想インターフェースに束縛される。)。そのようなトンネリングの例示的実施形態を、以下で、特に接続移行シナリオに関して、特に「任意のトンネリングおよび/またはアプリケーションレベルロードバランシングを伴う接続移行の例」という題名の節で、トンネラ312に関してさらに説明する。
図4〜9Bに、2つの特定の別々の機能すなわち、分類および転送が示されているが、リクエストルータ306、セッショントラッカ308、接続マイグレータ310、ならびにヘルスおよび負荷ハンドラ314の機能などの他の機能も、以下でさらに説明するように、独立にスケールアウトする(たとえば、独立にファクタアウトする)ことができることを理解されたい。さらに、1つまたは3つ以上の機能を、独立に異なる時および/または同時に分離し、スケールアウトできることに留意されたい。また、この節および他の節の多くの例で、説明を明瞭にするためにTCP/IPが使用されるが、本明細書に記載のネットワーク負荷分散の原理は、他の伝送プロトコルおよび/または通信プロトコルに適用可能である。
図4の例示的な形では、(図3に示されたような)ネットワーク負荷分散機能を、スケーラビリティのために互いに分離することができる。可用性を高めるために、これらを分離し、さまざまな構成に複製することもできる。スケーラビリティおよび/または可用性に関する例示的構成を、以下で、図5の方法を説明した後で図6〜9Bを参照して説明する。
図5は、ネットワーク負荷分散インフラストラクチャの異なる構成へのスケールアウトの例示的な方法を示すフローチャート500である。フローチャート500には、3つのブロック502〜506が含まれる。フローチャート500の動作は、他の環境でさまざまなソフトウェア方式と共に実行することができるが、特にこの方法のさまざまな態様および例を示すために、図1〜4および6〜9Bを使用する。
ブロック502において、ネットワーク負荷分散インフラストラクチャを第1の構成で動作させる。たとえば、各構成を、異なる負荷分散機能の選択、比率、および/または相互関係、異なる装置の数および/または種類、異なるコンポーネントの編成および/またはレイアウト、リソースの分配および/または割当などの1つまたは複数に関連するものとすることができる。ブロック504において、ネットワーク負荷分散インフラストラクチャをスケールアウトする。たとえば、分離された負荷分散機能を、個別および/または独立ベースで、拡大し、かつ/または付随して縮小することができる。ブロック506において、スケールアウトされたネットワーク負荷分散インフラストラクチャを第2の構成で動作させる。
上記で注記したように、前のネットワーク負荷分散ハードウェアをより強力なネットワーク負荷分散ハードウェアに取り替えることによってネットワーク負荷分散機能の全体を高めることによって、モノリシックネットワーク負荷バランサをスケールアップすることができる。反対に、ネットワーク負荷分散インフラストラクチャのスケールアウトによって、ネットワーク負荷分散(副)機能を個別におよび/または独立にスケールアウトすることを可能にすることができるようになる。これによって、ネットワーク負荷分散機能を、異なる数の装置の間で一緒にまたは個別にスケールアウトできるようになる。装置、コンポーネント、およびリソース指向のスケールアウトの例を、下に示す。
図6に、装置の観点からの第1の例示的なネットワーク負荷分散インフラストラクチャ構成を示す。この第1の装置指向ネットワーク負荷分散インフラストラクチャ構成には、3つの装置602(1)、602(2)、および602(3)が示されている。しかし、1つ、2つ、または4つ以上の装置602を、その代わりに使用することができる。
図からわかるように、フォワーダ302(1)、クラシファイヤ304(1)、およびホスト108(1)は、装置602(1)に常駐し、動作している。フォワーダ302(2)、クラシファイヤ304(2)、およびホスト108(2)は、装置602(2)に常駐し、動作している。またフォワーダ302(3)、クラシファイヤ304(3)、およびホスト108(3)は、装置602(3)に常駐し、動作している。したがって、この第1の装置指向ネットワーク負荷分散インフラストラクチャ構成では、それぞれのフォワーダ302、クラシファイヤ304、およびホスト108は、それぞれの装置602のリソースを共有する。
動作中には、フォワーダ302は、VIPアドレスのネットワークエンドポイントである。どのクラシファイヤ304でも、ホスト状態情報に応じて、任意のホスト108への接続のためのルートをプラムすることができる。たとえば、クラシファイヤ304(2)は、ホスト108(3)への新しい入力接続に関するルートをプラムすることができる。この接続の新しいルートエントリに従って、フォワーダ302(2)は、後続パケットをホスト108(3)に転送する。
図示の第1の装置指向ネットワーク負荷分散インフラストラクチャ構成をスケールアウトすることができる1つの代替の装置指向ネットワーク負荷分散インフラストラクチャ構成では、フォワーダ302(4)、クラシファイヤ304(4)、およびホスト108(4)を含む第4の装置602(4)(図6に明示的には図示せず)を追加することができる。その一方で、クラシファイヤ304(1〜3)によって十分な分類機能が既に存在するが、追加の転送機能がホスト108のリクエスト処理のためになる場合に、フォワーダ302(4)および任意選択のホスト108(4)を含む第4の装置602(4)を追加することができる。このスケールアウトされた構成に関して、別のクラシファイヤ304(1、2、または3)によって、ホスト108(1、2、または3)および存在する場合にホスト108(4)への、フォワーダ302(4)のためのルートをプラムすることができる。
図6の第1の装置指向の例示的なネットワーク負荷分散インフラストラクチャ構成は、特に、ネットワーク負荷分散インフラストラクチャの別々の装置が技術的におよび/または経済的に価値がないか実行可能でない、より小さいホスティング状況に適する可能性がある。しかし、ホスティング義務が、より多数のホスト108に拡張される(かつ/または同数のホストへのより多くの需要がある)時、またはホスト108のネットワーク負荷が大きい場合に、第1の装置指向の例示的なネットワーク負荷分散インフラストラクチャ構成を、図7の第2の装置指向の例示的なネットワーク負荷分散インフラストラクチャ構成によって表されるように、この拡張に対処するためにスケールアウトすることができる。
図7は、装置の観点からの第2の例示的なネットワーク負荷分散インフラストラクチャ構成を示す。この第2の例示的なネットワーク負荷分散インフラストラクチャ構成でも、3つの装置602(1)、602(2)、および603(3)が示されている。やはり、1つ、2つ、または4つ以上の装置602を、代わりに使用することができる。
図からわかるように、フォワーダ302(1)およびクラシファイヤ304(1)は、装置602(1)に常駐し、動作している。フォワーダ302(2)およびクラシファイヤ304(2)は、装置602(2)に常駐し、動作している。また、フォワーダ302(3)およびクラシファイヤ304(3)は、装置602(3)に常駐し、動作している。したがって、この第2の装置指向のネットワーク負荷分散インフラストラクチャ構成では、それぞれのフォワーダ302およびクラシファイヤ304は、それぞれの装置602のリソースを、ホスト108と共有していない。さらに、このネットワーク負荷分散インフラストラクチャは、任意の数のホスト108をサービスすることができる。
動作中に、フォワーダ302は、やはり、VIPアドレスのネットワークエンドポイントである。また、どのクラシファイヤ304でも、ホスト状態情報に応じて、任意のホスト108への接続のルートをプラムすることができる。たとえば、クラシファイヤ304(3)によって、ホスト108(2)への新しい入力接続のルートをプラムすることができる。この接続の新しいルートエントリに従って、フォワーダ302(3)は、後続のパケットをホスト108に転送する。
したがって、例えば、ネットワーク負荷分散インフラストラクチャ(またはその一部)を、ホスト108と共有される装置からホスト108と共有されない装置に移動することによって、ソフトウェアで実現されるネットワーク負荷分散インフラストラクチャをスケールアウトすることができる。また、上記で図6に関してほのめかしたように、もう1つの装置602(4)をネットワーク負荷分散インフラストラクチャに追加して、追加の転送機能、追加の分類機能、追加の両方の種類の機能などを提供することができる。
図8Aおよび8Bに、コンポーネントの観点からの第1および第2の例示的なネットワーク負荷分散インフラストラクチャ構成を示す。図からわかるように、第1のコンポーネント指向の例示的なネットワーク負荷分散インフラストラクチャ構成800は、4つのコンポーネントを含む。第2のコンポーネント指向の例示的なネットワーク負荷分散インフラストラクチャ構成850は、6つのコンポーネントを含む。代替の第2の構成850は、破線のブロックによって示されるように、7つの構成要素を含むが、これは以下で説明する。
具体的に言うと、第1のコンポーネント指向の例示的なネットワーク負荷分散インフラストラクチャ構成800(または第1構成800)は、(i)2つのフォワーダ302(1)および302(2)と、(ii)2つのクラシファイヤ304(1)および(2)を含む。第2のコンポーネント指向のネットワーク負荷分散インフラストラクチャ構成850(または第2構成850)は、(i)4つのフォワーダ302(1)、302(2)、302(3)および302(4)と、(ii)2つのクラシファイヤ304(1)および(2)を含む。したがって、この例では転送コンポーネントである2つのコンポーネントを追加することによって、第1構成800が第2構成850にスケールアウトされる。
説明される実施形態では、それぞれのネットワーク負荷分散関連機能コンポーネントは、それぞれの装置(図8Aまたは8Bで明示的に図示せず)に対応するが、各コンポーネントを、その代わりに、装置の一部または複数の装置に対応するものとすることができる。たとえば、フォワーダ302(1)および302(2)を、3つの装置にまたがって分散させることができる。あるいは、フォワーダ302(1)およびクラシファイヤ304(1)は、第1装置に対応し、フォワーダ302(2)およびクラシファイヤ304(2)は、第2装置に対応することができる。
2つのネットワーク負荷分散関連機能コンポーネントが追加されて、第1構成800が第2構成850にスケールアウトされる。しかし、その代わりに、1つのコンポーネント(または3つ以上)を追加して、ネットワーク負荷分散インフラストラクチャをスケールアウトすることができる。さらに、複数の異なる種類の機能コンポーネントを、「同時に」スケールアウトすることができる。たとえば、破線のブロックによって示されているように、第1構成800を第2構成850にスケールアウトする時に、もう1つの分類コンポーネント(たとえばクラシファイヤ304(3))を追加することもできる。
さらに、複数の異なる種類の機能コンポーネントによるスケーリングを、互いに類似する比率(たとえば同等に)または異なる比率で実行することができる。図からわかるように、フォワーダコンポーネント302(3)および302(4)を追加し、クラシファイヤコンポーネント304を追加しないか、単一のクラシファイヤコンポーネント304(3)を追加することによって、異なる比率のスケールアウトが示される。しかし、類似する比率でのスケールアウトのために、2つのクラシファイヤコンポーネント304(3)および304(4)(後者は、図8には明示的に示されていない)を追加すると同時に、2つのフォワーダコンポーネント302(3)および302(4)を追加することができる。いずれにせよ、各個々のネットワーク負荷分散関連機能コンポーネントは、図9Aおよび9Bを参照して説明するように、異なる量の使用可能ネットワーク負荷分散関連機能インフラストラクチャリソースを消費する可能性がある。
図9Aおよび9Bに、リソースの観点からの第1および第2の例示的なネットワーク負荷分散インフラストラクチャ構成を示す。第1のリソース指向の例示的なネットワーク負荷分散インフラストラクチャ構成900(または第1構成900)には、負荷分散ユニット106の第1のリソース分配またはリソース割当が含まれる。第2のリソース指向の例示的なネットワーク負荷分散インフラストラクチャ構成950(または第2構成950)には、負荷分散ユニット106の第2のリソース分配が含まれる。
図からわかるように、第1構成900には、70%−30%リソース配分が含まれ、第2構成950には、40%−60%リソース配分が含まれる。そのようなリソースには、総装置リソース(たとえば装置の数)、処理リソース(たとえばプロセッササイクルの数)、メモリリソース(たとえばキャッシュの一部、メインメモリなど)、ネットワーク帯域幅および/またはインターフェースリソース(たとえば、ビット毎秒および/または物理ネットワークインターフェースカード(NIC))などを含めることができる。
第1構成900について具体的に言うと、フォワーダ302は、負荷分散ユニット106のリソースの70%を消費し、クラシファイヤ304は、このリソースの30%を消費する。第2構成950を作るスケールアウトプロシージャ中の再割当の後に、フォワーダ302は、負荷分散ユニット106のリソースの40%を消費し、クラシファイヤ304は、このリソースの60%を消費する。
例示的な状況では、第1構成900は、より少数のより長いトランザクションが関連ホスト(図9Aおよび9Bに図示せず)によって処理されている時に、よりよいネットワーク負荷分散性能を促進する可能性がある。というのは、分類機能が、接続の最初の通信時に使用され、転送機能が、その後に使用されるからである。その一方で、第2構成950は、より多数のより短いトランザクションが関連ホストによって処理されている時に、よりよいネットワーク負荷分散性能が促進する可能性がある。というのは、分類機能が、ネットワーク負荷分散インフラストラクチャを介して集められるパケットの総数のうちのより大きい比率のために使用されるからである。この状況では、リクエストルーティング機能も使用されている場合に、リクエストルータ306もまた、総コンピューティングリソースのうちのある比率を割り当てられる。この3つの機能の間でのリソース分配は、現在のリソース消費および/または不足に応じて、接続の処理中に調整する(たとえば、「オンザフライ」で調整する)ことができる。
上記で図2および3に関して示したように、各負荷分散ユニット106は、ネットワーク負荷分散インフラストラクチャ106全体のすべてまたは一部に対応するものとすることができる。所与の物理的に、論理的に、任意等に定義されるか規定された負荷分散ユニット106について、そのリソースを、スケールアウトプロシージャ中に再割り当てすることができる。具体的に言うと、負荷分散ユニット106の異なるネットワーク負荷分散関連の分離された機能の間のリソース分配を、スケールアウトプロシージャ中で変更することができる。さらに、複数の異なる機能ならびに図9Aおよび9Bに特に示されていない他のネットワーク負荷分散関連の機能を、異なるリソース比率で割り当てることができる。
すべての負荷分散機能に割り当てられる総システムリソースの比率も、スケールアウトプロシージャ中で変更することができる。一般的な処理能力の例として、総処理能力のうちで負荷分散に振り向けられる比率を、負荷分散を必要とするトラフィックの量が増える時に、徐々に増やすことができる。
ネットワーク負荷分散ソフトウェアは、任意選択として、監視を実行して、分析し、リソースを再割り当てしなければならないかどうかを判定することができる。たとえば、ネットワーク負荷分散ソフトウェアは、異なるネットワーク負荷分散関連機能のプロセッサ使用率を監視することができる。実際の再割り当てを、任意選択として、オフラインモードまたはオンラインモードのネットワーク負荷分散ソフトウェアによって自動的に実行することもできる。
本明細書に記載のネットワーク負荷分散インフラストラクチャのスケールアウト機能(たとえば、少なくとも部分的にソフトウェアで実現される)を、異なるインストールに関連させることができ、このスケールアウト機能が、必ずしも単一のインストールに対する変更でないことを理解されたい。リソース指向の例では、本明細書に記載のネットワーク負荷分散インフラストラクチャを、あるインストール環境で1つのリソース分配に従って構成でき、異なる動作パラメータを有する別のインストール環境で、別の異なるリソース分配に従って構成することができる。さらに、スケールアウトに関して上記で説明した機能、特徴、オプションなどは、「スケールイン」にも適用可能である。言い換えると、ネットワーク負荷分散インフラストラクチャ(またその副機能)に振り向けられるリソースを、減らすこともできる。
(ヘルスおよび負荷の処理例)
この節では、ヘルスおよび/または負荷情報などのホスト状態情報を、ネットワーク負荷分散でどのように収集でき、使用できるかを説明する。この節では、主に図10〜18を参照し、ヘルスおよび負荷ハンドラ314(図3)によって提供されるヘルスおよび負荷機能を示す。図3を参照して上記で説明したように、各ホスト108は、1つまたは複数のアプリケーション316をホストする。ヘルスおよび負荷ハンドラ314は、ネットワーク負荷分散のある説明される実施形態のアプリケーション316および/またはホスト108に関連するヘルスおよび/または負荷情報を使用する。
図10に、ホスト状態情報(HSI)1006を含む例示的なネットワーク負荷分散手法を示す。各ホスト108(1)、108(2)...108(n)には、1つまたは複数のアプリケーション316(1)、316(2)...316(n)が含まれる。全般的にこれらのホスト108および具体的にこれらのアプリケーション316は、時々状況を変更することができる。
たとえば、ホスト108およびアプリケーション316は、新しい接続を受け入れつつある場合と、そうでない場合がある。また、これらが、クライアントリクエストをすばやく処理している場合と、ゆっくり処理している場合がある。さらに、これらが、予備の多数のリソースを有する場合と、未使用のリソースがほとんどない場合がある。そのようなデータまたは他のデータのすべてまたは一部に、ホスト状態情報1006が含まれる場合がある。一般に、ホスト状態情報1006は、ホスト108および/またはそこで動作するアプリケーション316のある態様の状況の表示を提供する。
説明された実施形態では、各ホスト108(1)、108(2)...108(n)に、ホスト状態情報(HSI)デターミナ(determiner)1002(1)、1002(2)...1002(n)が含まれる。各ホスト108(1)、108(2)...108(n)には、ホスト状態情報(HSI)ディセミネータ(disseminator)1004(1)、1004(2)...1004(n)も含まれる。ホスト状態情報デターミナ1002および/またはホスト状態情報ディセミネータ1004のそれぞれを、負荷分散インフラストラクチャ(LBI)106の一部とすることができる。
各ホスト状態情報デターミナ1002は、それぞれのホスト108および/またはそこで動作するアプリケーション316のホスト状態情報1006を判定する。そのようなホスト状態情報1006を判定する例示的技法を、以下で、図12〜14、特に図13Aを参照して説明する。各ホスト状態情報ディセミネータ1004は、そのそれぞれのホスト108および/またはアプリケーション316に関するホスト状態情報1006を、負荷分散インフラストラクチャ106(たとえば、負荷分散インフラストラクチャ106のうちでホスト108に位置しない部分)に配布する(disseminate)。そのようなホスト状態情報1006の配布の例示的技法を、以下で図12〜17、特に図13Bおよび15〜17を参照して説明する。
具体的に言うと、各ホスト状態情報ディセミネータ1004は、ホスト状態情報1006を、少なくとも1つのヘルスおよび負荷ハンドラ314および/またはクラシファイヤ304を含む負荷分散インフラストラクチャ106の各負荷分散ユニット(LBU)106に(直接にまたは間接的に)配布する。負荷分散インフラストラクチャ106は、ネットワーク負荷分散を実施する時にホスト状態情報1006を参照する。たとえば、ロジック1008によって示されるように、負荷分散インフラストラクチャ106は、負荷分散判断がホスト状態情報1006に応答するようにすることができる。
(1)での動作で、ホスト状態情報デターミナ1002は、それぞれのホスト108および/またはアプリケーション316についてホスト状態情報1006を判定する。(1)および(2)で、ホスト状態情報ディセミネータ1004は、ホスト状態情報1006をホスト108から負荷分散インフラストラクチャ106に配布する。たとえば、ホスト状態情報1006を、個々の負荷分散ユニット106に配布できる。(3)で、ロジック1008は、負荷分散判断が、ホスト状態情報1006に反応するようにする。(4)で、ネットワーク負荷分散判断に基づいて、接続がターゲットのホスト108に転送される。
図11は、ホスト状態情報を含むネットワーク負荷分散の例示的な方法を示すフローチャート1100である。フローチャート1100には、3つのブロック1102〜1106が含まれる。フローチャート1100の動作は、他の環境でおよびさまざまなソフトウェア方式と共に実行することができるが、図1〜3および10を特に使用して、この方法の一部の態様および例を示す。
ブロック1102において、ホスト状態情報は、ホストから負荷分散ユニットに送信される。たとえば、ホスト状態情報1006は、ホスト108から負荷分散ユニット106に送信される。ブロック1104において、ホスト状態情報は、負荷分散ユニットでホストから受信される。たとえば、負荷分散ユニット106は、ホスト108からのホスト状態情報1006を受信できる。ブロック1106において、負荷分散判断は、受信されたホスト状態情報に応答するようにされる。たとえば、負荷分散ユニット106のロジック1008は、ネットワーク負荷分散に関する判断を、ホスト状態情報1006に応答するようにすることができる。
したがって、図10では、負荷分散インフラストラクチャ106は、ホスト108(および/またはそのアプリケーション316)からホスト状態情報1006を収集し、ホスト108に向けられた入力リクエストが、ホスト状態情報1006に応答して負荷分散される。以下で図12〜18を参照してさらに説明するように、このホスト状態情報1006は、アプリケーション固有とすることができる。やはり以下でさらに説明するように、ホスト状態情報1006の例には、ヘルスおよび/または負荷情報を含めることができる。
図12に、ヘルスおよび/または負荷情報(HLI)1206を含む例示的なネットワーク負荷分散手法を示す。ホスト108(1)、108(2)...108(n)が、ネットワークなどの通信リンケージ1210を介して負荷分散ユニット106(1)、106(2)...106(u)に結合される。
図からわかるように、ホスト108は、ヘルスおよび負荷情報1206を、通信リンケージ1210を使用して負荷分散ユニット106に通信する。ヘルスおよび負荷情報1206の双方向通信は、両方に頭がある矢印によって示されるように、負荷分散ユニット106からホスト108への2方向通信であって、完全さ、コヒーレンシ、正しさなどを供給する通信を指し、ホスト108および/または負荷分散ユニット106が、互いに独立に障害を発生することができるようになっている。そのような負荷分散ユニット106からホスト108への2方向の通信を、以下で、特に図15を参照してさらに説明する。
ヘルス情報は、所与のホストおよび/またはアプリケーションがクライアントリクエストを処理できるかどうかを反映する。負荷情報は、所与のホストおよび/またはアプリケーションが特定の瞬間に処理できるクライアントリクエストの数、量、および/またはレベルを反映する。言い換えると、負荷は、所与のホストおよび/またはアプリケーションの総容量の使用可能な数、量、および/またはレベルを直接におよび/または逆に反映することができる。上記で注記したように、図12〜18を参照して説明する実施形態は、ヘルスおよび/または負荷情報に焦点を合わせたものであるが、この実施形態は、(そのアプリケーションを含む)ホストの一般的な状態情報にも適用可能である。
説明される実施形態では、各ホスト108(1)、108(2)...108(n)には、それぞれのヘルスおよび負荷インフラストラクチャ(H&LI)コンポーネント1202(1)、1202(2)...1202(n)が含まれる。各ヘルスおよび負荷インフラストラクチャコンポーネント1202は、任意選択として、各ホスト108に常駐し、実行される負荷分散インフラストラクチャ106の一部とすることができる。ヘルスおよび負荷情報1206を、ソフトウェアで実現することができる。機能する時に、各ヘルスおよび負荷インフラストラクチャ1202(1)、1202(2)...1202(n)は、それぞれのヘルスおよび負荷(H&L)テーブル1204(1)、1204(2)...1204(n)が作成する。
これらのヘルスおよび負荷テーブル1204には、アプリケーション固有エントリを含めることができる。ヘルスおよび負荷テーブル1204に記憶されるヘルスおよび負荷情報1206は、負荷分散インフラストラクチャ106とは独立にすることができる。たとえば、管理者、設計者などは、構成時にヘルスおよび負荷情報1206の判断基準を指定することができる。さらに、ホスト108であるかホスト108を有する装置の外部のエンティティは、装置上のアプリケーション316のヘルスおよび負荷情報1206の判定に寄与することができる。例示的なヘルスおよび負荷テーブル1204を、以下で図13Aを参照してさらに説明する。
各負荷分散ユニット106(1)、106(2)...106(u)には、それぞれの統合ヘルスおよび負荷(H&L)キャッシュ1208(1)、1208(2)...1208(u)が含まれる。各統合ヘルスおよび負荷キャッシュ1208に、各ヘルスおよび負荷テーブル1204(1)、1204(2)...1204(n)からの情報が含まれる。その結果、各負荷分散ユニット106に、負荷分散ユニット106がそのネットワークトラフィックを負荷分散するホスト108のそれぞれのヘルスおよび負荷情報1206へのすばやい(たとえばキャッシュに格納された)アクセスが与えられる。
動作中に、ヘルスおよび負荷インフラストラクチャ1202は、ヘルスおよび負荷テーブル1204からのヘルスおよび負荷情報1206を、統合ヘルスおよび負荷キャッシュ1208にプッシュする。ヘルスおよび負荷情報1206を供給する機構は、イベントドリブンであり、ヘルスおよび負荷テーブル1204への変更が、適時にスケーラブルな形で統合ヘルスおよび負荷キャッシュ1208に供給されるようになっている。
図13Aは、図12に示された例示的なヘルスおよび負荷テーブル1204を示す図である。説明される実施形態では、ヘルスおよび負荷テーブル1204には、それぞれが異なるアプリケーション316に関連する複数のエントリ1302が含まれる。各エントリ1302は、3つの列を有するヘルスおよび負荷テーブル1204の1行に対応するものとすることができる。これらの列は、アプリケーション識別子(ID)1302(A)、アプリケーション状態特性1302(B)、および負荷バランサ命令1302(C)に対応する。
各エントリ1302は、特定のアプリケーション316に関連するので、各アプリケーションがスピンアップされる(たとえば管理者によって)時に、1つの行が追加される。同様に、アプリケーションがクローズダウンされるたびに、1行が削除/除去される。同様に、列1302(A)、1302(B)、および/または1302(C)の個々のフィールドは、その値が変化する時に修正/更新される。たとえば、所与のアプリケーション316に関して状態特性値が変化した時に、所与のアプリケーション316のエントリ1302のアプリケーション状態特性1302(B)のフィールドの値が更新される。
アプリケーション316のエントリ1302の追加および削除は、ホスト108の制御マネージャからの入力によって実現することができる。たとえば、オペレーティングシステムの制御マネージャ部分は、アプリケーション316の起動および停止に能動的にかかわるので、アプリケーション316が起動され、停止される時を知っている。したがって、制御マネージャは、少なくとも部分的に、アプリケーション316を起動したことを識別でき、制御マネージャは、少なくとも部分的に、アプリケーション316を停止したことを確立することができる。したがって、ヘルスおよび負荷インフラストラクチャ1202に、制御マネージャによってアプリケーション316の起動および停止について知らせることができる。したがって、アプリケーション316からの明示的な通信を、ヘルスおよび負荷インフラストラクチャ1202に供給する必要はない。制御マネージャの例が、Microsoft(登録商標)Corporation社のWindows(登録商標)Operating SystemのService Control Manager(SCM)である。
アプリケーション識別子1302(A)には、エントリ1302が関連するアプリケーション316を一意に識別するのに使用される情報が含まれる。アプリケーション識別子1302(A)に、関連するアプリケーション316の、仮想IPアドレスおよびポート、物理IPアドレスおよびポート、使用されるプロトコル、およびプロトコル固有情報の1つまたは複数を含めることができる。プロトコルは、HTTP、IPsec、SOAPなどとすることができる。プロトコル固有情報は、エントリ1302に関連するアプリケーションをさらに表すURLパターンまたはストリングとすることができる。したがって、アプリケーション識別子1302(A)によって、特定のホスト108の特定のアプリケーションエンドポイントがより具体的に参照される。
他のアプリケーション識別子を、代わりに使用することができる。たとえば、通信帯域幅を減らすために、アプリケーション識別子1302(A)を、ヘルスおよび負荷インフラストラクチャ1202および負荷分散ユニット106で上記の例示的な情報にマッピングされる32ビットの数とすることができる。さらに、エントリ1302のフィールドのどれにも、実際に、そのフィールドの真の情報をルックアップするためのキーとして使用されるグローバル一意識別子(GUID)を含めることができる。
アプリケーション状態特性1302(B)には、エントリ1302に関連するアプリケーション316の状況を反映する情報が含まれる。アプリケーション状態特性1302(B)には、関連するアプリケーション316の、アプリケーションヘルス、アプリケーション負荷、およびアプリケーション容量が含まれる。アプリケーションヘルスは、アプリケーションが機能しているかどうかを示す擬似ブール値である。アプリケーションヘルスは、healthy(健全)、failing(障害)、またはunknown(未知)とすることができる。アプリケーションヘルスは、比較的瞬間的な値であり、アプリケーションヘルス値が変化する時に、比較的短い待ち時間(たとえば、約1秒または数秒)で負荷分散ユニット106に通信される。
アプリケーション負荷は、所与のアプリケーションがどれほど使用されているかまたはビジーであるかを示し、したがって、所与のアプリケーションがどれほどの追加の負荷を処理できるかを直接にまたは逆に示す値である。アプリケーション負荷は、望まれる場合に負荷の増減の過渡的スパイクをなくすために、ヒステリシスを誘導する機構によって平滑化することができる、比較的ゆっくりと変化するまたは平均的な値である。これは、比較的低い頻度で負荷分散ユニット106に通信される(たとえば、毎分約1回から4回)。アプリケーション負荷の値は、アプリケーション容量に関して意味を与えられる。
アプリケーション容量は、アプリケーションの最大容量を示す値である。これは、所与のコンテキストで意味を持つが、他のコンテキストに関しても十分に柔軟になるように一般的な形で選択される。アプリケーション容量は、構成時に決定される、無単位の有界値(たとえば0〜99)である。これは、処理能力、メモリサイズ/速度、ネットワークアクセス、これらの組合せなどに基づくものとすることができる。アプリケーション容量によって、ホスト108(1、2...n)の組での同一種類の他のアプリケーションの間での相対容量が表される。
したがって、アプリケーション容量に関して、アプリケーション負荷が意味を持つ。所与のアプリケーションのアプリケーション負荷は、所与のアプリケーションのアプリケーション容量の比率である。その代わりに、アプリケーション負荷を、無単位数として表すことができ、この数から、アプリケーション容量の値に関する比率を突き止めることができる。
負荷バランサ命令1302(C)には、エントリ1302が関連するアプリケーション316に関する負荷分散ユニット106のヘルスおよび負荷インフラストラクチャ1202によって確立される命令の所望のおよび/または期待される状態を反映する情報が含まれる。負荷バランサ命令1302(C)には、関連するアプリケーション316の、ターゲット負荷分散状態および現在負荷分散状態が含まれる。
ターゲット負荷分散状態によって、ヘルスおよび負荷インフラストラクチャ1202によって望まれる、負荷分散ユニット106への命令の状態が反映される。現在負荷分散状態によって、ヘルスおよび負荷インフラストラクチャ1202が、負荷分散ユニット106で記録される負荷分散ユニット106への命令の現在の状態をどのように理解するかが反映される。したがって、現在負荷分散状態によって、負荷分散ユニット106が通信プロトコルを使用する指示によってその下で現在動作しているとヘルスおよび負荷インフラストラクチャ1202が期待する負荷分散命令が反映される。そのような例示的な通信プロトコルを、以下で図15に関してさらに説明する。ターゲット負荷分散状態と現在負荷分散状態の間の相互作用および関係も、以下で図15に関してさらに説明する。
ターゲット負荷分散状態および現在負荷分散状態は、それぞれ、active(アクティブ)、inactive(非アクティブ)、draining(排出中)の値にすることができる。active命令は、新しいリクエスト/接続が歓迎され、エントリ1302に関連するアプリケーションでターゲットにできることを示す。inactive命令は、関連するアプリケーションに追加パケットを転送してはならないことを示す。draining命令は、新しいリクエスト/接続に関するパケットを関連するアプリケーションに送信してはならないが、既存のリクエスト/接続に関するパケットを、関連するアプリケーションに転送し続けなければならないことを示す。
説明される実施形態では、それぞれのヘルスおよび負荷情報1206の決定版が、複数のホスト108のそれぞれのホスト108に位置するヘルスおよび負荷テーブル1204に記憶される。この実施形態では、ホスト108がクラッシュする場合に、失われるヘルスおよび負荷情報1206が、やはりクラッシュするアプリケーション316に関するものである。したがって、高可用性の手段が、データの複製なしで自動的に得られる。しかし、ヘルスおよび負荷情報1206の決定版を、その代わりに他の場所に記憶することができる。他のそのようなストレージオプションに、負荷分散ユニット106自体、複数の他の(他のすべてを含む)ホスト108のヘルスおよび負荷情報1206を記憶し、維持するホスト108(その唯一のタスクとしてまたはホスティング義務と共に)、もう1つの別々のおよび/または外部の装置などが含まれる。
ヘルスおよび負荷情報1206の決定版が、ホスト108(1、2...n)に分散される以外の場所に記憶され、維持される場合には、そのようなヘルスおよび負荷情報1206を、高可用性のために冗長に記憶することができる(たとえば、複製装置にも記憶する、バックアップするなど)。ヘルスおよび負荷情報1206の記憶に関する例示的なプロキシシナリオを、以下で図17Aおよび17Bを参照して説明する。図17Aは、ヘルスおよび負荷テーブル1204のプロキシシナリオを対象とし、図17Bは、統合ヘルスおよび負荷キャッシュ1208のプロキシシナリオを対象とする。
図13Bは、図12に示された例示的な統合ヘルスおよび負荷キャッシュ1208を示す図である。説明される実施形態では、各負荷分散ユニット106内の各統合ヘルスおよび負荷キャッシュ1208に、各ホスト108のヘルスおよび負荷インフラストラクチャ1202ごとの各ヘルスおよび負荷テーブル1204に記憶される情報の少なくとも一部が含まれる。キャッシュされたヘルスおよび負荷情報を、統合ヘルスおよび負荷キャッシュ1208で任意の形で編成することができる。
図からわかるように、統合ヘルスおよび負荷キャッシュ1208には、それぞれのホスト108(1、2...n)のヘルスおよび負荷テーブル1204内の情報の一部またはすべてが複製される、ホスト108(1)、108(2)...108(n)ごとのキャッシュが含まれる。具体的に言うと、統合ヘルスおよび負荷キャッシュ1208には、ホスト#1のキャッシュ1304(1)、ホスト#2のキャッシュ1304(2)...ホスト#nのキャッシュ1304(n)が含まれる。したがって、図示の統合ヘルスおよび負荷キャッシュ1208は、広義のレベルではホスト108(1、2...n)によって編成され、各個々のキャッシュ1304に、対応するそれぞれのホスト108(1、2...n)のアプリケーション固有エントリが含まれる。別法では、統合ヘルスおよび負荷キャッシュ1208を、広義のレベルでアプリケーション316の種類によって編成することができ、特定のアプリケーション種類に向けられる個々のブロックを、さらに、ホスト(1、2...n)によって分割することができる。他のデータ構造フォーマットも、使用することができる。
図14は、ヘルスおよび負荷情報を含むネットワーク負荷分散の例示的な方法を示すフローチャートである。フローチャート1400には、8つのブロック1402〜1416が含まれる。フローチャート1400の動作は、他の環境でおよびさまざまなソフトウェア方式と共に実行することができるが、図1〜3および12〜13Bを特に使用して、この方法のある態様および例を示す。たとえば、2つのブロック1402〜1404の動作が、ホスト108によって実行され、6つのブロック1406〜1416の動作が、負荷分散ユニット106によって実行される。
ブロック1402で、ホストのヘルスおよび負荷情報を判定する。たとえば、アプリケーション316(2)のヘルスおよび負荷情報1206を、ヘルスおよび負荷インフラストラクチャ1202(2)によって確かめ、ホスト108(2)のヘルスおよび負荷テーブル1204(2)に記憶することができる。ブロック1404で、判定されたヘルスおよび負荷情報を、負荷分散ユニットに配布する。たとえば、ヘルスおよび負荷インフラストラクチャ1202(2)によって、アプリケーション316(2)のヘルスおよび負荷情報1206を負荷分散ユニット106(1、2...u)に送ることができる。矢印1418によって示されるように、ブロック1402および1404の動作は、繰り返され、その結果、(アプリケーション)ヘルスおよび負荷が、継続的に監視され、変化が発生する時に更新される。
ブロック1406で、ヘルスおよび負荷情報をホストから受け取る。たとえば、負荷分散ユニット106(1)によって、複数のホスト108(1、2...n)からヘルスおよび負荷情報1206を受け取ることができ、これに、ホスト108(2)のアプリケーション316(2)のヘルスおよび負荷情報1206が含まれる。ブロック1408で、受け取ったヘルスおよび負荷情報をキャッシュに格納する。たとえば、負荷分散ユニット106(1)によって、ホスト108(1、2...n)からのヘルスおよび負荷情報1206を統合ヘルスおよび負荷キャッシュ1208(1)に記憶することができる。統合ヘルスおよび負荷キャッシュ1208(1)の図13Bの実施形態を参照すると、ホスト108(2)からのアプリケーション316(2)のヘルスおよび負荷情報1206を、ホスト#2のキャッシュ1304(2)に記憶することができる。矢印1420によって示されるように、ブロック1406および1408の動作が繰り返され、その結果、(アプリケーション)ヘルスおよび負荷情報を、継続的に受け取り、変化が発生する時に更新することができる。
破線の矢印1422によって示されるように、負荷分散ユニット106によって、(アプリケーション)ヘルスおよび負荷の問題を処理しながら、クライアント102からの通信も処理される。ブロック1410で、新しい接続をリクエストするパケットを受け取る。たとえば、負荷分散ユニット106(1)によって、ネットワーク104を介してクライアント102(2)からTCP SYNパケットを受け取ることができる。ブロック1412で、キャッシュされたヘルスおよび負荷情報を調べる。たとえば、負荷分散ユニット106(1)によって、統合ヘルスおよび負荷キャッシュ1208(1)を調べることができる。具体的に言うと、負荷分散ユニット106(1)によって、ホスト#1、#2...#nのキャッシュ1304(1、2...n)にまたがって、TCP SYNパケットが向けられるアプリケーションに関連するエントリを調べることができる。
ブロック1414で、キャッシュされたヘルスおよび負荷情報に応答するホストを選択する。たとえば、負荷分散ユニット106(1)によって、統合ヘルスおよび負荷キャッシュ1208(1)にキャッシュされたヘルスおよび負荷情報1206に応答するアプリケーション316(2)を有するホスト108(2)を選択することができる。選択されたアプリケーション316(およびホスト108)は、健全であり、追加の負荷を受け入れることができなければならない(たとえば、おそらくは、TCP SYNパケットが向けられるアプリケーション種類であるアプリケーションの間で最も負荷の軽いアプリケーション)。
キャッシュされたヘルスおよび負荷情報の調査(ブロック1412での)、およびキャッシュされたヘルスおよび負荷情報に応答するホスト選択(ブロック1414での)は、特定の新しい接続をリクエストするパケットの受取の前におよび/またはバッチ方式を使用して実行することができる。また、選択は、多数の方式のいずれかによるものとすることができる。たとえば、トークンベースの方式またはラウンドロビンベースの方式を使用することができる。どちらの方式でも、選択に、アプリケーションオプションの間での相対負荷の重みづけを含めることができる。この調査および選択を、トークンベース方式およびラウンドロビンベース方式と共に、以下で図18を参照して、「分類、転送、およびリクエストルーティングの例」という題名の節で、特に分類機能に関して説明する。
ターゲットホストがブロック1414で選択された後に、新しい接続をリクエストするパケットを、そのホストに送ることができる。ブロック1416で、クライアントから受け取られたパケットを、選択されたホストに転送する。たとえば、TCP SYNパケットが、負荷分散ユニット106(1)から、選択されたホスト108(2)に転送される。この最初のパケットの転送は、やはり以下で「分類、転送、およびリクエストルーティングの例」という題名の節でさらに説明するように、クラシファイヤ304またはフォワーダ302によって直接に実現することができる。
説明される実施形態について、ヘルスおよび負荷インフラストラクチャ1202は、複数のホスト108に常駐し、これにまたがって分散されると同時に、(ヘルス及び負荷ハンドラ314によって表される)負荷分散ユニット106にも位置する。ヘルスおよび負荷インフラストラクチャ1202は、3つの責任を有する。第1に、ヘルスおよび負荷インフラストラクチャ1202は、リスニングポイントを公開して、ヘルスおよび負荷テーブル1204のアプリケーション状態特性1302(B)に関するアプリケーション状況更新を達成する。第2に、ヘルスおよび負荷インフラストラクチャ1202は、アプリケーション状況情報を合成して、負荷分散ユニット106が行わなければならないことを判定する。これは、負荷バランサ命令1302(C)で実施される。第3に、ヘルスおよび負荷インフラストラクチャ1202は、この命令をホスト108から負荷分散ユニット106に通信する。
負荷バランサ命令1302(C)の命令内容は、効果的に、アプリケーション状態特性1302(B)の情報のダイジェスト版になる。しかし、負荷分散ユニット106は、アプリケーション状態特性1302(B)の生情報ならびにこの処理された命令を受け取ることもできる。ヘルスおよび負荷テーブル1204のこれらおよび他のフィールドの内容の通信は、以下で図15を参照して説明するメッセージプロトコルを使用して達成される。
図15に、図12に示されたホスト108と負荷分散ユニット106の間のヘルスおよび負荷情報に関連する通信の例示的なメッセージプロトコル1500を示す。一般に、イベントドリブン機構を使用して、ホスト108から負荷分散ユニット106にヘルスおよび負荷テーブル1204へ変更をプッシュする。言い換えると、説明される実施形態では、ヘルスおよび負荷テーブル1204が更新される時に、ホスト108から負荷分散ユニット106に情報が送られる。これによって、各ヘルスおよび負荷テーブル1204のすべてのスナップショットを周期的に送ることがなくなり、これによって、ヘルスおよび負荷インフラストラクチャ1202によるネットワーク帯域幅消費が減る。
メッセージプロトコル1500は、任意の使用可能なメッセージトランスポート機構を使用して実施することができる。そのような機構に、信頼性のあるマルチキャスト伝送、ポイントツーポイント伝送(たとえば、ユーザデータグラムプロトコル(user datagram protocol、UDP))などが含まれる。図からわかるように、メッセージプロトコル1500に7つのメッセージ種類1502〜1514すなわち、ハートビートメッセージ1502、グッドバイメッセージ1504、行チェンジメッセージ1506、テーブルスナップショット取得メッセージ1508、テーブルスナップショット送信メッセージ1510、テーブル状態仮定メッセージ(postulate table state message)1512、および誤仮定メッセージ(postulate wrong message)1514が含まれる。
矢印1516および1518を除いて、この図によって、異なるメッセージ種類1502〜1514の間の時間的関係が暗示されていないことを理解されたい。たとえば、行チェンジメッセージ1506は、通常は、グッドバイメッセージ1504に続かない。
ハートビートメッセージ1502によって、特定のホスト108が機能していることが示され、統合ヘルスおよび負荷キャッシュ1208内の特定のホスト1304の対応する特定のキャッシュに関する対応する特定のヘルスおよび負荷テーブル1204の内容の、あるエラー検査が提供される。各ホスト108のヘルスおよび負荷インフラストラクチャ1202によって、各負荷分散ユニット106の各統合ヘルスおよび負荷キャッシュ1208に直接的にまたは間接的にハートビートメッセージが送られる。
ハートビートメッセージ1502によって、各ヘルスおよび負荷テーブル1204全体のスナップショットが各負荷分散ユニット106に周期的に送信されないことに部分的に起因して生じる統合ヘルスおよび負荷キャッシュ1208のデータのエージングアウト(aging−out)問題に対処する。ハートビートメッセージ1502の伝送方式を、以下で図16を参照してさらに説明する。
ハートビートメッセージ1502には、ホストの識別子、エラー検査データ、および任意選択としてDNS名が含まれる。ホストの識別子は、構成時に選択される一意の(たとえば32ビット)数とすることができる。エラー検査データは、チェックサム、状態変化シーケンス番号、世代番号、CRC値など、受取り側の負荷分散ユニット106が、統合ヘルスおよび負荷キャッシュ1208の内容が送る側のホスト108のヘルスおよび負荷テーブル1204の内容と一致することを検証できるようにするものとすることができる。世代番号手法が使用される場合に、複数の世代IDを、アプリケーションの「チャンク」(chunk)に割り当てられる各世代IDと共に使用することができる。その後、メッセージは、コンテキストに応じて、チャンク番号またはチャンク番号/世代ID対を参照することができる。
エラー検査データは、ヘルスおよび負荷テーブル1204全体に関する単一の値とすることができ、あるいは、エントリ1302ごとのベースで判定される複数の値とすることができる。DNS名を任意選択として送って(たとえば「x」個のハートビートごとに)、ホストの現在の正しいネットワークアドレスを検証または更新することができる。
グッドバイメッセージ1504は、特定のホスト108がシャットダウンを計画していることを示すために、特定のホスト108から負荷分散ユニット106に送られる。グッドバイメッセージ1504には、特定のホスト108のネットワークアドレスにインデクシング/マッピングすることができるホスト識別子が含まれる。グッドバイメッセージ1504は、「高速クリア」を早めるためのホスト108によるクリーンな意図的なシャットダウンに使用される。しかし、グッドバイメッセージ1504が失われる場合に、ハートビートメッセージ1502が送られなくなるので、キャッシュは、最終的に特定のホスト108のエントリをエージングアウトする。
行チェンジメッセージ1506は、特定のホスト108の所与のアプリケーション316のヘルスおよび/または負荷が変化したことを示すために、特定のホスト108から負荷分散ユニット106に送られる。行チェンジメッセージ1506には、ホスト識別子、アプリケーション識別子、動作、および動作のデータが含まれる。例示的なホスト識別子は、上記で、ハートビートメッセージ1502およびグッドバイメッセージ1504に関して説明した。例示的なアプリケーション識別子は、上記で、ヘルスおよび負荷テーブル1204のアプリケーション関連エントリ1302のアプリケーション識別子1302(A)に関して説明した。
行チェンジ動作を、追加し、削除し、更新することができる。言い換えると、動作のデータを、負荷分散ユニット106の統合ヘルスおよび負荷キャッシュ1208に既に存在する情報に追加(追加動作について)または置換(更新動作について)することができる。削除動作について、データを供給する必要はない。メッセージプロトコル1500は、単一の行チェンジメッセージ1506について複数の動作の実行を規定できるように定義される。したがって、特定のホスト識別子について、アプリケーション識別子、動作、および動作データの組を、その特定のホスト識別子によって識別されるホスト108の複数のアプリケーション316について繰り返すことができる。
テーブルスナップショット取得メッセージ1508は、特定の統合ヘルスおよび負荷キャッシュ1208の負荷分散ユニット106から個々のまたは複数のホスト108に送られる。このテーブルスナップショット取得メッセージ1508は、ホスト108のヘルスおよび負荷インフラストラクチャ1202が、それぞれのホスト108のそれぞれのヘルスおよび負荷テーブル1204のスナップショットを供給することをリクエストする。このメッセージには、リクエスト元の負荷分散ユニット106の識別が含まれ、このメッセージは、負荷分散ユニット106によって、(i)負荷分散ユニット106に障害が発生し、回復した後に、(ii)ホスト108に障害が発生し、回復し、ハートビートメッセージ1502の送信をもう一度開始した後に、(iii)行チェンジメッセージ1506が負荷分散ユニット106に送られたが、メッセージが捨てられ、したがって、統合ヘルスおよび負荷キャッシュ1208が、それぞれのホスト108のそれぞれのヘルスおよび負荷テーブル1204と同期していない場合に、および(iv)他の場合に、使用することができる。
第3の(iii)状況について、統合ヘルスおよび負荷キャッシュ1208とそれぞれのホスト108のそれぞれのヘルスおよび負荷テーブル1204との間の同期がないことは、それぞれのホスト108からの後続のハートビートメッセージ1502によって発見される。というのは、「エラー検査」によって、統合ヘルスおよび負荷キャッシュ1208が古いことが示されるからである。その後、負荷分散ユニット106によってテーブルスナップショット取得メッセージ1508を送ることができ、その結果、統合ヘルスおよび負荷キャッシュ1208を更新することができる。したがって、3つの(i、ii、iii)例示的な状況について、負荷分散ユニット106によって、その後、テーブルスナップショット取得1508を使用して統合ヘルスおよび負荷キャッシュ1208が再構成される。テーブルスナップショット取得1508は、ポイントツーポイントの形で各ホスト108に繰り返して送ることができ、あるいは、マルチキャストの形で多数のホスト108に1回で送ることができる。
テーブルスナップショット送信メッセージ1510は、矢印1516によって示されるように、個々のホスト108が、特定の負荷分散ユニット106からテーブルスナップショット取得メッセージ1508を受け取った後に、個々のホスト108から特定の負荷分散ユニット106に送られる。テーブルスナップショット送信メッセージ1510の内容は、ヘルスおよび負荷インフラストラクチャ1202によって準備され、これには、個々のホスト108のヘルスおよび負荷テーブル1204のすべてまたは少なくとも複数の行が含まれ、その結果、特定の負荷分散ユニット106が統合ヘルスおよび負荷キャッシュ1208を再構築できるようになる。テーブルスナップショット送信メッセージ1510は、別々に指定されるメッセージとすることができ、あるいは、行チェンジメッセージ1506の追加動作のシーケンスと同等にすることができる。
テーブル状態仮定メッセージ1512および誤仮定メッセージ1514は、ヘルスおよび負荷テーブル1204のエントリ1302の負荷バランサ命令1302(C)のターゲット負荷分散状態と現在負荷分散状態に関する。ターゲット負荷分散状態は、負荷分散ユニット106がその下で動作することをヘルスおよび負荷インフラストラクチャ1202が望む命令である。現在負荷分散状態は、負荷分散ユニット106が現在その下で動作するとヘルスおよび負荷インフラストラクチャ1202が期待するか考える命令である。一般に、この2つの負荷分散状態は、同一である。
しかし、ターゲット負荷分散状態は、状態命令変化の推移期間中に、現在負荷分散状態と異なる場合がある。たとえば、ターゲット負荷分散状態および現在負荷分散状態は、両方とも、当初はactiveにセットされる。ホスト108および/またはそのホストのアプリケーション316の問題が、検出され、ターゲット負荷分散状態命令が、ドレイニング(draining)に切り替えられる。このドレイニング命令が、行チェンジメッセージ1506を使用して負荷分散ユニット106に通信される。
この命令変化が、すべての負荷分散ユニット106のすべての統合ヘルスおよび負荷キャッシュ1208に記録される前に、遅延がある。この推移期間中に、ターゲット負荷分散状態が、ドレイニングであり、現在負荷分散状態が、まだ、ホスト108のヘルスおよび負荷テーブル1204ではアクティブである。現在負荷分散状態をドレイニングに変更する前に、ヘルスおよび負荷インフラストラクチャ1202は、統合ヘルスおよび負荷キャッシュ1208が実際にドレイニングの新しい命令状態に更新されることを保証することを求める。
負荷分散ユニット106の統合ヘルスおよび負荷キャッシュ1208が新しい状態命令に更新されたことを検証するために、ヘルスおよび負荷インフラストラクチャ1202は、テーブル状態仮定メッセージ1512を負荷分散ユニット106に送信する。テーブル状態仮定メッセージ1512は、状態命令を変更しなければならないことを示す行チェンジメッセージ1506の送信後のある時(たとえば、所定の遅延期間の後)に送信される。テーブル状態仮定メッセージ1512は、この例では、テーブル状態がドレイニングでなければならないことを示す。破線の矢印1518によって示されるように、負荷分散ユニット106は、統合ヘルスおよび負荷キャッシュ1208が仮定される状態命令と異なる場合に、このテーブル状態仮定メッセージ1512に応答する。
統合ヘルスおよび負荷キャッシュ1208の命令が、状態仮定命令と異なる場合に、負荷分散ユニット106は、テーブル状態仮定メッセージ1512を発行したホスト108のヘルスおよび負荷インフラストラクチャ1202に、誤仮定メッセージ1514を送る。その後、このヘルスおよび負荷インフラストラクチャ1202は、統合ヘルスおよび負荷キャッシュ1208から誤仮定メッセージ1514が受け取られなくなるまで、周期的にテーブル状態仮定メッセージ1512を再送信する。誤仮定メッセージ1514が受け取られなくなった時点で、ヘルスおよび負荷インフラストラクチャ1202は、新しい現在負荷分散状態で行チェンジメッセージ1506を送る。この意味で、統合ヘルスおよび負荷キャッシュ1208は、現在負荷分散状態の決定的デターミナであり、ヘルスおよび負荷インフラストラクチャ1202は、ターゲット負荷分散状態の決定的デターミナである。
図16に、図12に示されたホスト108と負荷分散ユニット106の間の通信の例示的なメッセージ伝送方式を示す。例示的メッセージ伝送方式によって、通信リンケージ1210でハートビートメッセージ1502によって消費される帯域幅を減らすことができる。図16のメッセージ伝送方式は、ハートビートメッセージ1502に特に適合されているが、メッセージプロトコル1500の他のメッセージにも使用することができる。
ホスト108(1)、108(2)、108(3)...108(11)、および108(12)のグループが、負荷分散ユニット106(1)、106(2)...106(u)と共に示されている。線のそれぞれは、ホスト108(1、2...12)の間のメンバシップリンケージまたは包含を表す。ホスト108(1、2...12)のグループは、負荷分散ユニット106にハートビート情報を伝搬させるために一緒に働くノードのメンバシップを形成する。12のホストが示されているが、より多数またはより少数を、ホストの所与のグループの一部とすることができる。また、1つの負荷分散インフラストラクチャ106によってサービスされるホスト108の組全体を、1つ、2つ、3つ、またはより多数のホストのグループに分割することができる。
説明される実施形態では、ホスト108(1、2...12)のグループのノードのメンバシップは、ハートビートメッセージ1502を負荷分散ユニット106に送信する責任を負うリーダーを選ぶ。ホスト108(1、2...12)のグループの各(リーダーでない)ホスト108は、選ばれたリーダーにハートビートメッセージ1502を送る。この例では、ホスト108(4)が選ばれたリーダーである。
ノードのメンバシップによって、ホスト108(1、2...12)のグループの各ホスト108のハートビート情報が、グループリーダーホスト108(4)に伝搬される。ホスト108(4)によって、ハートビート情報が収集され、統合ハートビートメッセージ1602に統合される。統合ハートビートメッセージ1602(1)、1602(2)...1602(u)が、それぞれの負荷分散ユニット106(1)、106(2)...106(u)に送られる。この統合ハートビートメッセージ1602は、任意選択として、さらに帯域幅消費を減らすために圧縮することができる。
もう1つの別法として、リーダーホスト108(4)によって、グループメンバシップの変化だけを統合ヘルスおよび負荷キャッシュ1208に転送することができる。言い換えると、このモードでは、統合ヘルスおよび負荷キャッシュ1208によって、それだけではないにせよ主に、メンバシップに対する状態変化が扱われる。あるホスト108がオンラインになる時に最初のハローが転送されることと、そのホスト108がオフラインになる時にグッドバイメッセージ1504が送信されることを保証するのは、リーダーホスト108(4)の責任である。さらに、ホスト108によって、ハートビートメッセージ1502が「転送」されることを周期的に指定することができる。これによって、リーダーホスト108(4)に、メンバシップ変更を表さない場合であっても統合ヘルスおよび負荷キャッシュ1208にメッセージを送ることが指示される。
ハートビートメッセージ1502(統合ハートビートメッセージ1602を含む)は、統合ヘルスおよび負荷キャッシュ1208がヘルスおよび負荷テーブル1204と非同期になった時に、負荷分散ユニット106によって使用される。この同期の欠如は、たとえば、統合ヘルスおよび負荷キャッシュ1208のクラッシュまたは他の障害および/あるいは負荷分散ユニット106のクラッシュまたは他の障害から生じる可能性がある。上記で説明したように、各ハートビートメッセージ1502に、エラー検査データが含まれ、このエラー検査データは、統合ヘルスおよび負荷キャッシュ1208とヘルスおよび負荷テーブル1204の間の同等性を検証するのに使用可能である。特定のホスト108および/またはそのホストのアプリケーション316に関する非同等性が発見された場合には、その特定のホスト108のDNS名が、ハートビートメッセージ1502から獲得される。
DNS名が、統合ヘルスおよび負荷キャッシュ1208によって使用されて、テーブルスナップショット送信メッセージ1510の形で更新されたヘルスおよび負荷情報1206を得るために、テーブルスナップショット取得メッセージ1508が特定のホスト108に送信される。非同等性が発見されたホスト108のそれぞれに、異なるまたは同一のテーブルスナップショット取得メッセージ1508が送信される。最終的に、統合ヘルスおよび負荷キャッシュ1208内のヘルスおよび負荷情報1206が、新しいハートビートメッセージ1502によって検証可能なように、ヘルスおよび負荷テーブル1204のヘルスおよび負荷情報1206と同等になる。この形で、メッセージプロトコル1500および同等性検査方式を使用する手動の管理なしで、障害を発生した統合ヘルスおよび負荷キャッシュ1208を動作状態にブートストラップすることができる。
図17Aおよび図17Bに、それぞれヘルスおよび負荷テーブル1204および統合ヘルスおよび負荷キャッシュ1208の例示的なヘルスおよび負荷情報プロキシストレージシナリオを示す。図12〜16に関して上記で説明した実施形態では、ホスト108に、ヘルスおよび負荷インフラストラクチャ1202が含まれる。しかし、他の実施形態に、ヘルスおよび負荷インフラストラクチャ1202を含まないホストを伴うことができる。
たとえば、ホストは、ヘルスおよび負荷インフラストラクチャが、実施されないか、ポリシのためにホストにインストール不能であるかのいずれかのバージョンのアプリケーションおよび/またはオペレーティングシステムを実行している場合がある。その結果、これらの種類のホストは、その上でヘルスおよび負荷インフラストラクチャ1202を実行していない。ホスト1702は、そのような、ヘルスおよび負荷インフラストラクチャ1202を実行しないホストである。それでも、ホスト1702は、プロキシ1704などの1つまたは複数のプロキシで実行されるヘルスおよび負荷インフラストラクチャ1202を使用することができる。
プロキシ1704は、常駐し、実行中のヘルスおよび負荷インフラストラクチャ1202を備え、このヘルスおよび負荷インフラストラクチャ1202には、ヘルスおよび負荷テーブル1204が含まれる。ホスト1702は、ホスト1702で実行中のアプリケーションのヘルスおよび負荷テーブル1204にヘルスおよび負荷情報1206を供給することによって、ヘルスおよび負荷インフラストラクチャ1202の機能を使用することができる。別法では、プロキシ1704は、外部監視動作を実行することによって、ホスト1702のヘルスおよび負荷を推定することができる。プロキシ1704は、冗長性および結果の高可用性のために、プロキシ1704(1)および1704(2)として図示されている。
上記で図12〜16を参照して、および以下で図18を参照して説明する実施形態では、負荷分散は、統合ヘルスおよび負荷キャッシュ1208を含む負荷分散ユニット106を用いて実現される。しかし、他の実施形態に、統合ヘルスおよび負荷キャッシュ1208を含まない負荷分散ユニットを伴うことができる。
たとえば、統合ヘルスおよび負荷キャッシュ1208を記憶または他の形で含まず、かつ/またはそれができないモノリシックな負荷分散ハードウェアまたは他の負荷分散インフラストラクチャによって、負荷分散を実現することができる。負荷バランサ1706は、統合ヘルスおよび負荷キャッシュ1208を有しない1つまたは複数の負荷分散装置を反映する。それでも、負荷バランサ1706は、プロキシ1708などの1つまたは複数のプロキシに存在する統合ヘルスおよび負荷キャッシュ1208を使用することができる。
プロキシ1708には、統合ヘルスおよび負荷キャッシュ1208が含まれ、この統合ヘルスおよび負荷キャッシュ1208に、負荷バランサ1706によってサービスされるホストされるアプリケーションのヘルスおよび負荷情報1206が記憶される。負荷バランサ1706によって、負荷バランサ1706のネイティブであり負荷バランサ1706によってサポートされるアプリケーションプログラミングインターフェース(API)を使用してヘルスおよび負荷情報にアクセスすることによって負荷分散機能を実行する時に、統合ヘルスおよび負荷キャッシュ1208のヘルスおよび負荷情報1206を使用することができる。別法では、統合ヘルスおよび負荷キャッシュ1208は、APIを呼び出して、命令を含むヘルスおよび負荷情報1206を負荷バランサ1706にプッシュすることができる。プロキシ1708は、冗長性およびその結果の高可用性のために、プロキシ1708(1)および1708(2)として図示されている。
図18に、負荷分散ユニット106のクラシファイヤ304ならびにヘルスおよび負荷ハンドラ314を伴う例示的なターゲットアプリケーションエンドポイント割当プロシージャを示す。ヘルスおよび負荷ハンドラ314が、統合ヘルスおよび負荷キャッシュ1208を獲得した後に、ヘルスおよび負荷情報1206は、新しいリクエスト/接続のアプリケーションエンドポイントの選択に使用される。
上記で図13Bを参照して説明したように、統合ヘルスおよび負荷キャッシュ1208には、複数のホスト108のキャッシュされたヘルスおよび負荷情報1206が含まれる。複数のホスト108から発するヘルスおよび負荷情報1206からの統合ヘルスおよび負荷キャッシュ1208の作成および更新を容易にするために、その中のヘルスおよび負荷情報1206が編成され、その結果、各ホスト108の識別子によってアクセス可能になる。しかし、ヘルスおよび負荷情報1206は、アプリケーションエンドポイント選択を容易にするために、アプリケーション316の種類によってアクセス可能にもなるように編成される。
言い換えると、ヘルスおよび負荷ハンドラ314は、複数のホスト108についてヘルスおよび負荷情報1206にまたがってアプリケーション316ごとのベースでヘルスおよび負荷情報1206にアクセスすることができる。所与のアプリケーション316のヘルスおよび負荷情報1206が、ホスト108ごとにアクセスされた後に、入力接続リクエストの割当を、ヘルスおよび負荷情報1206に従って実行することができる。たとえば、所与のアプリケーション316の健全なエンドポイントの間で使用可能な相対負荷容量を統合する、所与のアプリケーション316のエンドポイントの選択によって、所与のアプリケーション316の可能なエンドポイントを入力接続リクエストに割り当てることができる。
説明される実施形態では、クラシファイヤ304によって、ヘルスおよび負荷ハンドラ314へのターゲットアプリケーションエンドポイント割当リクエスト1802が行われる。図からわかるように、ターゲットアプリケーションエンドポイント割当リクエスト1802には、(i)仮想IPアドレスおよびポート、(ii)プロトコル、ならびに(iii)プロトコル固有情報が含まれる。したがって、ターゲットアプリケーションエンドポイント割当リクエスト1802は、入力接続リクエストが向けられるアプリケーション316の種類を識別する。
ヘルスおよび負荷ハンドラ314は、ターゲットアプリケーションエンドポイント割当リクエスト1802を受信し、多数の選択機構のうちのいずれか1つまたは複数を使用して、アプリケーション316の識別された種類に対応する少なくとも1つの物理エンドポイントを選択する。待ち時間を減らすために、ヘルスおよび負荷ハンドラ314は、多数の入力接続リクエストに対して使用されるアプリケーションエンドポイントの割当を選択する。この割当は、ターゲットアプリケーションエンドポイント割当応答1804を使用して、ヘルスおよび負荷ハンドラ314からクラシファイヤ304に供給される。図からわかるように、ターゲットアプリケーションエンドポイント割当応答1804には、アプリケーション316の識別された種類の物理的IPアドレスおよびポートの割当(エンドポイントIP1、IP2、およびIP3など)が含まれる。
ターゲットアプリケーションエンドポイント割当応答1804の割当は、1つまたは複数の割当方式を使用して完了することができる。たとえば、トークン割当方式1806およびパーセンテージ割当方式1808が図示されている。トークン割当方式1806は、ユニットベースの割当方式であり、パーセンテージ割当方式1808は、時間ベースの割当方式である。
トークン割当方式1806では、相対的な負荷および容量の比率に応じて健全なエンドポイントIP1、IP2、およびIP3のそれぞれにトークンを割り当てる。図示の、総使用可能容量の例では、IP1が、使用可能容量の40%を有し、IP2が、使用可能容量の35%を有し、IP3が、使用可能容量の25%を有する。したがって、トークンの総数が、これらの比率に従って分割される。トークンの総数は、ターゲットアプリケーションエンドポイント割当リクエスト1802の一部として供給するか、ヘルスおよび負荷ハンドラ314によって判定することができる。
10、45、100、250、637、1000など、トークンの総数の任意の値を使用することができる。この値は、毎秒の接続リクエストの数、ならびにアプリケーションヘルスおよび/または負荷が変化する速度/頻度に依存して設定することができる。クラシファイヤ304は、トークンが使い果たされるまで、アプリケーションエンドポイント割当に関する接続リクエストに応答する時に、1つのトークンを「使い果たし」/消費し、その後、クラシファイヤ304は、ターゲットアプリケーションエンドポイント割当リクエスト1802を使用して別のトークン割当をリクエストする。
パーセンテージ割当方式1808では、類似する形で使用可能な相対容量が判定される。しかし、トークンの代わりに、アプリケーションエンドポイントあたりのこの判定された使用可能相対容量が、持続時間タイマ1810と共にクラシファイヤ304に供給される。クラシファイヤ304によって、持続時間タイマ1810が満了するまで、ターゲットアプリケーションエンドポイントが、使用可能な相対容量パーセンテージに従って入力接続リクエストに割り当てられる。
パーセンテージ割当方式1808について、クラシファイヤ304は、割り当てられたパーセンテージを厳守し、持続時間タイマ1810の時間を記憶するために、アプリケーションエンドポイント割当のランニングレコードを維持する。タイマが満了する時に、クラシファイヤ304は、ターゲットアプリケーションエンドポイント割当リクエスト1802を使用して、別のパーセンテージ割当をリクエストする。
トークン割当方式1806で、時間制限も使用できることに留意されたい。割り当てられたトークンが古すぎる場合に、これを破棄し、新しいトークンを獲得しなければならない。そうでなければ、クラシファイヤ304は、現在は古すぎるヘルスおよび負荷情報に基づいて前に割り当てられた古いトークンを消費する可能性がある。クラシファイヤ304によるアプリケーションエンドポイント割当の使用を、以下で、「分類、転送、およびリクエストルーティングの例」という題名の節でさらに説明する。
(セッショントラッキングの例)
この節では、セッション情報などのホスト状態情報がネットワーク負荷分散のためにどのように収集され、ネットワーク負荷分散においてどのように使用されるかを説明する。この節では、主に図19〜24を参照し、セッショントラッカ308(図3)によって提供されるセッションアフィニティ保存機能を示す。上記で図1〜3を参照して説明したように、各ホスト108は、クライアント102にサービスを提供する1つまたは複数のアプリケーション316をホストする。セッショントラッカ308は、ネットワーク負荷分散のある記述される実施形態のために、アプリケーション316とクライアント102の間で確立される接続のコンテキストに関するセッション情報を使用する。
図19に、セッション情報1902を含む例示的なネットワーク負荷分散手法を示す。接続[1]には、クライアント102(1)が、負荷分散インフラストラクチャ106を介してホスト108(2)と新たな接続を行うことが示されている。負荷分散インフラストラクチャ106は、1つまたは複数の負荷分散ユニット106から構成される場合がある。接続リクエストが、負荷分散インフラストラクチャ106に到達すると、そのリクエストは、通常は、ホスト108および/またはアプリケーション316のヘルスおよび/または負荷情報(図19には明示せず)に応答するネットワーク負荷分散機能を使用してホスト108にルーティングされる。
接続[1]が行われると、クライアント102(1)と、サービスするアプリケーション316との間でセッションが確立され、このアプリケーション316は、この例ではホスト108(2)上にある。このセッションは、クライアント102(1)とホスト108(2)の間の通信交換のコンテキストを提供する。セッションコンテキストの情報は、ホスト108(2)に記憶される。接続[1]が完了すると、セッションコンテキストを再び使用することはできない。その一方で、クライアント102(1)が、アプリケーション316によって提供されるサービスのために、ホスト108と別の接続を開始することを試みる場合に、セッションコンテキストは、再び有用になる場合がある。この別の接続が、セッションコンテキストを記憶するホストと同一のホスト108(2)にルーティングされない場合には、クライアント102(1)は、新しいセッションコンテキストを確立しなければならず、これは、時間がかかり、データ/処理が集中し、かつ/またはクライアント102(1)の人間のユーザをいらいらさせるものになる可能性がある。ヘルスおよび/または負荷情報に基づくネットワーク負荷分散を用いると、第2の接続がホスト108(2)にルーティングされる可能性がランダム以上になる可能性はない。
しかし、負荷分散インフラストラクチャ106が、セッション情報とホスト108の間のマッピングにアクセスできる場合には、負荷分散インフラストラクチャ106は、前に確立されたセッションに関連する接続リクエストを、適切なホスト108にルーティングすることができる。セッション情報の一部は、負荷分散インフラストラクチャ106を通って流れるパケットの内容から推測できる。しかし、この手法は、多数の理由から、不正確であり、無計画である。第1に、セッション確立および終了は、単に推測されるにすぎない。第2に、一部のセッションは、パケットに含まれる適切な表示を用いて「公式には」終了しない。たとえば、一部のセッションは、単純にタイムアウトする。第3に、ホスト108(2)からクライアント102(1)に送られるパケットは、負荷分散インフラストラクチャ106を含まないパスを通る場合があり、このことは、セッション情報に関する負荷分散インフラストラクチャ106によるパケットのスヌーピングを妨げる。
図19からわかるように、ホスト108は、セッション情報(SI)1902を負荷分散インフラストラクチャ106に供給する。ホスト108からのセッション情報1902を使用して、セッションアフィニティプリザーバ(preserver)1904は、確立されたセッションと、セッションがその上で確立されたホスト108との間のアフィニティを保存することができる。セッション情報1902には、クライアント102と特定のホスト108の間で確立された各セッションとその特定のホスト108の間のリンケージまたはマッピングが含まれる。このマッピングは、ホストセッション情報マッピング1906の一部としてセッションアフィニティプリザーバ1904からアクセス可能である。セッション情報1902のより詳細な例を、以下で特に図20、22、23A、および23Bを参照して説明する。
セッショントラッキングに関するある説明される実施形態で、クライアント102の論理的性質が関係する。図1に関して上記で注記したように、クライアント102は、特定の装置および/またはある装置の特定のユーザであり得る。その結果、異なる装置からホスト108にアクセスするユーザクライアント102のセッションアフィニティを、保存することができる。したがって、セッション情報1902を使用するセッション継続性を、プロキシシナリオ(たとえば、インターネットサービスプロバイダ(ISP)のプロキシ)でも実現することができる。
接続[1]の例を続けると、ホスト108(2)で確立されるセッションが、セッション情報1902として負荷分散インフラストラクチャ106に供給される。具体的に言うと、(i)クライアント102(1)およびホスト108(2)のセッションコンテキストと(ii)ホスト108(2)の識別子との間のリンケージ/マッピングが、ホストセッション情報マッピング1906で作成される。接続[2]の接続リクエストが、その後、同一のセッションコンテキストに関して到着する時に、セッションアフィニティプリザーバ1904によって、ホストセッション情報マッピング1906内でこのセッションコンテキストが突き止められ、リンケージ/マッピングから、ホスト108(2)がこのセッションコンテキストに関連することが確かめられる。
ホストセッション情報マッピング1906からセッションアフィニティプリザーバ1904によって確かめられたリクエストされたセッションコンテキストへのホスト108(2)のマッピングに応答して、接続[2]が、ホスト108(2)にルーティングされる。この意味で、セッションアフィニティの保存は、負荷分散インフラストラクチャ106にとって、アプリケーションヘルスおよび負荷ベースのネットワーク負荷分散決定よりも優先順位が高い。しかし、ヘルスおよび/または負荷は、たとえば負荷が極端に高い時またはセッション関連アプリケーションおよび/またはホストが障害状態である時に、セッショントラッキングよりも重要なネットワーク負荷分散要因になる場合がある。
多くの種類の接続が、セッション関連である可能性がある。その例には、TCP接続、トランスポートレイヤセキュリティ(TLS)/SSLセッション、PPTPセッション、IPSec/L2TPセッション、ISAセッション、HTTPクッキーベースセッション、ターミナルサーバセッション、管理者によって定義されるセッションなどが含まれる。説明のために、TPC接続を、TCPパケットのセッションとみなす。また、管理者によるセッションの定義のモデルを、列挙し、サポートすることができる。さらに、タイムアウトによって境界を示されるクライアントIPアドレスベースのセッションも、サポートすることができる。これは、比較的非インテリジェントなセッションサポートであるが、一部のユーザによって期待されるサポートである。
クライアント102からの接続リクエストは、所望のセッションの種類によって変化する。たとえば、種類「TPC接続」のセッションについて、接続リクエストに、TPCパケットが含まれる。種類「SSLセッション」のセッションについて、接続リクエストに、TCP接続が含まれる。他のそのような接続リクエストは、他のセッション種類に対応する。これらの例によって、セッションレイヤがどのようにしてあるかも示される。より下位のセッションレベルで、TCP接続に関するセッションコンテキストに、TCP4タプル、セッション番号、送信/受信されるバイト数などを含めることができる。より上位のセッションレベルで、SSLセッションのセッションコンテキストに、32バイトセッションID、ホスト108に供給されるクライアント102の公開鍵などを含めることができる。
図20に、通知2006およびメッセージ2008を使用するセッション情報の通信を用いる例示的なネットワーク負荷分散手法を示す。複数の負荷分散ユニット106(1)、106(2)...106(u)および複数のホスト108(1)、108(2)...108(n)が示されている。それぞれのホスト108(1)、108(2)...108(n)に、そこに常駐し、その上で実行されている1つまたは複数のそれぞれのアプリケーション316(1)、316(2)...316(n)が含まれる。通知2006は、アプリケーション316からセッション情報を供給するのに使用され、メッセージ2008は、ホスト108から負荷分散ユニット106にセッション情報を供給するのに使用される。
図からわかるように、それぞれのホスト108(1)、108(2)...108(n)に、それぞれのセッショントラッキングインフラストラクチャ(STI)2002(1)、2002(2)...2002(n)が含まれる。それぞれのセッショントラッキングインフラストラクチャ2002(1)、2002(2)...2002(n)に、それぞれのセッションテーブル2014(1)、2014(2)...2014(n)が含まれる(図19にはセッションテーブル2014(1)だけが明示的に図示されている)。
それぞれの負荷分散ユニット106(1)、106(2)...106(u)に、それぞれのトラフィックルーティング機能(TRF)2012(1)、2012(2)...2012(u)が含まれる。トラフィックルーティング機能2012に、たとえば、それぞれクラシファイヤ304およびリクエストルータ306によって提供されるものなどの、分類機能および/またはリクエストルーティング機能を含めることができる。負荷分散ユニット106(1)、106(2)...106(u)の全域で分散されるのが、分散セッショントラッキングマネージャ2010である。
説明される実施形態では、トラフィックルーティング機能2012および分散セッショントラッキングマネージャ2010が、負荷分散インフラストラクチャ106の一部である。セッショントラッキングインフラストラクチャ2002も、負荷分散インフラストラクチャ106の(たとえばリモートの)一部とすることができる。
API2004を使用して、アプリケーション316からセッショントラッキングインフラストラクチャ2002にセッション情報を供給する。API2004を使用して、アプリケーション316は、それに対するさまざまな変更を含むセッション情報についてセッショントラッキングインフラストラクチャ2002に通知する権限を与えられる。具体的に言うと、各アプリケーション316は、通知2006を供給することができ、セッショントラッキングインフラストラクチャ2002は、通知2006を受け入れることができる。
セッションが新たに確立されるかオープンされる時に、セッションが確立されたことの通知(またはセッション確立通知2006(E))が、アプリケーション316から供給される。セッション確立通知2006(E)には、セッション識別子と、任意選択としてアプリケーション316の識別子が含まれる。セッションが終了されるかクローズされる時に、セッションが終了したことの通知(または、セッション終了通知2006(T))が、アプリケーション316から供給される。セッション終了通知2006(T)にも、セッション識別子と、任意選択としてアプリケーション316の識別子が含まれる。
セッショントラッキングインフラストラクチャ2002は、セッション確立通知2006(E)を受け入れる時に、新しいセッションのエントリをセッションテーブル2014に挿入する。例示的なセッションテーブル2014を、以下で図23Aを参照して説明する。セッショントラッキングインフラストラクチャ2002は、セッション終了通知2006(T)を受け入れる時に、セッションテーブル2014内の古いセッションのエントリを除去する。
セッションテーブル2014(1)は、ホスト108(1)上のアプリケーション316(1)に関するセッション情報1902の正式の供給源である。しかし、一般に、セッション参照を有する入力接続リクエストのそれぞれの受信時にセッションテーブル2014にアクセスするためにホスト108に連絡するようにトラフィックルーティング機能2012に要求すると、待ち時間が多すぎる。したがって、セッション情報1902は、負荷分散ユニット106でキャッシュに格納される。
負荷分散ユニット106で、分散セッショントラッキングマネージャ2010によって、セッショントラッキング管理責任の一部として、セッション情報1902がキャッシュに格納される。一般に、分散セッショントラッキングマネージャ2010は、各負荷分散ユニット106に部分的に常駐する分散アプリケーションおよび/または仮想サービスである。論理セッションごとに、分散セッショントラッキングマネージャ2010によって、信頼性がありスケーラブルな形でそのセッション情報の少なくとも1つのキャッシュされたコピーが保持され、このコピーは、セッション参照を有する入力接続リクエストが負荷分散ユニット106によって受け取られる時に、トラフィックをルーティングするためにすばやく使用することができる。
ホスト108と負荷分散ユニット106の間の通信は、ホスト108から送られたメッセージ2008が、所期の負荷分散ユニット106に到着することを保証する信頼性のあるプロトコルによって実現される。各ホスト108は、メッセージ2008の所期の負荷分散ユニット106である少なくとも1つの特定の負荷分散ユニット106に束縛される。この束縛は、セッショントラッキングインフラストラクチャ2002と分散セッショントラッキングマネージャ2010の間でセッショントラッキングメッセージ2008を送るために、特定の負荷分散ユニット106のIPアドレスを各ホスト108に割り当てることによって作成される。負荷分散インフラストラクチャ106の高可用性を実現するために、負荷分散ユニット106に障害が発生する場合に、もう1つの負荷分散ユニット106が、障害を発生した負荷分散ユニット106のIPアドレスを引き継ぐ。IPアドレス引継ぎのための障害検出は、ハートビートまたは別のアライブネス(aliveness)監視方式を使用して達成することができる。
したがって、メッセージ2008によって、セッショントラッキングインフラストラクチャ2002から分散セッショントラッキングマネージャ2010にセッション情報1902が通信される。たとえば、セッショントラッキングインフラストラクチャ2002によってセッション確立通知2006(E)が受け入れられる時に、セッショントラッキングインフラストラクチャ2002によって、セッションアップメッセージ2008(U)も分散セッショントラッキングマネージャ2010に送られる。セッションアップメッセージ2008(U)には、セッション識別子、ホスト識別子、および任意選択の他の情報が含まれる。セッションアップメッセージ2008(U)の内容は、分散セッショントラッキングマネージャ2010の実施形態によってセッションごとに記憶できる情報に関して、以下で図23Bを参照してさらに説明する。セッショントラッキングインフラストラクチャ2002によって、セッション終了通知2006(T)が受け入れられる時に、セッショントラッキングインフラストラクチャ2002によって、分散セッショントラッキングマネージャ2010にセッションダウンメッセージ2008(D)も送られる。メッセージ2008は、セッショントラッキングインフラストラクチャ2002が、通知2006に応答して適切にセッションテーブル2014を変更する前、変更中、または変更の後に送ることができる。
図21は、通知およびメッセージを使用するセッション情報の通信を用いるネットワーク負荷分散の例示的な方法を示すフローチャート2100である。フローチャート2100には、15個のブロック2102〜2130が含まれる。フローチャート2100の動作は、他の環境およびさまざまなソフトウェア方式で実行することができるが、図1〜3および19〜20を使用して、特にこの方法のある態様および例を示す。
たとえば、4つのブロック2102〜2104および2118〜2120の動作は、アプリケーション316によって実行され、6つのブロック2106〜2110および2122〜2126の動作は、セッショントラッキングインフラストラクチャ2002によって実行され、5つのブロック2112〜2116および2128〜2130は、分散セッショントラッキングマネージャ2010によって実行される。8つのブロック2102〜2116の動作は、主にセッションのオープンを対象とし、7つのブロック2118〜2130の動作は、主にセッションのクローズを対象とする。
ブロック2102で、セッションをオープンする。たとえば、アプリケーション316によって、クライアント102とのセッションをオープンすることができる。ブロック2104で、セッション確立通知を供給する。たとえば、アプリケーション316によって、セッションのオープンの結果としておよび/またはセッションのオープンに関連して、API2004を使用して、セッショントラッキングインフラストラクチャ2002にセッション確立通知2006(E)を供給することができる。
ブロック2106で、セッション確立通知を受け入れる。たとえば、セッショントラッキングインフラストラクチャ2002によって、API2004に従って、アプリケーション316からセッション確立通知2006(E)を受け入れることができる。ブロック2108で、セッションテーブルにエントリを挿入する。たとえば、セッショントラッキングインフラストラクチャ2002によって、オープンされたセッションに関するエントリをセッションテーブル2014に挿入することができる。そのような挿入の例を、以下で特に図23Aを参照してさらに説明する。ブロック2110で、セッションアップメッセージを送る。たとえば、セッショントラッキングインフラストラクチャ2002によって、信頼性のある通信プロトコルを使用して、分散セッショントラッキングマネージャ2010にセッションアップメッセージ2008(U)を送ることができる。
ブロック2112で、セッションアップメッセージを受け取る。たとえば、分散セッショントラッキングマネージャ2010によって、信頼性のある通信プロトコルに従って、セッショントラッキングインフラストラクチャ2002からセッションアップメッセージ2008(U)を受け取ることができる。ブロック2114で、セッション情報エントリを作成する。たとえば、分散セッショントラッキングマネージャ2010によって、1つまたは複数の負荷分散ユニット106でキャッシュされるセッション情報1902のセッション情報エントリを作成することができる。そのような作成およびその後の追加の例を、以下で特に図22および23Bを参照してさらに説明する。
ブロック2116で、セッション情報を用いてネットワークトラフィックをルーティングする。たとえば、分散セッショントラッキングマネージャ2010と共に、トラフィックルーティング機能2012によって、作成されたセッション情報エントリを含むキャッシュされたセッション情報1902を使用して、セッション参照を有する入力接続リクエストをルーティングすることができる。そのようなトラフィックルーティングの例を、以下で、特に図24を参照してさらに説明する。追加の例を、下の「分類、転送、およびリクエストルーティングの例」という題名の節で説明する。
ブロック2118で、セッションをクローズする。たとえば、アプリケーション316によって、クライアント102とのセッションをクローズすることができる。ブロック2120で、セッション終了通知を供給する。たとえば、アプリケーション316によって、セッションクローズの結果としておよび/またはセッションクローズに関連して、API2004を使用して、セッショントラッキングインフラストラクチャ2002にセッション終了通知2006(T)を供給することができる。
ブロック2122で、セッション終了通知を受け入れる。たとえば、セッショントラッキングインフラストラクチャ2002によって、API2004に従って、アプリケーション316からセッション終了通知2006(T)を受け入れることができる。ブロック2124で、セッションテーブルのエントリを除去する。たとえば、セッショントラッキングインフラストラクチャ2002によって、クローズされたセッションの、セッションテーブル2014内のエントリを除去することができる。ブロック2126で、セッションダウンメッセージを送る。たとえば、セッショントラッキングインフラストラクチャ2002によって、信頼性のある通信プロトコルを使用して、分散セッショントラッキングマネージャ2010にセッションダウンメッセージ2008(D)を送ることができる。
ブロック2128で、セッションダウンメッセージを受け取る。たとえば、分散セッショントラッキングマネージャ2010によって、信頼性のある通信プロトコルに従って、セッショントラッキングインフラストラクチャ2002からセッションダウンメッセージ2008(D)を受け取ることができる。ブロック2130で、セッション情報エントリを破壊する。たとえば、分散セッショントラッキングマネージャ2010によって、セッション情報エントリを有する負荷分散ユニット106でキャッシュされたセッション情報1902のセッション情報エントリを破壊することができる。そのような破壊およびその後の削除の例を、以下で特に図22および23Bを参照してさらに説明する。
図22に、複数の負荷分散ユニット106でセッション情報を管理する例示的な手法を示す。それぞれの負荷分散ユニット106(1)、106(2)...106(u)に、分散アトムマネージャ(DAM)2202のそれぞれの部分2202(1)、2202(2)...2202(u)が含まれる。DAM2202は、分散セッショントラッキングマネージャ2010の例示的な実施形態である。それぞれのDAM部分2202(1)、2202(2)...2202(u)に、DAMテーブル(DAMT)2206のそれぞれの部分2206(1)、2206(2)...2206(u)が含まれる。
DAM2202は、信頼性がありスケーラブルな形でセッション情報1902を管理し、その結果、トラフィックルーティング機能2012がこれを使用してセッションアフィニティを保存できるようになる、分散アプリケーションまたは仮想サービスである。たとえば、トラフィックルーティング機能2012によって、API(特に図示せず)を使用してDAM2202にアクセスして、DAMT2206を検索するか検索させることができる。関数呼出し2204、DAM2202の動作、および図22の他の態様を、以下で、図23Aおよび23Bの説明の後にさらに説明する。
図23Aは、図20に示された例示的なセッションテーブル2014を示す図である。セッションテーブル2014には、「v」個のエントリ2302(1)、2302(2)...2302(v)が含まれる。各エントリ2302は、アプリケーション316から受け入れられたセッション確立通知2006(E)に応答してセッショントラッキングインフラストラクチャ2002によって挿入される。各エントリ2302は、アプリケーション316から受け入れられたセッション終了通知2006(T)に応答して、セッショントラッキングインフラストラクチャ2002によって除去される。
上記で説明したように、各セッション確立通知2006(E)に、セッション識別子および任意選択としてアプリケーション316の識別子が含まれる。セッションテーブル2014内のそれぞれのエントリ2302(1)、2302(2)...2302(v)に、(i)セッション識別子2302(1I)、2302(2I)...2302(vI)、および(ii)セッション種類および/またはアプリケーション2302(1T)、2302(2T)...2302(vT)のそれぞれのフィールドが含まれる。
セッション種類および/またはアプリケーション2302(T)は、''TCP''、''IPSEC''、''Terminal Server''、''HTTP−cookie''、上記で注記したアプリケーション種類などとすることができる。セッション識別子2302(I)は、''<発信元IPアドレス、発信元TCPポート、宛先IPアドレス、宛先TCPポート>''、''Client IP=172.30.189.122''、''User=’joe_user’''、''Cookie=’{b7595cc9−e68b−4eb0−9bf1−bb717b31d447}’''、別のもの、たとえばセッションのアプリケーション固有識別子などとすることができる。TCP接続/セッション種類の場合に、セッション識別子2302(I)を、その代わりに、TCP4タプル(IPv4またはIPv6)の正規版とすることができる。セッション識別子2302(I)およびアプリケーション/セッション種類2302(T)のフィールドの他の値を、その代わりに使用することができる。
図23Bは、図22に示された例示的な分散アトムマネージャ(DAM)テーブル(DAMT)2206を示す図である。DAMテーブル2206には、「w」個のエントリ2304(1)、2304(2)...2304(w)が含まれる。各セッション情報エントリ2304は、セッショントラッキングインフラストラクチャ2002から受け取られるセッションアップメッセージ2008(U)に応答してDAM2202によって作成される。各セッション情報エントリ2304は、セッショントラッキングインフラストラクチャ2002から受け取られるセッションダウンメッセージ2008(D)に応答して破壊される。以下でさらに説明するように、DAMテーブル2206のセッション情報エントリ2304は、実際には、関数呼出し2204を使用して、DAM2202によって操作することができる。
上記で説明したように、セッションアップメッセージ2008(U)に、セッション識別子、ホスト識別子、および任意選択の他の情報が含まれる。DAMテーブル2206内のそれぞれのセッション情報エントリ2304(1)、2304(2)...2304(w)に、(i)キー2304(1K)、2304(2K)...2304(wK)、(ii)データ2304(1D)、2304(2D)...2304(wD)、および(iii)メタデータ2304(1M)、2304(2M)...2304(wM)が含まれる。たとえば、キー2304(K)フィールドの値を、英数字ストリングとすることができ、データ2304(D)フィールドの値を、2進ビットとすることができる。キー2304(K)の値を、2進ビットとすることもできる。
キー2304(K)は、セッション識別子2302(I)に対応するものとすることができる。データ2304(D)は、セッションコンテキストが存在するホスト108のネットワークアドレスなどのホスト識別子に対応するものとすることができる。メタデータ2304(M)は、他の任意選択の情報に対応するものとすることができる。そのようなメタデータ2304(M)の例に、アトム衝突を解決し、アトムアライブネスを追跡する(たとえばタイムアウト機構を介して)のにDAM2202によって内部で使用されるデータを含めることができる(アトミックとしてのエントリ2304のこの特性記述は、下の段落でさらに説明する)。具体的に言うと、メタデータ2304(M)に、とりわけ、DAMテーブル2206にセッション情報エントリ2304を追加したエンティティ(たとえば、トラフィックルーティング機能2012のインスタンス)の識別が含まれる。
説明される実施形態では、各セッション情報エントリ2304は、DAM2202がエントリ2304を総括して追加、削除、コピーなどを行えるが、DAM2202は、通常、エントリ2304全体の一部を修正しないという意味でアトミックである。したがって、アトミックエントリ2304は、セッションアフィニティ保存実施形態の可用性およびスケーラビリティを実施するために、DAM2202によってDAMテーブル2206にまたがって、追加、削除、コピー、および他の形で操作される。
関数呼出し2204(図22の)は、DAMテーブル2206のアトミックエントリ2304を操作するために、DAM2202によって使用可能である。関数呼出し2204は、ポイントツーポイントまたはマルチキャストの形で、ある負荷分散ユニット106から1つまたは複数の他の負荷分散ユニット106に通信することができる。この関数呼出しに、追加アトム2204(A)、削除アトム2204(D)、照会アトム2204(Q)、およびリターンアトム2204(R)が含まれる。
追加アトム2204(A)は、AddAtom(キー、データ)の形になり、アトミックエントリ2304を1つまたは複数のDAMテーブル2206に追加するのに使用される。したがって、追加アトム2204(A)関数呼出しを、AddAtom(<セッション識別子>、ホストIPアドレス)として定式化することができる。削除アトム2204(D)は、DeleteAtom(キー)の形になり、1つまたは複数のDAMテーブル2206のアトミックエントリ2304を削除するのに使用される。削除アトム2204(D)関数呼出しは、キー2304(K)によって識別されるセッションのコピーを有することが既知のDAMテーブル2206に向けることができ、あるいは、コピーが削除されることを保証するためにすべてのDAMテーブル2206にマルチキャストすることができる。
照会アトム2204(Q)は、QueryAtom(キー)の形になり、入力接続リクエストによって参照されるセッション識別子が、特定のDAM部分2202の特定のローカルDAMテーブル2206で突き止められない時に、特定のDAM部分2202によって使用される。照会アトム2204(Q)関数呼出しは、1つまたは複数の(おそらくすべてを含む)他のDAM部分2202に送られる。これに応答して、各他のDAM部分220は、キー/セッション識別子についてそのローカルDAMテーブル2206を調べる。キーが別のDAM部分2202によって突き止められる場合に、この別のDAM部分2202が、リターンアトム2204(R)によってリプライされる。
リターンアトム2204(R)は、ReturnAtom(キー、データ)の形になり、照会アトム2204(Q)関数呼出しに応答するのに使用される。リターンアトム2204(R)関数呼出しは、DAM部分2202が、照会アトム2204(Q)呼出しで指定されたキー2304(K)によって識別されるリクエストされたアトミックエントリ2304をローカルDAMテーブル2206内に有する時に使用される。リターンアトム2204(R)関数呼出しは、照会アトム2204(Q)関数呼出しを発行したDAM部分2202に向けることができる。
追加アトム2204(A)関数呼出しは、セッションアップメッセージ2008(U)に応答して、かつ/または1つまたは複数の他のDAMテーブル2206にアトミックエントリ2304を複製するために、使用される。そのような複製は、冗長性および/またはスケーラビリティのためのものとすることができる。
削除アトム2204(D)関数呼出しは、セッションダウンメッセージ2008(D)に応答して使用され、1つまたは複数の他のDAMテーブル2206に送ることもできる。アトミックエントリ2304が削除された後に、そのアトミックエントリ2304は、DAM2202と共にとどまるように「ゾンビ」状態に入ることができ、任意選択として、その結果、アトミックエントリ2304のメタデータ2304(M)フィールドにゾンビ表示がある状態でDAMテーブル2206とともに実際は記憶されている。
したがって、アトミックエントリ2304が削除された後に、そのエントリは、ゾンビ状態でDAM2202およびDAMテーブル2206に留まることができ、その結果、この(現在は死んでクローズされた)セッションのパケットが、正しいプロトコル固有の扱いのためにセッションコンテキストのホスト108に向けられる。たとえば、TCP接続が破壊された後に受け取られるTCPパケットが、その接続を終了したホスト108に向けられる。このホスト108は、適切に、おそらくはRSTを送るかFIN−ACKを再送信することによって応答することができる。アトミックエントリ2304がこのゾンビ状態で過ごす時間は、使用される信頼性のある通信プロトコルのプロトコル固有デッドタイムに(適度に可能なだけ近く)一致する。
照会アトム2204(Q)関数呼出しは、第1の負荷分散ユニット106のDAM2202のローカルDAMテーブル2206に記憶されていないセッションを参照する入力接続リクエストを第1の負荷分散ユニット106が受け取る時に、アトミックエントリ2304を獲得するのに使用される。肯定のリターンアトム2204(R)関数呼出しを受け取るまで、ブロードキャスト照会アトム2204(Q)関数呼出しと同時にまたはシーケンシャルに、他のDAM部分2202に照会できることに留意されたい。
リターンアトム2204(R)関数呼出しは、第1の負荷分散ユニット106のDAM部分2202にアトミックエントリ2304を供給するために、第2の負荷分散ユニット106のDAM部分2202によって使用され、このアトミックエントリ2304は、照会アトム2204(Q)関数呼出しのキー/セッション識別子によって指定されるキー2304(K)を有し、この照会アトム2204(Q)関数呼出しは、第1の負荷分散ユニット106のDAM部分2202によって前に発行されたものである。トラフィックルーティング機能2012などの他のコンポーネントも、APIまたは類似物に従って、特に照会アトム2204(Q)関数呼出しなどの関数2204を呼び出せることに留意されたい。
DAM部分2202およびDAMテーブル2206は、無数の形で編成し、管理することができる。例の形は、複製/冗長性、獲得時のローカルキャッシング、位置選択のためのハッシュ化などに関する。完全な複製までの0、1、2、または3つ以上のレベルの複製を使用することができる。0レベルの複製では、各アトミックエントリ2304が、他のDAM部分2202への複製なしで、セッションアップメッセージ2008(U)を受け取るDAM2202に記憶される。
複製の第1レベルに関して、各アトミックエントリ2304は、それに関するセッションアップメッセージ2008(U)を受け取ったDAM2202に記憶され、追加アトム2204(A)関数呼出しを使用して1つの他のDAM部分2202にも追加(コピー)される。これによって、負荷分散ユニット106に関する1レベルの障害が処理される。同様に、複製の第2レベルに関して、各アトミックエントリ2304は、それに関するセッションアップメッセージ2008(U)を受け取ったDAM2202に記憶され、2つの他のDAM部分2202にも追加される。一般に、所与のDAM部分2202によってアトミックエントリ2304がコピーされる1つ、2つなどの他のDAM部分2202は、事前に決定されるか、ランダムに選択される。第3、第4などの複製のレベルも、使用することができる。
さらに、それに関するセッションアップメッセージ2008(U)を受け取ったDAM2202に記憶される各アトミックエントリ2304をすべての他のDAM部分2202に追加させることによって、完全な複製を使用することができる。複製レベルの選択によって、複数の要因が影響を受ける。複製レベルが高くなるにつれて、可用性が高まり、待ち時間が減る。その一方で、複製レベルが高くなるにつれて、ネットワークトラフィックおよびメモリ使用量の両方が増える。
完全な複製が使用されない時に、獲得時のローカルキャッシングを行うことができる。たとえば、DAM部分2202によって、DAMテーブル2206のそのDAMの部分内で、参照されるセッション識別子を突き止められない時に、そのDAM部分2202は、照会アトム2204(Q)関数呼出しを発行して、リターンアトム2204(R)関数呼出しを介して、参照されるセッション識別子に関連するアトミックエントリ2304を獲得する。使用の後に、獲得されたアトミックエントリ2304を廃棄するのではなく、DAM部分2202は、DAMテーブル2206のそのDAMの部分内で、獲得されたアトミックエントリ2304をキャッシュに格納する。このオプションによって、上記で列挙した要因の間のトレードオフが提供される。
完全な複製が使用されない時のもう1つのオプションとして、位置選択のハッシュ化を行うことができる。セッションの第1のアトミックエントリ2304が、セッションアップメッセージ2008(U)を受け取るDAM部分2202に記憶される。複製された1つまたは複数のコピーが、追加アトム2204(A)関数呼出しを介して、ハッシュ関数を使用して特定のDAM部分2202に送られる。各DAM部分2202に、可能なハッシュ値の範囲全体のうちのサブセットが割り当てられる。各セッション識別子が、あるハッシュ関数を使用してハッシュ化されて、ハッシュ値に達する。このハッシュ値が、割り当てられるDAM部分2202にマッピングされる。最初にアトミックエントリ2304が追加されるDAM部分2202によって、そのアトミックエントリ2304が、割り当てられたDAM部分2202に複製される。
位置選択のハッシュ化に関して、所望のアトミックエントリ2304をそのDAMテーブル2206にローカルにキャッシュされている少なくとも1つのDAM部分2202を、セッション識別子から知ることができる。したがって、照会アトム2204(Q)関数呼出しを、既知のDAM部分2202に向けることができる。これによって、通常は、ネットワークトラフィックおよび/または待ち時間が減る。
この位置選択のハッシュ化は、1つ、2つ、3つ、または4つ以上のレベルの複製と共に使用することができ、ハッシュ値の各範囲が、それぞれ、1つ、2つ、3つなどの異なるDAM部分2202にマッピングされる。さらに、位置選択のハッシュ化を、獲得時のローカルキャッシングと共に使用することができる。
図24は、複数の負荷分散ユニットでセッション情報を管理する例示的な方法を示すフローチャート2400である。フローチャート2400に、8つのブロック2402〜2416が含まれる。フローチャート2400の動作は、他の環境でおよびさまざまなソフトウェア方式と共に使用することができるが、図1〜3、19、20、22、および23Bを使用して、特にこの方法のある態様および例を示す。
ブロック2402で、セッション参照を有する入力接続リクエストを分析する。たとえば、トラフィックルーティング機能2012によって、特定の種類の前にオープン/確立されたセッションを参照する入力接続リクエストを受け取ることができる。ブロック2404で、セッション参照を使用してローカルDAMテーブルを検索する。たとえば、所与の負荷分散ユニット106およびトラフィックルーティング機能2012に関して、そのDAM部分2202によって、それに対応するDAMテーブル2206を検索して、セッション参照を探すことができる。
ブロック2406で、セッション参照がローカルDAMテーブルのキーと一致するかどうかを判定する。たとえば、DAM部分2202によって、DAMテーブル2206の複数のエントリ2304のキーフィールド2304(K)を検索して、セッション参照がキーフィールド2304(K)のいずれかの値と一致するかどうかを判定することができる。そうである場合には、フローチャート2400は、ブロック2412で継続される。
その一方で、セッション参照がどのキーとも一致しない場合には、フローチャート2400は、ブロック2408で継続される。ブロック2408で、照会アトム関数呼出しを行う。たとえば、DAM部分2202によって、キーとしてセッション参照/識別子を含む照会アトム2204(Q)関数呼出しを行うことができる。照会アトム2204(Q)関数呼出しを、少なくとも1つの他のDAM部分2202に送ることができる。照会アトム2204(Q)に関する可能な宛先DAM部分2202の数、選択、順序などは、DAM2202によって使用されるオプションに依存するものとすることができる(たとえば、複製レベル、位置選択のハッシュ化、獲得時のローカルキャッシング、ポイントツーポイントかマルチキャストかなど)。
ブロック2410で、返されたアトムを受け取る。たとえば、別のDAM部分2202によって発行されたリターンアトム2204(R)関数呼出しからの情報を受け取ることができる。その別のDAM部分2202は、それに対応するDAMテーブル2206内でアトミックエントリ2304を成功裡に突き止めており、突き止められたアトミックエントリ2304は、セッション参照と一致するキーを有する。リターンアトム2204(R)関数呼出しからの情報に、キーフィールド2304(K)および突き止められたアトミックエントリ2304のデータフィールド2304(D)からの値が含まれる。これらの値は、セッションのセッション識別子およびそのセッションにアフィニティ化(affinitize)されたホスト108のネットワークアドレスに対応する。
ブロック2412で、アトミックエントリを抽出する。アトミックエントリは、(ブロック2404および2406で)一致がローカルに見つかった場合にはローカルDAMテーブルから、(ブロック2408および2410で)一致が他所で見つかった場合には返されたアトムから、抽出される。たとえば、アトミックエントリ2304は、DAM部分2202のDAMテーブル2206から、またはリターンアトム2204(R)関数呼出しによって受け取られる情報から抽出することができる。抽出されたアトミックエントリ2304は、リターンアトム2204(R)関数呼出しの結果として受け取られた場合に、ローカルDAMテーブル2206でキャッシュすることができる。
ブロック2414で、参照されるセッションとのセッションアフィニティを有するホストが、アトミックエントリから確かめられる。たとえば、抽出されたアトミックエントリ2304のデータフィールド2304(D)の値を確かめ、これによって、アフィニティ化されたホスト108のネットワークアドレスを確かめることができる。ブロック2416で、入力接続リクエストを、確かめられたホストにルーティングする。たとえば、トラフィックルーティング機能2012および/または転送機能によって、セッション参照を有する入力接続リクエストを、確かめられたアフィニティ化されたホスト108にルーティングすることができる。例示的な分類機能、リクエストルーティング機能、および転送機能を、次の節で説明する。
(分類、転送、およびリクエストルーティングの例)
この節では、トラフィックルーティング機能の高可用性に関するものを含めて、ネットワーク負荷分散についてトラフィックルーティングをどのように実施できるかを説明する。トラフィックルーティング機能には、特に転送機能に関して、分類機能および/またはリクエストルーティング機能を含めることができる。この節では、主に図25〜31を参照する。この節では、リクエストルータ306(図3)の機能、トラフィックをルーティングする時のセッションのトラッキングとヘルスおよび負荷情報の使用の間の相互関係、セッション情報ならびに/またはヘルスおよび負荷情報を用いるトラフィックルーティング相互作用に関する動作実施形態、ネットワーク負荷分散インフラストラクチャの高可用性のためのフェールオーバープロシージャ(分類コンポーネント、転送コンポーネント、および/またはリクエストルーティングコンポーネントの障害の処理を含む)、追加のネットワーク負荷分散インフラストラクチャ構成などを明らかにする。
図25に、リクエストルータ306(H/S)によって実現されるリクエストルーティング機能を有する例示的なネットワーク負荷分散インフラストラクチャを示す。トラフィックルーティング機能2012に関して上記で注記したように、トラフィックルーティングは、分類(たとえば転送を伴う)および/またはリクエストルーティングに関連する可能性がある。パケットレベルの分類を、転送と共に、特に図4を参照して上記で説明した。リクエストルーティングを、特に図25に関してここで説明する。
リクエストレベルルーティングは、パケットレベルルーティングより上位のレベルで行われる。一般に、リクエストルータ306は、ホスト108で動作するアプリケーション316のプロキシとして働く。リクエストルータ306によって、TCP接続が終端され、クライアント102からの各リクエストが(おそらくは部分的に)解析され、各リクエストがホスト108に再提出される。リクエストルータ306は、SSL暗号化解除など、接続に対する前処理を実行することができる。また、リクエストルータ306は、ある種のリクエストを吸収することを選択でき(たとえば、リクエストルータが、応答のキャッシュを維持することができる)、リクエストをホスト108に転送する前に、「任意に」リクエストを修正することができる。
リクエストルータ306は、通常は、アプリケーション固有であり、行えることに関して無制限とすることができる。例として、リクエストルータ306の単一のクラスすなわちHTTP/SSLリクエストルータ306(H/S)は、以下の説明で対処する。図からわかるように、ネットワークアドレスC1を有するクライアント102が、ネットワーク104を介して、それぞれネットワークアドレスH1およびH2を有するホスト108(1)および108(2)と通信している。この通信は、HTTP/SSLリクエストルータ306(H/S)を含む負荷分散インフラストラクチャを介して実現される。
HTTP/SSLリクエストルータ306(H/S)によって、HTTPおよびSSLトラフィックが終端され、SSLトラフィックが暗号化解除され、クライアント102からの各HTTPリクエストが検査され、各リクエストを分類し、アプリケーションエンドポイントのヘルスおよび負荷情報を考慮しながらそのリクエストに「最適の」エンドポイントを判定するためにアプリケーション固有ルールが適用され、リクエストがエンドポイントに提出される。エンドポイントへのリクエスト提出では、クライアント102から発したものと別々のTCP接続が使用される(後者の接続は、HTTP/SSLリクエストルータ306(H/S)で終端される)。これらの動作は、クラシファイヤ304によって実行される動作と論理的に同等とみなすことができるが、HTTP/SSLリクエストルータ306(H/S)でのこれらの動作が、TCP接続内のリクエストごとに論理リクエストレベルで行われるという点で差が生じる。HTTP/SSLリクエストルータ306(H/S)およびリクエストルータ306全般は、同一の(i)アプリケーションヘルスおよび負荷ならびに(ii)クラシファイヤ304によって使用されるセッショントラッキングインフラストラクチャを使用することができる。
HTTP/SSLリクエストルータ306(H/S)は、クライアント102と2つのホスト108(1)および108(2)の間の仲介物として働く。HTTP/SSLリクエストルータ306(H/S)は、単一のTCP接続を介するクライアント102からの2つのリクエストを処理している。説明される実施形態では、結果のリクエストルーティングに、複数の動作が用いられる。第1に、クライアント102によって、HTTP/SSLリクエストルータ306(H/S)へのhttpまたはhttps接続[1]が確立され、リクエスト#1 2502(1)が送信される。
第2に、(トラフィックがSSL暗号化される場合に)HTTP/SSLリクエストルータ306(H/S)によって、SSLセッションが終端され、リクエスト#1 2502(1)が解析され、リクエスト#1 2502(1)の内容が検査される。アプリケーションヘルスおよび負荷ならびにセッション情報を考慮に入れて、HTTP/SSLリクエストルータ306(H/S)によって、ホスト108(1)がこの例でこの特定のリクエスト#1 2502(1)に「最良」のホストであると判定される。
第3に、HTTP/SSLリクエストルータ306(H/S)によって、ホスト108(1)への第2のTCP接続[2]が確立される。その代わりに、ホスト108(1)への既存の接続[2]を使用することができる。HTTP/SSL要求ルータ306(H/S)によって、たとえばリクエスト#1 2502(1)の暗号化解除されたバージョンが、ホスト108(1)に送られる。第4に、ホスト108(1)が、応答#1 2504(1)によって応答する。第5に、HTTP/SSLリクエストルータ306(H/S)によって、この応答#1 2504(1)が暗号化され、TCP接続[1]でクライアント102に送り返される。
第6に、クライアント102によって、もう1つのリクエスト、リクエスト#2 2502(2)が送信される。リクエスト#2 2502(2)は、リクエスト#1 2502(1)の処理に似た形で処理されるが、HTTP/SSLリクエストルータ306(H/S)がホスト108(2)を選択する点で異なる。この異なる選択は、ホスト108(1)が、障害を発生したか又はより負荷が重いので、リクエスト#2 2502(2)がリクエスト#1 2502(1)と異なるURLに向けられるので、などの理由によるものである。それにもかかわらず、HTTP/SSLリクエストルータ306(H/S)によって、別の副TCP接続が確立されるが、この副TCP接続[3]は、ホスト108(2)に対するものである。暗号化解除されたリクエスト#2 2502(2)が、ホスト108(2)にルーティングされ、応答#2 2504(2)が、そこから結果として受け取られる。応答#2 2504(2)の暗号化されたバージョンが、HTTP/SSLリクエストルータ306(H/S)からクライアント102に送られる。
第7に、クライアント102によって、HTTP/SSLリクエストルータ306(H/S)とのTCP接続[1]がクローズされる。HTTP/SSLリクエストルータ306(H/S)は、(将来のある時に)それぞれホスト108(1)および108(2)に対して行った接続[2]および[3]をクライアント102の代わりにクローズする。TCP接続[2]は、その代わりに、HTTP/SSLリクエストルータ306(H/S)がリクエスト#2 2502(2)のTCP接続[3]をオープン/使用すると決定した後にクローズすることができる。
HTTP/SSLリクエストルータ306(H/S)によって、http/https接続が終端されるので、HTTP/SSLリクエストルータ306(H/S)は、リクエストのルーティング以上のことを行うことができる。たとえば、HTTP/SSLリクエストルータ306(H/S)によって、潜在的に、応答のそれ自体のキャッシュを維持することができる(たとえば、キャッシュの無効化に帯域外機構を用いる)。上の例で注記したように、HTTP/SSLリクエストルータ306(H/S)によって、潜在的に、異なる種類のリクエストを、たとえばリクエストされたURLに基づいて、ホスト108の異なる組にルーティングすることができる。逆に、HTTP/SSLリクエストルータ306(H/S)によって、潜在的に、多数の長続きしないクライアント接続からのリクエストを集約し、これらを少数の長続きするTCP接続を介してホスト108に送ることができる。そのような接続集約によって、ホスト108でのTCP接続処理オーバーヘッドを減らすことができる。
他のクラスのリクエストルータを、HTTP以外の他の例示的なプロトコルに対応するものとすることができる。たとえば、リクエストルータを、SOAPリクエストルータとすることができる。SOAPリクエストルータは、HTTP/SSLリクエストルータ306(H/S)に類似する形で機能する。しかし、SOAPリクエストルータは、SOAPトラフィックのルーティングを専門とする。SOAPリクエストルータによって、SOAPヘッダが理解され、SOAPヘッダならびにアプリケーションヘルスおよび負荷に基づいて、ルーティング決定が行われる。
パケットレベルの分類および転送(またはパケットレベルのルーティング)とリクエストレベルのルーティングの両方によって、ある形のレイヤ7負荷分散を提供することができる。レイヤ7負荷分散は、以下で、「任意のトンネリングおよび/またはアプリケーションレベルロードバランシングを伴う接続移行の例」という題名の節でさらに説明する。パケットレベルルーティングによって、クライアントのTCP接続データの最初の部分への読取専用アクセスがもたらされ、リクエストレベルルーティングによって、データストリーム全体への読み取りアクセスおよび修正アクセスがもたらされる。
パケットレベルルーティングは、通常は、リクエストレベルルーティングに対する複数の長所を有する。この長所には、透過性(クライアントパケットは、そのままでホストに配信され、発信元および宛先のIPアドレスおよびポート番号が保存される)、低い処理オーバーヘッド(一般に、トラフィックの転送にはルートルックアップが伴う)、短い待ち時間(個々のパケットが転送され、TCP接続宛先が判定されたならばパケットはキューイングされなくなる)、および高可用性(一般に、フォワーダの障害ではTCP接続は終了されない)が含まれる。その一方で、リクエストレベルルーティングは、通常は、パケットレベルルーティングに対する下記の長所を有する:クライアントとの間を流れるデータストリーム全体を検査する能力、およびデータストリームを変換し、複数のホストの間でデータストリームを分割するか、複数のクライアントからのデータストリームを集約する能力。
図26は、(i)セッション情報ならびに(ii)ヘルスおよび負荷情報に関して入力パケットをルーティングする例示的な方法を示すフローチャート2600である。フローチャート2600に、8つのブロック2602〜2616が含まれる。フローチャート2600の動作は、他の環境でおよびさまざまなソフトウェア方式と共に使用することができるが、図1〜3、12、18〜22、および23Bを使用して、特にこの方法のある態様および例を示す。
ブロック2602で、入力パケットを受け取る。たとえば、クライアント102からのパケットを、負荷分散ユニット106のフォワーダ302で受け取ることができる。ブロック2604で、受け取ったパケットが先在するセッションに関するものであるかどうかを判定する。たとえば、フォワーダ302によって、ローカルDAMテーブル2206()を調べて、受け取ったパケットが既にTCP/IPセッションの一部であると判定することができる。
さらに、フォワーダ302によって、ローカルDAMテーブル2206()を調べ、受け取ったパケットがまだTCP/IPセッションの一部でないと判定することができる。この場合には、フォワーダ302によって、受け取られたパケットがクラシファイヤ304に供給され、クラシファイヤ304によって、受け取られたパケットがセッション参照を有する場合に、そのパケットに関する上位のセッションアフィニティを調べる。これらの動作の例は、上記で、特に図24を参照して説明したが、以下で、特に図27および28を参照して説明する。
受け取られたパケットが、先在するセッションに関する(ブロック2604での判定で)場合に、フローはブロック2606で継続される。ブロック2606で、先在するセッションにアフィニティ化されたホストを確かめる。たとえば、アフィニティ化されたホスト108を、ローカルDAMテーブル2206()および/または全体的な分散DAM2206から、フォワーダ302またはクラシファイヤ304によって確かめることができる。
ブロック2608で、アフィニティ化されたホストが健全であるかどうかを判定する。たとえば、クラシファイヤ304によって、統合ヘルスおよび負荷キャッシュ1208を調べて、特にTCP/IPセッションより上位の論理レベルのセッションの一部である受け取られたパケットについて、アフィニティ化されたホスト108が健全であるかどうかを判定することができる。このブロックの動作は、ヘルスおよび負荷ハンドラ314と共に達成することができる。
アフィニティ化されたホストが健全である(ブロック2608の判定で)場合に、フローは、ブロック2610で継続される。ブロック2610で、受け取られたパケットをアフィニティ化されたホストにルーティングする。たとえば、フォワーダ302(TCP/IPセッションに関する)またはクラシファイヤ304(上位レベルセッションに関する)によって、アフィニティ化されたホスト108にパケットをルーティングすることができる。代替実施形態では、クラシファイヤ304によって、上位レベルセッションの一部である受け取られたパケットについても、アフィニティ化されたホスト108へのルーティングのために、受け取られたパケットをフォワーダ302に返すことができる。
その一方で、(ブロック2608の判定で)アフィニティ化されたホストが健全でない場合に、フローは、ブロック2612で継続される。また、その一方で、(ブロック2604の判定で)受け取られたパケットが先在するセッションに関するものでない場合に、フローはブロック2612で継続される。ブロック2612で、ヘルスおよび負荷情報に応答してホストを選択する。たとえば、クラシファイヤ304によって、ヘルスおよび負荷ハンドラ314から獲得されるヘルスおよび負荷関連アプリケーション割当(たとえば、ターゲットアプリケーションエンドポイント割当応答1804から)からおよび/またはそれを使用して、ホスト108を選択することができる。この動作の例は、上記で特に図19および18を参照して説明したが、以下で、特に図30を参照してさらに説明する。
ブロック2614で、受け取られたパケットを選択されたホストにルーティングする。たとえば、クラシファイヤ304によって、選択されたホスト108にパケットをルーティングする(任意選択としてフォワーダ302を介して)ことができる。ブロック2616で、選択されたホストへの接続パスのルートをプラムする。たとえば、クラシファイヤ304によって、特に受け取られたパケットをクラシファイヤ304に供給したフォワーダ302にローカルなDAMテーブル2206()で、DAMテーブル2206にセッション情報エントリを追加することができる。このセッション情報エントリは、DAM2202について設けられた(たとえばセッショントラッカ308の)冗長性ポリシに従って複製することができる。
ブロック2614の動作およびブロック2616の動作は、特に図示された順序で、ブロック2616をブロック2614の前に実行して、任意の順序で部分的にまたは完全にオーバーラップして、などで実行することができる。クラシファイヤ304によって、上記で説明したように実行される動作を、その代わりにリクエストルータ306(または、より一般的にトラフィックルーティング機能2012)によって実行できることに留意されたい。
図27に、障害がないときの例示的なトラフィックルーティングフローを示す。図からわかるように、1つまたは複数の負荷分散対応スイッチ202(LBA)が、残りの負荷分散インフラストラクチャ106(別々には図示せず)に面する。転送および分類機能が、3つの装置またはノードにまたがって分配される。第1の装置に、フォワーダ302(1)およびクラシファイヤ304(1)が含まれる。第2の装置に、クラシファイヤ304(2)が含まれる。第3の装置に、フォワーダ302(2)が含まれる。
クラシファイヤ304(2)が第2装置で実行され、フォワーダ302(2)が第3装置で実行される状態で、各装置を、特にそれぞれの機能に合わせて調整することができる。たとえば、第2装置および第3装置のハードウェア、ソフトウェア、ファームウェア、これらの組合せなどを、過度な供給なしで所望の機能をサポートするように適合させることができる。したがって、フォワーダ302(2)を含む第3装置を、ハードウェア機能の観点からスイッチおよび/またはルータに似たものにすることができ、クラシファイヤ304(2)を含む第2装置を、ハードウェア機能の観点からサーバおよび/またはパーソナルコンピュータに似たものにすることができる。
4つのコンポーネントにまたがる機能を提供する3つの装置として図示されているが、転送および分類機能の代替の論理構成および/または装置レベル構成を、図27についてここで説明する例示的なトラフィックルーティングフローに適用可能である。また、ルーティング宛先が、ホスト108として図示されているが、ルーティング実施形態の本明細書での説明を、その代わりに、より一般的に、必ずしもパケットを消費する最後のノードではなく、パケットの次のノード宛先に適用することができる。
セッショントラッカ308のDAM2202実現を使用して、DAMテーブル2206を実施する。しかし、セッションアフィニティプリザーバ1904全般も、図27の例示的トラフィックルーティングフローに適用可能である。フォワーダ302(1)に、DAMテーブル部分2206(1)が含まれ、フォワーダ302(2)に、DAMテーブル部分2206(2)が含まれる。入力パケットは、ホスト108(1)またはホスト108(2)にルーティングされる。
説明される実施形態では、DAM2202が、セッション情報を有する、「アトム」2304の分散式のインメモリテーブルである(たとえば、任意選択のメタデータを伴うキーワード/値ペア)。DAM2202およびDAMテーブル2206は、上記で特に図22〜24を参照して説明した。クラシファイヤ304のクラスタ内のどのノードでも、アトム2304の追加、照会、および削除を行うことができる。DAM2202によって、アクティブ(たとえばTCP/IPレベル)ルータならびに高水準セッション情報を含む高可用性のDAMテーブル2206が維持される。
(1)で、負荷分散対応スイッチ202(LBA)によって、入力パケットがフォワーダ302(1)に向けられる。(2)で、フォワーダ302(1)によって、その内部ルーティングテーブルであるDAMテーブル2206(1)が調べられる。フォワーダ302(1)は、このパケットのアトミックエントリ2304を見つけられない場合に、そのパケットを、それに割り当てられたおよび/または関連するクラシファイヤであるクラシファイヤ304(1)に転送する。
(3)で、クラシファイヤ304(1)によって、この例のパケットがTCP−SYNパケットであることが認識される。したがって、クラシファイヤ304(1)によって、このパケットが、クライアント102からの新しいTCP接続の始めとして扱われる。ヘルスおよび負荷ハンドラ314(特に図示せず)からのヘルスおよび負荷情報を使用して、クラシファイヤ304(1)によって、ホスト108(1)がこのTCP接続を受け取らなければならないと判定される。クラシファイヤ304(1)によって、フォワーダ302(1)のローカルルーティングテーブルとして働くDAMテーブル2206(1)が更新され、DAM2206全体へのルートを表すアトミックエントリ2304も挿入される。これらは、別々の動作、DAMテーブル2206のTCP/IPレベルセッションがフォワーダ302に位置する単一の動作などとすることができる。DAM2202によって、その内部で、このルートが、規定された冗長性ポリシに従って、クラシファイヤ304のクラスタの1つまたは複数の他のメンバに複製される。
(4)で、フォワーダ302(1)によって、この接続の後続パケットが、クラシファイヤ304(1)との相互作用なしに、ホスト108(1)に直接に転送される。DAM2202を使用して、フォワーダ302、クラシファイヤ304、またはフォワーダ/クラシファイヤ対302/304の障害を、少なくとも部分的にマスクすることができる。DAM2202を使用して、負荷分散対応スイッチ202(LBA)が確立された接続のパケットを不注意に異なるフォワーダ302に送り始める場合のクライアント接続性を防ぐこともできる。
図28に、障害があるときの例示的なトラフィックルーティングフローを示す。図27の「無障害」(failure−free)の例示的なトラフィックルーティングフローと異なって、障害が、図28のネットワーク負荷分散インフラストラクチャ106(特に図示せず)の一部で発生している。具体的に言うと、フォワーダ302(1)およびクラシファイヤ304(1)が常駐し動作している第1装置が、図27に示された接続が確立された後に障害を発生する。この障害は、少なくとも部分的に、DAM2202によってマスクされる。
(1)で、負荷分散対応スイッチ202(LBA)によってフォワーダ302(1)の障害が検出され、クラスタ内の他のフォワーダ302への、その接続のパケットの転送が開始される。この例では、他のフォワーダ302が、フォワーダ302(2)である。図28に、障害状況が示されているが、負荷分散対応スイッチ202(LBA)は、フォワーダ302(1)がまだ使用可能である場合であっても、このトラフィックをフォワーダ302(2)に送ることもできる。この非障害誘導のフォワーダ302の変更は、たとえば、負荷分散対応スイッチ202(LBA)がフォワーダ302(1)へのこのトラフィックのアフィニティを「忘れた」という理由で発生する可能性がある。表記(2)〜(5)の動作は、障害状況および「忘れられたアフィニティ」状況の両方に適用される。
(2)で、フォワーダ302(2)によって、そのルーティングテーブルであるDAMテーブル2206(2)が調べられる。このパケットに関するルートが見つからない時には、フォワーダ302(2)によって、そのパケットがクラシファイヤ304(2)に転送される。(3)で、クラシファイヤ304(2)によって、このパケットが「ミッドコネクション(mid−connection)」パケットであることが認識され、クラシファイヤ304(2)によって、このパケットのルートに関してDAM2202が照会される。DAM2202は、これに関連するアトミックエントリ2304からの接続のルートを応答する。
(4)で、クラシファイヤ304(2)によって、フォワーダ302(2)内のルートがプラムされる。ルートをプラムする例示的なプロトコルを、以下でさらに説明する。(5)で、フォワーダ302(2)に向けられたこの接続の後続パケットが、クラシファイヤ304(2)に相談せずに、正しいホスト、この例ではホスト108(1)に直接にルーティングされる。
一般に、クラシファイヤ304とフォワーダ302の間の通信のルートプラムプロトコルに、ルートを追加する命令とルートを除去する命令が含まれる。具体的に言うと、ルート追加命令は、フォワーダ302から所与の接続の宛先ホスト108へのルートをプラムするために、クラシファイヤ304からフォワーダ302に送られる。たとえば、ルート追加命令を、図28の(4)に示されているように、フォワーダ302(2)からクラシファイヤ304(2)に供給することができる。ルート(たとえば、キーおよび対応する値)は、将来のフォワーダ302(2)によるすばやいアクセスのために、ローカルDAMテーブル2206(2)に追加される。この例では、クラシファイヤ304(2)が、フォワーダ302(2)と別々の装置であり、したがって、ルートプラムプロトコルを、装置間プロトコルとすることができる。しかし、ルートプラムプロトコルを、装置内通信にも使用することができる。
説明される実施形態では、クラシファイヤ304(2)に、接続インベントリ2802が含まれる。接続インベントリ2802を用いて、クラシファイヤ304(2)によって、クラシファイヤ304(2)がそれのためにルートをプラムするフォワーダ302(フォワーダ302(2)など)の接続が記憶される。クラシファイヤ304(2)が、接続の中止も含めて接続を記憶できるようにするために、フォワーダ302(2)によって、接続の最後のパケット(TCP FINパケットなど)がクラシファイヤ304(2)に転送される。クラシファイヤ304(2)によって、接続に対応する接続インベントリ2802のエントリが削除され、ルート削除命令がフォワーダ302(2)に送られる。ルート削除命令を受け取る時に、フォワーダ302(2)によって、DAMテーブル2206(2)内の対応するルートが除去される。この形で、セッショントラッキング機能と共に、分類機能によって、転送機能によって使用されるルートテーブルおよびそのルートを制御することができる。その結果、異なるデバイスに分離された転送機能を、高速だが比較的単純なハードウェアを使用して実現することができる。
図29に、ネットワーク負荷分散インフラストラクチャ106の高可用性に関する追加の例示的なフェールオーバープロシージャを示す。2つの異なる障害、障害2902および障害2906のフェールオーバープロシージャを説明する。図からわかるように、ネットワーク負荷分散インフラストラクチャ106(特に図示せず)に、5つのコンポーネントすなわち、フォワーダ302(1)、フォワーダ302(2)、フォワーダ302(3)、クラシファイヤ304(1)、およびクラシファイヤ304(2)が含まれる。
説明される実施形態では、この5つのコンポーネント302(1)、302(2)、302(3)、304(1)、および304(2)のそれぞれが、個々の装置に対応する。しかし、類似するフェールオーバープロシージャが、異なる負荷分散コンポーネントが装置を共有する環境に適用される。
[1]で当初、ルータ/スイッチ202によって、新しい接続に関して起こった入力パケットが、フォワーダ302(1)に向けられる。フォワーダ302(1)は、そのローカルルーティングテーブルにこの接続のルートを有しないので、(1)の破線の両方向の矢印によって示されるように、クラシファイヤ304(1)にパケットを送る。クラシファイヤ304(1)によって、まず、考えられる上位レベルセッションアフィニティについてのセッショントラッキング308を参照してセッション情報が検査される。この例では、このパケットは、既存セッションにアフィニティ化されておらず、したがって、クラシファイヤ304(1)によって、ヘルスおよび負荷ハンドラ314に関するヘルスおよび負荷情報に関する宛先ホスト108が選択される。
具体的に言うと、クラシファイヤ304(1)によって、この例ではホスト108(1)が選択される。このパケットがTCP/IP接続に関するものであると仮定すると、ホスト108(1)にリンクされたこのTCP/IPセッションが、クラシファイヤ304(1)によって、追加アトム2204(A)関数呼出しを使用してDAM2202に追加される。最初のパケットが、クラシファイヤ304(1)またはフォワーダ302(1)によってホスト108(1)に転送される。クラシファイヤ304(1)によって、フォワーダ302(1)のローカルルーティングテーブル内でルートがプラムされる。後続パケットは、クラシファイヤ304(1)とのさらなる相互作用なしで、フォワーダ302(1)によってホスト108(1)に転送される。
接続[1]中のある時に、フォワーダ302(1)で障害2902が発生する。負荷分散対応ルータ/スイッチ202(LBA)によって、この障害2902が検出される。その結果、点2904で、ルータ/スイッチ202によって、接続[1]に沿ってフォワーダ302(1)に送られるはずの後のパケットが、別のフォワーダ302に向けられ、このフォワーダは、この例ではフォワーダ302(2)である。
したがって、フォワーダ302(2)によって、将来のパケットが接続[2]に沿って受け取られる。フォワーダ302(2)は、前にフォワーダ302(1)に向けられたパケットのエントリをローカルルーティングテーブルに有しないので、フォワーダ302(2)によって、接続[2]の最初に受け取られるパケットが、それが割り当てられかつ/または関連するクラシファイヤに送られる。この例では、フォワーダ302(2)が、(2)の破線の両方向の矢印によって示されるように、クラシファイヤ304(2)に割り当てられる。
クラシファイヤ304(2)によって、照会アトム2204(Q)関数呼出しが使用されて、既存TCP/IP接続に関連するDAM2202からアトミックエントリ2304(明示的には図示せず)が獲得される。このアトミックエントリ2304が、セッショントラッキング308のDAM2202を介して、リターンアトム2204(R)関数呼出しを介して供給される。クラシファイヤ304(2)によって、返されたアトミックエントリ2304から、このTCP/IP接続にアフィニティ化されたホスト108(1)が抽出される。クラシファイヤ304(2)によって、接続[2]の最初に受け取られたパケットが、ホスト108(1)に転送され、フォワーダ302(2)のローカルルーティングテーブル内のルートもプラムされる。後続のパケットは、クラシファイヤ304(2)とのさらなる相互作用なしで、フォワーダ302(2)によってホスト108(1)に転送される。
上の説明では、主に、個々のフォワーダ302コンポーネントの障害に焦点を合わせた。しかし、クラシファイヤ304コンポーネントも障害を発生する可能性がある。たとえば、ある点で、クラシファイヤ304(2)で障害2906が生じる。フォワーダ302(2)は、分類サービスを消費しようとする時に、またはハートビート種類のインジケータなどのアライブネス表示の欠如に気付くことを介して、障害2906を検出する。障害2906を処理するために、フォワーダ302(2)は、異なるクラシファイヤ304、この例ではクラシファイヤ304(1)に再割り当てまたは再関連付けされる。将来の分類機能は、(3)の破線の両方向の矢印によって示されるように、クラシファイヤ304(1)によってフォワーダ302(2)に提供される。
図30に、ヘルスおよび負荷情報とのトラフィックルーティング相互作用の例示的な動作実施形態を示す。フォワーダ302およびクラシファイヤ304は、ホスト108(1)、108(2)...108(n)にパケットをルーティングするために、ヘルスおよび負荷ハンドラ314と相互作用する。フォワーダ302およびクラシファイヤ304が図示されているが、例示的な動作実施形態は、リクエストルータ306(または、一般にトラフィックルーティング機能2012)にも適用可能である。
図からわかるように、ホスト108(1)に、それぞれアプリケーション#1、アプリケーション#1、およびアプリケーション#2のアプリケーションエンドポイントIP1、IP3、およびIP4が含まれる。ホスト108(2)に、それぞれアプリケーション#1およびアプリケーション#2のアプリケーションエンドポイントIP2およびIP6が含まれる。ホスト108(n)に、アプリケーション#2のアプリケーションエンドポイントIP5が含まれる。これらのホスト108(1)、108(2)...108(n)ならびにアプリケーション、エンドポイントIP1、IP2、IP3、IP4、IP5、およびIP6は、ヘルスおよび負荷ハンドラ314によって監視される(たとえば、ヘルスおよび負荷インフラストラクチャ1202、統合ヘルスおよび負荷キャッシュ1208などを使用して)。
説明される実施形態では、(1)で、クラシファイヤ304によって、トークン割当方式1806を使用する環境で、1つまたは複数のアプリケーションエンドポイント割当がリクエストされる(たとえば、少なくとも1つのターゲットアプリケーションエンドポイント割当リクエスト1802を介して)。この例では、ヘルスおよび負荷ハンドラ314が、トークン割当3002を供給することによって応答する(たとえば、少なくとも1つのターゲットアプリケーションエンドポイント割当応答1804を介して)。
具体的に言うと、アプリケーション#1のトークン割当3002(1)およびアプリケーション#2のトークン割当3002(2)が、クラシファイヤ304から使用可能である。アプリケーション#1のトークン割当3002(1)によって、当初、IP1に40トークン、IP2に35トークン、およびIP3に25トークンが与えられる。アプリケーション#2のトークン割当3002(2)によって、IP4に10トークン、IP5に72トークン、およびIP6に18トークンが与えられる。クラシファイヤ304によってアプリケーションエンドポイントへのルーティングが割り当てられる新しい接続ごとに1つのトークンが、クラシファイヤ304によって消費される。
(2)で、フォワーダ302によって、新しい接続の最初の入力パケットが受け取られる。この新しい接続のルーティングは、フォワーダ302のローカルDAMテーブル部分2206に存在しないので、フォワーダ302によって、この最初のパケットが(3)でクラシファイヤ304に転送される。
(4)で、クラシファイヤ304によって(たとえば、最初のパケットに上位レベルセッションに関するセッション参照が含まれないと判定した後に)、ヘルスおよび負荷情報に応答してアプリケーションエンドポイント(したがって、ホスト108)が選択される。具体的に言うと、アプリケーション#1によってサービスされる新しい接続について、クラシファイヤ304によって、それぞれのエンドポイントのトークンがまだ存在する場合に、IP1、IP2、およびIP3のどれをも選択することができる。
クラシファイヤ304によって、多数の可能な形のいずれかでトークンを消費することができる。たとえば、クラシファイヤ304によって、エンドポイントごとのトークンの数にかかわりなく、ラウンドロビン手法を使用することができる。その代わりに、クラシファイヤ304によって、単純にIP1から開始し、線形手法で次のエンドポイントに移動する前に各エンドポイントの全トークンを消費しながら、IP3まで進むことができる。また、クラシファイヤ304によって、現在、ある瞬間に最も多数のトークンを有する、エンドポイントによって定義されるトークンの組からのトークンを消費することができる。後者の手法を使用する場合に、クラシファイヤ304によって、IP1が選択される。他の手法も使用することができる。
図からわかるように、クラシファイヤ304によって、アプリケーションエンドポイントIP2のトークンが消費される。その結果、IP2のトークンセットは、トークンが消費されるので35トークンから34トークンに減る。また、新しい接続の最初のパケットが、アプリケーションエンドポイントIP2にルーティングされる。
(5A)で、最初のパケットが、クラシファイヤ304からホスト108(2)のアプリケーションエンドポイントIP2に転送される。この転送の前、転送中、またはその後に、クラシファイヤ304によって、(5B)で、ローカルDAMテーブル部分2206内でこの接続のルートがプラムされる。クラシファイヤ304によって、このセッションのアトミックエントリ2304を、分配および複製のためにDAMテーブル2206に追加することもできる。(6)で、この接続/セッションの将来のパケットが、図30のローカルDAMテーブル部分2206によって実現されるフォワーダ302のローカルルーティングテーブルを使用して、フォワーダ302からホスト108(2)のアプリケーションエンドポイントIP2に転送される。
図31に、ネットワーク負荷分散インフラストラクチャ106の例示的な高可用性機構を示す。具体的に言うと、例示的な障害検出3104、例示的な障害ハンドリング3106、および例示的な障害リカバリ3108が示されている。これらの例示的な高可用性機構を、異なるネットワーク負荷分散インフラストラクチャ106コンポーネントに関して説明する。ネットワーク負荷分散インフラストラクチャ106コンポーネントには、フォワーダ302、クラシファイヤ304、リクエストルータ306、セッショントラッカ308、ならびにヘルスおよび負荷ハンドラ314が含まれる。
3102(A)で、フォワーダ302が、ローカル障害をこうむる。3104(A)で、少なくとも1つの負荷分散対応スイッチによって、この障害が検出される。ローカル障害3102(A)を処理するために、パケットが、負荷分散対応スイッチによって、3106(A)で他のフォワーダにリダイレクトされる。フォワーダ302の障害から回復するために、フォワーダ302でローカルに記憶されたルートが、3108(A)で、DAMおよびそのDAMテーブルなど、分散セッショントラッキングマネージャおよびそのテーブルを使用して、パケットがリダイレクトされたフォワーダで再構築される。したがって、分散セッショントラッキングマネージャに、1つまたは複数のレベルのデータ冗長性を含めることができる。
3102(B)で、クラシファイヤ304が、ローカル障害をこうむる。3104(B)で、少なくとも1つのフォワーダによって、この障害が検出される。ローカル障害3102(B)を処理するために、パケットが、障害を検出したフォワーダによって3106(B)で他のクラシファイヤにリダイレクトされる。クラシファイヤ304の障害から回復するために、クラシファイヤ304でローカルに記憶されたセッション情報が、3108(B)で、パケットがリダイレクトされたクラシファイヤで、DAMを使用して再構築される。このセッション情報は、たとえば、ベースラインTCP/IP接続より上位のセッション情報とすることができる。また、そのようなセッション情報を、クラシファイヤ304と同一装置に存在するセッショントラッキングインフラストラクチャの一部とみなすことができる。
3102(C)で、リクエストルータ306が、ローカル障害をこうむる。3104(C)で、少なくとも1つのフォワーダおよび/または負荷分散対応スイッチによって、この障害が検出される。ローカル障害3102(C)を処理するために、パケットが、3106(C)で、フォワーダおよび/または負荷分散対応スイッチによって他のルータにリダイレクトされる。ローカル障害3102(C)の発生時にリクエストルータ306によって扱われていた個々の現在の論理リクエストは、各個々の論理リクエストが、そのリクエストのサービス中に複製されない限り、失われる可能性がある。リクエストルータ306の障害から回復するために、リクエストルータ306でローカルに記憶されたセッション情報および/またはルートが、3108(C)で、パケット(したがって新しい論理リクエスト)がリダイレクトされるリクエストルータで再構築される。セッション情報再構築は、DAMを使用して実現することができる。やはり、そのようなセッション情報は、リクエストルータ306と同一の装置に存在するセッショントラッキングインフラストラクチャの一部とみなすことができる。
3102(D)で、セッショントラッカ308が、ローカル障害をこうむる。3104(D)で、少なくとも1つのフォワーダおよび/またはクラシファイヤによって、この障害が検出される。たとえば、セッショントラッカ308が、クラシファイヤと同一の装置に常駐する場合に、フォワーダまたは別のクラシファイヤによって、この障害を検出することができる。セッショントラッカ308が、別々の装置に存在する場合には、クラシファイヤによってこの障害を検出することができる。ローカル障害3102(D)を処理するために、1つまたは複数のレベルのデータ冗長性および複数の装置にまたがる分配が、3106(D)で、トラッキングされるセッション情報について開始される。冗長性および分配が、障害3102(D)の前に開始されることに留意されたい。セッショントラッカ308の障害から回復するために、DAMのテーブルからのセッション情報を、3108(D)で、障害の第2のレベルを処理するために、(まだそのように分散され、十分に複製されていない場合に)少なくとも2つの装置にまたがって再分配させ、再複製することができる。
3102(E)で、ヘルスおよび負荷ハンドラ314が、ローカル障害をこうむる。3104(E)で、少なくとも1つのクラシファイヤおよび/またはリクエストルータによって、この障害が検出される。たとえば、ヘルスおよび負荷ハンドラ314からヘルスおよび負荷情報を受け取っているコンポーネントによって、ヘルスおよび負荷ハンドラ314が応答しなくなる場合、特にヘルスおよび負荷ハンドラ314が、照会するコンポーネントと異なる装置に存在する場合に、障害を検出することができる。ローカル障害3102(E)を処理するために、キャッシュに格納されたヘルスおよび負荷データ冗長性および固有の障害ハンドリングが、ヘルスおよび負荷情報について3106(E)で使用される。
たとえば、各ヘルスおよび負荷ハンドラ314に、ヘルスおよび負荷テーブル1204の情報を複数のホスト108に複製する統合ヘルスおよび負荷キャッシュ1208を含めることができる。また、所与のヘルスおよび負荷ハンドラ314のヘルスおよび負荷情報1206のコンシューマを、ヘルスおよび負荷ハンドラ314と同一の装置に配置することができ、その結果、ヘルスおよび負荷ハンドラ314の障害を本質的に許容可能にすることができる。同様に、ヘルスおよび負荷情報1206のそれぞれの部分の正式バージョンを、それぞれのホスト108に配置し、その結果、ホスト108の障害によって、ヘルスおよび負荷情報のそれぞれの部分の消失が許容可能にされるようにする。
ヘルスおよび負荷ハンドラ314の障害から回復するために、ヘルスおよび負荷情報を消費する所与のネットワーク負荷分散コンポーネントによって、異なるヘルスおよび負荷ハンドラに照会することができる。というのは、各そのようなヘルスおよび負荷ハンドラに、ヘルスおよび負荷ハンドラ情報の統合キャッシュが含まれるからである。また、ヘルスおよび負荷ハンドラ314が、もう一度アクセス可能になる時に、メッセージプロトコル1500を3108(E)で使用して、そのヘルスおよび負荷情報の統合キャッシュを再構築することができる。これらの例示的な高可用性機構を使用すると、クライアント102から障害をマスクするために、ネットワーク負荷分散インフラストラクチャ106コンポーネントの障害を、検出し、処理し、それから回復することができる。
(任意のトンネリングおよび/またはアプリケーションレベルバランシングを伴う接続移行の例)
この節では、接続移行などの接続操作をネットワーク負荷分散でどのように使用できるかを説明する。この節では、主に、図32〜39を参照し、接続マイグレータ310(図3)によって提供されるものなどの接続移行機能を明らかにする。上記で図3および4に関して説明したように、負荷分散インフラストラクチャ106での各入力接続は、そこで終端することができる。その後、接続をホスト108に移行することができ、その接続が、ホスト108で終端されるようになる。接続マイグレータ310は、この接続移行を実行することができ、接続マイグレータ310を、移行を実現するためにホスト108に部分的に配置することができる。そのような接続移行は、アプリケーションレベルの負荷分散と共に、クラシファイヤ304によっておよび/またはトンネラ312を介するトンネリングを使用して実行することができる。
図32に、接続移行を有するアプリケーションレベルネットワーク負荷分散への例示的な手法を示す。アプリケーションレベルまたはレベル7の負荷分散は、接続を処理するアプリケーションに関する負荷分散決断を行うことに関する。アプリケーションレベル負荷分散を実行するために、負荷分散インフラストラクチャ106では、通常は、接続のデータ部分を考慮に入れる。リクエストルーティングが使用されない場合に、クラシファイヤ304によって、通常は、接続の初期部分が覗き見され、その後、接続が、接続マイグレータ310とあいまって、選択されたホスト108に移行される。
TCPベースの環境でのアプリケーションレベル負荷分散全般に関して、クラシファイヤ304によって、クライアントのTCP接続をどこに転送するかを判断する時に、クライアントのTCPデータの最初の部分が覗き見される。したがって、アプリケーションレベルのロジックによって、クライアントのデータが試験され、そのデータに基づいて負荷分散決定が行われる。たとえば、接続が(暗号化されない)HTTP接続である場合に、クラシファイヤ304によって、接続の最初のHTTPのHTTPヘッダを覗き見することができ、ヘッダの内容のある部分(たとえばURL、クッキーなど)に基づいてルーティング決定を行うことができる。アプリケーションレベル負荷分散、接続移行、およびトンネリングは、他のプロトコルに適用可能であるが、本明細書の例では主にTCP/IPを使用する。
図からわかるように、負荷分散インフラストラクチャ106(特に図示せず)に、フォワーダ302、クラシファイヤ304、トンネラ312、および接続マイグレータ310(および、おそらく、たとえば負荷分散対応ルータ/スイッチ202(LBA))が含まれる。フォワーダ302は、仮想IPアドレスに対応し、クラシファイヤ304によるホスト選択に従ってホスト108にパケットを転送する。図32には特に図示されていないが、ホスト108に、接続マイグレータ310の機能およびトンネラ312の機能も含まれる。
説明される実施形態で、フォワーダ302、クラシファイヤ304、および接続マイグレータ310(クラシファイヤ304およびホスト108の)が、クラシファイヤ304およびホスト108のTCPプロトコルソフトウェアと共に、協力して接続移行を提供する。図32に示された接続移行は、当初はクラシファイヤ304で終端されるクライアント102(1)からの接続に関する。接続移行の後に、クライアント102(1)からの接続が、ホスト108(1)で終端される。接続がホスト108(1)で終端されたならば、接続のパケットを、トンネラ312(フォワーダ302およびホスト108(1)の)を使用してトンネリングすることができる。
(1)で、クライアント102(1)によって、フォワーダ302にSYNパケットが送られて、新しいTPC接続の開始がシグナリングされる。(2)で、フォワーダ302によって、このパケットがクラシファイヤ304に転送される。(3)で、クラシファイヤ304によって、ホスト108の代わりにTCP接続が受け入れられる(実際のターゲットホスト108()がまだ選択されていないので、ホストの識別はまだ、未知である)。TCPプロトコル用語では、クラシファイヤ304によって、クライアント102(1)にSYN−ACKパケットが送られる。
(4)で、クライアント102(1)が、データの送出を開始する(最初のSYNパケットにもデータを含めることができる)。データは、クラシファイヤ304によって処理され、クラシファイヤ304は、アプリケーション固有ロジックを調べることができる。アプリケーション固有ロジックは、どのホスト108がどの種類のリクエストまたは接続を処理できるまたは最もよく処理しているかに関するものとすることができる。したがって、クラシファイヤ304によって、このデータならびにヘルスおよび負荷ハンドラ314からのヘルスおよび負荷情報および任意選択としてセッショントラッカ308からのアプリケーションセッション情報を使用して、クライアント102(1)からのこの接続の処理によりよくまたは最もよく適するホスト108が判定される。この例では、ホスト108(1)が選択される。
(5)で、クラシファイヤ304によって、TCP接続の状態を表す「バイナリブロブ(binary blob)」が、ホスト108(1)に送られる。この接続状態は、接続マイグレータ310によって、クラシファイヤ304上のTCPスタックからの協力を得て集約される。バイナリブロブには、クラシファイヤ304によって肯定応答されたクライアント102(1)からのデータと、TCP/IP4タプル、初期シーケンス番号などのTCPパラメータが含まれる。
(6)で、ホスト108(1)(図32には明示的に図示せず)の接続マイグレータ310コンポーネントによって、この接続がホスト108(1)のTCPスタックに「注入」される。この接続状態注入は、ホスト108(1)のTCPスタックと協力して実行され、ホスト108(1)のアプリケーション316からは、この接続が元々ホスト108(1)自体によって受け入れられたように見えるようになる。クライアント102(1)は、接続移植について知らない。
(7)で、クラシファイヤ304によって、クラシファイヤ304のTCPスタックと協力して、この接続のために維持される内部状態が静かにクリーンアップされる。また、クラシファイヤ304によって、この接続のパケットの宛先としてホスト108(1)を示すルートが、フォワーダ302のローカルルーティングテーブルに追加される。
(8)で、接続の後続パケットが、フォワーダ302によってホスト108(1)にルーティングされる。これらのパケットは、フォワーダ302によって、接続移行なしで分類され、ルーティングされる接続のパケットと同一の形で扱うことができる。この後続パケットを、任意選択として、トンネラ312を使用してフォワーダ302からホスト108(1)にトンネリングすることができる。トンネラ312は、クラシファイヤ304の接続マイグレータ310側でも示されている(破線を使用して)が、これは、トンネラ312によって使用されるあるパラメータを、接続移行中におよび/または移行される接続に関連して判定できるからである。トンネラ312の例示的実施形態を、以下で、特に図38および39を参照してさらに説明する。
図33は、第1装置から第2装置に接続を移行する例示的な方法を示すフローチャート3300である。フローチャート3300には、7つのブロック3302〜3314が含まれる。図32および34〜37では、主にネットワーク負荷分散環境での接続移行に焦点を合わせるが、本明細書に記載の接続移行は、接続マイグレータ310の機能などの接続移行機能をそれぞれが含む2つの装置全般の間で実現することができる。
ブロック3302で、第1装置で接続を受け入れる。たとえば、第1装置によって、ネットワークスタックのプロトコルスタック部分の1つまたは複数のプロトコルに従って入力接続を終端することができる。ブロック3304で、第1装置で接続に関するデータを受け取る。たとえば、このデータを、接続をリクエストする最初のパケットで、または接続の受入の後に受信される1つまたは複数のパケットで受け取ることができる。
ブロック3306で、第1装置で、受け入れられた接続の接続状態をプロトコルスタックから(あるいは、より一般的にはネットワークスタックから)集約する。たとえば、プロトコルスタックの1つまたは複数のプロトコルのプロトコル状態を、肯定応答されたすべての受信データについてコンパイルし、集約することができる。ブロック3308で、第1装置から第2装置に接続状態を送る。たとえば、接続状態の集約された情報を、信頼性のあるプロトコルを使用して第2装置に送ることができる。
ブロック3310で、第2装置で、移行される接続の接続状態を第1装置から受け取る。ブロック3312で、第2装置のプロトコルスタック(または、より一般的にはネットワークスタック)に接続状態を注入する。たとえば、プロトコルスタックレベルの上のプログラムが、接続が移行された接続であることを知らないように、第2装置のプロトコルスタックのプロトコルを使用して、接続を元に戻すことができる。具体的に言うと、プロトコル状態を、プロトコルスタックに注入することができる。接続状態の集約されたデータも、第2装置で組み込まれる。ブロック3314で、第2装置で、接続を継続する。たとえば、接続が以前に他所で終端されなかったかのように、第2装置で接続を継続することができる。
図34に、送信元装置(originating device)3400の観点からの接続移行に対する例示的な手法を示す。送信元装置3400での接続移行は、少なくとも部分的に、接続マイグレータ310によって実現される。説明される実施形態では、送信元装置3400が、ネットワーク負荷分散インフラストラクチャ106の一部である装置である。たとえば、送信元装置3400に、おそらくはフォワーダ302と共にクラシファイヤ304、リクエストルータ306などを含めることができる。
図からわかるように、送信元装置3400に、そのネットワークスタックの一部として、物理ネットワークインターフェース(PNI)3410、PNIミニポート3408、プロトコルハードウェアインターフェース3406、プロトコルスタック3404、およびソケットレイヤ3402が含まれる。送信元装置3400には、アプリケーションレベルのクラシファイヤ304および接続マイグレータ310などの負荷分散機能106も含まれる。具体的に言うと、接続マイグレータ310に、マイグレータ中間ドライバ3414およびマイグレータシム3412が含まれる。接続マイグレータ310は、送信元装置3400から接続をオフロードすることができる。
説明される実施形態では、物理ネットワークインターフェース3410を、ネットワークインターフェースカード(NIC)(たとえばイーサネット(登録商標)NIC)、無線インターフェースなどとすることができる。1つの物理ネットワークインターフェース3410だけが図示されているが、所与の装置が、実際に複数の物理ネットワークインターフェース3410を有することができる(すなわち、送信元装置3400を、マルチホームとすることができる)。各物理ネットワークインターフェース3410は、通常は、1つまたは複数の物理ネットワークアドレスに対応する。
PNIミニポート3408は、物理ネットワークインターフェース3410の特定のハードウェア実現を理解し、これとインターフェースするソフトウェアモジュールである。プロトコルハードウェアインターフェース3406は、1つまたは複数のそれぞれのプロトコルとPNIミニポート3408の間の1つまたは複数のそれぞれのインターフェースを含むレイヤである。
プロトコルスタック3404に、それぞれ1つまたは複数のそれぞれのプロトコルに対処する1つまたは複数のそれぞれのモジュールが含まれる。そのようなプロトコルの例を、以下で図36および37を参照してさらに説明する。一時のコンテキストで、プロトコルスタック3404に、送信元装置3400に存在する各接続のプロトコル状態3420が含まれる。ソケットレイヤ3402は、負荷分散機能106などのプログラムとプロトコルスタック3404の間にある。ソケットレイヤ3402によって、負荷分散機能106とプロトコルスタック3404の間のAPIが提供され、とりわけ、接続のためにプログラムを登録できるようになる。
マイグレータ中間ドライバ3414またはより一般的にマイグレータドライバ3414は、プロトコルハードウェアインターフェースレイヤ3406に位置する。マイグレータシム3412は、プロトコルスタック3404とソケットレイヤ3402の間に透過的に位置する。
新しい接続をリクエストする最初のパケット(図示せず)が、送信元装置3400に提示される時に、パケットが、物理ネットワークインターフェース3410から上に、PNIミニポート3408、プロトコルハードウェアインターフェースレイヤ3406を介してプロトコルスタック3404に向けられる。パケットが、プロトコルスタック3404の1つまたは複数のプロトコルをトラバースする時に、プロトコル状態3420がそこで作成される。また、この最初のパケットの結果として、またはリクエスト時に覗き見される接続を負荷分散機能106が受け入れた結果として、データ3416が、送信元装置3400に到着する。
動作時に、マイグレータ中間ドライバ3414によって、データ3416のコピーが、接続マイグレータ310のロジックに迂回される。負荷分散機能106によって、接続移行関数呼出しが発行される時に、その移行関数呼出しが、プロトコルスタック3404の最上部のレイヤに渡され、その結果、接続状態集約3418を開始できるようになる。プロトコル状態3420は、プロトコルスタック3404の1つまたは複数のプロトコルからコンパイルされる。TCP/IP実施形態では、プロトコル状態3420に、(i)宛先および発信元のTCPポートおよびIPアドレス(たとえば、TCP/IP4タプル)、(ii)TCPウィンドウ状態、(iii)初期シーケンス番号、(iv)タイムアウト情報、(v)IPフラグメントID、(vi)ルーティング情報、および(vii)その他を含めることができる。
接続状態集約3418によって、接続マイグレータ310に迂回され、送信元装置3400から既に肯定応答された(たとえば、負荷分散機能106によって)データ3416も集約される。この集約された接続状態3418に、プロトコル状態3420およびデータ3416(および、任意選択として、他の接続関連情報)が含まれる。集約された接続状態3418は、次に、バイナリブロブ3422として、送信元装置3400からターゲット装置へ信頼性のあるプロトコルを使用して送られる。このバイナリブロブ3422は、接続が後にトンネラ312によってトンネリングされる場合に、フロー識別子と一束にすることもできる。トンネリングに関するフロー識別子は、以下で特に図38および39に関してさらに説明する。
図35に、ターゲット装置3500の観点からの接続移行に対する例示的な手法を示す。ターゲット装置3500は、接続マイグレータ310を含めて、さまざまな図示のレイヤ/モジュールに関して送信元装置3400に似る。しかし、図からわかるように、アプリケーションレベルの少なくとも1つのアプリケーション316が、ソケットレイヤ3402とインターフェースする。したがって、ターゲット装置3500に、ホスト108を含めることができる。また、接続マイグレータ310は、送信元装置3400から接続をアップロードすることができる。
説明される実施形態では、アプリケーション316が、送信元装置3400で受け取られる接続開始パケットの宛先である。送信元装置3400から、ターゲット装置3500によってバイナリブロブ3422が受け取られる。バイナリブロブ3422には、ターゲット装置3500に移行される接続に関連する接続情報と、任意選択としてフロー識別子が含まれる。この接続状態に、プロトコル状態3420および肯定応答されたデータ3416(および、おそらくは他の接続関連情報)が含まれる。
動作時に、バイナリブロブ3422がプロトコルハードウェアインターフェースレイヤ3406に達する時に、マイグレータ中間ドライバ3414によって、それが接続移行に関するブロブとして認識され、方向を変えられる。接続状態は、3502で注入されて、接続が元々ターゲット装置3500で終端していたというアプリケーション316に対する外見が作成される。
具体的に言うと、注入された接続状態3502のプロトコル状態3420は、プロトコルスタック3404に注入される。説明される実施形態では、プロトコル状態3420が、まずプロトコルスタック3404の上位レベルプロトコルで注入され、その後、下位レベルプロトコルに注入される。プロトコル状態3420が、プロトコルスタック3404に注入された後に、データ3416を、上へ、アプリケーションまで示すことができる。このデータ3416は、新にローカルに終端される接続の一部であるかのようにアプリケーション316に供給することができる。
接続状態注入3502が完了した後に、送信元装置3400で受け取られたパケットによって開始された接続が、そこからターゲット装置3500に成功裡に移行されている。この接続の後続パケットは、送信元装置3400を通過せずに直接にターゲット装置3500に転送することができ、あるいは、少なくともごく単純なルーティングだけで、アプリケーションレベル分析は適用されない。任意選択として、これらのパケットをトンネリングし、マイグレータ中間ドライバ3414が、仮想IPアドレスに束縛されるソフトウェアベースの仮想NICとして効果的に動作するようになる。
図36に、接続移行に関するオフロードするプロシージャ3600への例示的な手法を示す。移行オフロードプロシージャ3600によって、送信元装置3400による接続移行の追加の例示的詳細が示される。図からわかるように、一般的なプロトコルスタック3404に、TCPスタック3404(T)、IPスタック3404(I)、およびアドレス解決プロトコル(ARP)スタック3404(A)が含まれる。しかし、他の特定のプロトコルスタック3404()を、その代わりに使用することができる。
たとえば、プロトコルハードウェアインターフェースレイヤ3406を、Microsoft(登録商標)Windows(登録商標)オペレーティングシステム(OS)環境のネットワークドライバインターフェース規約(NDIS)ベースレイヤとして実現することができる。また、ソケットレイヤ3402を、Microsoft(登録商標)Windows(登録商標)OS環境のWinsock(商標)レイヤとして実現することができる。
説明される実施形態では、マイグレータ中間ドライバ3414に、ARPスタック3404(A)とPNIミニポート3408の接合点にあるプロトコルハードウェアインターフェースレイヤ3406が含まれる。マイグレータ中間ドライバ3414は、移行オフロードプロシージャ3600のオフロードターゲットとして働く。オフロードターゲットは、この例に示されているように、プロトコルハードウェアインターフェース3406ミニポートである。移行アップロードプロシージャ3700(図37など)では、マイグレータ中間ドライバ3414が、アップロードダイバータとして働く。
具体的に言うと、マイグレータ中間ドライバ3414は、各物理ネットワークインターフェース3410に束縛され、この物理ネットワークインターフェース3410を介してTCP接続を移行することができる。マイグレータ中間ドライバ3414は、通常は、これ以外の点ではパケットと相互作用せずに、ネットワークスタック内で上下にパケットを渡すことによって、パススルードライバとして動作する。しかし、マイグレータ中間ドライバ3414は、接続移行に関連するパケットには相互作用する(任意選択として後続のトンネリングされるパケットを含む)。
マイグレータ中間ドライバ3414の責任には、(i)移行オフロードリクエストを受け入れることと、(ii)接続状態情報を作るために、肯定応答されたデータと共に、指定されたプロトコルスタック3404()からコンパイルされる、移行されるTCP接続に関連するプロトコル状態情報を集約することと、(iii)移行アップロードプロシージャ3700のためのターゲット装置3500への集約された接続状態の送出が含まれる。そのような送出の信頼性のあるワイヤプロトコルを、セッショントラッキングコンポーネント2002および2010によって使用されるものと共有して、セッション情報メッセージ2008(たとえば、図20を参照して上記で説明したもの)を送受することができる。
マイグレータ中間ドライバ3414のもう1つの責任(たとえば、移行アップロードプロシージャ3700での)は、他の装置から受け取られる移行された接続のアップロードを開始し、移行される接続に関連する入力パケットのすべてを、アップロードの過程の間にバッファリングすることである。接続をアップロードするために、マイグレータ中間ドライバ3414によって、アップロードリクエストがマイグレータシム3412に送られる。マイグレータシム3412によって、プロトコルスタック3404のTCPスタック3404(T)で下に注入呼出しが発行されて、ネットワークスタックのプロトコルスタック3404部分で接続がインスタンス化される。
マイグレータシム3412によって、クライアントインターフェースがTCPスタック3404(T)に公開され、プロバイダインターフェースがソケットレイヤ3402に公開される。マイグレータシム3412は、2つの役割すなわち、(i)送信元装置3400で接続移行オフロードプロシージャ3600を開始し、その後、ターゲット装置3500で移行アップロードプロシージャ3700を開始することと、(ii)ホストアプリケーション316プログラム、負荷分散クラシファイヤ304プログラム、およびソケットレイヤ3402の間で分類プロセスを調停することが含まれる。マイグレータシム3412およびマイグレータ中間ドライバ3414の両方を、以下で図36および37を参照してさらに説明する。
例示的な移行オフロードプロシージャ3600について、TCP接続の移行は、1つ、2つ、またはそれ以上のパケットを使用して、クラシファイヤ304によって入力TCP接続が分類された後に実行される。移行オフロードプロシージャ3600を、点<1>〜<7>で説明する。
<1>で、分類動作の前に初期化を実行する。プロトコルスタック3404によって、プロトコルハードウェアインターフェースレイヤ3406での照会が行われて、オフロード機能がある場合に、それが使用可能であるかどうかが判定される。マイグレータ中間ドライバ3414によって、接続移行オフロードが使用可能であることが示され、この照会がPNIミニポート3408まで下に伝搬される。TCPチムニオフロード能力が、物理ネットワークインターフェース3410によって提供される場合に、PNIミニポート3408もそれを示す。TCPチムニオフロードによって、一部のTCP/IP処理を、物理ネットワークインターフェース3410のハードウェアからオフロードできるようになり、TCPチムニオフロードには、プロトコル状態3420のあるコンパイルが含まれる。その結果、一部のコンパイルおよび集約ロジックを、2つのオフロード機構の間で共有できるようになる。
<2>で、TCP接続を分類したならば、クラシファイヤ304によって、選択されたホスト108へのTCP接続移行が開始される。具体的に言うと、ターゲット装置3500を示す移行コマンドが、ソケットレイヤ3402を介してマイグレータシム3412に発行される。
<3>で、マイグレータシム3412によって、TCP接続移行が開始されて、TCPプロトコル状態がコンパイルされる。具体的に言うと、マイグレータシム3412によって、TCP移行オフロード開始API(またはより一般的には接続移行関数呼出しまたは接続移行コマンド)が呼び出される。このルーチンによって、ターゲット装置3500で接続を元どおりにするのに使用される指定されたTCP接続の関連する状態がコンパイルされる。コンパイルされたプロトコル状態3420に、TCPスタック3404(T)、IPスタック3404(I)、およびARPスタック3404(A)を含む中間スタックレイヤからの状態が含まれる。
<4>で、プロトコルスタック3404によって、移行されるTCP接続に関するプロトコル状態3420がコンパイルされたならば、プロトコルスタック3404によって、束縛されるミニポート(この例では、ミニポートがマイグレータ中間ドライバ3414である)に対して移行オフロード開始APIが呼び出される。しかし、実際には、プロトコルスタック3404とマイグレータ中間ドライバ3414の間に挿入される、IP QoSなどの他の中間ドライバがある場合がある。そうである場合には、これらのIMドライバが、関連する場合に、その状態をコンパイルし、移行される接続に関する接続状態情報に集約することによって、移行に参加することができる。中間ドライバは、ネットワークスタックを下に移行オフロード開始呼出しを伝搬させ続け、ネットワークスタックで、最終的に、マイグレータ中間ドライバ3414での移行オフロードハンドラの実行がもたらされる。この時点で、マイグレータ中間ドライバ3414によって、ターゲット装置3500へのTCP接続の転送に関する残りの接続状態に関する肯定応答されたデータも集約されている。
<5>で、移行されるTCP接続の接続状態情報を記憶/コピーした後に、マイグレータ中間ドライバ3414によって、移行オフロード開始完了APIを呼び出すことによって、移行がその最終段階であることがネットワークスタックに通知される。この移行オフロード開始完了APIは、逆のパスに従って、ネットワークスタックを上に、同一の中間ドライバ(ある場合に)を介して、最終的にプロトコルスタック3404に達する。各レイヤでこの呼出しが処理される時に、移行される接続に関連する状態情報を解放することができる。この呼出しの処理が完了するまでは、各レイヤが、ネットワークスタックの下に更新通知を送って、移行が開始された後に変更された接続状態のすべての部分を更新することができる。
<6>で、移行オフロード開始完了ルーチンが、TCPスタック3404(T)に達した時に、TCPによって、静かに(すなわち、クライアント102にリセットを送らずに)接続がクローズされ、移行された接続に関連するすべての状態がフラッシュされ、移行オフロード開始完了呼出しが、マイグレータシム3412に伝搬される。この時点で、ネットワークスタックは、移行されたTCP接続の残存している知識に一切制限されない。
<7>で、移行オフロード開始完了呼出しが、マイグレータ中間ドライバ3414にリターンする時に(接続マイグレータ310のマイグレータシム3412部分を介して)、送信元装置3400からターゲット装置3500へのTCP接続の移行を、接続状態の転送によって開始することができる。接続状態は、非同期に信頼性のある形で転送することができる。
移行が始まると、送信元装置3400は、クライアント102からの後続データがターゲット装置3500に転送されることを保証する責任も負う。その結果、接続が成功裡にターゲットに移行された後であっても、起点は、後続パケットをターゲットに正しくルーティングするために、接続の状態の一部を保持する(たとえば、ルーティングテーブルエントリ)。接続が終了する時に、ターゲットは、起点に通知して、起点が、移行された接続に関する残留する状態の残りのすべてを消去するようにする。
さらに、接続移行の非同期性の結果として、送信元装置3400(または別々の装置の場合にそれによって指定されるフォワーダ)によって転送される移行される接続のデータパケットが、ターゲット装置3500が移行される接続状態を受け取る前にターゲット装置3500に到着し始める場合がある。ターゲット装置3500のマイグレータ中間ドライバ3414は、関連する移行される接続がターゲット装置3500で確立されるまで、これらのパケットをバッファリングする責任を負う。
図37に、接続移行に関するアップロードプロシージャ3700への例示的な手法を示す。移行アップロードプロシージャ3700によって、ターゲット装置3500による接続移行に関する追加の例示的な詳細が示される。
移行される接続が、ターゲット装置3500に到達する時に、この接続は、処理のためにマイグレータ中間ドライバ3414に中継される。移行される接続状態を融合化し、同化した後に、マイグレータ中間ドライバ3414が、マイグレータシム3412とあいまって、アプリケーション316に透過的な形で、移行される接続をローカルネットワークスタックに注入する。例示的な移行アップロードプロシージャ3700について、点<1>〜<8>でのTCP接続の移行を説明する。
<1>で、上記で移行オフロードプロシージャ3600に関して説明したように、アプリケーションホスティング動作の前に初期化を実行する。具体的に言うと、プロトコルスタック3404によって、オフロード機能がある場合に、それが使用可能であるかどうかに関する照会が行われる。マイグレータ中間ドライバ3414によって、TCP接続移行サポート照会が満たされて、接続移行アップロードが使用可能であることが示され、その照会が、可能なTCPチムニオフロード機能に関してPNIミニポート3408まで下に伝搬される。
<2>で、接続移行データがターゲット装置3500に到着する時に、接続移行情報(たとえば、束にされたバイナリブロブ3422)が、マイグレータ中間ドライバ3414に配布される。マイグレータ中間ドライバ3414によって、接続状態が再組立され、移行中に到着した関連データと突き合わされ、ネットワークスタックへのアップロードの準備がされる。移行される接続をアップロードする処理中に到着するクライアント102からのデータのすべてが、マイグレータ中間ドライバ3414によってバッファリングされる。移行の成功裡の完了時に、データが、アプリケーション316に配布される。
<3>で、ローカルネットワークスタックへの移行される接続のアップロードを開始するために、マイグレータ中間ドライバ3414によって、移行される接続リクエストが到着したことが、マイグレータシム3412に通知される。マイグレータ中間ドライバ3414によって、接続状態(または、少なくともプロトコル状態3420)も、マイグレータシム3412に配布される。
<4>で、マイグレータシム3412によって、TCP注入開始ルーチン(または、より一般的にはプロトコル状態注入ルーチン)を呼び出すことと、移行されるプロトコル状態3420をTCPスタック3404(T)に供給することによって、移行される接続のアップロードが開始される。<5>で、TCP/IPによって、供給されたプロトコル状態3420を使用してプロトコルスタック3404全体で移行される接続が再作成される。このプロトコル状態3420に、トランスポート状態(TCP)、パス状態(IP)、近傍および次ホップ状態(ARP)などの1つまたは複数を含めることができる。
<6>で、移行される接続が、ターゲット装置3500で成功裡に再確立された場合に、TCPによって、マイグレータシム3412のクライアント部分への接続イベントが開始されて、新しい接続が確立されたことが示される。障害には複数の可能な理由があるが、一般的な理由に、対応するリスナの欠如、ルーティング障害などを含めることができる。移行される接続をネットワークスタックによって再確立できない場合には、接続イベントは示されず、障害状況が、注入開始完了呼出しで指定される。接続マイグレータ310は、移行のクリーンアップと、接続を放棄するためのクライアント102へのリセット通知の送出の責任を負う。
<7>で、マイグレータシム3412が、プロバイダとして働いて、接続イベントをソケットレイヤ3402に伝搬させて、新しい接続が確立されたことを、リスンしているアプリケーション316に示す。アプリケーション316は、この接続を受け入れる場合に、通常のソケット読取動作およびソケット書込動作を介して、リクエストを処理し、応答する。アプリケーション316は、接続が移行されたことを知らないものとすることができる。接続が、アプリケーション316によって受け入れられない場合には、TCPによって、接続が終了されるが、クライアント102にリセット通知は送られない。やはり、障害状況が、注入開始完了呼出しで指定され、接続マイグレータ310が、移行のクリーンアップと、接続を放棄するためのクライアント102へのリセット通知の送出の責任を負う。
アプリケーション316およびクラシファイヤ304が、同一の装置に位置する時に、特別な状況が生じ、マイグレータシム3412が、これらの間の仲裁役になることができる。この両方のクラスのプログラムが同一のホスト108上にある時に、これらの両方が、同一のIPアドレスおよびIPポートをリスンしている可能性がある。しかし、TCPは、通常は、一意のIPアドレスおよびIPポートごとに1つのリスナを有する。その結果、マイグレータシム3412は、TCPレイヤでの単一のリスナへの2つのソケットを多重化することによって、2つのプログラムが同一のIPアドレスおよびIPポートをリスンしている構成を隠すことができる。
その場合に、接続イベントがマイグレータシム3412のクライアント部分に到着する時に、プロバイダとしてのマイグレータシム3412によって、ソケットレイヤ3402でどのリスニングソケットに接続通知を配布するかを判定する。対応するIPアドレスおよびIPポートをリスンするソケットが1つだけの場合には、そのソケットが接続イベントを受け取る。複数のソケットがリスンしている場合には、受取り側は、接続イベントが示されたコンテキストに依存する。接続イベントが、仮想IPアドレスに関する新規接続である場合には、接続イベントは、クラシファイヤ304に配布され、接続イベントが、専用IPアドレス(負荷分散IPアドレス以外)または移行される接続のアップロードの結果である場合には、接続イベントは、ターゲットアプリケーション316に配布される。
<8>で、移行される接続の注入が完了したならば、TPCによって、供給された注入開始完了ハンドラを呼び出すことによって、マイグレータシム3412に通知する。状況コードを供給して、接続が成功裡にアップロードされたか否かをマイグレータシム3412に通知する。移行される接続のアップロードに失敗した場合には、接続マイグレータ310が、移行のクリーンアップと、リセットを送ることによる接続が放棄されたことのクライアント102への通知の責任を負う。移行される接続が、成功裡にローカルネットワークスタックに注入された場合には、マイグレータ中間ドライバ3414は、受け取ったパケットをプロトコルハードウェアインターフェース3406のパケット受信パスを介して上に渡すことによって、クライアント102からのバッファリングされたデータの配布を開始することができる。
移行された接続が、終了される(アップロードに失敗したので、移行された接続が、その後、通常の手段を介してクローズされたので、などの理由)時に、ターゲット装置3500によって、送信元装置3400に通知する。送信元装置3400は、この通知を使用して、ルーティングテーブルエントリを含む移行された接続に関する残っている状態をより効率的に信頼性のある形でクリーンアウトする。したがって、将来に任意に終了される成功裡に移行された接続を説明するために、マイグレータシム3412によって、その活動を監視し、ソケットがクローズされた時にマイグレータ中間ドライバ3414に通知することができる。
図38に、フォワーダ302およびホスト108の間のパケットトンネリングに対する例示的な手法を示す。カプセル化されたパケット3808を、送信されるパケットごとのオーバーヘッドをこうむらずに、フォワーダ302からホスト108にトンネリングすることができる。以下でさらに説明するように、トンネリングは、フロー識別子3814ならびにそれぞれフォワーダ302およびホスト108のトンネラ312(F)および312(H)のカプセル化マッピングテーブル3806および3810を使用して実現される。フロー識別子3814は、カプセル化されたパケット3808に挿入される。
上記で図32を参照して注記したように、接続移行の後に来る接続のパケットを、トンネラ312によるトンネリングを使用して、フォワーダ302によってホスト108(1)にルーティングすることができる。(8)(図32)で、フォワーダ302によって、そのような後続パケットが、ネットワークアドレス「F」を有するフォワーダ302から、ネットワークアドレス「H1」を有するホスト108(1)に転送される。上記で図4を参照して説明したように、フォワーダ302は、入力パケットをホスト108(1)にルーティングするために、NAT、半NAT、トンネリングなどを実行することができる。
そのような入力パケットに、クライアント102(1)から到着するパケットの、仮想IP(「VIP」)アドレスの宛先IPアドレスおよび「C1」の発信元IPアドレスが含まれる。ホスト108(1)にルーティングされるパケットは、H1の宛先IPアドレスと、C1(半NATの場合)または「F」(フルNATの場合)の発信元アドレスを有する。このアドレスの再書込は、クライアント102(1)およびホスト108(1)の両方が発信元アドレスおよび宛先アドレスの同一のビューを有することを期待するプロトコルと干渉する可能性がある。
さらに、少なくともフルNATに関して、ホスト108(1)からクライアント102(1)への、フォワーダ302を介しないリターンパスは、ホスト108(1)がクライアント102(1)のアドレスを知らないので、禁止される。ホスト108(1)からクライアント102(1)への直接パスは、ホスト108(1)からクライアント102(1)へのトラフィックが非常に多い状況および/または反対方向のトラフィックよりもかなり多い状況(たとえば、ホスト108(1)が、クライアント102(1)にストリーミングメディアを供給する時)で望ましい。
本明細書に記載のトンネラ312によるトンネリングによって、クライアント102およびホスト108上のアプリケーション316の発信元アドレスおよび宛先アドレス(およびポート)に関する理想的なビューを提供することができる。たとえば、図34および35に関して、フォワーダ302およびホスト108のそれぞれのトンネラ312は、接続マイグレータ310のマイグレータ中間ドライバ3414の一部として、またはこれとあいまって動作することができる。
図38の説明される実施形態では、接続マイグレータ310によって、フロー識別子3814とTCP/IP4タプル3804の間のカプセル化マッピング3812がもたらされる。接続マイグレータ310をクラシファイヤ304に関連付けることができ、接続マイグレータ310(任意選択としてそのようなクラシファイヤ304と共に)を、フォワーダ302と同一の装置に配置することができる。別法では、接続マイグレータ310(ならびにクラシファイヤ304)を、フォワーダ302と異なる装置に配置することができる。カプセル化マッピング3812を、その代わりに、たとえばクラシファイヤ304に位置するおよび/またはこれに関連するトンネラ312機能によってまたはこれと共に提供することができる。
カプセル化マッピング3812でTCP/IP4タプル3804にマッピングされることによって、フロー識別子3814は、特定の接続のカプセル化されたパケット3808のフローを識別するように働く。TCP/IP4タプル3804に、TCP/IPプロトコルまたは類似するプロトコルによる特定の接続の発信元および宛先のネットワークアドレス(およびポートなど)が含まれる。フロー識別子3814は、説明される実施形態では32ビットである。というのは、32ビットが、インターネットIPv4プロトコルに従って確立される接続で使用可能であるからである。しかし、他の長さのフロー識別子3814を、特にインターネットIPv6、UDPなどの他のプロトコルについて、その代わりに使用することができる。
フロー識別子3814は、増分式の接続カウンタなどの適切な機構を使用して生成することができる。さらに、TCP/IP4タプル3804は、より一般的には発信元/宛先対である。個々の発信元/宛先対の各発信元値および宛先値に、特定の接続で伝搬される所与のパケットの発信元および宛先のネットワークノード識別子(たとえば、ネットワークアドレス、ポート、その組合せなど)を含めることができる。
接続マイグレータ310によって、ホスト108にカプセル化マッピング3812が供給される。ホスト108のトンネラ312によって、カプセル化マッピングテーブル3810内のカプセル化マッピング3812が、カプセル化マッピングエントリ3810(1)として記憶される。したがって、トンネラ312(H)によって、フロー識別子3814を使用して、TCP/IP4タプル3804に対応する特定の接続にマッピングし、識別することができる。カプセル化マッピング3812を、任意選択として、接続移行動作の束にされるバイナリブロブ3422の一部としてホスト108に供給することができる。
フォワーダ302に、カプセル化マッピングテーブル3806と共にトンネラ312(F)コンポーネントも含まれる。カプセル化マッピングテーブル3806によって、特定の接続のTCP/IP4タプル3804をフロー識別子3814にリンク/マッピングするカプセル化マッピングエントリ3806(1)が記憶される。トンネラ312(F)によって、カプセル化マッピングエントリ3806(1)のマッピング情報も、接続マイグレータ310から受け取られる(たとえば、カプセル化マッピング3812として)。
1つのカプセル化マッピングエントリ3806(1)および3810(1)だけが図示されているが、カプセル化マッピングテーブル3806およびカプセル化マッピングテーブル3810のそれぞれが、複数のエントリを有することができる。このカプセル化マッピングテーブル3806および3810を、セッショントラッカ308のセッション情報のテーブルなど、他の情報と組み合わせることができる。
カプセル化されたパケット3808の送信装置(フォワーダ302など)および受信装置(ホスト108など)が、お互いの間でトンネリングするだけである時に、そのカプセル化マッピングテーブルが、同一のカプセル化マッピングエントリを有する可能性が高い。そうでない場合に、カプセル化マッピングテーブル3806およびカプセル化マッピングテーブル3810が、それぞれカプセル化マッピングエントリ3806()およびカプセル化マッピングエントリ3810()の異なる組を有する可能性が高い。
動作時に、特定の接続の入力パケット3802が、フォワーダ302で受け取られる。特定の接続が、TCP/IP4タプル3804に関連付けられる。入力パケット3802に、発信元IPアドレス(クライアント102の)、宛先IPアドレス(仮想IP)、発信元TCPポート(クライアント102の)、および宛先TCPポートを有するTCP/IP4タプル3804が含まれる。
トンネラ312(F)によって、ホスト108へのトンネリングに関する入力パケット3802が受け入れられる。TCP/IP4タプル3804を使用して、トンネラ312(F)によって、カプセル化マッピングテーブル3806にアクセスして、カプセル化マッピングエントリ3806(1)を突き止める。フロー識別子3814が、TCP/IP4タプル3804にリンク/マッピングされたカプセル化マッピングエントリ3806(1)から抽出される。
カプセル化されたパケット3808を作成するために、トンネラ312(F)によって、TCP/IP4タプルヘッダの発信元部分および宛先部分に、フロー識別子3814が挿入される。インターネットIPv4実施形態に関して、この2つのTCPポート部分によって、合計32ビットのスペースが提供される。また、TCP/IP4タプルヘッダの発信元IPアドレス部分に関して、トンネラ312(F)によって、フォワーダ302のIPアドレス「F」が挿入される。TCP/IP4タプルヘッダの宛先IPアドレス部分に関して、トンネラ312(F)によって、ホスト108のIPアドレス「H」が挿入される。
フォワーダ302によって、カプセル化されたパケット3808がホスト108にルーティング/送信され、ホスト108によって、フォワーダ302からのカプセル化されたパケット3808が受け取られる。ホスト108のトンネラ312(H)コンポーネントによって、カプセル化されたパケット3808が、非カプセル化されなければならないトンネリングされたパケットであることが検出される。
フロー識別子3814が、カプセル化されたパケット3808から抽出され、カプセル化マッピングテーブル3810のカプセル化マッピングエントリ3810(1)内でリンクされた対応するTCP/IP4タプル3804をルックアップするのに使用される。TCP/IP4タプル3804は、トンネラ312(H)によって、フォワーダ302で入力パケット3802で最初に受け取られたTCP/IP4タプル3804ヘッダを再作成するのに使用される。
具体的に言うと、フォワーダ302のIPアドレスFが、発信元IPアドレスと置換され、ホスト108のIPアドレスHが、宛先IPアドレスと置換される。さらに、フロー識別子3814が、発信元TCPポートおよび宛先TCPポートと置換される。非カプセル化されたパケットが、ホスト108のネットワークスタックでターゲットアプリケーション316まで示される。
一般的に言うと、パケットヘッダのうちで、所与のパケットを通信するのに必ずしも使用されない、所与のパケットの発信元/宛先対の一部を含む部分を、フロー識別子3814を担持するのに使用することができる。ホスト108で発信元/宛先対の少なくとも一部を事前に提供することによって、フロー識別子3814を使用して、各パケットでのカプセル化オーバーヘッドをこうむらずにパケットをトンネリング(たとえば、カプセル化および/または非カプセル化)することができる。さらに、所与のプロトコルに関してフルサイズであるパケットを、分割せずにトンネリングすることができる。
図39は、第1装置と第2装置の間のパケットトンネリングの例示的な方法を示すフローチャート3900である。たとえば、第1装置および第2装置は、それぞれ負荷分散インフラストラクチャ106およびホスト108のクラスタの、送信元装置3400およびターゲット装置3500とすることができる。それでも、トンネリングを、負荷分散以外の実施形態で使用することができる。
フローチャート3900に、12個のブロック3902〜3924が含まれる。フローチャート3900の動作を、他の環境でおよびさまざまなソフトウェア方式と共に実行することができるが、特に図1〜3、32、34、35、および38を使用して、この方法のある態様および例を示す。
ブロック3902で、フロー識別子−TCP/IP4タプルのマッピングを、送信元装置からターゲット装置に送る。たとえば、送信元装置3400によって、フロー識別子3814をTCP/IP4タプル3804にリンクするカプセル化マッピング3812を送ることができる。ブロック3914で、フロー識別子−TCP/IP4タプルのマッピングを、ターゲット装置で送信元装置から受け取る。たとえば、ターゲット装置3500によって、フロー識別子3814をTCP/IP4タプル3804にリンクするカプセル化マッピング3812を送信元装置3400から受け取る。
その代わりに、ターゲット装置3500によって、別の装置からカプセル化マッピング3812を受け取ることができる。破線の矢印3926および3928によって示されるように、ブロック3904〜3912およびブロック3916〜3924の動作を、それぞれブロック3902および3914の動作の後に行うことができる。
ブロック3904で、送信元装置でクライアントから入力パケットを受け取る。たとえば、TCP/IP4タプル3804を含むヘッダを有する入力パケット3802を、送信元装置3400でクライアント102から受け取ることができる。ブロック3906で、入力パケットのTCP/IP4タプルを使用して、クライアントのパケットに対応する接続についてフロー識別子をルックアップする。たとえば、カプセル化マッピングテーブル3806のカプセル化マッピングエントリ3806(1)内でそれにマッピングされるTCP/IP4タプル3804を使用してクライアント102との接続についてフロー識別子3814をルックアップすることができる。
ブロック3908で、入力パケットの発信元IPおよび宛先IPを、それぞれ送信元装置の元のIPアドレスおよびターゲット装置のターゲットIPアドレスに置換する。たとえば、送信元装置3400によって、入力パケット3802のヘッダのTCP/IP4タプル3804のIPアドレス部分を、送信元装置3400およびターゲット装置3500のIPアドレスに置換することができる。
ブロック3910で、入力パケットの発信元ポートおよび宛先ポートを、フロー識別子を用いて置換する。たとえば、送信元装置3400によって、入力パケット3802のTCP/IP4タプル3804部分の発信元TCPポートおよび宛先TCPポートを、フロー識別子3814を用いて置換することができる。ブロック3912で、カプセル化されたパケットを、送信元装置からターゲット装置に送る。たとえば、送信元装置3400によって、カプセル化されたパケット3808をターゲット装置3500に送ることができる。
ブロック3916で、カプセル化されたパケットを、ターゲット装置で送信元装置から受け取る。たとえば、ターゲット装置3500によって、送信元装置3400からカプセル化されたパケット3808を受け取ることができる。ブロック3918で、フロー識別子を使用して、クライアントから受け取ったパケットに対応する接続についてTCP/IP4タプルをルックアップする。たとえば、ターゲット装置3500によって、フロー識別子3814をTCP/IP4タプル3804にマッピングするカプセル化マッピングエントリ3810(1)でカプセル化マッピングテーブル3810にアクセスすることができる。
ブロック3920で、ルックアップされたTCP/IP4タプルを使用して、起点IPアドレスおよびターゲットIPアドレスを、発信元IPアドレスおよび宛先IPアドレスに置換する。たとえば、ターゲット装置3500によって、カプセル化されたパケット3808内の送信元装置3400およびターゲット装置3500のIPアドレスを、カプセル化マッピングテーブル3810から獲得されるTCP/IP4タプル3804からの発信元IPアドレスおよび宛先IPアドレスに置換することができる。
ブロック3922で、ルックアップされたTCP/IP4タプルを使用して、フロー識別子を、入力パケットの発信元ポートおよび宛先ポートを用いて置換する。たとえば、ターゲット装置3500によって、TCP/IP4タプル3804の発信元TCPポートおよび宛先TCPポートを用いて、カプセル化されたパケット3808内のフロー識別子3814を置換することができる。ブロック3924で、クライアントのパケットを、ターゲット装置でアプリケーションに示す。たとえば、カプセル化されたパケット3808の非カプセル化されたバージョンまたは入力パケット3802が、ターゲット装置3500のアプリケーション316に示される。
図1〜39の動作、態様、特徴、コンポーネントなどは、複数のブロックに分割される図に示されている。しかし、図1〜39が説明され、かつ/または示された順序、相互接続、レイアウトなどは、制限として解釈されることを意図されたものではなく、任意の数のブロックを、ネットワーク負荷分散に関する1つまたは複数のシステム、方法、装置、プロシージャ、媒体、API、装置、構成などを実施するために、任意の形で組み合わせ、再配置し、増補し、省略することができる。さらに、本明細書の説明に、特定の実施形態(および図40の例示的動作環境)への参照が含まれるが、図示され、かつ/または説明される実施形態は、適切なハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せで、適切なネットワーク編成、トランスポート/通信プロトコル、アプリケーションプログラミングインターフェース(API)、クライアント−サーバアーキテクチャなどを使用して実施することができる。
(コンピュータまたは他の装置の動作環境の例)
図40に、本明細書に記載のネットワーク負荷分散の少なくとも1つのシステム、装置、装置、コンポーネント、構成、プロトコル、手法、方法、プロシージャ、媒体、API、これらの組合せなどを実施することができる(完全にまたは部分的に)例示的なコンピューティング(または一般装置)動作環境4000を示す。動作環境4000は、以下で説明するコンピュータおよびネットワークアーキテクチャで、または独立型の状況で使用することができる。
例示的な動作環境4000は、環境の1つの例にすぎず、適用可能な装置(コンピュータ、ネットワークノード、エンターテイメント装置、モバイル機器、一般電子装置などを含む)アーキテクチャの使用または機能の範囲に関する制限を暗示することを意図されたものではない。動作環境4000(またはその装置)を、図40に示された構成要素の1つまたはその組合せに関する依存性または要件を有するものと解釈してもならない。
さらに、ネットワーク負荷分散を、多数の他の汎用のまたは特殊目的の装置(コンピューティングシステムを含む)環境または構成を用いて実施することができる。使用に適する可能性がある周知の装置、システム、環境、および/または構成の例には、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、携帯情報端末(PDA)または携帯電話機、腕時計、ハンドヘルド装置またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ビデオゲーム機、ゲーム機、ポータブルまたはハンドヘルドゲーミングユニット、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、ネットワークノード、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境またはマルチプロセッシングコンピューティング環境、これらの組合せなどが含まれるが、これに制限はされない。
ネットワーク負荷分散の実施形態をプロセッサ実行可能命令の全般的な文脈で説明することができる。一般に、プロセッサ実行可能命令には、特定のタスクの実行および/またはイネーブルおよび/または特定の抽象データ型の実施を行う、ルーチン、プログラム、プロトコル、オブジェクト、インターフェース、コンポーネント、データ構造などが含まれる。本明細書でいくつかの実施形態で説明したネットワーク負荷分散は、通信リンクおよび/または通信ネットワークを介して接続されたリモートリンクされた処理装置によってタスクが実行される分散処理環境でも実践することができる。特に分散コンピューティング環境では、プロセッサ実行可能命令が、別々の記憶媒体に位置し、異なるプロセッサによって実行され、かつ/または伝送媒体を介して伝搬されることが可能である。
例示的な動作環境4000に、コンピュータ4002の形の汎用コンピューティング装置が含まれ、コンピュータ4002に、コンピューティング/処理機能を有するすべての(たとえば電子)装置を含めることができる。コンピュータ4002の構成要素には、1つまたは複数のプロセッサまたは処理ユニット4004、システムメモリ4006、およびプロセッサ4004を含むさまざまなシステム構成要素をシステムメモリ4006に結合するシステムバス4008を含めることができるが、これに制限はされない。
プロセッサ4004は、それを形成する材料またはそれに使用される処理機構によって制限されない。たとえば、プロセッサ4004は、半導体および/またはトランジスタからなるものとすることができる(たとえば、電子集積回路(IC))。そのような文脈で、プロセッサ実行可能命令を、電子的に実行可能な命令とすることができる。別法では、プロセッサ4004の機構またはこれのための機構、したがってコンピュータ4002の機構またはこれのための機構に、量子コンピューティング、光コンピューティング、機械コンピューティング(たとえばナノテクノロジを使用する)などを含めることができるが、これに制限はされない。
システムバス4008は、メモリバスまたはメモリコントローラ、ポイントツーポイント接続、スイッチングファブリック、周辺機器バス、accelerated graphics port、およびさまざまなバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含むさまざまな種類の有線または無線のバス構造のいずれかの1つまたは複数を表す。たとえば、そのようなアーキテクチャに、Industry Standard Architecture(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、メザニンバスとも称するPeripheral Component Interconnects(PCI)バス、これらの組合せなどを含めることができる。
コンピュータ4002に、通常は、さまざまなプロセッサアクセス可能媒体が含まれる。そのような媒体は、コンピュータ4002または別の(たとえば電子)装置によってアクセス可能な任意の使用可能な媒体とすることができ、これには、揮発性および不揮発性の媒体、取外し可能および取外し不能の媒体、ならびに記憶媒体および伝送媒体の両方が含まれる。
システムメモリ4006に、ランダムアクセスメモリ(RAM)4010などの揮発性メモリ、および/または読取専用メモリ(ROM)4012などの不揮発性メモリの形のプロセッサアクセス可能記憶媒体が含まれる。起動中などにコンピュータ4002内の要素の間での情報の転送を助ける基本ルーチンを含む基本入出力システム(BIOS)4014が、通常ROM4012に記憶される。RAM4010に、通常は、処理装置4004によって即座にアクセス可能および/または現在操作されつつあるデータおよび/またはプログラムモジュール/命令が含まれる。
コンピュータ4002には、他の取外し可能/取外し不能および/または揮発性/不揮発性記憶媒体も含めることができる。たとえば、図40に(通常は)取外し不能不揮発性磁気媒体(別々には図示せず)から読み取り、これに書き込むハードディスクドライブまたはディスクドライブアレイ4016、(通常は)取外し可能不揮発性磁気ディスク4020(たとえば「フロッピディスク」)から読み取り、これに書き込む磁気ディスクドライブ4018、およびCD、DVD、または他の光学媒体などの(通常は)取外し可能不揮発性光ディスク4024から読み取り、かつ/またはこれに書き込む光ディスクドライブ4022が示されている。ハードディスクドライブ4016、磁気ディスクドライブ4018、および光ディスクドライブ4022のそれぞれは、1つまたは複数の記憶媒体インターフェース4026によって、システムバス4008に接続される。別法では、ハードディスクドライブ4016、磁気ディスクドライブ4018、および光ディスクドライブ4022を、1つまたは複数の他の別々のまたは組み合わされたインターフェース(図示せず)によってシステムバス4008に接続することができる。
ディスクドライブおよびそれに関連するプロセッサ可読媒体によって、コンピュータ4002のデータ構造、プログラムモジュール、および他のデータなどのプロセッサ実行可能命令の不揮発性ストレージが提供される。例示的なコンピュータ4002に、ハードディスク4016、取外し可能磁気ディスク4020、および取外し可能光ディスク4024が示されているが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリ、コンパクトディスク(CD)、ディジタル多用途ディスク(DVD)、または他の光ストレージ、RAM、ROM、電気的消去可能プログラマブル読取専用メモリ(EEPROM)などの、装置によってアクセス可能な他の種類のプロセッサアクセス可能媒体によって命令を記憶できることを理解されたい。そのような媒体に、いわゆる特殊目的ICチップまたはハードワイヤドICチップも含めることができる。言い換えると、例示的な動作環境4000の記憶媒体を実現するのに、どのプロセッサアクセス可能媒体でも使用することができる。
一般的な例としてオペレーティングシステム4028、1つまたは複数のアプリケーションプログラム4030、他のプログラムモジュール4032、およびプログラムデータ4034を含む任意の数のプログラムモジュール(あるいは命令/コードの他の単位または組)を、ハードディスク4016、磁気ディスク4020、光ディスク4024、ROM4012、および/またはRAM4010に記憶することができる。
ユーザは、キーボード4036およびポインティング装置4038(たとえば「マウス」)などの入力装置を介してコンピュータ4002にコマンドおよび/または情報を入力することができる。他の入力装置4040(特に図示せず)に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、パラレルポート、スキャナ、および/または類似物を含めることができる。これらおよび他の入力装置は、システムバス4008に結合された入出力インターフェース4042を介して処理ユニット4004に接続される。しかし、その代わりに、入力装置および/または出力装置を、パラレルポート、ゲームポート、universal serial bus(USB)ポート、赤外線ポート、IEEE 1394(「Firewire」)インターフェース、IEEE 802.11無線インターフェース、Bluetooth(登録商標)無線インターフェースなどの他のインターフェースおよびバス構造によって接続することができる。
モニタ/ビュースクリーン4044または他の種類のディスプレイ装置も、ビデオアダプタ4046などのインターフェースを介してシステムバス4008に結合することができる。ビデオアダプタ4046(または別の構成要素)は、グラフィックス集中型計算を処理し、過酷なディスプレイ要件を処理するグラフィックスカードとするか、これに含めることができる。通常、グラフィックスカードに、グラフィックス処理ユニット(GPU)、ビデオRAM(VRAM)などが含まれて、グラフィックスの迅速な表示およびグラフィックス演算の実行が実現される。モニタ4044の他に、他の出力周辺装置に、スピーカ(図示せず)およびプリンタ4048などの構成要素を含めることができ、これらを、入出力インターフェース4042を介してコンピュータ4002に接続することができる。
コンピュータ4002は、リモートコンピューティング装置4050などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。たとえば、リモートコンピューティング装置4050は、パーソナルコンピュータ、ポータブルコンピュータ(たとえば、ラップトップコンピュータ、タブレットコンピュータ、PDA、モバイルステーションなど)、パームまたはポケットサイズのコンピュータ、腕時計、ゲーム機、サーバ、ルータ、ネットワークコンピュータ、ピア装置、別のネットワークノード、または上に示したもの以外の装置種類などとすることができる。しかし、リモートコンピューティング装置4050は、コンピュータ4002に関して本明細書で説明した要素および特徴の多くまたはすべてを含めることができるポータブルコンピュータとして図示されている。
コンピュータ4002とリモートコンピューティング装置4050の間の論理接続は、ローカルエリアネットワーク(LAN)4052および一般の広域ネットワーク(WAN)4054として図示されている。そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、インターネット、固定電話網、携帯電話網、アドホック無線ネットワーク、インフラストラクチャ無線ネットワーク、他の無線ネットワーク、ゲーミングネットワーク、これらの組合せなどでありふれたものである。そのようなネットワークおよび通信接続が、伝送媒体の例である。
LANネットワーキング環境で実施される時に、コンピュータ4002は、通常は、ネットワークインターフェースまたはネットワークアダプタ4056を介してLAN4052に接続される。WANネットワーキング環境で実施される時に、コンピュータ4002に、通常は、WAN4054を介する通信を確立する、モデム4058または他の手段が含まれる。モデム4058は、コンピュータ4002に内蔵または外付けとすることができるが、入出力インターフェース4042または他の適切な機構を介してシステムバス4008に接続することができる。図示のネットワーク接続が、例示的であり、コンピュータ4002と4050の間の通信リンクを確立する他の手段を使用できることを理解されたい。
さらに、サーバ用に特に設計された他のハードウェアを使用することができる。たとえば、SSLアクセラレーションカードを使用して、SSL計算をオフロードすることができる。さらに、特にネットワーク負荷分散動作環境で、ネットワークインターフェースまたはネットワークアダプタ4056上(たとえばネットワークインターフェースカード上)のTCPオフロードハードウェアおよび/またはパケットクラシファイヤをサーバ装置でインストールし、使用することができる。
動作環境4000と共に図示されたものなどのネットワーク化された環境では、コンピュータ4002に関して示されたプログラムモジュールまたは他の命令あるいはその一部を、完全にまたは部分的にリモートメディアストレージ装置に記憶することができる。たとえば、リモートアプリケーションプログラム4060は、リモートコンピュータ4050のメモリ構成要素に常駐するが、コンピュータ4002を介して使用可能または他の形でアクセス可能とすることができる。また、図示において、アプリケーションプログラム4030および、オペレーティングシステム4028などの他のプロセッサ実行可能命令が、この図では別個のプログラムとして図示されているが、そのようなプログラム、コンポーネント、および他の命令が、さまざまな時にコンピューティング装置4002(および/またはリモートコンピューティング装置4050)の異なる記憶構成要素に常駐し、コンピュータ4002(および/またはリモートコンピューティング装置4050)のプロセッサ4004によって実行されることを理解されたい。
システム、媒体、装置、方法、プロシージャ、装置、技法、方式、手法、構成、および他の実施形態を、構造的、論理的、アルゴリズム的、および機能的な特徴および/または図に固有の言葉で説明したが、請求項で定義される発明が、説明された特定の特徴または図に必ずしも制限されないことを理解されたい。そうではなく、特定の特徴および図は、請求される発明を実施する例示的な形として開示されたものである。
負荷分散インフラストラクチャおよび複数のホストを示す例示的なネットワーク負荷分散パラダイムを示す図である。 複数の負荷分散ユニットおよび複数のホストを示す例示的なネットワーク負荷分散パラダイムを示す図である。 分離された機能を有する例示的な負荷分散ユニットおよび例示的なホストを示す図である。 分離された分類機能および転送機能を有する例示的なネットワーク負荷分散インフラストラクチャを示す図である。 ネットワーク負荷分散インフラストラクチャの異なる構成へのスケールアウトの例示的な方法を示すフローチャートである。 装置の観点からの第1の例示的なネットワーク負荷分散インフラストラクチャ構成を示す図である。 装置の観点からの第2の例示的なネットワーク負荷分散インフラストラクチャ構成を示す図である。 コンポーネントの観点からの第1の例示的なネットワーク負荷分散インフラストラクチャ構成を示す図である。 コンポーネントの観点からの第2の例示的なネットワーク負荷分散インフラストラクチャ構成を示す図である。 リソースの観点からの第1の例示的なネットワーク負荷分散インフラストラクチャ構成を示す図である。 リソースの観点からの第2の例示的なネットワーク負荷分散インフラストラクチャ構成を示す図である。 ホスト状態情報を含む例示的なネットワーク負荷分散手法を示す図である。 ホスト状態情報を含むネットワーク負荷分散の例示的な方法を示すフローチャートである。 ヘルスおよび負荷情報を含む例示的なネットワーク負荷分散手法を示す図である。 図12に示された例示的なヘルスおよび負荷テーブルを示す図である。 図12に示された例示的な統合ヘルスおよび負荷キャッシュを示す図である。 ヘルスおよび負荷情報を含むネットワーク負荷分散の例示的な方法を示すフローチャートである。 図12に示されたホストと負荷分散ユニットの間の通信の例示的なメッセージプロトコルを示す図である。 図12に示されたホストと負荷分散ユニットの間の通信の例示的なメッセージ伝送方式を示す図である。 図13Aのヘルスおよび負荷テーブルの例示的なヘルスおよび負荷情報プロキシストレージシナリオを示す図である。 図13Bの統合ヘルスおよび負荷キャッシュの例示的なヘルスおよび負荷情報プロキシストレージシナリオを示す図である。 ヘルスおよび負荷情報を使用する例示的なターゲットホスト割当プロシージャを示す図である。 セッション情報を含む例示的なネットワーク負荷分散手法を示す図である。 通知およびメッセージを使用するセッション情報の通信を用いる例示的なネットワーク負荷分散手法を示す図である。 通知およびメッセージを使用するセッション情報の通信を用いるネットワーク負荷分散の例示的な方法を示すフローチャートである。 複数の負荷分散ユニットでセッション情報を管理する例示的な手法を示す図である。 図20に示された例示的なセッションテーブルを示す図である。 図22に示された例示的な分散アトムマネージャ(DAM)テーブル(DAMT)を示す図である。 複数の負荷分散ユニットでセッション情報を管理する例示的な方法を示すフローチャートである。 リクエストルーティング機能を有する例示的なネットワーク負荷分散インフラストラクチャを示す図である。 (i)セッション情報ならびに(ii)ヘルスおよび負荷情報に関して入力パケットをルーティングする例示的な方法を示すフローチャートである。 障害がないときの例示的なトラフィックルーティングフローを示す図である。 障害があるときの例示的なトラフィックルーティングフローを示す図である。 ネットワーク負荷分散インフラストラクチャの高可用性に関する追加の例示的なフェールオーバープロシージャを示す図である。 ヘルスおよび負荷情報とのトラフィックルーティング相互作用の例示的な動作実施形態を示す図である。 ネットワーク負荷分散インフラストラクチャの例示的な高可用性機構を示す図である。 接続移行を有するアプリケーションレベルネットワーク負荷分散への例示的な手法を示す図である。 第1装置から第2装置に接続を移行する例示的な方法を示すフローチャートである。 送信元装置の観点からの接続移行に対する例示的な手法を示す図である。 ターゲット装置の観点からの接続移行に対する例示的な手法を示す図である。 接続移行に関するオフロードプロシージャへの例示的な手法を示す図である。 接続移行に関するアップロードプロシージャへの例示的な手法を示す図である。 フォワーダとホストの間のパケットトンネリングに対する例示的な手法を示す図である。 第1装置と第2装置の間のパケットトンネリングの例示的な方法を示すフローチャートである。 本明細書に記載のネットワーク負荷分散の少なくとも1つの態様を実施することができる(完全にまたは部分的に)例示的なコンピューティング(または一般装置)動作環境を示す図である。
符号の説明
102 クライアント
104 ネットワーク
106 負荷分散インフラストラクチャ
108 ホスト
201 ルータ/スイッチ
302 フォワーダ
304 クラスファイア

Claims (58)

  1. ネットワーク負荷分散に関するプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記プログラムは、実行されたとき、プロセッサを含むコンピューティングシステムに、
    複数のアプリケーションを備えるホストが、前記ホストで動作するアプリケーションの状態に関するホスト状態情報を判定する動作であって、前記ホスト状態情報は、複数のエントリを含むヘルス及び負荷テーブルを含み、前記複数のエントリの各々は前記複数のアプリケーションのうちでそれぞれ異なるアプリケーションに関連付けられ、複数のエントリの各々は、
    複数のアプリケーションのうちの特定のアプリケーションを一意に識別するためのアプリケーション識別子と、
    前記特定のアプリケーションの状態を表すアプリケーション状態特性情報であって、前記特定のアプリケーションの状態が健全、障害、または未知のどれであるかを表すアプリケーションヘルスと、前記特定のアプリケーションがどれほど占有されているかを示すアプリケーション負荷と、前記特定のアプリケーションの最大容量を示すアプリケーション容量とを含む、アプリケーション状態特性情報と、
    前記特定のアプリケーションについて、負荷分散インフラストラクチャを有する負荷分散ユニットが行わなければいけないことを判定するための少なくとも1つの負荷分散命令と
    を含む、動作と、
    少なくとも1つのホストと少なくとも1つの負荷分散ユニットとの間でメッセージプロトコルを実装し、前記メッセージプロトコルを使用して前記少なくとも1つのホストと前記少なくとも1つの負荷分散ユニットとの間で通信する動作であって、前記通信する動作は、
    前記少なくとも1つのホストの各々が、前記少なくとも1つの負荷分散ユニットに、前記ホスト状態情報を送信する動作と、
    前記少なくとも1つの負荷分散ユニットが、前記少なくとも1つのホストから送信されたホスト状態情報を受信する動作と
    を含む、動作と、
    前記少なくとも1つの負荷分散ユニットが、該受信したホスト状態情報を統合ヘルスおよび負荷キャッシュにキャッシングする動作と、
    前記少なくとも1つの負荷分散ユニットが、接続をリクエストするパケットを受信する動作と、
    前記少なくとも1つの負荷分散ユニットが、前記負荷分散インフラストラクチャを用いて、前記ホスト状態情報に基づいてどのホストに前記パケットを送信するかを決定する動作と
    を実行させ
    前記通信する動作は、
    前記少なくとも1つのホストが、前記少なくとも1つのホストが機能していることを示すためのハートビートメッセージを前記少なくとも1つの負荷分散ユニットに送信する動作であって、前記ハートビートメッセージは、エラー検査データを含み、前記エラー検査データは、前記少なくとも1つの負荷分散ユニットにおける前記統合ヘルスおよび負荷キャッシュが前記少なくとも1つのホストにおける前記ヘルス及び負荷テーブルと同期しているかを検証するために使用される、動作と、
    前記少なくとも1つの負荷分散ユニットが、前記エラー検査データにより前記統合ヘルスおよび負荷キャッシュが前記ヘルス及び負荷テーブルと同期していないことが検証されたホストにテーブルスナップショット取得メッセージを送信する動作であって、前記テーブルスナップショット取得メッセージは、前記少なくとも1つのホストの現在のヘルス及び負荷テーブルのスナップショットを供給することをリクエストする、動作と
    を含み、
    前記ホスト状態情報を送信する動作は、
    前記テーブルスナップショット取得メッセージを受信した後に、前記テーブルスナップショット取得メッセージを送信した負荷分散ユニットにテーブルスナップショット送信メッセージを送信する動作であって、前記テーブルスナップショット送信メッセージは、前記少なくとも1つのホストの前記現在のヘルス及び負荷テーブルのスナップショットを含む、動作を含み、
    前記ホスト状態情報を受信する動作は、前記テーブルスナップショット送信メッセージを受信する動作を含むことを特徴とするコンピュータ読み取り可能な記録媒体。
  2. 前記ホスト状態情報は、前記複数のホストに関連するヘルスおよび/または負荷情報を含むことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  3. 前記送信する動作は、
    前記ホスト状態情報を前記複数のホストから少なくとも1つのプロキシに送信する動作 を含むことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  4. 前記ハートビートメッセージはさらに、前記少なくとも1つのホストの識別子、ドメインネームシステム(DNS)名を含むことを特徴とする請求項に記載のコンピュータ読み取り可能な記録媒体。
  5. 前記ハートビートメッセージのフォーマットは、チャンク番号/世代識別子(ID)対の包含を許可することを特徴とする請求項に記載のコンピュータ読み取り可能な記録媒体。
  6. 前記メッセージプロトコルを使用して通信される少なくとも1つのメッセージは、前記少なくとも1つのホストがシャットダウンを計画していることを前記少なくとも1つの負荷分散ユニットに示すグッドバイメッセージを含むことを特徴とする請求項に記載のコンピュータ読み取り可能な記録媒体。
  7. 前記グッドバイメッセージのフォーマットは、前記少なくとも1つのホストの識別子を含むことを特徴とする請求項に記載のコンピュータ読み取り可能な記録媒体。
  8. 前記メッセージプロトコルを使用して通信される少なくとも1つのメッセージは、前記少なくとも1つのホストのアプリケーションのヘルスおよび/または負荷情報の変更を前記少なくとも1つの負荷分散ユニットに示す行チェンジメッセージを含むことを特徴とする請求項4に記載のコンピュータ読み取り可能な記録媒体。
  9. 前記行チェンジメッセージのフォーマットは、前記少なくとも1つのホストの識別子、前記アプリケーションの識別子、前記変更を反映する動作、および前記動作のデータを含むことを特徴とする請求項に記載のコンピュータ読み取り可能な記録媒体。
  10. 前記テーブルスナップショット取得メッセージのフォーマットは、前記少なくとも1つの負荷分散ユニットのリクエスト元負荷分散ユニットの識別を含むことを特徴とする請求項に記載のコンピュータ読み取り可能な記録媒体。
  11. 前記メッセージプロトコルを使用して通信される少なくとも1つのメッセージは、前記少なくとも1つのホストから前記少なくとも1つの負荷分散ユニットに送られるテーブル状態仮定メッセージを含み、前記テーブル状態仮定メッセージは、前記少なくとも1つの負荷分散ユニットに存在する前記少なくとも1つのホストによって期待される現在負荷分散状態命令を示す負荷分散状態命令を含むことを特徴とする請求項に記載のコンピュータ読み取り可能な記録媒体。
  12. 前記テーブル状態仮定メッセージのフォーマットは、前記少なくとも1つのホストの識別子および前記現在負荷分散状態命令を含むことを特徴とする請求項11に記載のコンピュータ読み取り可能な記録媒体。
  13. 前記メッセージプロトコルを使用して通信される少なくとも1つのメッセージは、前にテーブル状態仮定メッセージを送った前記少なくとも1つのホストに送られる誤仮定メッセージを含み、前記誤仮定メッセージは、前記テーブル状態仮定メッセージに含まれる仮定された負荷分散状態命令と異なる実際の負荷分散状態命令を負荷分散ユニットが有することを示すことを特徴とする請求項11に記載のコンピュータ読み取り可能な記録媒体。
  14. 前記プログラムは、実行されたとき、前記コンピューティングシステムに、
    複数のアプリケーションエンドポイントについてヘルスおよび/または負荷情報を分析する動作と、
    前記分析に応答して、前記複数のアプリケーションエンドポイントについてトークン割当を確実にする動作と
    を実行させることを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  15. 前記プログラムは、実行されたとき、前記コンピューティングシステムに、
    前記複数のアプリケーションエンドポイントを識別するターゲットアプリケーションエンドポイント割当リクエストを受信する動作と、
    前記トークン割当を含むターゲットアプリケーションエンドポイント割当応答を送信する動作と
    を実行させることを特徴とする請求項14に記載のコンピュータ読み取り可能な記録媒体。
  16. 前記プログラムは、実行されたとき、前記コンピューティングシステムに、
    仮想インターネットプロトコル(IP)アドレスおよびポート、プロトコル、ならびに前記プロトコルに固有の情報の1つまたは複数を含むターゲットアプリケーションエンドポイント割当リクエストを受信する動作と、
    物理IPアドレスおよびポートを含むターゲットアプリケーションエンドポイント割当応答を送信する動作と
    を実行させることを特徴とする請求項14に記載のコンピュータ読み取り可能な記録媒体。
  17. 前記分析する動作は、前記複数のアプリケーションエンドポイントについてアプリケーションエンドポイント固有のヘルスおよび/または負荷情報を分析する動作を含むことを特徴とする請求項14に記載のコンピュータ読み取り可能な記録媒体。
  18. 前記確実にする動作は、
    前記複数のアプリケーションエンドポイントの間での相対使用可能容量に基づいて、前記複数のアプリケーションエンドポイントの前記トークン割当を確実にする動作を含むことを特徴とする請求項14に記載のコンピュータ読み取り可能な記録媒体。
  19. 前記トークン割当は、前記複数のアプリケーションエンドポイントの第1アプリケーションエンドポイントに対応する第1の複数のトークンと、前記複数のアプリケーションエンドポイントの第2アプリケーションエンドポイントに対応する第2の複数のトークンとを含むことを特徴とする請求項14に記載のコンピュータ読み取り可能な記録媒体。
  20. 前記トークン割当は、時間制限の満了が前記第1の複数のトークンおよび前記第2の複数のトークンの残りのトークンを使用不能にする時間制限と
    を含むことを特徴とする請求項19に記載のコンピュータ読み取り可能な記録媒体。
  21. 前記プログラムは、実行されたとき、前記コンピューティングシステムに、前記トークン割り当てを使用して、入力接続リクエストを分類する動作を実行させることを特徴とする請求項14に記載のコンピュータ読み取り可能な記録媒体。
  22. 前記判定する動作は、特定のアプリケーション種類の1つまたは複数の他のアプリケーションのロードに関する前記特定のアプリケーション種類の所与のアプリケーションのロードを判定する動作を含むことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  23. 前記プログラムは、実行されたとき、前記コンピューティングシステムに、
    アプリケーションごとのベースで前記ヘルスおよび負荷情報の判定に関する外部入力を受信する動作を実行させ、
    前記判定する動作は、
    前記外部入力に従ってアプリケーションごとのベースで前記ヘルスおよび負荷情報を判定する動作を含むことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  24. 前記ホスト状態情報を送信する動作は、少なくとも1つのホストから少なくとも1つの負荷分散ユニットへ、メンバシップグループ化を使用して前記ホスト状態情報を送信することを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  25. 前記ホスト状態情報を送信する動作は、前記少なくとも1つのホストからリーダシップホストへ前記ハートビートメッセージを送信する動作であって、前記メンバシップグループ化に変化が含まれない場合であっても、前記リーダシップホストが前記少なくとも1つの負荷分散ユニットに前記ハートビートメッセージを転送するように指示されるように、前記ハートビートメッセージは転送指示を含む動作を含むことを特徴とする請求項24に記載のコンピュータ読み取り可能な記録媒体。
  26. 前記ホスト状態情報を送信する動作は、少なくとも1つのヘルスおよび負荷テーブルから1つまたは複数の統合ヘルスおよび負荷キャッシュに前記ホスト状態情報を送信することを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  27. 前記プログラムは、実行されたとき、前記コンピューティングシステムに、
    記パケットの受信に応答してキャッシングされたホスト状態情報を調べる動作と
    をさらに実行させ、前記決定する動作は、
    前記調べる動作に応答して、前記複数のアプリケーションの中から前記アプリケーションを選択する動作を含むことを特徴とする請求項26に記載のコンピュータ読み取り可能な記録媒体。
  28. 前記パケットは、特定のアプリケーション種類に関連することを特徴とする請求項27に記載のコンピュータ読み取り可能な記録媒体。
  29. 前記決定する動作は、前記ホスト状態情報に応答して、複数のアプリケーションエンドポイントの中からアプリケーションエンドポイントを選択する動作を含むことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  30. 前記決定する動作は、前記ホスト状態情報に応答して、複数のホストの間で分散される複数のアプリケーションエンドポイントの中からアプリケーションエンドポイントを選択する動作を含むことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  31. 前記決定する動作は、前記ホスト状態情報に応答して、複数のアプリケーションエンドポイントの間またはその中の相対容量に関して前記複数のアプリケーションエンドポイントの中からアプリケーションエンドポイントの割当を選択する動作を含むことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  32. 前記決定する動作は、トークン割当方式を使用してアプリケーションエンドポイントの前記割当を選択する動作を含むことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  33. 前記決定する動作は、パーセンテージ割当方式を使用してアプリケーションエンドポイントの前記割当を選択する動作を含むことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  34. 前記複数のアプリケーションエンドポイントは、単一のアプリケーション種類のアプリケーションに対応することを特徴とする請求項31に記載のコンピュータ読み取り可能な記録媒体。
  35. 前記決定する動作は、入力パケットによって引き起こされるネットワーク負荷を分散するために、前記ヘルスおよび負荷情報に応答して前記複数のアプリケーションの中から前記アプリケーションを選択する動作を含むことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  36. 少なくとも1つのプロセッサと、
    前記少なくとも1つのプロセッサによって実行することができるコンピュータ実行可能命令を含む1つまたは複数のコンピュータ読み取り可能な記録媒体とを含むシステムであって、前記コンピュータ実行可能命令は、前記プロセッサに、
    複数のアプリケーションを備えるホストが、前記ホストで動作するアプリケーションの状態に関するホスト状態情報を判定する動作であって、前記ホスト状態情報は、複数のエントリを含むヘルス及び負荷テーブルを含み、前記複数のエントリの各々は前記複数のアプリケーションのうちでそれぞれ異なるアプリケーションに関連付けられ、複数のエントリの各々は、
    複数のアプリケーションのうちの特定のアプリケーションを一意に識別するためのアプリケーション識別子と、
    前記特定のアプリケーションの状態を表すアプリケーション状態特性情報であって、前記特定のアプリケーションの状態が健全、障害、または未知のどれであるかを表すアプリケーションヘルスと、前記特定のアプリケーションがどれほど占有されているかを示すアプリケーション負荷と、前記特定のアプリケーションの最大容量を示すアプリケーション容量とを含む、アプリケーション状態特性情報と、
    前記特定のアプリケーションについて、負荷分散インフラストラクチャを有する負荷分散ユニットが行わなければいけないことを判定するための少なくとも1つの負荷分散命令と
    を含む、動作と、
    少なくとも1つのホストと少なくとも1つの負荷分散ユニットとの間でメッセージプロトコルを実装し、前記メッセージプロトコルを使用して前記少なくとも1つのホストと前記少なくとも1つの負荷分散ユニットとの間で通信する動作であって、前記通信する動作は、
    前記少なくとも1つのホストの各々が、前記少なくとも1つの負荷分散ユニットに前記ホスト状態情報を送信する動作と、
    前記少なくとも1つの負荷分散ユニットが、前記少なくとも1つのホストから送信されたホスト状態情報を受信する動作と、
    を含む、動作と、
    前記少なくとも1つの負荷分散ユニットが、該受信したホスト状態情報を統合ヘルスおよび負荷キャッシュにキャッシングする動作と、
    前記少なくとも1つの負荷分散ユニットが、接続をリクエストするパケットを受信する動作と、
    前記少なくとも1つの負荷分散ユニットが、前記負荷分散インフラストラクチャを用いて、前記ホスト状態情報に基づいてどのホストに前記パケットを送信するかを決定する動作と
    を実行させるように適合され
    前記通信する動作は、
    前記少なくとも1つのホストが、前記少なくとも1つのホストが機能していることを示すためのハートビートメッセージを前記少なくとも1つの負荷分散ユニットに送信する動作であって、前記ハートビートメッセージは、エラー検査データを含み、前記エラー検査データは、前記少なくとも1つの負荷分散ユニットにおける前記統合ヘルスおよび負荷キャッシュが前記少なくとも1つのホストにおける前記ヘルス及び負荷テーブルと同期しているかを検証するために使用される、動作と、
    前記少なくとも1つの負荷分散ユニットが、前記エラー検査データにより前記統合ヘルスおよび負荷キャッシュが前記ヘルス及び負荷テーブルと同期していないことが検証されたホストにテーブルスナップショット取得メッセージを送信する動作であって、前記テーブルスナップショット取得メッセージは、前記少なくとも1つのホストの現在のヘルス及び負荷テーブルのスナップショットを供給することをリクエストする、動作と
    を含み、
    前記ホスト状態情報を送信する動作は、
    前記テーブルスナップショット取得メッセージを受信した後に、前記テーブルスナップショット取得メッセージを送信した負荷分散ユニットにテーブルスナップショット送信メッセージを送信する動作であって、前記テーブルスナップショット送信メッセージは、前記少なくとも1つのホストの前記現在のヘルス及び負荷テーブルのスナップショットを含む、動作を含み、
    前記ホスト状態情報を受信する動作は、前記テーブルスナップショット送信メッセージを受信する動作を含むことを特徴とするシステム。
  37. 前記ホスト状態情報を受信する動作は、少なくとも1つのプロキシを介して複数のホストから前記ホスト状態情報を受信する動作を含むことを特徴とする請求項36に記載のシステム。
  38. 前記ホスト状態情報を受信する動作は、1つまたは複数のアプリケーションプログラミングインターフェース(API)を呼び出している少なくとも1つのプロキシを介して複数のホストから前記負荷分散命令を受信し、前記負荷分散命令をプッシュする動作を含むことを特徴とする請求項36に記載のシステム。
  39. ホストのホスト状態情報を判定するように適合されたホスト状態情報デターミナと、
    前記ホスト状態情報を負荷分散インフラストラクチャに配布するように適合されたホスト状態情報ディセミネータと
    を含むことを特徴とする請求項36に記載のシステム。
  40. 前記ホスト状態情報デターミナは、前記1つまたは複数のアプリケーションに関して前記ホスト状態情報を判定することを特徴とする請求項39に記載のシステム。
  41. 前記アプリケーション識別子は、仮想インターネットプロトコル(IP)アドレスおよびポート、物理IPアドレスおよびポート、前記特定のアプリケーションに関連するプロトコル、ならびに前記プロトコルに固有の情報の少なくとも1つを含むことを特徴とする請求項36に記載のシステム。
  42. 前記アプリケーション識別子は、少なくとも1つのグローバル一意識別子(GUID)を含むことを特徴とする請求項36に記載のシステム。
  43. 前記特定のアプリケーションの前記最大容量は、前記システム内で実行されつつある前記特定のアプリケーションの種類と同一の種類のアプリケーションの総容量に関して表現されることを特徴とする請求項36に記載のシステム。
  44. 前記特定のアプリケーションの前記最大容量は、無単位の有界数として表現されることを特徴とする請求項36に記載のシステム。
  45. 前記少なくとも1つの負荷分散命令は、前記特定のアプリケーションに関するおよび同一のアプリケーション種類の他のアプリケーションに関するネットワーク負荷分散のガイダンスを提供するために複数の負荷分散ユニットに供給され得ることを特徴とする請求項36に記載のシステム。
  46. 前記少なくとも1つの負荷分散命令は、アクティブ、非アクティブ、および排出中の少なくとも1つを含むことを特徴とする請求項36に記載のシステム。
  47. 前記少なくとも1つの負荷分散命令は、ターゲット負荷分散状態命令および現在負荷分散状態命令を含むことを特徴とする請求項46に記載のシステム。
  48. 前記ターゲット負荷分散状態命令は、前記少なくとも1つのホストに位置するヘルスおよび負荷インフラストラクチャが、複数の負荷分散ユニットに位置するヘルスおよび負荷インフラストラクチャがその下で動作することを意図する負荷分散状態を示すことを特徴とする請求項47に記載のシステム。
  49. 前記現在負荷分散状態命令は、前記少なくとも1つのホストに位置するヘルスおよび負荷インフラストラクチャが、複数の負荷分散ユニットに位置するヘルスおよび負荷インフラストラクチャが現在その下で動作しているとみなす負荷分散状態を示すことを特徴とする請求項48に記載のシステム。
  50. 前記統合ヘルスおよび負荷キャッシュは、複数のホストで実行中の前記複数のアプリケーションに関するアプリケーション固有のヘルスおよび負荷情報を記憶することを特徴とする請求項36に記載のシステム。
  51. 前記アプリケーション固有のヘルスおよび負荷情報は、アプリケーションエンドポイント固有のヘルスおよび負荷情報を含むことを特徴とする請求項50に記載のシステム。
  52. 前記ヘルスおよび負荷インフラストラクチャの少なくとも一部を含むプロキシ装置であって、前記ヘルスおよび負荷インフラストラクチャの前記少なくとも一部は、外部監視動作を実行することによって前記アプリケーション固有のヘルスおよび負荷情報を判定するように適合される、プロキシ装置をさらに含むことを特徴とする請求項51に記載のシステム。
  53. 前記メッセージプロトコルは、ハートビートメッセージ種類、グッドバイメッセージ種類、行チェンジメッセージ種類、テーブルスナップショット取得メッセージ種類、テーブルスナップショット送信メッセージ種類、テーブル状態仮定メッセージ種類、および誤仮定メッセージ種類の1つまたは複数を含むことを特徴とする請求項52に記載のシステム。
  54. 前記メッセージプロトコルは、グループメンバシップを使用して通信する能力を含むことを特徴とする請求項52に記載のシステム。
  55. 前記負荷分散インフラストラクチャは、さらに、1つまたは複数の割当方式を使用して前記複数のアプリケーションにリクエストを割り当てるように適合されることを特徴とする請求項36に記載のシステム。
  56. 前記1つまたは複数の割当方式は、トークン割当方式およびパーセンテージ割当方式の少なくとも1つを含むことを特徴とする請求項55に記載のシステム。
  57. 前記1つまたは複数の割当方式は、タイマ満了機構を使用することを含むことを特徴とする請求項55に記載のシステム。
  58. ネットワーク負荷分散に関する方法であって、
    複数のアプリケーションを備えるホストが、前記ホストで動作するアプリケーションの状態に関するホスト状態情報を判定するステップであって、前記ホスト状態情報は、複数のエントリを含むヘルス及び負荷テーブルを含み、前記複数のエントリの各々は前記複数のアプリケーションのうちでそれぞれ異なるアプリケーションに関連付けられ、複数のエントリの各々は、
    複数のアプリケーションのうちの特定のアプリケーションを一意に識別するためのアプリケーション識別子と、
    前記特定のアプリケーションの状態を表すアプリケーション状態特性情報であって、前記特定のアプリケーションの状態が健全、障害、または未知のどれであるかを表すアプリケーションヘルスと、前記特定のアプリケーションがどれほど占有されているかを示すアプリケーション負荷と、前記特定のアプリケーションの最大容量を示すアプリケーション容量とを含む、アプリケーション状態特性情報と、
    前記特定のアプリケーションについて、負荷分散インフラストラクチャを有する負荷分散ユニットが行わなければいけないことを判定するための負荷分散命令と
    を含む、ステップと、
    少なくとも1つのホストと少なくとも1つの負荷分散ユニットとの間でメッセージプロトコルを実装し、前記メッセージプロトコルを使用して前記少なくとも1つのホストと前記少なくとも1つの負荷分散ユニットとの間で通信するステップであって、前記通信するステップは、
    前記少なくとも1つのホストの各々が、前記少なくとも1つの負荷分散ユニットに前記ホスト状態情報を送信するステップと、
    前記少なくとも1つの負荷分散ユニットが、前記少なくとも1つのホストから送信されたホスト状態情報を受信するステップと
    を含む、ステップと、
    前記少なくとも1つの負荷分散ユニットが、該受信したホスト状態情報を統合ヘルスおよび負荷キャッシュにキャッシングするステップと、
    前記少なくとも1つの負荷分散ユニットが、新しい接続をリクエストするパケットを受信するステップと、
    前記少なくとも1つの負荷分散ユニットが、前記負荷分散インフラストラクチャを用いて、前記ホスト状態情報に基づいてどのホストに前記パケットを送信するかを決定するステップと
    を備え
    前記通信するステップは、
    前記少なくとも1つのホストが、前記少なくとも1つのホストが機能していることを示すためのハートビートメッセージを前記少なくとも1つの負荷分散ユニットに送信するステップであって、前記ハートビートメッセージは、エラー検査データを含み、前記エラー検査データは、前記少なくとも1つの負荷分散ユニットにおける前記統合ヘルスおよび負荷キャッシュが前記少なくとも1つのホストにおける前記ヘルス及び負荷テーブルと同期しているかを検証するために使用される、ステップと、
    前記少なくとも1つの負荷分散ユニットが、前記エラー検査データにより前記統合ヘルスおよび負荷キャッシュが前記ヘルス及び負荷テーブルと同期していないことが検証されたホストにテーブルスナップショット取得メッセージを送信するステップであって、前記テーブルスナップショット取得メッセージは、前記少なくとも1つのホストの現在のヘルス及び負荷テーブルのスナップショットを供給することをリクエストする、ステップと
    を含み、
    前記ホスト状態情報を送信するステップは、
    前記テーブルスナップショット取得メッセージを受信した後に、前記テーブルスナップショット取得メッセージを送信した負荷分散ユニットにテーブルスナップショット送信メッセージを送信するステップであって、前記テーブルスナップショット送信メッセージは、前記少なくとも1つのホストの前記現在のヘルス及び負荷テーブルのスナップショットを含む、ステップを含み、
    前記ホスト状態情報を受信するステップは、前記テーブルスナップショット送信メッセージを受信するステップを含むことを特徴とする方法。
JP2004192284A 2003-06-30 2004-06-29 ホスト状態情報を用いるネットワーク負荷分散 Expired - Fee Related JP4942921B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/610,519 US7636917B2 (en) 2003-06-30 2003-06-30 Network load balancing with host status information
US10/610,519 2003-06-30

Publications (2)

Publication Number Publication Date
JP2005025756A JP2005025756A (ja) 2005-01-27
JP4942921B2 true JP4942921B2 (ja) 2012-05-30

Family

ID=33435411

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004192284A Expired - Fee Related JP4942921B2 (ja) 2003-06-30 2004-06-29 ホスト状態情報を用いるネットワーク負荷分散

Country Status (22)

Country Link
US (1) US7636917B2 (ja)
EP (1) EP1494421B1 (ja)
JP (1) JP4942921B2 (ja)
KR (1) KR101109218B1 (ja)
CN (1) CN1578320B (ja)
AT (1) ATE407506T1 (ja)
AU (1) AU2004202389B2 (ja)
BR (1) BRPI0402591B1 (ja)
CA (1) CA2470300A1 (ja)
CO (1) CO5590203A1 (ja)
DE (1) DE602004016255D1 (ja)
EG (1) EG23984A (ja)
HK (1) HK1073025A1 (ja)
IL (1) IL162164A0 (ja)
MX (1) MXPA04006411A (ja)
MY (1) MY142244A (ja)
NO (1) NO331320B1 (ja)
NZ (1) NZ533148A (ja)
RU (1) RU2380746C2 (ja)
SG (1) SG117505A1 (ja)
TW (1) TWI356311B (ja)
ZA (1) ZA200404375B (ja)

Families Citing this family (373)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343413B2 (en) 2000-03-21 2008-03-11 F5 Networks, Inc. Method and system for optimizing a network by independently scaling control segments and data flow
US8380854B2 (en) 2000-03-21 2013-02-19 F5 Networks, Inc. Simplified method for processing multiple connections from the same client
US7606898B1 (en) 2000-10-24 2009-10-20 Microsoft Corporation System and method for distributed management of shared computers
US8122106B2 (en) 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7689676B2 (en) 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US7890543B2 (en) 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7716742B1 (en) 2003-05-12 2010-05-11 Sourcefire, Inc. Systems and methods for determining characteristics of a network and analyzing vulnerabilities
WO2004107132A2 (en) 2003-05-28 2004-12-09 Caymas Systems, Inc. Method, system and software for state signing of internet resources
US7760729B2 (en) 2003-05-28 2010-07-20 Citrix Systems, Inc. Policy based network address translation
US9525566B2 (en) * 2003-07-31 2016-12-20 Cloudsoft Corporation Limited Self-managed mediated information flow
US8285881B2 (en) * 2003-09-10 2012-10-09 Broadcom Corporation System and method for load balancing and fail over
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US8572249B2 (en) * 2003-12-10 2013-10-29 Aventail Llc Network appliance for balancing load and platform services
US7890996B1 (en) 2004-02-18 2011-02-15 Teros, Inc. Using statistical analysis to generate exception rules that allow legitimate messages to pass through application proxies and gateways
US7774834B1 (en) 2004-02-18 2010-08-10 Citrix Systems, Inc. Rule generalization for web application entry point modeling
US7778422B2 (en) 2004-02-27 2010-08-17 Microsoft Corporation Security associations for devices
JP2005293370A (ja) * 2004-04-01 2005-10-20 Hitachi Ltd 記憶制御システム
US20050246529A1 (en) 2004-04-30 2005-11-03 Microsoft Corporation Isolated persistent identity storage for authentication of computing devies
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
US20060209695A1 (en) * 2005-03-15 2006-09-21 Archer Shafford R Jr Load balancing in a distributed telecommunications platform
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
AU2005266943C1 (en) 2004-07-23 2011-01-06 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
EP2264956B1 (en) 2004-07-23 2017-06-14 Citrix Systems, Inc. Method for securing remote access to private networks
US7539681B2 (en) 2004-07-26 2009-05-26 Sourcefire, Inc. Methods and systems for multi-pattern searching
US7496962B2 (en) * 2004-07-29 2009-02-24 Sourcefire, Inc. Intrusion detection strategies for hypertext transport protocol
US20060069761A1 (en) * 2004-09-14 2006-03-30 Dell Products L.P. System and method for load balancing virtual machines in a computer network
US20060072482A1 (en) * 2004-10-06 2006-04-06 Nokia Corporation Service routing
CN101069384B (zh) * 2004-12-09 2010-05-05 国际商业机器公司 在网络环境中管理基于消息的工作负荷的方法和系统
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8700695B2 (en) 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8706877B2 (en) 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
US8040903B2 (en) * 2005-02-01 2011-10-18 Hewlett-Packard Development Company, L.P. Automated configuration of point-to-point load balancing between teamed network resources of peer devices
JP4621044B2 (ja) * 2005-03-15 2011-01-26 富士通株式会社 負荷分散装置および負荷分散方法
JP4848660B2 (ja) * 2005-03-30 2011-12-28 ソニー株式会社 情報処理分散システム,情報処理装置および情報処理分散方法
ATE449495T1 (de) * 2005-04-04 2009-12-15 Ericsson Telefon Ab L M Verfahren und vorrichtung zur lastverteilung auf anwendungsservern
US7797147B2 (en) 2005-04-15 2010-09-14 Microsoft Corporation Model-based system monitoring
US8489728B2 (en) 2005-04-15 2013-07-16 Microsoft Corporation Model-based system monitoring
JP2006323526A (ja) * 2005-05-17 2006-11-30 Fujitsu Ltd クラスタ管理プログラム、該プログラムを記録した記録媒体、クラスタ管理方法、ノード、およびクラスタ
US8549513B2 (en) 2005-06-29 2013-10-01 Microsoft Corporation Model-based virtual system provisioning
US8135814B2 (en) * 2005-06-29 2012-03-13 At&T Intellectual Property I, L.P. Network capacity management system
US20070041327A1 (en) * 2005-08-16 2007-02-22 Cisco Technology, Inc. Multicast heartbeat signaling
US7882209B1 (en) * 2005-09-30 2011-02-01 At&T Intellectual Property Ii, L.P. Tiered and modular approach to operational support systems
US7926071B2 (en) * 2005-10-20 2011-04-12 Microsoft Corporation Load balancing interfaces
US8234378B2 (en) 2005-10-20 2012-07-31 Microsoft Corporation Load balancing in a managed execution environment
US7941309B2 (en) 2005-11-02 2011-05-10 Microsoft Corporation Modeling IT operations/policies
JP4001297B2 (ja) * 2005-11-10 2007-10-31 株式会社日立製作所 情報処理システム及びその管理サーバ
US8046833B2 (en) 2005-11-14 2011-10-25 Sourcefire, Inc. Intrusion event correlation with network discovery information
US7733803B2 (en) 2005-11-14 2010-06-08 Sourcefire, Inc. Systems and methods for modifying network map attributes
DE602006014192D1 (de) 2005-12-02 2010-06-17 Citrix Systems Inc Uthentifizierungsbescheinigungen von einem proxy-server für eine virtualisierte berechnungsumgebung zum zugriff auf eine remote-ressource
US7924884B2 (en) 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
US8756298B2 (en) * 2005-12-21 2014-06-17 Cisco Technology, Inc. System for automatic configuration of computers in a server farm
US20070150600A1 (en) * 2005-12-22 2007-06-28 International Business Machines Corporation Method and apparatus for collecting data for characterizing HTTP session workloads
US8301839B2 (en) 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US7921184B2 (en) 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
JP4652981B2 (ja) * 2006-01-13 2011-03-16 日本電信電話株式会社 Dnsサーバ選択装置、dnsサーバ選択方法、dnsサーバ選択プログラムおよび名前解決システム
US20070168548A1 (en) * 2006-01-19 2007-07-19 International Business Machines Corporation Method and system for performing multi-cluster application-specific routing
US20070198524A1 (en) * 2006-02-09 2007-08-23 International Business Machines Corporation Maintaining connections between application servers and databases in a multitier computer architecture
US7675854B2 (en) 2006-02-21 2010-03-09 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US8531953B2 (en) * 2006-02-21 2013-09-10 Barclays Capital Inc. System and method for network traffic splitting
US20070198982A1 (en) * 2006-02-21 2007-08-23 International Business Machines Corporation Dynamic resource allocation for disparate application performance requirements
US8295275B2 (en) * 2006-03-20 2012-10-23 Intel Corporation Tagging network I/O transactions in a virtual machine run-time environment
US7643410B2 (en) * 2006-03-29 2010-01-05 Intel Corporation Method and apparatus for managing a connection in a connection orientated environment
US20070239854A1 (en) * 2006-04-11 2007-10-11 Gopalakrishnan Janakiraman Method of migrating process domain
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
CN100461719C (zh) * 2006-06-15 2009-02-11 华为技术有限公司 服务健康度检测系统及方法
US7890636B2 (en) * 2006-06-28 2011-02-15 Cisco Technology, Inc. Application integrated gateway
US7760641B2 (en) * 2006-07-10 2010-07-20 International Business Machines Corporation Distributed traffic shaping across a cluster
US7948988B2 (en) 2006-07-27 2011-05-24 Sourcefire, Inc. Device, system and method for analysis of fragments in a fragment train
US8869262B2 (en) * 2006-08-03 2014-10-21 Citrix Systems, Inc. Systems and methods for application based interception of SSL/VPN traffic
US8108525B2 (en) 2006-08-03 2012-01-31 Citrix Systems, Inc. Systems and methods for managing a plurality of user sessions in a virtual private network environment
US8495181B2 (en) 2006-08-03 2013-07-23 Citrix Systems, Inc Systems and methods for application based interception SSI/VPN traffic
US7701945B2 (en) 2006-08-10 2010-04-20 Sourcefire, Inc. Device, system and method for analysis of segments in a transmission control protocol (TCP) session
US8141164B2 (en) 2006-08-21 2012-03-20 Citrix Systems, Inc. Systems and methods for dynamic decentralized load balancing across multiple sites
US7791559B2 (en) 2006-09-14 2010-09-07 Citrix Systems, Inc. System and method for multiple display support in remote access software
US8054241B2 (en) 2006-09-14 2011-11-08 Citrix Systems, Inc. Systems and methods for multiple display support in remote access software
JP4324975B2 (ja) * 2006-09-27 2009-09-02 日本電気株式会社 負荷低減システム、計算機、及び負荷低減方法
US20080115213A1 (en) * 2006-11-14 2008-05-15 Fmr Corp. Detecting Fraudulent Activity on a Network Using Stored Information
US8145560B2 (en) * 2006-11-14 2012-03-27 Fmr Llc Detecting fraudulent activity on a network
US8180873B2 (en) * 2006-11-14 2012-05-15 Fmr Llc Detecting fraudulent activity
US20080114858A1 (en) * 2006-11-14 2008-05-15 Fmr Corp. Reconstructing Data on a Network
US7856494B2 (en) 2006-11-14 2010-12-21 Fmr Llc Detecting and interdicting fraudulent activity on a network
WO2008127372A2 (en) * 2006-12-05 2008-10-23 Qualcomm Incorporated Apparatus and methods of a zero single point of failure load balancer
US8069352B2 (en) 2007-02-28 2011-11-29 Sourcefire, Inc. Device, system and method for timestamp analysis of segments in a transmission control protocol (TCP) session
US20080209053A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation HTTP-Based Peer-to-Peer Framework
US7760642B2 (en) 2007-03-12 2010-07-20 Citrix Systems, Inc. Systems and methods for providing quality of service precedence in TCP congestion control
US7796510B2 (en) 2007-03-12 2010-09-14 Citrix Systems, Inc. Systems and methods for providing virtual fair queueing of network traffic
CN101296176B (zh) * 2007-04-25 2010-12-22 阿里巴巴集团控股有限公司 一种基于群集的数据处理方法和装置
WO2008134057A1 (en) 2007-04-30 2008-11-06 Sourcefire, Inc. Real-time awareness for a computer network
US20080307426A1 (en) * 2007-06-05 2008-12-11 Telefonaktiebolaget Lm Ericsson (Publ) Dynamic load management in high availability systems
US8086674B2 (en) * 2007-06-21 2011-12-27 Research In Motion Limited Attachment server network for viewing attachments on a portable electronic device
US9032079B2 (en) * 2007-06-26 2015-05-12 Microsoft Technology Licensing, Llc Management and diagnosis of telephonic devices
US8132247B2 (en) * 2007-08-03 2012-03-06 Citrix Systems, Inc. Systems and methods for authorizing a client in an SSL VPN session failover environment
US8908700B2 (en) 2007-09-07 2014-12-09 Citrix Systems, Inc. Systems and methods for bridging a WAN accelerator with a security gateway
US8068416B2 (en) * 2007-09-20 2011-11-29 At&T Intellectual Property I, L.P. System and method of communicating a media stream
US8996707B2 (en) * 2007-09-28 2015-03-31 Alcatel Lucent Method and apparatus for performing load balancing for a control plane of a mobile communication network
US8156504B2 (en) * 2007-10-05 2012-04-10 Cisco Technology, Inc. Scalable resources in a virtualized load balancer
US7925694B2 (en) 2007-10-19 2011-04-12 Citrix Systems, Inc. Systems and methods for managing cookies via HTTP content layer
TWI399982B (zh) * 2007-12-05 2013-06-21 Ol2 Inc 用以壓縮串流互動視訊之系統
US7983166B2 (en) * 2008-01-03 2011-07-19 At&T Intellectual Property I, L.P. System and method of delivering video content
US8291086B2 (en) * 2008-01-18 2012-10-16 General Electric Company Method and system for accessing data in an enterprise information system
US8769660B2 (en) 2008-01-26 2014-07-01 Citrix Systems, Inc. Systems and methods for proxying cookies for SSL VPN clientless sessions
US7467207B1 (en) * 2008-02-01 2008-12-16 International Business Machines Corporation Balancing communication load in a system based on determination of user-user affinity levels
US20090199290A1 (en) * 2008-02-01 2009-08-06 Secure Computing Corporation Virtual private network system and method
US8489750B2 (en) 2008-02-28 2013-07-16 Level 3 Communications, Llc Load-balancing cluster
US11323510B2 (en) 2008-02-28 2022-05-03 Level 3 Communications, Llc Load-balancing cluster
JP2009237763A (ja) * 2008-03-26 2009-10-15 Hitachi Ltd サーバシステム及びその制御方法
US8474043B2 (en) 2008-04-17 2013-06-25 Sourcefire, Inc. Speed and memory optimization of intrusion detection system (IDS) and intrusion prevention system (IPS) rule processing
US8806053B1 (en) 2008-04-29 2014-08-12 F5 Networks, Inc. Methods and systems for optimizing network traffic using preemptive acknowledgment signals
JP5264297B2 (ja) * 2008-06-03 2013-08-14 キヤノン株式会社 ジョブ処理方法及び画像処理システム並びに画像処理装置
US8447881B2 (en) 2008-09-02 2013-05-21 Microsoft Corporation Load balancing for services
US8533333B2 (en) * 2008-09-03 2013-09-10 Microsoft Corporation Shared hosting using host name affinity
WO2010045089A1 (en) 2008-10-08 2010-04-22 Sourcefire, Inc. Target-based smb and dce/rpc processing for an intrusion detection system or intrusion prevention system
US8566444B1 (en) 2008-10-30 2013-10-22 F5 Networks, Inc. Methods and system for simultaneous multiple rules checking
US8738780B2 (en) * 2009-01-22 2014-05-27 Citrix Systems, Inc. System and method for hybrid communication mechanism utilizing both communication server-based and direct endpoint-to-endpoint connections
WO2010106772A1 (ja) * 2009-03-17 2010-09-23 日本電気株式会社 分散処理システム及び分散処理方法
US8433749B2 (en) 2009-04-15 2013-04-30 Accenture Global Services Limited Method and system for client-side scaling of web server farm architectures in a cloud data center
US8416692B2 (en) * 2009-05-28 2013-04-09 Microsoft Corporation Load balancing across layer-2 domains
US8613085B2 (en) * 2009-07-22 2013-12-17 Broadcom Corporation Method and system for traffic management via virtual machine migration
GB2473023A (en) 2009-08-27 2011-03-02 Intergrated Security Mfg Ltd Monitoring system
US9450804B2 (en) * 2009-09-03 2016-09-20 At&T Intellectual Property I, L.P. Anycast aware transport for content distribution networks
US8775553B2 (en) * 2009-09-11 2014-07-08 The Directv Group, Inc. Managing signal delivery to a plurality of display platforms
US10157280B2 (en) 2009-09-23 2018-12-18 F5 Networks, Inc. System and method for identifying security breach attempts of a website
US9960967B2 (en) 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US8868961B1 (en) 2009-11-06 2014-10-21 F5 Networks, Inc. Methods for acquiring hyper transport timing and devices thereof
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US8510409B1 (en) * 2009-12-23 2013-08-13 Emc Corporation Application-specific outbound source routing from a host in a data network
US8910176B2 (en) * 2010-01-15 2014-12-09 International Business Machines Corporation System for distributed task dispatch in multi-application environment based on consensus for load balancing using task partitioning and dynamic grouping of server instance
CN102948234B (zh) * 2010-01-15 2016-08-24 爱立信(中国)通信有限公司 包括中继器的系统中的无线电资源分配
CN101788909B (zh) * 2010-01-28 2012-12-05 北京天空堂科技有限公司 一种网络游戏服务器端行走系统的解决方法和装置
TWI502375B (zh) * 2010-03-09 2015-10-01 Alibaba Group Holding Ltd Instant messaging method, system and device
CN101783771A (zh) * 2010-03-24 2010-07-21 杭州华三通信技术有限公司 一种实现负载均衡持续性的方法和设备
JP5809238B2 (ja) 2010-04-16 2015-11-10 シスコ テクノロジー,インコーポレイテッド 準リアルタイムネットワーク攻撃検出のためのシステムおよび方法、ならびに検出ルーティングによる統合検出のためのシステムおよび方法
US9667569B1 (en) 2010-04-29 2017-05-30 Amazon Technologies, Inc. System and method for adaptive server shielding
CN102255932B (zh) * 2010-05-20 2015-09-09 百度在线网络技术(北京)有限公司 负载均衡方法和负载均衡器
JP5530810B2 (ja) * 2010-06-02 2014-06-25 株式会社日立システムズ スケールアウトシステムおよび方法ならびにプログラム
US8433790B2 (en) 2010-06-11 2013-04-30 Sourcefire, Inc. System and method for assigning network blocks to sensors
CN101873237B (zh) * 2010-06-13 2012-02-22 用友软件股份有限公司 动态维护集群中的成员服务器的方法和系统
US8671182B2 (en) * 2010-06-22 2014-03-11 Sourcefire, Inc. System and method for resolving operating system or service identity conflicts
US9141625B1 (en) 2010-06-22 2015-09-22 F5 Networks, Inc. Methods for preserving flow state during virtual machine migration and devices thereof
US10015286B1 (en) 2010-06-23 2018-07-03 F5 Networks, Inc. System and method for proxying HTTP single sign on across network domains
US20120221603A1 (en) * 2010-07-02 2012-08-30 salesforces.com, Inc. Distributed mobile services
US8908545B1 (en) 2010-07-08 2014-12-09 F5 Networks, Inc. System and method for handling TCP performance in network access with driver initiated application tunnel
US8391174B2 (en) 2010-07-13 2013-03-05 Hewlett-Packard Development Company, L.P. Data packet routing
US8347100B1 (en) 2010-07-14 2013-01-01 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
US8244881B2 (en) * 2010-08-06 2012-08-14 Palo Alto Research Center Incorporated Service virtualization over content-centric networks
US9083760B1 (en) 2010-08-09 2015-07-14 F5 Networks, Inc. Dynamic cloning and reservation of detached idle connections
US8630174B1 (en) 2010-09-14 2014-01-14 F5 Networks, Inc. System and method for post shaping TCP packetization
US8886981B1 (en) 2010-09-15 2014-11-11 F5 Networks, Inc. Systems and methods for idle driven scheduling
US8804504B1 (en) 2010-09-16 2014-08-12 F5 Networks, Inc. System and method for reducing CPU load in processing PPP packets on a SSL-VPN tunneling device
EP2622495A4 (en) * 2010-09-27 2015-08-12 Lantronix Inc VARIOUS METHODS AND APPARATUSES FOR ACCESSING NETWORK DEVICES WITHOUT ADDRESSES ACCESSIBLE THROUGH VIRTUAL IP ADDRESSES
US9215275B2 (en) 2010-09-30 2015-12-15 A10 Networks, Inc. System and method to balance servers based on server load status
US20120109852A1 (en) * 2010-10-27 2012-05-03 Microsoft Corporation Reactive load balancing for distributed systems
EP2633667B1 (en) 2010-10-29 2017-09-06 F5 Networks, Inc System and method for on the fly protocol conversion in obtaining policy enforcement information
US8959571B2 (en) 2010-10-29 2015-02-17 F5 Networks, Inc. Automated policy builder
JP5538560B2 (ja) 2010-11-01 2014-07-02 かもめエンジニアリング株式会社 アクセス制御方法、アクセス制御装置およびアクセス制御プログラム
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US8755283B2 (en) 2010-12-17 2014-06-17 Microsoft Corporation Synchronizing state among load balancer components
CN102137005B (zh) * 2010-12-31 2014-04-02 华为技术有限公司 一种通信系统中的数据转发方法、装置和系统
JP5948345B2 (ja) 2011-01-11 2016-07-06 エイ10 ネットワークス インコーポレイテッドA10 Networks, Inc. 仮想アプリケーションデリバリシャーシシステム
US8627467B2 (en) 2011-01-14 2014-01-07 F5 Networks, Inc. System and method for selectively storing web objects in a cache memory based on policy decisions
JP2012156698A (ja) * 2011-01-25 2012-08-16 Hitachi Ltd 中継装置、通信ネットワークシステム、及び、負荷分散方法
US10135831B2 (en) 2011-01-28 2018-11-20 F5 Networks, Inc. System and method for combining an access control system with a traffic management system
US8612550B2 (en) 2011-02-07 2013-12-17 Microsoft Corporation Proxy-based cache content distribution and affinity
US8812586B1 (en) * 2011-02-15 2014-08-19 Google Inc. Correlating status information generated in a computer network
US8601034B2 (en) 2011-03-11 2013-12-03 Sourcefire, Inc. System and method for real time data awareness
US9578126B1 (en) 2011-04-30 2017-02-21 F5 Networks, Inc. System and method for automatically discovering wide area network optimized routes and devices
US9154577B2 (en) 2011-06-06 2015-10-06 A10 Networks, Inc. Sychronization of configuration file of virtual application distribution chassis
US9246819B1 (en) * 2011-06-20 2016-01-26 F5 Networks, Inc. System and method for performing message-based load balancing
US9055076B1 (en) 2011-06-23 2015-06-09 Amazon Technologies, Inc. System and method for distributed load balancing with load balancer clients for hosts
US8812727B1 (en) 2011-06-23 2014-08-19 Amazon Technologies, Inc. System and method for distributed load balancing with distributed direct server return
CN102201010A (zh) * 2011-06-23 2011-09-28 清华大学 无共享架构的分布式数据库系统及其实现方法
CN102891868B (zh) * 2011-07-19 2016-09-28 上海可鲁系统软件有限公司 一种分布式系统的负载均衡方法及装置
US8897154B2 (en) 2011-10-24 2014-11-25 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9432321B2 (en) * 2011-12-19 2016-08-30 Alcatel Lucent Method and apparatus for messaging in the cloud
US9094364B2 (en) 2011-12-23 2015-07-28 A10 Networks, Inc. Methods to manage services over a service gateway
US9270766B2 (en) 2011-12-30 2016-02-23 F5 Networks, Inc. Methods for identifying network traffic characteristics to correlate and manage one or more subsequent flows and devices thereof
US9444884B2 (en) * 2011-12-31 2016-09-13 Level 3 Communications, Llc Load-aware load-balancing cluster without a central load balancer
DE102012200042A1 (de) * 2012-01-03 2013-07-04 Airbus Operations Gmbh Serversystem, luft- oder raumfahrzeug und verfahren
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US10230566B1 (en) 2012-02-17 2019-03-12 F5 Networks, Inc. Methods for dynamically constructing a service principal name and devices thereof
US9172753B1 (en) 2012-02-20 2015-10-27 F5 Networks, Inc. Methods for optimizing HTTP header based authentication and devices thereof
US9231879B1 (en) 2012-02-20 2016-01-05 F5 Networks, Inc. Methods for policy-based network traffic queue management and devices thereof
EP2853074B1 (en) 2012-04-27 2021-03-24 F5 Networks, Inc Methods for optimizing service of content requests and devices thereof
US20130308439A1 (en) * 2012-05-18 2013-11-21 Benu Networks, Inc. Highly scalable modular system with high reliability and low latency
US9363313B2 (en) * 2012-06-11 2016-06-07 Cisco Technology, Inc. Reducing virtual IP-address (VIP) failure detection time
US8805990B2 (en) 2012-07-12 2014-08-12 Microsoft Corporation Load balancing for single-address tenants
US10002141B2 (en) * 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US9705800B2 (en) 2012-09-25 2017-07-11 A10 Networks, Inc. Load distribution in data networks
US10021174B2 (en) * 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
US9246998B2 (en) 2012-10-16 2016-01-26 Microsoft Technology Licensing, Llc Load balancer bypass
US9185006B2 (en) 2012-12-17 2015-11-10 Microsoft Technology Licensing, Llc Exchange of server health and client information through headers for request management
CN103259832A (zh) * 2012-12-24 2013-08-21 中国科学院沈阳自动化研究所 实现动态负载平衡、故障诊断与转移的群集资源控制方法
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
WO2014144837A1 (en) 2013-03-15 2014-09-18 A10 Networks, Inc. Processing data packets using a policy based network path
US9871712B1 (en) 2013-04-16 2018-01-16 Amazon Technologies, Inc. Health checking in a distributed load balancer
US10038626B2 (en) 2013-04-16 2018-07-31 Amazon Technologies, Inc. Multipath routing in a distributed load balancer
US10135914B2 (en) * 2013-04-16 2018-11-20 Amazon Technologies, Inc. Connection publishing in a distributed load balancer
US9553809B2 (en) * 2013-04-16 2017-01-24 Amazon Technologies, Inc. Asymmetric packet flow in a distributed load balancer
US10069903B2 (en) 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
WO2014179753A2 (en) 2013-05-03 2014-11-06 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
WO2014193940A1 (en) 2013-05-28 2014-12-04 Convida Wireless, Llc Load balancing in the internet of things
US10187317B1 (en) 2013-11-15 2019-01-22 F5 Networks, Inc. Methods for traffic rate control and devices thereof
CN105144836B (zh) 2014-03-11 2019-06-21 华为技术有限公司 一种信息传送方法及装置
US20150261721A1 (en) * 2014-03-13 2015-09-17 Lantiq Deutschland Gmbh Flow control between processing devices
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
CN104980361B (zh) 2014-04-01 2018-09-21 华为技术有限公司 一种负载均衡方法、装置及系统
US10742559B2 (en) 2014-04-24 2020-08-11 A10 Networks, Inc. Eliminating data traffic redirection in scalable clusters
US9961130B2 (en) * 2014-04-24 2018-05-01 A10 Networks, Inc. Distributed high availability processing methods for service sessions
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US9871849B2 (en) * 2014-05-20 2018-01-16 Citrix Systems, Inc. Systems and methods for just-in-time state sharing
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
US10015143B1 (en) 2014-06-05 2018-07-03 F5 Networks, Inc. Methods for securing one or more license entitlement grants and devices thereof
WO2015195734A1 (en) * 2014-06-19 2015-12-23 Thomson Licensing Natural language control of a gateway device
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US10511694B2 (en) 2014-07-23 2019-12-17 Citrix Systems, Inc. Systems and methods for application specific load balancing
US10122630B1 (en) 2014-08-15 2018-11-06 F5 Networks, Inc. Methods for network traffic presteering and devices thereof
US10432711B1 (en) * 2014-09-15 2019-10-01 Amazon Technologies, Inc. Adaptive endpoint selection
US11095715B2 (en) * 2014-09-24 2021-08-17 Ebay Inc. Assigning storage responsibility in a distributed data storage system with replication
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US10048974B1 (en) * 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9646163B2 (en) 2014-11-14 2017-05-09 Getgo, Inc. Communicating data between client devices using a hybrid connection having a regular communications pathway and a highly confidential communications pathway
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
US9537788B2 (en) 2014-12-05 2017-01-03 Amazon Technologies, Inc. Automatic determination of resource sizing
CN105808343B (zh) * 2014-12-31 2019-01-04 中国科学院沈阳自动化研究所 用于复杂生产管理系统中的群集资源控制方法
US9565167B2 (en) * 2015-01-21 2017-02-07 Huawei Technologies Co., Ltd. Load balancing internet protocol security tunnels
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US10505818B1 (en) 2015-05-05 2019-12-10 F5 Networks. Inc. Methods for analyzing and load balancing based on server health and devices thereof
US11350254B1 (en) 2015-05-05 2022-05-31 F5, Inc. Methods for enforcing compliance policies and devices thereof
WO2017023860A1 (en) * 2015-07-31 2017-02-09 Modulus Technology Solutions Corp. Estimating wireless network load and adjusting applications to minimize network overload probability and maximize successful application operation
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies
US10264092B2 (en) * 2015-08-24 2019-04-16 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Signature based distributed inventory caching
CN108370327A (zh) 2015-09-25 2018-08-03 Fsa技术股份有限公司 多干线数据流调节系统和方法
US10623319B1 (en) * 2015-09-28 2020-04-14 Amazon Technologies, Inc. Load rebalancing in a network-based system
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US20170353537A1 (en) * 2015-10-28 2017-12-07 Fractal Industries, Inc. Predictive load balancing for a digital environment
IL242353B (en) * 2015-10-29 2021-01-31 Verint Systems Ltd System and method for soft failovers for proxy servers
US10880381B2 (en) 2015-11-04 2020-12-29 Micro Focus Llc Direct connection limitation based on a period of time
TW201721498A (zh) * 2015-12-01 2017-06-16 Chunghwa Telecom Co Ltd 具安全與功能擴充性的有線區域網路使用者管理系統及方法
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9894670B1 (en) * 2015-12-17 2018-02-13 Innovium, Inc. Implementing adaptive resource allocation for network devices
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US11757946B1 (en) 2015-12-22 2023-09-12 F5, Inc. Methods for analyzing network traffic and enforcing network policies and devices thereof
US10318288B2 (en) 2016-01-13 2019-06-11 A10 Networks, Inc. System and method to process a chain of network applications
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US11178150B1 (en) 2016-01-20 2021-11-16 F5 Networks, Inc. Methods for enforcing access control list based on managed application and devices thereof
US10797888B1 (en) 2016-01-20 2020-10-06 F5 Networks, Inc. Methods for secured SCEP enrollment for client devices and devices thereof
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
TWI612429B (zh) * 2016-04-12 2018-01-21 緯創資通股份有限公司 伺服器系統及其資料存取方法
US10644963B2 (en) 2016-06-13 2020-05-05 Intel Corporation Systems and methods for detecting a zombie server
US10904127B2 (en) * 2016-06-13 2021-01-26 Intel Corporation Systems and methods for detecting a zombie server
US10791088B1 (en) 2016-06-17 2020-09-29 F5 Networks, Inc. Methods for disaggregating subscribers via DHCP address translation and devices thereof
US9952896B2 (en) 2016-06-28 2018-04-24 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
WO2018032499A1 (zh) * 2016-08-19 2018-02-22 华为技术有限公司 一种负载均衡的方法及相关装置
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US11063758B1 (en) 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics and devices thereof
US10778585B1 (en) * 2016-11-30 2020-09-15 Amazon Technologies, Inc. Connection and application state migration for uninterrupted service availability
US10235069B2 (en) * 2016-12-22 2019-03-19 Western Digital Technologies, Inc. Load balancing by dynamically transferring memory range assignments
US10084855B2 (en) * 2017-01-23 2018-09-25 Akamai Technologies, Inc. Pixel-based load balancing
US10476945B2 (en) * 2017-02-01 2019-11-12 Juniper Networks, Inc. Consistent flow assignment in load balancing
US11496438B1 (en) 2017-02-07 2022-11-08 F5, Inc. Methods for improved network security using asymmetric traffic delivery and devices thereof
US10834176B2 (en) 2017-03-10 2020-11-10 The Directv Group, Inc. Automated end-to-end application deployment in a data center
US10791119B1 (en) 2017-03-14 2020-09-29 F5 Networks, Inc. Methods for temporal password injection and devices thereof
US10812266B1 (en) 2017-03-17 2020-10-20 F5 Networks, Inc. Methods for managing security tokens based on security violations and devices thereof
US10931662B1 (en) 2017-04-10 2021-02-23 F5 Networks, Inc. Methods for ephemeral authentication screening and devices thereof
US10972453B1 (en) 2017-05-03 2021-04-06 F5 Networks, Inc. Methods for token refreshment based on single sign-on (SSO) for federated identity environments and devices thereof
US11122042B1 (en) 2017-05-12 2021-09-14 F5 Networks, Inc. Methods for dynamically managing user access control and devices thereof
US11343237B1 (en) 2017-05-12 2022-05-24 F5, Inc. Methods for managing a federated identity environment using security and access control data and devices thereof
US10212043B1 (en) * 2017-07-26 2019-02-19 Citrix Systems, Inc. Proactive link load balancing to maintain quality of link
US10599482B2 (en) 2017-08-24 2020-03-24 Google Llc Method for intra-subgraph optimization in tuple graph programs
US10642582B2 (en) 2017-08-24 2020-05-05 Google Llc System of type inference for tuple graph programs method of executing a tuple graph program across a network
US10887235B2 (en) * 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
US11122083B1 (en) 2017-09-08 2021-09-14 F5 Networks, Inc. Methods for managing network connections based on DNS data and network policies and devices thereof
KR102058541B1 (ko) * 2017-12-11 2020-01-22 엔에이치엔 주식회사 서버 모니터링 방법 및 이를 이용한 서버 모니터링 시스템
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
JP2019161603A (ja) * 2018-03-16 2019-09-19 株式会社東芝 負荷分散装置、負荷分散システム、プログラム及び負荷分散方法
US11658995B1 (en) 2018-03-20 2023-05-23 F5, Inc. Methods for dynamically mitigating network attacks and devices thereof
US20190319933A1 (en) * 2018-04-12 2019-10-17 Alibaba Group Holding Limited Cooperative tls acceleration
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11044200B1 (en) 2018-07-06 2021-06-22 F5 Networks, Inc. Methods for service stitching using a packet header and devices thereof
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
CN110858229B (zh) 2018-08-23 2023-04-07 阿里巴巴集团控股有限公司 数据处理方法、设备、访问控制系统及存储介质
US20210192390A1 (en) * 2018-09-24 2021-06-24 Hewlett-Packard Development Company, L.P. Device status assessment
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
TWI684131B (zh) * 2019-02-26 2020-02-01 華碩電腦股份有限公司 資料傳輸裝置、資料傳輸方法以及非暫態電腦可讀取記錄媒體
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
TWI689186B (zh) * 2019-04-09 2020-03-21 聚騰科技股份有限公司 資料傳輸及接收方法
CN110308983B (zh) * 2019-04-19 2022-04-05 中国工商银行股份有限公司 资源负载均衡方法及系统、服务节点和客户端
EP3959675A1 (en) * 2019-04-25 2022-03-02 Liveperson, Inc. Smart capacity for workload routing
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
CN111130979B (zh) * 2019-12-09 2022-02-22 苏州浪潮智能科技有限公司 一种sdwan场景下分支节点连接中心节点的方法和设备
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US20210326322A1 (en) * 2020-04-17 2021-10-21 Unisys Corporation Change history
US11616721B2 (en) 2020-11-24 2023-03-28 International Business Machines Corporation In-packet version tagging utilizing a perimeter NAT
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
CN114039881B (zh) * 2021-10-19 2023-08-08 创盛视联数码科技(北京)有限公司 一种通信连接监控方法
EP4268912A1 (en) * 2022-04-26 2023-11-01 Build A Rocket Boy Games Ltd. Dynamic transitioning of a simulating host of a portion or all of a network interactive environment
CN116233137B (zh) * 2023-02-17 2023-11-17 通明智云(北京)科技有限公司 一种基于集群的负载分担和备份方法及装置

Family Cites Families (184)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4200770A (en) * 1977-09-06 1980-04-29 Stanford University Cryptographic apparatus and method
US4218582A (en) 1977-10-06 1980-08-19 The Board Of Trustees Of The Leland Stanford Junior University Public key cryptographic apparatus and method
US4405829A (en) 1977-12-14 1983-09-20 Massachusetts Institute Of Technology Cryptographic communications system and method
US4424414A (en) * 1978-05-01 1984-01-03 Board Of Trustees Of The Leland Stanford Junior University Exponentiation cryptographic apparatus and method
DE3789215T2 (de) 1986-12-22 1994-06-01 American Telephone & Telegraph Gesteuerter dynamischer Belastungsausgleich für ein Multiprozessorsystem.
US5031089A (en) 1988-12-30 1991-07-09 United States Of America As Represented By The Administrator, National Aeronautics And Space Administration Dynamic resource allocation scheme for distributed heterogeneous computer systems
JPH0488489A (ja) 1990-08-01 1992-03-23 Internatl Business Mach Corp <Ibm> 一般化ハフ変換を用いた文字認識装置および方法
WO1992005485A2 (en) * 1990-09-17 1992-04-02 Cabletron Systems, Inc. Network management system using model-based intelligence
JPH04287290A (ja) 1990-11-20 1992-10-12 Imra America Inc ハフ変換画像処理装置
WO1992016904A1 (en) 1991-03-18 1992-10-01 Echelon Corporation Binder interface structure
EP0576574B1 (en) * 1991-03-18 2001-10-31 Echelon Corporation Programming language structures for use in a network for communicating, sensing and controlling information
US6115393A (en) 1991-04-12 2000-09-05 Concord Communications, Inc. Network monitoring
IL99923A0 (en) 1991-10-31 1992-08-18 Ibm Israel Method of operating a computer in a network
US5371852A (en) 1992-10-14 1994-12-06 International Business Machines Corporation Method and apparatus for making a cluster of computers appear as a single host on a network
US5557774A (en) 1993-03-22 1996-09-17 Hitachi, Ltd. Method for making test environmental programs
BR9402027A (pt) * 1993-05-28 1994-12-13 Xerox Corp Processo para gerenciar uma configuração e assegurar compatibilidade entre componentes num sistema de computação, e, processo para eliminar incompatibilidades entre software residente e software de migração num sistema de computador automatizado
JP3487515B2 (ja) * 1993-06-15 2004-01-19 株式会社日立製作所 分散処理システムおよび分散処理方法
US5686940A (en) 1993-12-24 1997-11-11 Rohm Co., Ltd. Display apparatus
US5668995A (en) 1994-04-22 1997-09-16 Ncr Corporation Method and apparatus for capacity planning for multiprocessor computer systems in client/server environments
JPH0844677A (ja) * 1994-07-29 1996-02-16 Toshiba Corp 分散処理システム
WO1996016497A1 (en) * 1994-11-21 1996-05-30 Oracle Corporation Transferring binary large objects (blobs) in a network environment
US5758351A (en) 1995-03-01 1998-05-26 Sterling Software, Inc. System and method for the creation and use of surrogate information system objects
US5724508A (en) 1995-03-09 1998-03-03 Insoft, Inc. Apparatus for collaborative computing
US5774668A (en) 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5895499A (en) * 1995-07-03 1999-04-20 Sun Microsystems, Inc. Cross-domain data transfer using deferred page remapping
US5917730A (en) 1995-08-17 1999-06-29 Gse Process Solutions, Inc. Computer implemented object oriented visualization system and method
US5774689A (en) 1995-09-22 1998-06-30 Bell Atlantic Network Services, Inc. Network configuration management system for digital communication networks
US6047323A (en) * 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US5684800A (en) 1995-11-15 1997-11-04 Cabletron Systems, Inc. Method for establishing restricted broadcast groups in a switched network
US5801970A (en) 1995-12-06 1998-09-01 Martin Marietta Corporation Model-based feature tracking system
GB2309558A (en) * 1996-01-26 1997-07-30 Ibm Load balancing across the processors of a server computer
JP3847364B2 (ja) * 1996-02-14 2006-11-22 富士通株式会社 ロードシェアシステム
JP3083476B2 (ja) * 1996-03-06 2000-09-04 松下電器産業株式会社 アプリケーションサーバシステム
JPH09244940A (ja) * 1996-03-12 1997-09-19 Hitachi Ltd 分散計算機資源の管理方法
US5768271A (en) 1996-04-12 1998-06-16 Alcatel Data Networks Inc. Virtual private network
US6085238A (en) 1996-04-23 2000-07-04 Matsushita Electric Works, Ltd. Virtual LAN system
US5748958A (en) 1996-04-30 1998-05-05 International Business Machines Corporation System for utilizing batch requests to present membership changes to process groups
US5845124A (en) 1996-05-01 1998-12-01 Ncr Corporation Systems and methods for generating and displaying a symbolic representation of a network model
EP0812086B1 (en) 1996-06-07 2007-09-05 Nippon Telegraph And Telephone Corporation Vlan control system and method
KR100204029B1 (ko) 1996-06-19 1999-06-15 이계철 비동기전달모드 교환 시스템에서 연결 식별자 할당방법
US5822531A (en) 1996-07-22 1998-10-13 International Business Machines Corporation Method and system for dynamically reconfiguring a cluster of computer systems
US5796830A (en) * 1996-07-29 1998-08-18 International Business Machines Corporation Interoperable cryptographic key recovery system
US5774660A (en) 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US5818937A (en) 1996-08-12 1998-10-06 Ncr Corporation Telephone tone security device
US5930798A (en) 1996-08-15 1999-07-27 Predicate Logic, Inc. Universal data measurement, analysis and control system
US5918017A (en) 1996-08-23 1999-06-29 Internatioinal Business Machines Corp. System and method for providing dynamically alterable computer clusters for message routing
US6236365B1 (en) 1996-09-09 2001-05-22 Tracbeam, Llc Location of a mobile station using a plurality of commercial wireless infrastructures
US5832529A (en) * 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US5790895A (en) 1996-10-18 1998-08-04 Compaq Computer Corporation Modem sharing
US5784463A (en) 1996-12-04 1998-07-21 V-One Corporation Token distribution, registration, and dynamic configuration of user entitlement for an application level security system and method
US5938732A (en) 1996-12-09 1999-08-17 Sun Microsystems, Inc. Load balancing and failover of network services
EP1015966A2 (en) 1996-12-13 2000-07-05 Maves International Software, Inc. Method, system and data structures for computer software application development and execution
GB9626241D0 (en) 1996-12-18 1997-02-05 Ncr Int Inc Secure data processing method and system
US5845277A (en) 1996-12-19 1998-12-01 Mci Communications Corporation Production of statistically-based network maps
US6272523B1 (en) 1996-12-20 2001-08-07 International Business Machines Corporation Distributed networking using logical processes
US6112243A (en) 1996-12-30 2000-08-29 Intel Corporation Method and apparatus for allocating tasks to remote networked processors
JPH10198642A (ja) * 1997-01-09 1998-07-31 Fujitsu Ltd サーバ装置
US5826015A (en) 1997-02-20 1998-10-20 Digital Equipment Corporation Method and apparatus for secure remote programming of firmware and configurations of a computer over a network
US6151688A (en) 1997-02-21 2000-11-21 Novell, Inc. Resource management in a clustered computer system
US5958009A (en) 1997-02-27 1999-09-28 Hewlett-Packard Company System and method for efficiently monitoring quality of service in a distributed processing environment
US6067580A (en) 1997-03-11 2000-05-23 International Business Machines Corporation Integrating distributed computing environment remote procedure calls with an advisory work load manager
US5968126A (en) 1997-04-02 1999-10-19 Switchsoft Systems, Inc. User-based binding of network stations to broadcast domains
JP2001519121A (ja) 1997-04-04 2001-10-16 アセンド コミュニケーションズ インコーポレイテッド 高速パケット・スケジューリング方法及び装置
CA2202572C (en) 1997-04-14 2004-02-10 Ka Lun Eddie Law A scaleable web server and method of efficiently managing multiple servers
US6065058A (en) 1997-05-09 2000-05-16 International Business Machines Corp. Dynamic push filtering based on information exchanged among nodes in a proxy hierarchy
US6049528A (en) * 1997-06-30 2000-04-11 Sun Microsystems, Inc. Trunking ethernet-compatible networks
FR2765702B1 (fr) 1997-07-02 2001-07-06 Bull Sa Architecture de systeme de traitement de l'information
US6185308B1 (en) * 1997-07-07 2001-02-06 Fujitsu Limited Key recovery system
US6233610B1 (en) 1997-08-27 2001-05-15 Northern Telecom Limited Communications network having management system architecture supporting reuse
US5960371A (en) 1997-09-04 1999-09-28 Schlumberger Technology Corporation Method of determining dips and azimuths of fractures from borehole images
US6041054A (en) * 1997-09-24 2000-03-21 Telefonaktiebolaget Lm Ericsson Efficient transport of internet protocol packets using asynchronous transfer mode adaptation layer two
JP3649367B2 (ja) * 1997-09-26 2005-05-18 ソニー株式会社 パケット伝送制御方法および装置
EP0907145A3 (en) 1997-10-03 2003-03-26 Nippon Telegraph and Telephone Corporation Method and equipment for extracting image features from image sequence
US6192401B1 (en) * 1997-10-21 2001-02-20 Sun Microsystems, Inc. System and method for determining cluster membership in a heterogeneous distributed system
US6047325A (en) * 1997-10-24 2000-04-04 Jain; Lalit Network device for supporting construction of virtual local area networks on arbitrary local and wide area computer networks
US6178529B1 (en) * 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
US6088734A (en) 1997-11-12 2000-07-11 International Business Machines Corporation Systems methods and computer program products for controlling earliest deadline first scheduling at ATM nodes
US6125447A (en) 1997-12-11 2000-09-26 Sun Microsystems, Inc. Protection domains to provide security in a computer system
US6035405A (en) * 1997-12-22 2000-03-07 Nortel Networks Corporation Secure virtual LANs
US6370584B1 (en) * 1998-01-13 2002-04-09 Trustees Of Boston University Distributed routing
US6182275B1 (en) * 1998-01-26 2001-01-30 Dell Usa, L.P. Generation of a compatible order for a computer system
US6086618A (en) 1998-01-26 2000-07-11 Microsoft Corporation Method and computer program product for estimating total resource usage requirements of a server application in a hypothetical user configuration
US6076108A (en) 1998-03-06 2000-06-13 I2 Technologies, Inc. System and method for maintaining a state for a user session using a web system having a global session server
US6208649B1 (en) * 1998-03-11 2001-03-27 Cisco Technology, Inc. Derived VLAN mapping technique
US6691148B1 (en) * 1998-03-13 2004-02-10 Verizon Corporate Services Group Inc. Framework for providing quality of service requirements in a distributed object-oriented computer system
TW374965B (en) 1998-03-17 1999-11-21 Winbond Electronics Corp Method of processing of transmission of confidential data and the network system
US6098093A (en) 1998-03-19 2000-08-01 International Business Machines Corp. Maintaining sessions in a clustered server environment
US6393386B1 (en) * 1998-03-26 2002-05-21 Visual Networks Technologies, Inc. Dynamic modeling of complex networks and prediction of impacts of faults therein
US6236901B1 (en) 1998-03-31 2001-05-22 Dell Usa, L.P. Manufacturing system and method for assembly of computer systems in a build-to-order environment
WO1999052237A1 (en) * 1998-04-03 1999-10-14 Vertical Networks Inc. System and method for transmitting voice and data using intelligent bridged tdm and packet buses
US6118785A (en) 1998-04-07 2000-09-12 3Com Corporation Point-to-point protocol with a signaling channel
US6059842A (en) 1998-04-14 2000-05-09 International Business Machines Corp. System and method for optimizing computer software and hardware
US6208345B1 (en) * 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6167052A (en) 1998-04-27 2000-12-26 Vpnx.Com, Inc. Establishing connectivity in networks
US6311144B1 (en) 1998-05-13 2001-10-30 Nabil A. Abu El Ata Method and apparatus for designing and analyzing information systems using multi-layer mathematical models
FR2779018B1 (fr) * 1998-05-22 2000-08-18 Activcard Terminal et systeme pour la mise en oeuvre de transactions electroniques securisees
US6269076B1 (en) 1998-05-28 2001-07-31 3Com Corporation Method of resolving split virtual LANs utilizing a network management system
US6360265B1 (en) * 1998-07-08 2002-03-19 Lucent Technologies Inc. Arrangement of delivering internet protocol datagrams for multimedia services to the same server
US6226788B1 (en) 1998-07-22 2001-05-01 Cisco Technology, Inc. Extensible network management system
US6266707B1 (en) 1998-08-17 2001-07-24 International Business Machines Corporation System and method for IP network address translation and IP filtering with dynamic address resolution
US6336138B1 (en) * 1998-08-25 2002-01-01 Hewlett-Packard Company Template-driven approach for generating models on network services
US6327622B1 (en) 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US6311270B1 (en) 1998-09-14 2001-10-30 International Business Machines Corporation Method and apparatus for securing communication utilizing a security processor
US6167383A (en) 1998-09-22 2000-12-26 Dell Usa, Lp Method and apparatus for providing customer configured machines at an internet site
US6253230B1 (en) 1998-09-22 2001-06-26 International Business Machines Corporation Distributed scalable device for selecting a server from a server cluster and a switched path to the selected server
US6230312B1 (en) 1998-10-02 2001-05-08 Microsoft Corporation Automatic detection of per-unit location constraints
US6438652B1 (en) * 1998-10-09 2002-08-20 International Business Machines Corporation Load balancing cooperating cache servers by shifting forwarded request
US6546423B1 (en) * 1998-10-22 2003-04-08 At&T Corp. System and method for network load balancing
US6212559B1 (en) * 1998-10-28 2001-04-03 Trw Inc. Automated configuration of internet-like computer networks
JP3820777B2 (ja) * 1998-11-12 2006-09-13 富士ゼロックス株式会社 秘密鍵寄託システムおよび方法
US6272522B1 (en) 1998-11-17 2001-08-07 Sun Microsystems, Incorporated Computer data packet switching and load balancing system using a general-purpose multiprocessor architecture
US6330605B1 (en) 1998-11-19 2001-12-11 Volera, Inc. Proxy cache cluster
US6108702A (en) 1998-12-02 2000-08-22 Micromuse, Inc. Method and apparatus for determining accurate topology features of a network
US6336171B1 (en) * 1998-12-23 2002-01-01 Ncr Corporation Resource protection in a cluster environment
US6570847B1 (en) * 1998-12-31 2003-05-27 At&T Corp. Method and system for network traffic rate control based on fractional tokens
US6691168B1 (en) * 1998-12-31 2004-02-10 Pmc-Sierra Method and apparatus for high-speed network rule processing
US6377996B1 (en) * 1999-02-18 2002-04-23 International Business Machines Corporation System for seamless streaming of data stored on a network of distributed primary and target servers using segmentation information exchanged among all servers during streaming
JP2000268012A (ja) * 1999-03-12 2000-09-29 Nec Corp クライアントサーバシステムにおけるサーバ負荷の分散方法ならびに装置
US6341356B1 (en) * 1999-03-25 2002-01-22 International Business Machines Corporation System for I/O path load balancing and failure which can be ported to a plurality of operating environments
JP2000322288A (ja) * 1999-05-06 2000-11-24 Fujitsu Ltd 分散オブジェクト開発システム、および、分散オブジェクト開発をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体
US6757744B1 (en) * 1999-05-12 2004-06-29 Unisys Corporation Distributed transport communications manager with messaging subsystem for high-speed communications between heterogeneous computer systems
CN100384191C (zh) * 1999-06-10 2008-04-23 阿尔卡塔尔互联网运行公司 基于策略的网络体系结构
US6539494B1 (en) * 1999-06-17 2003-03-25 Art Technology Group, Inc. Internet server session backup apparatus
US6505244B1 (en) * 1999-06-29 2003-01-07 Cisco Technology Inc. Policy engine which supports application specific plug-ins for enforcing policies in a feedback-based, adaptive data network
US6367010B1 (en) * 1999-07-02 2002-04-02 Postx Corporation Method for generating secure symmetric encryption and decryption
US6684335B1 (en) * 1999-08-19 2004-01-27 Epstein, Iii Edwin A. Resistance cell architecture
US7162427B1 (en) * 1999-08-20 2007-01-09 Electronic Data Systems Corporation Structure and method of modeling integrated business and information technology frameworks and architecture in support of a business
US6370573B1 (en) * 1999-08-31 2002-04-09 Accenture Llp System, method and article of manufacture for managing an environment of a development architecture framework
US6256773B1 (en) 1999-08-31 2001-07-03 Accenture Llp System, method and article of manufacture for configuration management in a development architecture framework
US6351685B1 (en) * 1999-11-05 2002-02-26 International Business Machines Corporation Wireless communication between multiple intelligent pickers and with a central job queue in an automated data storage library
US6598077B2 (en) * 1999-12-06 2003-07-22 Warp Solutions, Inc. System and method for dynamic content routing
US6529953B1 (en) * 1999-12-17 2003-03-04 Reliable Network Solutions Scalable computer network resource monitoring and location system
US6862613B1 (en) * 2000-01-10 2005-03-01 Sun Microsystems, Inc. Method and apparatus for managing operations of clustered computer systems
US6983317B1 (en) * 2000-02-28 2006-01-03 Microsoft Corporation Enterprise management system
US6701363B1 (en) * 2000-02-29 2004-03-02 International Business Machines Corporation Method, computer program product, and system for deriving web transaction performance metrics
US7506034B2 (en) * 2000-03-03 2009-03-17 Intel Corporation Methods and apparatus for off loading content servers through direct file transfer from a storage center to an end-user
US6678821B1 (en) * 2000-03-23 2004-01-13 E-Witness Inc. Method and system for restricting access to the private key of a user in a public key infrastructure
US6574195B2 (en) * 2000-04-19 2003-06-03 Caspian Networks, Inc. Micro-flow management
WO2001084313A2 (en) * 2000-05-02 2001-11-08 Sun Microsystems, Inc. Method and system for achieving high availability in a networked computer system
US6675308B1 (en) * 2000-05-09 2004-01-06 3Com Corporation Methods of determining whether a network interface card entry within the system registry pertains to physical hardware or to a virtual device
JP2002108910A (ja) * 2000-09-27 2002-04-12 Nec Soft Ltd 暗号化ファイルシステム及び暗号化ファイル検索方法並びにコンピュータ可読記録媒体
US7272653B2 (en) * 2000-09-28 2007-09-18 International Business Machines Corporation System and method for implementing a clustered load balancer
US6886038B1 (en) * 2000-10-24 2005-04-26 Microsoft Corporation System and method for restricting data transfers and managing software components of distributed computers
US6853841B1 (en) * 2000-10-25 2005-02-08 Sun Microsystems, Inc. Protocol for a remote control device to enable control of network attached devices
US7003574B1 (en) * 2000-11-01 2006-02-21 Microsoft Corporation Session load balancing and use of VIP as source address for inter-cluster traffic through the use of a session identifier
US6985956B2 (en) * 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
US6785707B2 (en) * 2000-11-14 2004-08-31 Bitfone Corp. Enhanced multimedia mobile content delivery and message system using cache management
US6856591B1 (en) * 2000-12-15 2005-02-15 Cisco Technology, Inc. Method and system for high reliability cluster management
US20030046615A1 (en) * 2000-12-22 2003-03-06 Alan Stone System and method for adaptive reliability balancing in distributed programming networks
US7383329B2 (en) * 2001-02-13 2008-06-03 Aventail, Llc Distributed cache for state transfer operations
US7003562B2 (en) * 2001-03-27 2006-02-21 Redseal Systems, Inc. Method and apparatus for network wide policy-based analysis of configurations of devices
US7162634B2 (en) * 2001-04-18 2007-01-09 Thomson Licensing Method for providing security on a powerline-modem network
US7194439B2 (en) * 2001-04-30 2007-03-20 International Business Machines Corporation Method and system for correlating job accounting information with software license information
US20030014644A1 (en) * 2001-05-02 2003-01-16 Burns James E. Method and system for security policy management
US7013462B2 (en) * 2001-05-10 2006-03-14 Hewlett-Packard Development Company, L.P. Method to map an inventory management system to a configuration management system
WO2002098526A1 (en) * 2001-06-04 2002-12-12 Playnet, Inc. System and method for distributing a multi-client game/application over a communications network
US20030009559A1 (en) * 2001-07-09 2003-01-09 Naoya Ikeda Network system and method of distributing accesses to a plurality of server apparatus in the network system
US7174379B2 (en) * 2001-08-03 2007-02-06 International Business Machines Corporation Managing server resources for hosted applications
US7765283B2 (en) * 2001-08-15 2010-07-27 Cisco Technology, Inc. Network provisioning in a distributed network management architecture
US20030041159A1 (en) * 2001-08-17 2003-02-27 David Tinsley Systems and method for presenting customizable multimedia presentations
US20030041142A1 (en) * 2001-08-27 2003-02-27 Nec Usa, Inc. Generic network monitoring tool
US6980978B2 (en) * 2001-09-07 2005-12-27 International Business Machines Corporation Site integration management system for operational support service in an internet data center
US7500069B2 (en) * 2001-09-17 2009-03-03 Hewlett-Packard Development Company, L.P. System and method for providing secure access to network logical storage partitions
US7769823B2 (en) * 2001-09-28 2010-08-03 F5 Networks, Inc. Method and system for distributing requests for content
US7200665B2 (en) * 2001-10-17 2007-04-03 Hewlett-Packard Development Company, L.P. Allowing requests of a session to be serviced by different servers in a multi-server data service system
US7194616B2 (en) * 2001-10-27 2007-03-20 International Business Machines Corporation Flexible temporary capacity upgrade/downgrade in a computer system without involvement of the operating system
US20030126464A1 (en) * 2001-12-04 2003-07-03 Mcdaniel Patrick D. Method and system for determining and enforcing security policy in a communication session
US6990666B2 (en) * 2002-03-18 2006-01-24 Surgient Inc. Near on-line server
US6681262B1 (en) * 2002-05-06 2004-01-20 Infinicon Systems Network data flow optimization
US20040002878A1 (en) * 2002-06-28 2004-01-01 International Business Machines Corporation Method and system for user-determined authentication in a federated environment
US7191344B2 (en) * 2002-08-08 2007-03-13 Authenex, Inc. Method and system for controlling access to data stored on a data storage device
US20040054791A1 (en) * 2002-09-17 2004-03-18 Krishnendu Chakraborty System and method for enforcing user policies on a web server
US7890543B2 (en) * 2003-03-06 2011-02-15 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7689676B2 (en) * 2003-03-06 2010-03-30 Microsoft Corporation Model-based policy application
US8122106B2 (en) * 2003-03-06 2012-02-21 Microsoft Corporation Integrating design, deployment, and management phases for systems
US7350186B2 (en) * 2003-03-10 2008-03-25 International Business Machines Corporation Methods and apparatus for managing computing deployment in presence of variable workload
US7603442B2 (en) * 2003-06-20 2009-10-13 Microsoft Corporation Method and system for maintaining service dependency relationships in a computer system
US7606929B2 (en) * 2003-06-30 2009-10-20 Microsoft Corporation Network load balancing with connection manipulation
US20060025984A1 (en) * 2004-08-02 2006-02-02 Microsoft Corporation Automatic validation and calibration of transaction-based performance models
US8627149B2 (en) * 2004-08-30 2014-01-07 International Business Machines Corporation Techniques for health monitoring and control of application servers
US7333000B2 (en) * 2004-11-12 2008-02-19 Afco Systems Development, Inc. Tracking system and method for electrically powered equipment
US7350068B2 (en) * 2005-04-22 2008-03-25 International Business Machines Corporation Server blade network boot method that minimizes required network bandwidth
US7805496B2 (en) * 2005-05-10 2010-09-28 International Business Machines Corporation Automatic generation of hybrid performance models

Also Published As

Publication number Publication date
AU2004202389A1 (en) 2005-01-20
TWI356311B (en) 2012-01-11
RU2004117220A (ru) 2006-01-10
DE602004016255D1 (de) 2008-10-16
TW200506646A (en) 2005-02-16
CO5590203A1 (es) 2005-12-30
HK1073025A1 (en) 2005-09-16
ZA200404375B (en) 2004-12-09
US20040268358A1 (en) 2004-12-30
KR101109218B1 (ko) 2012-01-30
CN1578320B (zh) 2012-06-20
NO20042744L (no) 2005-01-03
CN1578320A (zh) 2005-02-09
ATE407506T1 (de) 2008-09-15
BRPI0402591A (pt) 2005-02-09
RU2380746C2 (ru) 2010-01-27
EG23984A (en) 2008-02-27
KR20050002617A (ko) 2005-01-07
CA2470300A1 (en) 2004-12-30
NO331320B1 (no) 2011-11-21
IL162164A0 (en) 2005-11-20
AU2004202389B2 (en) 2009-12-10
JP2005025756A (ja) 2005-01-27
EP1494421B1 (en) 2008-09-03
MY142244A (en) 2010-11-15
EP1494421A1 (en) 2005-01-05
NZ533148A (en) 2006-02-24
US7636917B2 (en) 2009-12-22
MXPA04006411A (es) 2005-03-31
SG117505A1 (en) 2005-12-29
BRPI0402591B1 (pt) 2018-10-16

Similar Documents

Publication Publication Date Title
JP4942921B2 (ja) ホスト状態情報を用いるネットワーク負荷分散
JP4583091B2 (ja) 接続操作を用いるネットワーク負荷分散
US7613822B2 (en) Network load balancing with session information
US7590736B2 (en) Flexible network load balancing
US7567504B2 (en) Network load balancing with traffic routing
US11343356B2 (en) Systems and methods for application specific load balancing
US9619542B2 (en) Systems and methods for application-state distributed replication table hunting
US9577892B2 (en) Systems and methods for providing monitoring in a cluster system
US9621668B2 (en) Systems and methods for application-state, distributed replication table cache poisoning
US9426220B2 (en) Systems and methods for reliable replication of an application-state, distributed replication table
US9596305B2 (en) Systems and methods for distributed hash table contract renewal
RU2387002C2 (ru) Выравнивание сетевой нагрузки с помощью управления соединением

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070619

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110915

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: 20120221

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: 20120229

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4942921

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150309

Year of fee payment: 3

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees