図2は、一意性を保障できる負荷分散システムで行われる処理の例を示す図である。図2の例では、端末2とサーバ5(5a〜5f)の間に、2段階の負荷分散装置が含まれているものとする。以下、複数の負荷分散装置を区別し易くするため、端末と通信する負荷分散装置10aを前段の負荷分散装置、サーバと通信する負荷分散装置(10b、10c)を後段の負荷分散装置と記載する。負荷分散装置10bはサーバ5a〜5cに接続され、負荷分散装置10cはサーバ5d〜5fに接続されているものとする。なお、以下の説明では、パケットの「ヘッダ」は、ネットワーク層やトランスポート層での処理で使用されるヘッダを指すものとする。従って、負荷分散装置10は、例えば、Internet Protocol(IP)ヘッダやTransmission Control Protocol(TCP)ヘッダを参照して処理を行うことができる。
(1)端末2は、初めてサーバにアクセスする場合、アクセス可能なサーバ5a〜5fのグループに対応付けられた仮想IPアドレス宛に、サービスのリクエストに使用されるパケット(要求パケット)を送信する。仮想IPアドレスは、負荷分散装置10aに設定されているため、負荷分散装置10aが要求パケットを受信する。負荷分散装置10aは、要求パケットを受信すると、予め設定されている分散方式に基づいて、後段の負荷分散装置(10b、10c)の中から、要求パケットを振り分ける負荷分散装置を決定する。ここでは、負荷分散装置10bに要求パケットが振り分けられたものとする。
(2)負荷分散装置10bは、要求パケットをサーバ5a〜5cのいずれかに割り振ることができる。そこで、予め設定されている分散方式に基づいて、受信した要求パケットを振り分けるサーバを決定する。ここでは、サーバ5bに要求パケットが振り分けられたものとする。
(3)サーバ5bは、要求パケットを処理し、要求パケットに応答するデータを含む応答パケットを生成する。このとき、サーバ5bは、付加情報を生成し、応答パケット中の応答データに挿入する。付加情報は、端末2からの次の要求パケットを処理するサーバ5を特定するときに使用される。サーバ5bは、端末宛のパケットとして、応答パケットを負荷分散装置10bに送信する。
(4)負荷分散装置10bは、サーバ5bから応答パケットを受信すると、サーバ5bから端末に宛てて送信されたパケット中の応答データから、付加情報を取得する。負荷分散装置10bは、付加情報と、応答データを生成したサーバ5bを識別する情報を対応付けて記憶する。さらに、負荷分散装置10bは、応答パケットのヘッダ中に、応答パケットを生成したサーバ5bを識別する情報と、付加情報を含める。以下、応答データを生成したサーバ5を識別する情報をヘッダに含むパケットのことを「通知パケット」と記載することがある。負荷分散装置10bは、通知パケットを前段の負荷分散装置10aに送信する。
(5)通知パケットを受信した負荷分散装置10は、通知パケットから、付加情報と応答パケットを生成したサーバ5の情報を取得して記憶する。例えば、負荷分散装置10aは、負荷分散装置10bから通知パケットを受信すると、ヘッダから、応答パケットがサーバ5bで生成されたことと、サーバ5bで生成された付加情報を特定する。負荷分散装置10aは、付加情報に対応付けて、サーバ5bを識別する情報と、通知パケットを転送してきた負荷分散装置10bを識別する情報を記憶する。さらに、負荷分散装置10aは、通知パケットから、付加情報とサーバ5bを識別する情報を削除することにより、通知パケットを応答パケットに変換する。負荷分散装置10aは、応答パケットを端末に送信する。
(6)端末は、応答パケットを処理することにより、応答データと付加情報を取得する。端末は、サーバ5bから付加された付加情報を記憶する。
(7)次に、端末は、再度サーバにアクセスするために、第2の要求パケットを生成したとする。端末は第2の要求パケットに付加情報を含める。
(8)端末から第2の要求パケットを受信すると、負荷分散装置10aは、第2の要求パケットに含まれているデータから付加情報を取得する。負荷分散装置10aは、付加情報に対応付けられたサーバを検索する。ここでは、手順(4)により、付加情報にサーバ5bと負荷分散装置10bが対応付けられている。そこで、負荷分散装置10aは、第2の要求パケットのヘッダに、サーバ5bの識別情報を書き込む。以下、要求パケットのヘッダ中に要求パケットの処理を行うサーバの情報が含まれているパケットを「転送パケット」と記載する。負荷分散装置10aは、転送パケットを負荷分散装置10bに転送する。
(9)転送パケットを受信した負荷分散装置10は、転送パケットのヘッダから転送先のサーバ5を特定する。例えば、負荷分散装置10bは、負荷分散装置10aから転送パケットを受信すると、転送パケットのヘッダを参照することにより、転送パケットに含まれているデータがサーバ5bで処理されることを特定する。負荷分散装置10bは、転送パケットのヘッダからサーバ5bの識別情報を消去することにより、転送パケットを第2の要求パケットに変換する。さらに、負荷分散装置10bは、第2の要求パケットをサーバ5bに転送する。サーバ5bは、受信したパケットを処理する。
このように、実施形態にかかる方法では、端末から要求パケットを受信した負荷分散装置が、要求パケットを処理するサーバの情報をヘッダに記録することにより、要求パケットを転送パケットに変換する。このため、後段の負荷分散装置は、転送パケットのヘッダを参照することにより、転送パケットの転送先のサーバに転送することができるので、後段の負荷分散装置での処理負担が軽減される。
<装置構成>
図3は、負荷分散装置10の構成の例を示す。負荷分散装置10は、故障監視部11、パケット処理部20、解析部30、付加情報処理部40、記憶部50を備える。パケット処理部20は、受信部21、パケットバッファ22、選択部23、書き換え部24、送信部25を有する。解析部30は、取得部31と抽出部32を有する。付加情報処理部40は、検索部41、振り分けリスト管理部42、情報付加部43、変換部44を有する。記憶部50は、振り分けリスト51と接続テーブル52を保持し、さらに、負荷分散装置10での処理に使用されるデータなどを記憶する。
受信部21は、端末、他の負荷分散装置10、またはサーバ5から送信されたパケットを受信する。受信部21は、受信したパケットを、パケットバッファ22と取得部31に出力する。パケットバッファ22は、取得部31からの要求に応じて、受信されたパケットを格納する。ここで、取得部31は、抽出部32がパケット中のデータを解析する場合に、パケットバッファ22に受信パケットの格納を要求する。例えば、抽出部32がHTTPメッセージを解析する場合、パケットバッファ22は、取得部31からの要求に応じて、パケットをバッファリングする。パケットバッファ22は、バッファリングしたデータを抽出部32に出力する。
受信したパケットがサーバ5宛ての要求パケットであって、かつ、受信パケットを処理するサーバ5で生成された付加情報を含まない場合、選択部23は、予め、記憶している振分けアルゴリズムに応じて、パケットの振分け先を選択する。前段の負荷分散装置10に含まれている選択部23は、受信パケットを転送する後段の負荷分散装置10を選択する。一方、後段の負荷分散装置10に含まれている選択部23は、受信パケットを処理するサーバ5を選択する。ここで、振り分けアルゴリズムは、ラウンドロビン、重み付けラウンドロビンなどを含む任意のアルゴリズムを使用できる。
書き換え部24は、パケットの転送を行うために、適宜、アドレス情報を書き換える。書き換え部24は、アドレス情報を設定したパケットを、送信部25に出力する。送信部25は、入力されたパケットを、宛先に向けて送信する。
取得部31は、入力されたパケットのヘッダに付加情報やサーバの識別情報が含まれているかを判定する。入力されたパケットが転送パケットである場合、取得部31は、転送パケットのヘッダから、転送パケットに含まれているデータを処理するサーバ5の識別情報を取得する。また、入力されたパケットが通知パケットである場合、取得部31は、付加情報とサーバの識別情報の両方を、通知パケットから取得する。取得部31は、通知パケットから取得した付加情報とサーバの識別情報の両方を、振り分けリスト管理部42に出力する。一方、取得部31は、転送パケットから取得した識別情報を、書き換え部24に出力する。
一方、入力されたパケットが受信パケットか応答パケットである場合は、パケットのヘッダに付加情報とサーバの識別情報のいずれも含まれていないので、取得部31は、パケットが抽出部32によって処理されると判定する。そこで、取得部31は、パケットバッファ22に、パケットの格納を要求するとともに、抽出部32にパケットの処理を要求する。
抽出部32は、取得部31からの要求に応じて、パケットバッファ22に格納されたパケットのデータを解析する。例えば、抽出部32は、データ中のHypertext Transfer Protocol(HTTP)ヘッダを解析し、付加情報の有無を判定する。さらに、抽出部32は、処理対象のパケットが端末2からサーバ5に送信されたパケットと、サーバ5から端末2に送信されたパケットのいずれであるかも判定する。このとき、抽出部32は、適宜、接続テーブル52を参照することができる。また、抽出部32は、処理対象のパケットがHTTPリクエストとHTTPレスポンスのいずれであるかによって、処理対象のパケットがサーバ5から端末2に送信されたパケットであるかを判定しても良い。HTTPリクエストなど、端末2からサーバ5に向けて送信されたパケットのデータ中に付加情報が含まれている場合、抽出部32は、付加情報を検索部41に出力する。一方、HTTPレスポンスなど、サーバ5から端末2に向けて送信されたパケットに付加情報が含まれている場合、抽出部32は、抽出した付加情報を、送信元の識別情報とともに、振り分けリスト管理部42と情報付加部43に出力する。送信元の識別情報は、例えば、送信元IPアドレスと送信元ポート番号の組合せとすることができる。
振り分けリスト管理部42は、抽出部32から通知された付加情報を、付加情報に対応する後段の負荷分散装置10の識別子や、付加情報を生成したサーバ5の識別情報に対応付けて、振り分けリスト51に記憶する。振り分けリスト51の例については後述する。
検索部41は、抽出部32から入力された付加情報を用いて、付加情報に対応付けられている負荷分散装置10やサーバ5の情報を、振り分けリスト51から取得する。検索部41に付加情報が入力される場合、入力されたパケットは、端末2から受信した要求パケットである。このため、検索部41は、振り分けリスト51から得られた情報を変換部44に出力する。
変換部44は、検索部41から入力された付加情報を、要求パケットのヘッダに格納することにより、要求パケットを転送パケットに変換する。変換部44は、生成した転送パケットを、書き換え部24に出力する。
情報付加部43に付加情報とサーバ5の識別情報が抽出部32から入力される場合は、負荷分散装置10が応答パケットを受信している。このため、情報付加部43は、抽出部32から付加情報が入力されると、応答パケットのヘッダに付加情報と識別情報を加えることにより、応答パケットを通知パケットに変換する。情報付加部43は、通知パケットを書き換え部24に出力する。
故障監視部11は、サーバ5または負荷分散装置10が正常に動作しているかを判定するための故障監視パケットを生成し、送信部25に出力する。前段の負荷分散装置10に含まれている故障監視部11は、後段の負荷分散装置10のそれぞれに、故障監視パケットを送信する。サーバ5に接続されている負荷分散装置10は、サーバ5に故障監視パケットを送信する。このため、故障監視部11は、故障監視パケットの送受信を用いて、他の負荷分散装置10に対して前段と後段のいずれであるかを特定する。例えば、負荷分散装置10bが負荷分散装置10aからの故障監視パケットを受信すると、負荷分散装置10bの故障監視部11は、負荷分散装置10bが負荷分散装置10aの後段に位置していると判定する。故障監視部11は、負荷分散装置10が正常に動作している場合、受信した故障監視パケットに対して、確認応答を返信する。故障監視部11は、得られた接続情報を接続テーブル52に記録する。故障監視部11の動作と故障監視パケット、接続テーブル52の例については後述する。
図4は、負荷分散装置10のハードウェア構成の例を示す。負荷分散装置10は、プロセッサ61、メモリ62、バス65、外部記憶装置66、ネットワーク接続装置69を備える。さらにオプションとして、負荷分散装置10は、入力装置63、出力装置64、媒体駆動装置67を備えても良い。負荷分散装置10は、例えば、コンピュータなどで実現されることがある。
プロセッサ61は、Central Processing Unit(CPU)を含む任意の処理回路とすることができる。プロセッサ61は、故障監視部11、選択部23、書き換え部24、解析部30、付加情報処理部40として動作する。なお、プロセッサ61は、例えば、外部記憶装置66に記憶されたプログラムを実行することができる。メモリ62は、プロセッサ61の動作により得られたデータや、プロセッサ61の処理に用いられるデータも、適宜、記憶する。ネットワーク接続装置69は、他の装置との通信に使用され、受信部21、送信部25として動作する。
入力装置63は、例えば、ボタン、キーボードやマウスとして実現され、出力装置64は、ディスプレイなどとして実現される。バス65は、プロセッサ61、メモリ62、入力装置63、出力装置64、外部記憶装置66、媒体駆動装置67、ネットワーク接続装置69の間を相互にデータの受け渡しが行えるように接続する。外部記憶装置66は、プログラムやデータなどを格納し、格納している情報を、適宜、プロセッサ61などに提供する。媒体駆動装置67は、メモリ62や外部記憶装置66のデータを可搬記憶媒体68に出力することができ、また、可搬記憶媒体68からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体68は、フロッピイディスク、Magneto-Optical(MO)ディスク、Compact Disc Recordable(CD−R)やDigital Versatile Disk Recordable(DVD−R)を含む、持ち運びが可能な任意の記憶媒体とすることができる。
<第1の実施形態>
以下、第1の実施形態を、故障監視パケットを用いた接続関係の特定と、負荷分散装置10によって行われる転送処理に分けて説明する。以下の説明では、図2を用いて説明したネットワークを例として用いる。すなわち、端末2と負荷分散装置10aが接続され、負荷分散装置10aには、負荷分散装置10bと負荷分散装置10cが接続されている。さらに、負荷分散装置10bはサーバ5a〜5cに接続され、負荷分散装置10cはサーバ5d〜5fに接続されている。なお、第1の実施形態では、負荷分散装置10同士での情報の交換にIPヘッダが用いられる場合を例とする。負荷分散装置10同士での通信に用いられるTCPヘッダは、規定に沿ったフォーマットであって、コネクションの制御のために、SYN、ACK、FINなどの制御ビットを含むものとする。
さらに、以下の説明では、負荷分散装置10aと負荷分散装置10bのいずれの動作であるかを分り易くするために、負荷分散装置10中の部分の番号の後ろに、その処理を行っている負荷分散装置10の番号に含まれているアルファベットを記載するものとする。例えば、故障監視部11aは負荷分散装置10aに含まれている故障監視部11である。
〔接続関係の特定〕
図5は、IPヘッダのフォーマットの例を示す図である。図5は、故障監視パケットと、確認応答に使用されるIPヘッダの例を示す。IPヘッダのオプション部以外には、バージョン、ヘッダ長、サービスタイプ、データグラム長、ID、フラグ、フラグメントオフセット、TTL(Time to live)、プロトコル番号、ヘッダチェックサム、送信元IPアドレス、宛先IPアドレスが含まれる。IPヘッダのオプション部以外に含まれている情報要素は、プロトコルの規定に沿って設定される。オプション部には、オプションタイプ、オプション長、送信元IPアドレス、パディングが含まれる。オプションタイプには、パケットの種類を特定するための情報が記録される。例えば、故障監視パケットに含まれているオプションタイプフィールドには、故障監視パケットであることを表す値が設定される。オプション長は、オプション部に含まれている情報要素の長さを指定する。故障監視パケットのオプション部の送信元IPアドレスフィールドには、故障監視パケットの送信元の負荷分散装置10に割り当てられているIPアドレスが記録される。一方、確認応答のオプション部の送信元IPアドレスフィールドには、確認応答の送信元のIPアドレスが記録される。オプション長は予め決められた値に設定される。
図6は、故障監視パケットの送受信の例を示すシーケンス図である。以下、図6を参照しながら、ポートチェックによる故障監視が行われる場合を説明する。図6は、見やすくするために、負荷分散装置10aと負荷分散装置10bの間での故障監視パケットを用いた通信と、負荷分散装置10bとサーバ5bの間での通信を例として示している。
(a1)負荷分散装置10aの故障監視部11aは、負荷分散装置10bに対して故障監視パケットを送信する。このとき、故障監視部11aは、故障監視パケットとして、IPヘッダ中のアドレス等を以下のように設定し、さらに、TCPヘッダ中のSYNビット=1に設定したパケットを生成する。
送信元IPアドレス:負荷分散装置10aのIPアドレス
宛先IPアドレス :負荷分散装置10bのIPアドレス
オプションタイプ :故障監視パケット
オプション部中の送信元IPアドレス:負荷分散装置10aのIPアドレス
なお、宛先IPアドレスとして設定される仮想IPアドレスは、サーバ5a〜5cへのパケットの振り分けに使用されるアドレスである。故障監視部11aは、生成した故障監視パケットを、送信部25aを介して、負荷分散装置10bに送信する。
(a2)負荷分散装置10bの受信部21bは、故障監視パケットを取得部31bに出力する。取得部31bは、受信したパケットのオプションタイプの値が故障監視パケットを示す値になっていることから、故障監視パケットが入力されたと判定し、入力されたパケットを、故障監視部11bに出力する。このとき、故障監視部11bは、故障監視パケットの送信元を示す情報要素に記録されている送信元IPアドレスの値が、オプション部に含まれている送信元IPアドレスの値と一致するかを判定する。両者が一致すると、故障監視部11bは、前段の負荷分散装置10から故障監視パケットを受信したと判定する。また、オプション部に送信元IPアドレスが含まれていることから、故障監視パケットの送信元の負荷分散装置10aが、IPヘッダのオプション部の情報を処理できると判定する。そこで、故障監視部11bは、図7(a)のNo.1に示すように、負荷分散装置10aが負荷分散装置10bの前段にあることと、負荷分散装置10aがオプション部の処理を行うことを、接続テーブル52bに記録する。
(b1)負荷分散装置10bは、負荷分散装置10bに接続されているサーバ5のいずれか1つ以上が正常に動作している場合、負荷分散装置10aからのパケットをサーバ5に転送できるので、正常に動作している旨の確認応答を返送できる。そこで、負荷分散装置10bが負荷分散装置10aから故障監視パケットを受信すると、故障監視部11bは、負荷分散装置10bに接続されているサーバ5a〜5cに故障監視パケットを送信する。サーバ5bに送信される故障監視パケットでは、IPヘッダ中のアドレス等の情報は以下のように設定され、TCPヘッダ中のSYNビット=1に設定されている。
送信元IPアドレス:負荷分散装置10bのIPアドレス
宛先IPアドレス :サーバ5bのIPアドレス
オプションタイプ :故障監視パケット
オプション部中の送信元IPアドレス:負荷分散装置10bのIPアドレス
故障監視部11bは、生成した故障監視パケットを、送信部25bを介して、サーバ5bに送信する。
(b2)サーバ5bは、負荷分散装置10bから故障監視パケットを受信する。サーバ5bは、IPヘッダのオプション部についての処理を行わない。このため、サーバ5bは、単に負荷分散装置10bから接続を要求するために、SYNビット=1のパケットが送信されてきたと解釈する。サーバ5bは、負荷分散装置10bとの間で新たな通信を開始できる場合、TCPヘッダ中のSYNビットとACKビットの両方を1に設定した確認応答を、負荷分散装置10bに返送する。なお、サーバ5bは、IPヘッダのオプション部の処理を行わないため、サーバ5bが負荷分散装置10bに送信する確認応答では、IPヘッダには送信元IPアドレスが格納されていない。
(b3)負荷分散装置10bがサーバ5bからの確認応答を受信したとする。負荷分散装置10bの故障監視部11bは、取得部31bと受信部21bを介して、確認応答を取得する。故障監視部11bは、確認応答の送信元を示す情報要素に記録されている送信元IPアドレスの値が、オプション部に含まれている送信元IPアドレスの値と一致するかを判定する。サーバ5bから受信した確認応答のIPヘッダには、オプション部に送信元アドレスが格納されていない。このため、故障監視部11bは、サーバ5bではIPヘッダ内のオプション部の処理が行われていないと判定する。さらに、故障監視部11bは、判定結果を、接続関係とともに接続テーブル52bに記録する。故障監視部11bは、確認応答の送信元であるサーバ5bを接続先ノードとする。このとき、故障監視部11bは、サーバ5bが負荷分散装置10bの後段に位置することも合わせて記憶する。このため、そこで、故障監視部11bは、図7(a)のNo.2に示す情報を記憶する。
(a3)負荷分散装置10bは、手順(b3)でACK=1、SYN=1となっている確認応答を受信したので少なくとも、サーバ5bには、データを転送できると判定する。そこで、手順(a2)で受信した故障監視パケットに対する確認応答を、負荷分散装置10aに送信する。このとき、故障監視部11bは、確認応答に含まれているTCPヘッダのSYNビットとACKビットの両方を1に設定した上で、確認応答のIPヘッダ中のアドレスの情報を以下のように設定する。
送信元IPアドレス:負荷分散装置10bのIPアドレス
宛先IPアドレス :負荷分散装置10aのIPアドレス
オプション部中の送信元IPアドレス:負荷分散装置10bのIPアドレス
故障監視部11bは、生成した確認応答を、送信部25bを介して、負荷分散装置10aに送信する。
(a4)負荷分散装置10aの故障監視部11aは、負荷分散装置10bで生成された確認応答を、受信部21aや取得部31aを介して受信する。故障監視部11aは、確認応答の送信元を示す情報要素に記録されている送信元IPアドレスの値が、オプション部に含まれている送信元IPアドレスの値と一致するかを判定する。両者が一致すると、故障監視部11aは、確認応答を生成した後段の負荷分散装置10は、IPヘッダ中のオプション部を処理できると判定する。そこで、故障監視部11aは、手順(b3)での故障監視部11bと同様の処理により、図7(b)のNo.1に示す情報を記憶する。さらに、故障監視部11aは、負荷分散装置10bから負荷分散装置10aに向かう通信路を確保するために、ACKビット=1に設定した確認応答を負荷分散装置10bに送信する。
(a5)故障監視部11aは、負荷分散装置10bとの間の接続関係を取得し、負荷分散装置10bが正常に動作していると判定すると、負荷分散装置10bとの間の通信を終了する。このため、故障監視部11aは、TCPヘッダ中のFINビット=1、ACKビット=1に指定したパケットを生成し、送信部25aを介して負荷分散装置10bに送信する。このとき、IPヘッダの設定は、手順(a1)と同様に行われる。
(b5)負荷分散装置10bの故障監視部11bは、負荷分散装置10aから通信の終了が要求された場合、負荷分散装置10bに接続されているサーバ5のうちで、負荷分散装置10aとの通信路を確立しているサーバ5bに、通信の終了を通知する。このとき、負荷分散装置10bも手順(a5)での故障監視部11aと同様に、FINビット=1、ACKビット=1に指定したパケットを、サーバ5bに送信する。
(b6)サーバ5bは、故障監視のための通信の切断が要求されると、負荷分散装置10bとの間の通信を終了するために、FINビット=1、ACKビット=1に指定したパケットを、負荷分散装置10bに送信する。
(a6)負荷分散装置10bがサーバ5bから通信の切断のためのパケットを受信すると、故障監視部11bは、負荷分散装置10aあてに、通信の切断を要求するためのパケットを生成する。このときに生成されるパケットは、FINビット=1、ACKビット=1であり、手順(a3)で生成されたパケットと同様のIPヘッダを含む。負荷分散装置10aが負荷分散装置10bからのパケットを受信することにより、負荷分散装置10aと負荷分散装置10bの間のコネクションが終了される。
図6を参照しながら説明した処理と同様の処理が、負荷分散装置10aと負荷分散装置10cの間でも行われるため、接続テーブル52aは、図7(b)に示すようになる。また、負荷分散装置10bとサーバ5a、5cの間でも同様の処理が行われるので、故障監視部11bは、図7(c)に示す接続テーブル52bを生成する。さらに、負荷分散装置10cとサーバ5d〜5fの間でも同様の処理が行われる。
〔転送処理の例〕
図8(a)と図8(b)は、IPヘッダのフォーマットの例を示す。図8(a)に示すIPヘッダは、通知パケットで使用される。図8(a)に示すIPヘッダの情報要素のうち、IPヘッダのオプション部以外は、図5を参照しながら説明したIPヘッダの情報要素と同様である。オプション部は、オプションタイプ、オプション長、処理サーバポート番号、処理サーバIPアドレス、付加情報を含む。オプションタイプは、パケットが通知パケットであることを示す値が設定される。通知パケットは、サーバ5で生成された応答パケットを受信した負荷分散装置10が、その負荷分散装置10よりも前段に位置している他の負荷分散装置10に、付加情報と、付加情報を生成したサーバ5の情報を通知するために用いられる。このため、処理サーバIPアドレスフィールドには、応答パケットを生成したサーバ5のIPアドレスが格納される。また、処理サーバポート番号フィールドには、応答パケットを生成したアプリケーションにアクセスするときに使用されるポート番号が格納される。付加情報フィールドには、応答パケットのデータに含まれている付加情報が格納される。
従って、応答パケットを受信した負荷分散装置10bは、応答パケットのIPヘッダを、図8(a)に示すフォーマットに変換することにより、応答パケットを通知パケットに変換する。以下の説明で、応答パケットを通知パケットに変換する負荷分散装置10のことを「通知装置」と呼ぶことがある。通知装置は、サーバ5と直接パケットを送受信する負荷分散装置10である。
図8(b)に示すIPヘッダは、転送パケットで使用される。図8(b)に示すIPヘッダでも、IPヘッダのオプション部以外の情報要素は、図5を参照しながら説明したIPヘッダと同様である。オプション部は、オプションタイプ、オプション長、処理サーバポート番号、処理サーバIPアドレス、パディングを含む。オプションタイプフィールドには、パケットが転送パケットであることを示す値が設定される。転送パケットは、端末2から要求パケットを受信した負荷分散装置10が、その負荷分散装置10よりも後段に位置する負荷分散装置10に、要求パケット中のデータを処理するサーバ5の情報を通知するために使用される。このため、処理サーバIPアドレスは、要求パケットのデータ中の付加情報を生成したサーバ5のIPアドレスとなる。また、処理サーバポート番号は、処理サーバにおいて、付加情報を含む応答パケット中のデータを生成したアプリケーションにアクセスするためのポート番号である。
以下、負荷分散装置10a、10b、および、サーバ5a〜5fの間で接続関係の特定が終わった後に、端末2がサーバ5にサービスを要求した場合について説明する。端末2が新規にサーバ5との通信を開始する場合、端末2からの要求パケットは、サーバ5a〜5fのいずれによって処理されても良い。以下の説明では、負荷分散装置10aは、端末2からの要求パケットを負荷分散装置10bに振り分け、負荷分散装置10bは、端末2からの要求をサーバ5bに振り分けたとする。
図9は、サーバ5bから端末2あての応答パケットの転送処理の例を示す。なお、以下の手順の番号は、図9中の番号と同じである。なお、以下の説明では、応答パケットを生成したサーバ5のことを「処理サーバ」と記載することがある。図9では、サーバ5bが処理サーバとして動作する。さらに、図面を見やすくするために、負荷分散装置10bがサーバ5a〜5cへの振り分けに使用しているIPアドレスとポートをあわせた情報を、図9では「SLB#B」と記載する。同様に、負荷分散装置10cがサーバ5d〜5fへの振り分けに使用しているIPアドレスとポートをあわせた情報を「SLB#C」と表す。
(11)サーバ5bは、端末2で生成された要求パケットを処理し、端末2に送信する応答データを生成する。さらに、サーバ5bは、今回の要求パケットに関連する以後のサービスを要求する要求パケットを、サーバ5bが処理することができるようにするため、付加情報を生成する。付加情報は、例えば、Cookie情報、セッションIDなどとすることができ、ネットワークに含まれているサーバ群から、要求パケットを処理するサーバを一意に決定するために使用可能な任意の情報である。サーバ5bは、応答データと付加情報をデータ中に含む応答パケット81a〜81cを生成する。このとき、サーバ5bは、応答パケット81a〜81cのIPヘッダのオプション部には、情報を格納しない。サーバ5bは、応答パケット81a〜81cを、端末2に向けて送信する。
(12)負荷分散装置10bの受信部21bは、サーバ5bから応答パケット81aを受信する。受信部21bは、応答パケット81aを取得部31bに出力する。取得部31bは、応答パケット81aのIPヘッダのオプション部を参照する。応答パケット81aのIPヘッダのオプション部には、付加情報や処理サーバの識別情報などが含まれていないので、取得部31bはパケットバッファ22bに応答パケット81aの格納を要求する。さらに、取得部31bは、送信元IPアドレスをキーとして接続テーブル52bを参照することにより、送信元が負荷分散装置10bの前段と後段のいずれに位置しているかを判定する。応答パケット81aの送信元はサーバ5bであり、サーバ5bは負荷分散装置10の後段に位置している。そこで、取得部31bは、抽出部32bに、応答パケット81aのデータの解析を要求するとともに、応答パケット81を負荷分散装置10bの後段に位置する装置から受信したことを通知する。
取得部31bは、応答パケット81aを生成したサーバ5bの識別情報として、IPヘッダから送信元IPアドレス、TCPヘッダから送信元ポート番号を取得する。さらに、取得部31bは、IPヘッダから取得した送信元IPアドレスと、TCPヘッダから取得した送信元ポート番号を、サービスを要求するためのパケットの転送先として特定する。従って、取得部31bは、以下の情報を取得する。
処理サーバの識別情報:サーバ5bに割り当てられたIPアドレスとポート番号
転送先 :サーバ5bに割り当てられたIPアドレスとポート番号
取得部31bは、取得した識別情報と転送先の情報を抽出部32bに出力する。応答パケット81b、81cも、同様の処理により、パケットバッファ22bに格納される。
(13)抽出部32bは、応答パケット81aのデータを解析することにより、応答パケット81aに含まれている付加情報を抽出する。図9の例では、応答パケット81a中の付加情報は、「クライアントA」という情報である。抽出部32bは、応答パケット81aの送信元が負荷分散装置10bよりも後段の装置であるため、付加情報を、処理サーバの識別情報、および、転送先の情報とともに、振り分けリスト管理部42bに出力する。さらに、抽出部32bは、サーバの識別情報とともに、抽出した付加情報を、情報付加部43bに出力する。
(14)振り分けリスト管理部42bは、抽出部32bから入力された情報を振り分けリスト51bに記録する。このため、振り分けリスト51bには以下の情報が記録される。
付加情報:クライアントA
処理サーバの識別情報:サーバ5bに割り当てられたIPアドレスとポート番号
転送先 :サーバ5bに割り当てられたIPアドレスとポート番号
(15)情報付加部43bは、抽出部32bから入力された付加情報と識別情報を応答パケット81aのIPヘッダのオプション部に加える。すなわち、情報付加部43bは、図8(a)に示すIPヘッダのオプション部内の送信元IPアドレスフィールドに、サーバ5bに割り当てられたIPアドレスを格納する。さらに、情報付加部43bは、IPヘッダのオプション部内の送信元ポート番号フィールドに、サーバ5bが応答パケット81aを生成するために使用したアプリケーションに対応するポート番号を記録する。このとき、情報付加部43bは、IPヘッダのオプション部内の送信元ポート番号フィールドに、応答パケット81aのTCPヘッダ中の送信元ポート番号と同じ値を記録するものとする。これらの処理により、情報付加部43bは、応答パケット81aを通知パケット82aに変換する。情報付加部43bは、得られた通知パケット82aを書き換え部24bに出力する。
(16)書き換え部24は、通知パケット82aの宛先IPアドレスをキーとして接続テーブル52を検索する。接続テーブル52に該当するエントリがない場合、書き換え部24bは、前段の負荷分散装置10aに転送するパケットであると判定し、送信元IPアドレスを負荷分散装置10bに割り当てられた仮想IPアドレスに書き換える。書き換え部24bでの処理が終わると、通知パケット82aは、送信部25bを介して負荷分散装置10aに送信される。
(17)負荷分散装置10aの受信部21aは、負荷分散装置10bから通知パケット82aを受信する。受信部21aは、通知パケット82aを取得部31aに出力する。取得部31aは、通知パケット82aのIPヘッダのオプション部から、付加情報と、処理サーバの識別情報、送信元IPアドレスを取得する。取得部31aは、取得した情報を振り分けリスト管理部42aに出力する。図9の例では、抽出部32aは、通知パケット82aから以下の情報を取得して、振り分けリスト管理部42aに出力する。
付加情報:クライアントA
処理サーバの識別情報:サーバ5bに割り当てられたIPアドレスとポート番号
送信元 :負荷分散装置10bに割り当てられたIPアドレスとポート番号
振り分けリスト管理部42aは、取得部31aから入力された情報を振り分けリスト51aに記録する。
(18)取得部31aは、振り分けリスト管理部42aに出力する情報を取得すると、通知パケット82aを書き換え部24aに出力する。書き換え部24aは、通知パケット82aの宛先IPアドレスをキーとして接続テーブル52を検索する。負荷分散装置10aの接続テーブル52a(図7(b))には、負荷分散装置10aよりも前段に位置する負荷分散装置10が記録されていない。書き換え部24aは、接続テーブル52aに該当するエントリがない場合、端末2に転送するパケットであると判定し、送信元IPアドレスを負荷分散装置10aに割り当てられた仮想IPアドレスに書き換える。さらに、書き換え部24aは、IPヘッダのオプション部に含まれている情報を削除する。従って、書き換え部24aは、通知パケット82aを応答パケット81dに変換している。応答パケット81dのデータは、応答パケット81aのデータと同じである。しかし、応答パケット81dでは、送信元IPアドレスと送信元ポート番号は負荷分散装置10aがサーバ5a〜5fへの負荷分散を行うために使用するアドレスとポート番号となっている。書き換え部24aは、応答パケット81dを送信部25aに出力する。送信部25aは、応答パケット81dを端末2に送信する。
(19)端末2は、応答パケット81dを受信する。端末2は、応答パケット81dの送信元IPアドレスと送信元ポート番号に対応付けて、付加情報を保存する。応答パケット81dでは、送信元IPアドレスと送信元ポート番号は、負荷分散装置10aがサーバ5a〜5fへの負荷分散を行うために使用するアドレスとポート番号である。なお、端末2は、適宜、応答パケット81dの送信元アドレスとポート番号から特定できるアプリケーションに対応付けて、付加情報を記憶しても良い。
応答パケット81b、81cについても、同様に処理が行われる。このため、応答パケット81a〜81cがサーバ5bから端末2に送信される間に、各パケットについて1回ずつ、パケット中のデータの解析が行われるだけですむ。換言すると、サーバ5から応答パケットを受信している負荷分散装置10b以外は、パケット中のデータを処理しない。このため、ネットワークの処理負荷が小さくなる。
図10は、端末2から付加情報を含むパケットが送信されたときの処理の例を示す。
(21)次に、端末2が、応答パケット81dの宛先ポート番号で特定されるアプリケーションから、サーバ5に再度、サービスを要求したとする。端末2は、サービスを要求するために、要求パケット83aを生成する。要求パケット83aのデータ中には、「クライアントA」という付加情報が含まれている。また、要求パケット83aの送信先IPアドレスと送信先ポート番号は、負荷分散装置10aがサーバ5a〜5fへの振り分けに使用する値に設定される。端末2は、負荷分散装置10aに要求パケット83aを送信する。なお、端末2はIPヘッダのオプション部を処理しないので、要求パケット83aのIPヘッダのオプション部には、情報が格納されていない。
(22)負荷分散装置10aの受信部21aは、端末2から要求パケット83aを受信すると、要求パケット83aを取得部31aに出力する。取得部31aは、要求パケット83aのIPヘッダのオプション部に情報に転送先のサーバ5を識別するためのIPアドレスとポート番号が含まれていないので、パケットバッファ22aに要求パケット83aの格納を要求する。取得部31aは、抽出部32aに、要求パケット83aのデータの解析を要求する。なお、要求パケット83aの処理中にさらに負荷分散装置10aがさらに要求パケット83b、83cを受信した場合、要求パケット83b、83cは、適宜、パケットバッファ22aに格納される。
(23)抽出部32aは、要求パケット83aのデータを解析することにより、要求パケット83aに含まれている付加情報を抽出する。図10の例では、要求パケット83a中の付加情報は、「クライアントA」という情報である。抽出部32aは、得られた付加情報を検索部41aに出力する。
(24)検索部41aは、抽出部32aから入力された付加情報に対応付けられているエントリを、振り分けリスト51a中で検索することにより、転送先の負荷分散装置10と処理サーバの情報を取得する。図10の例では、「クライアントA」という付加情報に対して以下の情報が対応付けられている。
付加情報:クライアントA
処理サーバの識別情報:サーバ5bに割り当てられたIPアドレスとポート番号
送信元 :負荷分散装置10bに割り当てられたIPアドレスとポート番号
そこで、検索部41aは、処理サーバの識別情報を変換部44aに出力し、送信先の情報を書き換え部24aに出力する。
(25)変換部44aは、処理サーバの識別情報を抽出部32aから取得すると、取得した情報を要求パケット83aのIPヘッダのオプション部に加える。すなわち、変換部44aは、図8(b)に示すIPヘッダのオプション部内の処理サーバIPアドレスフィールドに、サーバ5bに割り当てられたIPアドレスを格納する。さらに、変換部44aは、抽出部32aから通知されたポート番号を、IPヘッダのオプション部内の処理サーバポート番号フィールドに記録する。これらの処理により、変換部44aは、要求パケット83aを転送パケット84aに変換する。変換部44aは、送信先のアドレスを設定するために、得られた転送パケット84を書き換え部24bに出力する。
(26)書き換え部24aは、変換部44aから入力された転送パケット84aの宛先IPアドレスと宛先ポート番号を、検索部41aから通知された値に変更する。このため、転送パケット84aには、以下の情報が設定される。
送信元 :端末2
宛先IPアドレス:負荷分散装置10bに設定されたIPアドレス
宛先ポート番号 :サーバ5a〜5cへの負荷分散用のポート番号
オプション部の処理サーバIPアドレス:サーバ5bに設定されたIPアドレス
オプション部の処理サーバポート番号:サーバ5bのアプリケーションのポート番号
書き換え部24aは、宛先の情報の設定が終わると、転送パケット84aを送信部25aに出力する。
(27)負荷分散装置10bの受信部21bは、転送パケット84aを受信する。受信部21bは、転送パケット84aを取得部31bに出力する。取得部31bは、IPヘッダのオプション部に処理サーバIPアドレスと処理サーバポート番号が含まれているかを判定する。取得部31bは、転送パケット84aのIPヘッダのオプション部から、処理サーバIPアドレスと処理サーバポート番号を取得する。
さらに、取得部31bは、転送パケット84aの送信元IPアドレスをキーとして、接続テーブル52b(図7(c))を検索することにより、前段側と後段側のいずれの装置からパケットを受信したかを判定する。取得部31bは、転送パケット84bの送信元は負荷分散装置10aであり、負荷分散装置10aは負荷分散装置10bの前段側に位置すると判定する。そこで、取得部31bは、転送パケット84aから取得した処理サーバIPアドレスおよび処理サーバポート番号を検索部41bに出力する。ここでは、取得部31bは、処理サーバの識別情報として、サーバ5bのIPアドレスとポート番号を検索部41bに通知する。
(28)検索部41bは、転送パケット84aから取得した処理サーバIPアドレスおよび処理サーバポート番号をキーとして、振り分けリスト51bを検索することにより、転送先のIPアドレスとポート番号を特定する。図10に示すように、振り分けリスト51bでは、処理サーバがサーバ5bである場合の転送先は、サーバ5bとなっている。このため、検索部41bは、負荷分散装置10bが処理サーバに直接パケットを送信できると判定する。さらに、検索部41bは、転送先となるサーバ5bでは、IPヘッダのオプション部の処理ができるかを、接続テーブル52bを用いて判定する。ここでは、検索部41bは、転送先のノードでは、IPヘッダのオプション部を処理できないと判定する。検索部41bは、転送先であるサーバ5bのIPアドレスおよびポート番号、および、転送先ではIPヘッダのオプション部を処理できないことを、書き換え部24bに通知する。
(29)書き換え部24bは、検索部41bから通知された転送先の情報に従い、サーバ5bの情報を、IPヘッダ中の宛先IPアドレスと、宛先ポート番号に設定する。さらに、書き換え部24bは、サーバ5bがIPヘッダのオプション部の処理を行わないため、IPヘッダのオプション部の情報を削除する。従って、書き換え部24bは、転送パケット84aを要求パケット83dに変換しているといえる。要求パケット83dのデータは、要求パケット83aのデータと同じである。書き換え部24bは、要求パケット83dを送信部25bに出力する。送信部25bは、要求パケット83dをサーバ5bに送信する。
(30)サーバ5bは、要求パケット83dを受信する。サーバ5bは、要求パケット83dのデータを処理する。
要求パケット83b、83cについても、同様に処理が行われる。このため、要求パケット83a〜83cが端末2からサーバ5bに送信される間に、各パケットについて1回ずつ、パケット中のデータの解析が行われるだけですむ。換言すると、端末2から要求パケット83a〜83cを受信している負荷分散装置10a以外は、パケット中のデータを処理しない。このため、ネットワークの処理負荷が小さくなる。
図11は、負荷分散装置10の処理の例を説明するフローチャートである。図11は、前段の負荷分散装置10が要求パケット83を受信したときに行う処理の例を示している。図11は、要求パケット83がHTTPリクエストを含むパケットである場合を例としているが、端末2側からサーバ5に送信される他の要求パケット83についても、同様に処理が行われる。
受信部21は、要求パケット83を受信する(ステップS1)。前段の負荷分散装置10が受信する要求パケット83には、IPヘッダのオプション部にサーバの識別情報が含まれていない。そこで、取得部31からの要求に応じて、パケットバッファ22は、要求パケット83をバッファリングする(ステップS2)。抽出部32は、パケットバッファ22にバッファリングされている要求パケット83のデータからHTTPヘッダを特定し、HTTPヘッダを解析する(ステップS3)。抽出部32は、解析の結果、HTTPヘッダ中に付加情報が含まれているかを判定する(ステップS4)。付加情報がHTTPヘッダ中に含まれていない場合、選択部23は、要求パケット83の振り分け先を決定する(ステップS4でNo、ステップS7)。書き換え部24は、選択部23で決定された転送先に応じて、要求パケット83のIPヘッダ中の宛先IPアドレスと宛先ポート番号を変更する(ステップS8)。送信部25は、書き換え部24での処理後の要求パケット83を転送先に送信する(ステップS12)。
一方、付加情報が含まれている場合、抽出部32は、付加情報を検索部41に出力し、検索部41は、振り分けリスト51中から付加情報に対応付けられたエントリを検索する(ステップS4でYes、ステップS5)。付加情報に対応付けられたエントリが振り分けリスト51にない場合、ステップS7以降の処理が行われる(ステップS6でNo)。振り分けリスト51から、付加情報を含むエントリを取得できた場合、検索部41は、付加情報に対応付けられている転送先と、処理サーバの識別情報を取得する(ステップS6でYes、ステップS9)。なお、処理サーバの識別情報は、処理サーバに割り当てられたIPアドレスと、要求パケット83に含まれているデータを処理するアプリケーションを指定するポート番号である。検索部41は、処理サーバの識別情報を変換部44、転送先の情報を書き換え部24に出力する。変換部44は、処理サーバについての識別情報をIPヘッダのオプション部に格納することにより、要求パケット83を転送パケット84に変換する(ステップS10)。送信部25は、書き換え部24での処理後の要求パケット83を転送先に送信する(ステップS12)。
図12は、負荷分散装置10の処理の例を説明するフローチャートである。図12は、後段の負荷分散装置10が、前段の負荷分散装置10からパケットを受信したときに行う処理の例を示している。
受信部21は、パケットを受信する(ステップS21)。後段の負荷分散装置10が受信するパケットには、ヘッダのオプション部にサーバの識別情報が含まれている可能性がある。そこで、取得部31は、受信したパケットのヘッダに処理サーバを特定する情報が含まれているかを判定する(ステップS22)。処理サーバの情報がヘッダに含まれていない場合、パケットバッファ22は、取得部31からの要求に応じて、パケットをバッファリングする(ステップS23)。その後、図11を参照しながら説明したステップS7、S8、S12と同様の処理によって、パケットの転送が行われる(ステップS26、S27、S31)。
一方、後段の負荷分散装置10が転送パケット84を受信した場合、受信したヘッダのオプション部には処理サーバの識別情報が含まれている。ヘッダのオプション部にサーバの識別情報が含まれている場合、取得部31は、パケットのヘッダから処理サーバの情報を取得する(ステップS24)。取得部31は、処理サーバの情報を検索部41に出力する。検索部41は、取得部31から通知された処理サーバの情報を含むエントリを、振り分けリスト51から検索する(ステップS25)。処理サーバの情報を含むエントリがある場合、そのエントリに含まれている転送先のIPアドレスとポート番号を取得し、書き換え部24に出力する(ステップS25でYes、ステップS28)。書き換え部24は、パケットのヘッダに含まれている処理サーバの情報を削除することにより、転送パケット84を要求パケット83に変換する(ステップS29)。さらに、書き換え部24は、要求パケット83の送信先を、検索部41から通知された転送先の装置のIPアドレスとポート番号に変更し、送信部25を介して要求パケット83を転送する(ステップS30、S31)。一方、処理サーバの情報を含むエントリが無い場合、ステップS26以降の処理が行われる(ステップS25でNo)。
図13は、負荷分散装置10の処理の例を説明するフローチャートである。図13は、後段の負荷分散装置10がサーバ5からパケットを受信したときに行う処理の例を示している。ステップS41、S42は、図11を参照しながら説明したステップS1、2と同様である。抽出部32は、パケットバッファ22にバッファリングされている応答パケット81のデータに付加情報が含まれているかを判定する(ステップS43)。付加情報がデータに含まれている場合、抽出部32は、付加情報を振り分けリスト管理部42と情報付加部43に出力する(ステップS43でYes)。振り分けリスト管理部42は、送信元のサーバ5の識別情報と付加情報を対応付けて、振り分けリスト51に記録する(ステップS44)。情報付加部43は、応答パケット81のヘッダに、処理サーバの情報と付加情報を含めることにより、応答パケット81を通知パケット82に変換する(ステップS45)。書き換え部24は、通知パケット82の転送を行うことができるように、IPヘッダ中のIPアドレスとポート番号の情報を設定する(ステップS46)。送信部25は、書き換え部24での処理後の通知パケット82を、前段の負荷分散装置10に送信する(ステップS48)。
一方、付加情報がデータに含まれていない場合、パケットは書き換え部24に出力される(ステップS43でNo)。書き換え部24は、受信したパケットを前段の負荷分散装置10に送信できるように、IPヘッダ中のIPアドレスとポート番号を設定する(ステップS47)。送信部25は、書き換え部24での処理後の通知パケット82を、前段の負荷分散装置10に送信する(ステップS48)。
図14は、負荷分散装置10の処理の例を説明するフローチャートである。図14は、前段の負荷分散装置10が後段の負荷分散装置10からパケットを受信したときに行う処理の例を示している。ステップS51は、図11を参照しながら説明したステップS1と同様である。取得部31は、パケットバッファ22にバッファリングされているパケットのヘッダに処理サーバの情報と付加情報が含まれているかを判定する(ステップS52)。パケットのヘッダに処理サーバの情報と付加情報が含まれている場合、前段の負荷分散装置10は、通知パケット82を受信している(ステップS52でYes)。そこで、パケットのヘッダに処理サーバの情報と付加情報が含まれている場合、取得部31は,ヘッダからそれらの情報を取得する(ステップS53)。振り分けリスト管理部42は、振り分けリスト51に、処理サーバの識別情報、送信元の装置の情報、付加情報を対応付けて記録する(ステップS54)。書き換え部24は、接続テーブル52を用いて、通知パケット82に含まれている情報の宛先が端末2であることを特定すると、通知パケット82を応答パケット81に変換する(ステップS55)。このとき、書き換え部24は、ヘッダ部から付加情報と処理サーバの情報を削除する。さらに、書き換え部24は、得られた応答パケット81の送信元IPアドレスと送信元ポート番号を、サーバ5への振り分けに使用しているIPアドレスとポート番号に書き換える(ステップS56)。書き換え部24での処理が終わると、送信部25は、応答パケット81を端末2に転送する(ステップS58)。一方、パケットのヘッダに処理サーバの情報と付加情報が含まれていない場合、前段の負荷分散装置10は、付加情報を含むパケットを受信していないと判定する(ステップS52でNo)。そこで、書き換え部24は、受信したパケットの送信元IPアドレスと送信元ポート番号を、サーバ5への振り分けに使用しているIPアドレスとポート番号に書き換え、送信部25を介して、端末2に転送する(ステップS57、S58)。
このように、第1の実施形態にかかる方法によると、応答パケット81は、サーバ5から応答パケット81を受信した後段の負荷分散装置10(通知装置)において、通知パケット82に変換される。このため、通知装置以外の負荷分散装置10は、通知パケット82のヘッダを解析することによって、付加情報、処理サーバ、次に要求パケット83を転送する場合の転送先の組合せを取得できる。従って、通知装置以外の負荷分散装置10は、データの解析やデータの解析に伴うパケットのバッファリングを行わないため、効率的にパケットが処理できる。さらに、要求パケット83は、端末2から要求パケット83を受信した前段の負荷分散装置10(受信装置)において、転送パケット84に変換される。このため、受信装置以外の負荷分散装置10は、転送パケット84のヘッダを解析することにより、転送先の装置を特定することができる。従って、受信装置以外の負荷分散装置10は、データの解析やデータの解析に伴うパケットのバッファリングを行わないため、効率的にパケットが処理できる。
<第2の実施形態>
第1の実施形態では、負荷分散装置10が2段階に接続されている場合を例として説明したが、3以上の負荷分散装置10を経由してパケットがサーバ5に転送される場合でも、パケットの処理を効率化することができる。
図15は、第2の実施形態での故障監視パケットの送受信の例を示すシーケンス図である。図15は、負荷分散装置10が3段階に接続されている場合を例として示す。負荷分散装置10aは端末2と通信する負荷分散装置10であるとする。負荷分散装置10bと負荷分散装置10cは、負荷分散装置10aに接続されており、負荷分散装置10dと負荷分散装置10e(図示せず)が負荷分散装置10bに接続されているものとする。負荷分散装置10dには、サーバ5gを含む複数のサーバ5が接続されているものとする。故障監視パケットの送受信に際して、負荷分散装置10aと負荷分散装置10bの間の通信について行われる処理は、第1の実施形態において図6を参照しながら説明した手順(a1)〜(a6)と同様である。
故障監視パケットを負荷分散装置10aから受信した負荷分散装置10bは、負荷分散装置10dを宛先として、故障監視パケットを送信する(c1)。負荷分散装置10dは、負荷分散装置10bから故障監視パケットを受信すると、負荷分散装置10bが負荷分散装置10dの前段であることを接続テーブル52dに記録する(c2)。ここで、負荷分散装置10dに接続されているサーバ5のうちのいずれか1つ以上が正常に動作していれば、負荷分散装置10bからのパケットをサーバ5に転送できる。このため、負荷分散装置10dは、サーバ5gに故障監視パケットを送信する(d1)。
サーバ5gからの負荷分散装置10dに故障監視パケットに対する確認応答により、負荷分散装置10dは、サーバ5gが正常に動作していると判定したとする。すると、負荷分散装置10dは、サーバ5gが負荷分散装置10dの後段であることを接続テーブル52dに記録する(d2)。さらに、負荷分散装置10dは、負荷分散装置10dが正常に動作しているという旨の確認応答を負荷分散装置10bに返信する(d3)。負荷分散装置10bは、負荷分散装置10dからの確認応答を受信すると、負荷分散装置10aに、負荷分散装置10bが正常に動作している旨の確認応答を返信する(c3)。その後、適宜、故障監視パケットを用いて確立されたコネクションが切断される。
図16は、第2の実施形態でのパケットの送受信の例を示すシーケンス図である。
(41)これまでサーバ5へアクセスしていない端末2が、サーバ5にアクセスするために、パケットを送信したとする。このとき、パケットには付加情報が含まれていないので、パケットを受信した負荷分散装置10は、予め決められた方法に基づいて、パケットを転送する。ここでは、パケットは、負荷分散装置10a、10b、10dを経て、サーバ5gに転送されたとする。
(42)サーバ5gは、端末2宛ての応答データと付加情報を含む応答パケット81eを生成し、負荷分散装置10dに送信する。
(43)負荷分散装置10dは、応答パケット81eをサーバ5gから受信しているので、応答パケット81eの処理においては、通知装置として動作する。そこで、負荷分散装置10dは、応答パケット81eを通知パケット82eに変換し、負荷分散装置10bに転送する。このときの負荷分散装置10dで行われる処理は、図9を参照しながら説明した手順(12)〜(16)と同様である。
(44)負荷分散装置10bは、通知パケット82eのヘッダから付加情報、処理サーバがサーバ5gであること、通知パケット82eの送信元が負荷分散装置10dであることを特定し、振り分けリスト51bに記録する。このとき行われる処理は、図9を参照しながら説明した手順(17)と同様である。負荷分散装置10bの書き換え部24bは、接続テーブル52bを参照することにより、負荷分散装置10aが負荷分散装置10bの前段に位置していることを特定する。そこで、書き換え部24bは、通知パケット82eの送信元の情報を負荷分散装置10bがサーバ5への振り分けに使用するIPアドレスとポート番号に変換した上で、負荷分散装置10aに転送する。
(45)負荷分散装置10aは、負荷分散装置10bから通知パケット82eを受信する。負荷分散装置10aは、通知パケット82eのヘッダを用いて、付加情報、処理サーバがサーバ5gであること、通知パケット82eの送信元が負荷分散装置10bであることを特定し、振り分けリスト51aに記録する。さらに、負荷分散装置10aは、通知パケット82eを応答パケット81fに変換する。このとき行われる処理は、図9を参照しながら説明した手順(18)と同様である。
(46)端末2は、応答パケット81fを受信すると、図9の手順(19)と同様に、付加情報を保存する。
(47)次に、端末2が、付加情報を含めた要求パケット83fを生成したとする。要求パケット83fは、負荷分散装置10aに送信される。
(48)負荷分散装置10aは、要求パケット83fを端末2から受信しているので、要求パケット83fの処理においては、受信装置として動作する。そこで、負荷分散装置10aは、要求パケット83fを転送パケット84fに変換し、負荷分散装置10bに転送する。このときの負荷分散装置10aで行われる処理は、図10を参照しながら説明した手順(22)〜(26)と同様である。
(49)負荷分散装置10bは、転送パケット84fのヘッダから処理サーバがサーバ5gであることを特定する。このとき行われる処理は、図10を参照しながら説明した手順(27)と同様である。さらに、負荷分散装置10bは、振り分けリスト51bから、サーバ5gに転送パケット84fを転送するための転送先を特定する。さらに、接続テーブル52を参照することにより、負荷分散装置10bは、転送先の負荷分散装置10dがIPヘッダのオプション部分を処理できることを特定する。そこで、負荷分散装置10bは、転送パケット84fを負荷分散装置10dに転送する。
(50)負荷分散装置10dは、負荷分散装置10bから転送パケット84fを受信する。負荷分散装置10dは、転送パケット84fのヘッダを用いて、処理サーバがサーバ5gであることを特定する。さらに、振り分けリスト51dと接続テーブル52dを用いて、転送パケット84fの転送先がサーバ5gであることと、サーバ5gがIPヘッダのオプション部の処理を行わないことを特定する。そこで、負荷分散装置10dは、転送パケット84fを要求パケット83gに変換して、サーバ5gに転送する。このとき行われる処理は、図10を参照しながら説明した手順(27)〜(29)と同様である。
なお、図16では、負荷分散装置10が3段階に設置されている場合を例として説明したが、負荷分散装置10が設定される段数は、3以上の任意の数である。負荷分散装置10が4段以上接続されている場合、端末2と直接通信を行う負荷分散装置10は、負荷分散装置10aと同様の処理を行う。また、サーバ5と直接通信を行う負荷分散装置10は、図16を用いて説明した負荷分散装置10dと同様の処理を行う。端末2とサーバ5のいずれとも直接通信を行わない負荷分散装置10の処理は、図16を用いて説明した負荷分散装置10bの処理と同様である。
図17は、負荷分散装置10の処理の例を説明するフローチャートである。図17は、通知装置と受信装置のいずれとしても動作しない負荷分散装置10が、受信装置から転送パケット84を受信したときに行う処理の例を示している。なお、通知装置と受信装置のいずれとしても動作しない負荷分散装置10は、ネットワーク中で、最も前段の負荷分散装置10ではなく、さらに、最も後段の負荷分散装置10でもない負荷分散装置10である。このような負荷分散装置10を、中段の負荷分散装置10と記載することもある。図17のステップS61〜S68は、図12を参照しながら説明したステップS21〜S28と同様である。しかし、中段の負荷分散装置10装置は、転送パケット84を要求パケット83に変換しないで、転送先に転送する(ステップS69、S70)。また、ステップS67の処理が終わったパケットも、転送先に転送される(ステップS70)。
図18は、負荷分散装置10の処理の例を説明するフローチャートである。図18は、通知装置と受信装置のいずれとしても動作しない負荷分散装置10が、通知装置から通知パケット82を受信したときに行う処理の例を示している。図18のステップS81〜SS84、S86、S87は、図14を参照しながら説明したステップS51〜S54、S57、S58と同様である。ステップS84の処理の後、中段の負荷分散装置10は、通知パケット82を応答パケット81に変換しないで、転送先に転送する(ステップS85、S87)。
なお、サーバ5と直接通信を行う負荷分散装置10の処理と、端末2と直接通信を行う負荷分散装置10の処理を表すフローチャートは、第1の実施形態と同様に表せる。
このように、付加情報を含む応答パケット81は、応答パケット81を受信した負荷分散装置10である通知装置により、通知パケット82に変換される。このため、通知装置よりも前段側の負荷分散装置10は、通知パケット82のヘッダを用いて付加情報、処理サーバ、次に送信される要求パケット83の転送先の組合せを取得する。さらに、付加情報を含む要求パケット83は、要求パケット83を受信した負荷分散装置10である受信装置によって、転送パケット84に変換される。このため、受信装置よりも後段に設置されている負荷分散装置10は、転送パケット84のヘッダから、処理サーバを特定し、転送先を決定できる。このため、応答パケット81や要求パケット83のデータの解析が行われる回数は、全ての負荷分散装置10がデータの処理を行う場合の回数を負荷分散装置10の段数の数で割った回数となる。例えば、図16の例では、応答パケット81や要求パケット83のデータの解析が行われる回数は、全ての負荷分散装置10がデータの処理を行う場合の3分の1である。
<第3の実施形態>
図19は、アプリケーションレベルの故障監視を行う場合のパケットの送受信の例を示すシーケンス図である。第3の実施形態では、アプリケーションレベルの故障監視を行うことにより、接続テーブル52が生成される場合の例を説明する。なお、図19は、図6と比較しやすくするために、負荷分散装置10aと負荷分散装置10bの間での故障監視パケットを用いた通信と、負荷分散装置10bとサーバ5bの間での通信を例として示している。
(f1)負荷分散装置10aは、通信を開始するための制御パケットを負荷分散装置10bとの間で送受信する。このときに生成される制御パケットのIPヘッダ内のオプション部には、情報は記録されていないものとする。負荷分散装置10aと負荷分散装置10bは、TCPのプロトコルに基づいて、コネクションを確立する。
(f2)故障監視部11aは、負荷分散装置10bと負荷分散装置10aの間のコネクションが確立すると、HTTPリクエストを、故障監視パケットとして、負荷分散装置10bに送信する。なお、図19の例では、HTTPリクエストのメソッドとしてHEADが使用されている。故障監視部11aは、負荷分散装置10aがIPヘッダのオプション部を処理できることを通知するために、故障監視パケットとして送信するHTTPリクエスト中のメッセージヘッダに、送信元のIPアドレスを通知するための情報を含める。送信元のIPアドレスを通知するための情報は、IPアドレスを通知するために使用するヘッダ名と、送信元のIPアドレスが対になっているものとする。例えば、負荷分散装置10aのIPアドレスがXXX.XXX.XXX.XXXである場合、負荷分散装置10aから負荷分散装置10bに送信されるHTTPリクエストでは「送信元IPアドレス通知:XXX.XXX.XXX.XXX」のように表記できる。
(f3)負荷分散装置10bは、負荷分散装置10aから、故障監視パケットを受信する。故障監視部11bは、故障監視パケットに送信元のIPアドレスを通知するための情報が含まれているかを判定する。故障監視パケットの送信元のIPアドレスが故障監視パケットのメッセージヘッダを用いて通知されている場合、故障監視部11bは、故障監視パケットで通知されたIPアドレスが割り当てられた負荷分散装置10の後段に位置すると判定する。図19の例では、故障監視部11bは、負荷分散装置10aが負荷分散装置10bの前段にあることを、接続テーブル52bに記録する。
(g1)負荷分散装置10bは、負荷分散装置10aに応答する内容を決定するために、データの転送先となるサーバ5bとの間の故障監視を行う。故障監視部11bは、サーバ5bとの間でTCPプロトコルを用いてコネクションを確立する。
(g2)故障監視部11bは、サーバ5bとの間にコネクションを確立すると、手順(f2)の故障監視部11aと同様の手順で生成した故障監視パケットとなるHTTPリクエストをサーバ5bに送信する。このとき、故障監視部11bは、負荷分散装置10bがIPヘッダ中のオプション部を処理できることを通知するために、送信元アドレスを通知するヘッダを、HTTPリクエストに含めておく。
(g3)サーバ5bは、正常に動作している場合、負荷分散装置10bから受信した故障監視パケットに対して確認応答を送信する。図19の例では、確認応答は、サーバ5bが負荷分散装置10bに「200 OK」を通知するためのHTTPレスポンスである。ここで、サーバ5bは、IPヘッダ中のオプション部を処理しないので、送信元アドレスを通知する情報はHTTPレスポンスに含まれていない。
(g4)負荷分散装置10bは、サーバ5bからHTTPレスポンスを受信する。すると、故障監視部11bは、サーバ5bを、負荷分散装置10bの後段の装置として接続テーブル52bに記録する。このとき、サーバ5bから送信されてきたHTTPレスポンス中に、送信元のIPアドレスを通知する情報が含まれていないので、故障監視部11bは、サーバ5bをIPヘッダのオプション部を処理しない装置として記録する。
(f4)故障監視部11bは、サーバ5bが正常に動作していると判定すると、負荷分散装置10aに対して、負荷分散装置10bが正常に動作していることを通知するための確認応答を送信する。このとき、故障監視部11bは、負荷分散装置10bがIPヘッダのオプション部を処理できることを負荷分散装置10aに通知するために、負荷分散装置10bに割り当てられたIPアドレスを、HTTPレスポンスのメッセージヘッダに含める。
(f5)負荷分散装置10aは、負荷分散装置10bからHTTPレスポンスを受信する。すると、故障監視部11aは、負荷分散装置10bの情報を、負荷分散装置10aの後段の装置として接続テーブル52aに記録する。なお、故障監視部11aは、メッセージヘッダ中に負荷分散装置10bのIPアドレスが含まれていることから、負荷分散装置10bをIPヘッダのオプション部を処理する装置として記録する。
(f6)故障監視を行うための通信が終了すると、負荷分散装置10aと10bの間のコネクションと、負荷分散装置10bとサーバ5bの間のコネクションが終了される。
第3の実施形態では、故障監視部11を用いて行われる故障監視を、アプリケーションレベルの故障監視とすることができるので、コネクションが正常に確立できてもアプリケーションが正常に応答しない場合も検出できる。端末2とサーバ5の間での通信に際しては、応答パケットや要求パケットは、第3の実施形態においても第1の実施形態と同様に扱われる。このため、第3の実施形態でも、端末2とサーバ5の間の通信が効率的に行われる。
<第4の実施形態>
第4の実施形態では、付加情報が長いため、ヘッダのオプション部に入りきらない場合に、付加情報を受信した通知装置と受信装置が、付加情報に対応する情報(索引値)を、他の負荷分散装置10に通知する場合について説明する。
図20は、第4の実施形態で使用されるパケットに含まれるIPヘッダのフォーマットの例である。図20に示すIPヘッダは、通知パケット82、および、転送パケット84で使用される。図20に示すIPヘッダのオプション部には、付加情報の代わりに、索引値が含まれている。通知パケット82中のIPヘッダのオプション部には、通知パケット82の転送元の負荷分散装置10で生成された索引値が含まれている。一方、転送パケット84では、転送パケット84の転送処理を行う負荷分散装置10が、転送先の負荷分散装置10から通知された索引値が含まれている。図20に示すIPヘッダ中の索引値以外の情報要素は、図8(a)、図8(b)を参照しながら説明した情報要素と同様である。
図21は、索引値を用いたときの通知パケット82の転送処理の例を示す。手順(41)と(42)は、図16を参照しながら説明した処理と同様である。
(61)負荷分散装置10dは、応答パケット81hをサーバ5gから受信しているので、応答パケット81hの処理においては、通知装置として動作する。そこで、負荷分散装置10dは、応答パケット81hのデータから付加情報を取得し、付加情報に対応する索引値Aを生成する。索引値の生成方法は、付加情報を一意に特定できる任意の方法である。以下、索引値は、負荷分散装置10d中の記憶部50dの中で、付加情報か通知された索引値の書き込みに使用したアドレスの値である場合を例として説明する。この場合、振り分けリスト管理部42dが振り分けリスト51dを生成するときに、索引値を求め、情報付加部43dに出力する。振り分けリスト管理部42dは、付加情報と処理サーバがサーバ5gであることを、索引値Aに対応付けて、振り分けリスト51dに記録する。この例では、索引値Aは、負荷分散装置10dに備えられたメモリ中で、振り分けリスト管理部42dが処理サーバ5gの識別情報の書き込みに使用したアドレスであるものとする。
(62)情報付加部43dは、索引値Aと処理サーバ5gの識別情報をヘッダに含めることにより、応答パケット81hを通知パケット82hに変換する。さらに、書き換え部24dは、送信元の情報を負荷分散装置10dの情報に変更する。書き換え部24dでの処理が終わると、送信部25dは、通知パケット82hを前段の負荷分散装置10bに転送する。
(63)負荷分散装置10bの取得部31bは、通知パケット82hのヘッダから、索引値Aと処理サーバ5gの識別情報を取得する。振り分けリスト管理部42bは、索引値Bを生成し、索引値Aと処理サーバ5gの識別情報を、索引値Bに対応付けて振り分けリスト51bに記憶する。ここで、索引値Bは、索引値Aの書き込みに使用したアドレスの値であるものとする。振り分けリスト管理部42bは、索引値Bを情報付加部43bに出力する。
(64)情報付加部43bは、通知パケット82hに含まれている索引値Aを、負荷分散装置10bで生成された索引値(索引値B)に変更する。さらに、書き換え部24bは、通知パケット82hの送信元を負荷分散装置10bでの振り分けに使用している情報に変更する。書き換え部24bでの処理により得られた通知パケット82jは、送信部25bにより、負荷分散装置10aに転送される。
(65)負荷分散装置10aは、負荷分散装置10aよりも前段の負荷分散装置10が設置されていないことを認識している。このため、後段側の負荷分散装置10bから通知パケット82jを受信すると、パケットバッファ22aは、通知パケット82jのバッファリングを行う。並行して、取得部31aは、通知パケット82jのヘッダから、索引値Bと識別情報を取得する。抽出部32aは、通知パケット82j中のデータから、付加情報を取得する。
(66)振り分けリスト管理部42aは、付加情報に対応付けて、索引値B、索引値Bを通知してきたノードが負荷分散装置10bであること、および、処理サーバがサーバ5gであることを、振り分けリスト51aに記録する。
(67)書き換え部24aは、ヘッダから索引値B、サーバ5gの識別情報などを削除し、通知パケット82jを応答パケット81jに変換する。このとき、応答パケット81jの送信元は、負荷分散装置10aが、パケットの振り分けに使用するIPアドレスとポート番号に設定されているものとする。端末2は、応答パケット81jを受信すると、負荷分散装置10aが、パケットの振り分けに使用するIPアドレスとポート番号に対応付けて、付加情報を記憶する。
図22は、転送パケット84について行われる転送処理の例を示す。端末2から要求パケット83jが送信されるときの処理は、図16を参照しながら説明した手順(47)と同様である。
(71)負荷分散装置10aは、要求パケット83jを端末2から受信しているので、要求パケット83jの処理においては、受信装置として動作する。そこで、抽出部32aは、要求パケット83j中のデータを解析して、付加情報を取得する。
(72)検索部41aは、抽出部32aから通知された付加情報に対応付けられた識別情報を、振り分けリスト51aから特定する。検索部41aは、得られた識別情報を変換部44aに出力する。
(73)変換部44aは、入力された識別情報を用いて、要求パケット83jを転送パケット84jに変換し、負荷分散装置10bに転送する。
(74)負荷分散装置10bの取得部31bは、転送パケット84jのヘッダから、識別情報を取得し、検索部41bに出力する。検索部41bは、識別情報に含まれているIPヘッダとポート番号の組み合わせに対応付けられた負荷分散装置10を、振り分けリスト51bを用いて検索する。ここでは、手順(63)によりサーバ5gの識別情報と負荷分散装置10dの情報が対応付けられている。そこで、書き換え部24bは、検索部41bからの要求に応じて、転送パケット84jの宛先を負荷分散装置10dに変更し、送信部25bを介して送信する。
(75)負荷分散装置10dの取得部31dは、転送パケット84jに含まれている識別情報を用いて、転送パケット84jに含まれているデータがサーバ5gで処理されることを特定する。そこで、書き換え部24dは、転送パケット84jのヘッダから識別情報などを削除することにより、転送パケット84jを要求パケット83kに変換する。書き換え部24dは、要求パケット83kを、送信部25dを介してサーバ5gに送信する。
図23は、負荷分散装置10の処理の例を説明するフローチャートである。図23は、通知装置として動作する負荷分散装置10がサーバ5から応答パケット81を受信したときの処理の例を示す。ステップS91〜S94は、図13を参照しながら説明したステップS41〜S44と同様である。その後、振り分けリスト管理部42は、付加情報に対応する索引値を生成し、付加情報に対応付けて振り分けリスト51に記憶する(ステップS95)。情報付加部43は、応答パケット81のヘッダに、処理サーバの情報と索引値を含めることにより、応答パケット81を通知パケット82に変換する(ステップS96)。ステップS97〜S99の処理は、図13を参照しながら説明したステップS46〜S48と同様である。
図24は、負荷分散装置10の処理の例を説明するフローチャートである。図24は、受信装置として動作する負荷分散装置10以外の負荷分散装置10が、通知パケット82を受信した負荷分散装置10の処理の例を示す。ステップS101、S102は、図18を参照しながら説明したステップS81、S82と同様である。取得部31はヘッダから処理サーバの識別情報と索引値を取得する(ステップS103)。振り分けリスト管理部42は、取得部31が取得した索引値を記録するアドレスの値を取得し、得られた値を通知用の索引値とする(ステップS104)。振り分けリスト管理部42は、通知用の索引値に対応付けて、処理サーバの識別情報、通知パケット82の転送元、通知パケット82の転送元から通知された索引値を、振り分けリスト51に記憶する(ステップS105)。書き換え部24は、通知パケット82中の索引値を、自ノードが通知用に生成した索引値に変更する(ステップS106)。ステップS107〜S109は、図18のステップS85〜S87と同様である。
図25は、負荷分散装置10の処理の例を説明するフローチャートである。図25は、受信装置として動作する負荷分散装置10が、通知パケット82を受信した場合の処理の例を示す。ステップS111〜S113は、図24のステップS101〜S103と同様である。書き換え部24は、ヘッダから識別情報などを除去することにより、通知パケット82を応答パケット81に変換する(ステップS114)。さらに、パケットバッファ22で変換後の応答パケット81をバッファリングし、抽出部32がデータから付加情報を取得する(ステップS115、S116)。振り分けリスト管理部42は、付加情報に対応付けて、ステップS113で取得した索引値、通知パケット82を転送してきた負荷分散装置10の情報、および、処理サーバの識別情報を、振り分けリスト51に記録する(ステップS117)。ステップS118〜S120は、図24のステップS107〜S109と同様である。
なお、要求パケットが端末2からサーバ5に送信されるときの処理は、図11、図12、図17と同様である。
<その他>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
例えば、第4の実施形態において、送受信される転送パケット84のヘッダに付加情報と索引値が含まれていてもよい。図26は、索引値を用いたときの転送パケット84の転送処理の例を示す。図26中の手順(47)と手順(71)は、図22と同様である。手順(81)において、検索部41aは、抽出部32aから通知された付加情報に対応付けられた識別情報と索引値Bを、振り分けリスト51aから特定する。検索部41aは、得られた識別情報を変換部44aに出力する。手順(82)では、変換部44aは、識別情報と索引値を要求パケット83のヘッダに含めることにより、要求パケット83jを転送パケット84mに変換し、負荷分散装置10bに転送する。手順(83)で負荷分散装置10bの取得部31bは、転送パケット84mのヘッダから索引値Bを取得し、検索部41bに出力する。検索部41bは、検索値Bに対応付けられている識別情報、検索値A、転送先の情報を検索する。ここで、検索値Bは、メモリ中で、検索値Aの書き込みに使用したアドレスを表す値である。このため、検索部41bは、容易に、検索値Aと識別情報を特定することができる。手順(84)において、変換部44bは、転送パケット84mのアドレス中の索引値Bを、索引値Aに変更することにより、転送パケット84nを生成し、負荷分散装置10dに送信する。手順(85)では、負荷分散装置10dの取得部31dは、索引値Aを転送パケット84nのヘッダから取得し、検索部41dに通知する。検索値Aは、負荷分散装置10dに備えられたメモリ中で、処理サーバ5gの識別情報の書き込みに使用したアドレスを表す値である。このため、検索部41dは、検索値Aの値のアドレスにアクセスすることにより識別情報を特定できる。手順(86)において、書き換え部24dは、転送パケット84nを要求パケット83nに変換した後で、要求パケット83nをサーバ5gに転送する。
図26に示す方法で転送パケット84を転送すると、図22に示す方法に比べて、各負荷分散装置10での処理負荷は重くなる。しかし、各負荷分散装置10において、記憶している識別子を転送パケット84か要求パケット83に含めるので、通知パケット82の転送の際に通知パケット82のヘッダ中の識別情報が改変されたとしても、処理サーバを正しく特定できる可能性がある。
上記の説明で記載したテーブルやパケットのフォーマットは一例であり、実装に応じて変形されうる。例えば、転送パケット84のIPヘッダにも、通知パケット82と同様に、付加情報が含まれていても良い。転送パケット84に付加情報が含められる場合、図8(b)のパディングの代わりに付加情報がIPヘッダのオプション部に記録される。
上記の説明では、IPヘッダのオプション部に付加情報等が記録される場合を例として説明したが、付加情報や識別情報の通知にTCPヘッダのオプション部が使用されても良い。この場合、IPヘッダは規定どおりに使用される。取得部31は、TCPヘッダをから情報を取得し、TCPヘッダから情報が取得できない場合、パケットバッファ22と抽出部32に処理を要求する。図27は、TCPヘッダの例を示す。TCPヘッダは、送信元ポート番号、宛先ポート番号、シーケンス番号、ACK番号、データオフセット、リザーブ領域、制御ビット、ウィンドウサイズ、チェックサム、緊急ポインタ、オプション部を含む。オプション部以外の領域はTCPの規定に沿って使用される。
図27(a)は、障害監視パケットに含まれるTCPヘッダの例を示す。障害監視パケットのTCPヘッダのオプション部は、オプションタイプ、オプション長、送信元IPアドレス、パディングを保持する。図27(b)は、第1〜第3の実施形態で通知パケット82や転送パケット84のTCPヘッダのフォーマットの例を示す。オプション部に含まれる情報は、図8を参照しながら説明したIPヘッダのオプション部と同様である。図27(c)は、第4の実施形態で通知パケット82や転送パケット84のTCPヘッダのフォーマットの例を示す。オプション部に含まれる情報は、図20を参照しながら説明したIPヘッダのオプション部と同様である。