(57)【要約】【課題】一意性を保証しつつ、クライアントへの応答性能の劣化を防止することを課題とする。【解決手段】負荷分散装置は、クライアント装置から送信されたメッセージが通過する経路を識別する経路制御識別子と、経路制御識別子を生成した中継装置を特定する中継装置情報と対応付けた負荷分散装置用転送ルールを記憶する。そして、負荷分散装置は、クライアント装置からメッセージを受信した場合に、当該メッセージに経路制御識別子が含まれているか否かを判定する。負荷分散装置は、経路制御識別子が含まれていると判定された場合に、当該経路制御識別子と対応付けられた中継装置情報を負荷分散装置用転送ルールから特定し、特定した中継装置情報によって特定される中継装置にメッセージを振分ける。また、負荷分散装置は、経路制御識別子が含まれていないと判定された場合に、所定の条件に従って特定した中継装置にメッセージを振分ける。【選択図】図２０
2011041006.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置から送信されたメッセージが通過する経路を識別する経路制御識別子と、前記経路制御識別子を生成した中継装置を特定する中継装置情報と対応付けた負荷分散装置用転送ルールを記憶するルール記憶部と、
前記クライアント装置からメッセージを受信した場合に、当該メッセージに経路制御識別子が含まれているか否かを判定する識別子判定部と、
前記識別子判定部によって経路制御識別子が含まれていると判定された場合に、当該経路制御識別子と対応付けられた中継装置情報を前記ルール記憶部に記憶される負荷分散装置用転送ルールから特定し、特定した中継装置情報によって特定される中継装置に前記メッセージを振分ける第一振分部と、
前記識別子判定部によって経路制御識別子が含まれていないと判定された場合に、所定の条件に従って特定した中継装置に前記メッセージを振分ける第二振分部と
を有することを特徴とする負荷分散装置。
【請求項２】
前記第二振分部によってメッセージが振分けられた後に、前記メッセージの応答として前記経路制御識別子を含んだ応答メッセージを中継装置から受信する応答受信部と、
前記応答受信部によって受信された応答メッセージを前記クライアント装置に転送するとともに、前記応答メッセージに含まれる経路制御識別子と、当該応答メッセージから取得した中継装置情報とを対応付けた負荷分散装置用転送ルールを生成して、前記ルール記憶部に格納するルール学習部とをさらに有することを特徴とする請求項１に記載の負荷分散装置。
【請求項３】
前記ルール学習部は、前記クライアント装置から送信されたメッセージが中継装置を介して振分けられるサーバ装置とクライアント装置との間のセッションを識別するセッション識別子と、前記メッセージが振り分けられたサーバ装置を特定するサーバ情報とを対応付けた中継装置用転送ルールを作成する管理装置から、前記負荷分散装置用転送ルールを受信して前記ルール記憶部に格納することを特徴とする請求項１に記載の負荷分散装置。
【請求項４】
前記ルール学習部は、前記管理装置が前記中継装置から受信した経路制御識別子と当該中継装置を特定する中継装置情報とを用いて作成した負荷分散装置用転送ルールを、前記管理装置から受信して前記ルール記憶部に格納することを特徴とする請求項３に記載の負荷分散装置。
【請求項５】
前記ルール学習部は、前記管理装置が所定の条件に従って特定した中継装置を特定する中継装置情報と当該中継装置を介する経路を特定する経路制御識別子とを用いて作成した負荷分散装置用転送ルールを、前記管理装置から受信して前記ルール記憶部に格納することを特徴とする請求項３に記載の負荷分散装置。
【請求項６】
クライアント装置から送信されたメッセージが通過する経路を識別する経路制御識別子が、クライアント装置から受信されたメッセージに含まれているか否かを判定する識別子判定ステップと、
前記識別子判定ステップによって経路制御識別子が含まれていると判定された場合に、前記経路制御識別子と前記経路制御識別子を生成した中継装置を特定する中継装置情報と対応付けた負荷分散装置用転送ルールを記憶するルール記憶部から、前記経路制御識別子と対応付けられた中継装置情報を特定し、特定した中継装置情報によって特定される中継装置に前記メッセージを振分ける第一振分ステップと、
前記識別子判定ステップによって経路制御識別子が含まれていないと判定された場合に、所定の条件に従って特定した中継装置に前記メッセージを振分ける第二振分ステップと
を含んだことを特徴とする負荷分散方法。
【請求項７】
クライアント装置から送信されたメッセージが通過する経路を識別する経路制御識別子が、クライアント装置から受信されたメッセージに含まれているか否かを判定する識別子判定手順と、
前記識別子判定手順によって経路制御識別子が含まれていると判定された場合に、前記経路制御識別子と前記経路制御識別子を生成した中継装置を特定する中継装置情報と対応付けた負荷分散装置用転送ルールを記憶するルール記憶部から、前記経路制御識別子と対応付けられた中継装置情報を特定し、特定した中継装置情報によって特定される中継装置に前記メッセージを振分ける第一振分手順と、
前記識別子判定手順によって経路制御識別子が含まれていないと判定された場合に、所定の条件に従って特定した中継装置に前記メッセージを振分ける第二振分手順と
をコンピュータに実行させることを特徴とする負荷分散プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散装置、負荷分散方法および負荷分散プログラムに関する。
【背景技術】
【０００２】
従来より、クライアント端末に対して同じサービスを提供する複数のサーバ間の負荷がなるべく均等になるように、処理を分散させる負荷分散装置が利用されている。負荷分散装置は、ラウンドロビンなどの自律振分アルゴリズムに従って、クライアント端末から受け付けたメッセージリクエストなどのアクセスを各サーバに振分ける。
【０００３】
そして、負荷分散装置は、商品購入サイトなどセッションを維持する必要があるＨＴＴＰ（HyperText  Transfer  Protocol）などを利用したＷｅｂサーバに対して振り分ける場合には、一意性保証を行う。一意性保証とは、同じセッションに属するリクエストメッセージを、同じサーバに振分けることを保証することである。
【０００４】
ここで、図５１を用いて、ＨＴＴＰを例にした負荷分散装置の一意性保証について説明する。負荷分散装置は、クライアントから初回のＨＴＴＰメッセージを受け付けると、振り分け先のサーバを決定する。HTTPメッセージを受信したサーバはセッションを識別するセッション識別子を生成する。そして、負荷分散装置は、決定した振り分け先とサーバで生成されたセッション識別子とを対応付けて転送ルールテーブルとして格納する。
【０００５】
その後、負荷分散装置は、セッション識別子が含まれるリクエストをクライアントから受信すると（図５１の（１）参照）、セッション識別子に基づいて転送ルールテーブルから振り分け先を特定し、当該リクエストを振り分け先に送信する（図５１の（２）参照）。そして、負荷分散装置は、当該リクエストに対する応答を振り分け先のサーバから受信すると（図５１の（３）参照）、リクエスト要求元のクライアントに当該応答を送信する（図５１の（４）参照）。このように、セッションが継続する間は、同じクライアントからのリクエストは、同じサーバに振分けられる。
【０００６】
そして、近年のサービス指向アーキテクチャ（ＳＯＡ：Service-Oriented  Architecture）においては、高度なＷｅｂサービス機能をＷｅｂインタフェースで実現するために、ＳＯＡＰ（Simple  Object  Access  Protocol）が用いられている。ＳＯＡＰのメッセージは、図５２に示すように、レイヤ３プロトコルヘッダと、レイヤ４プロトコルヘッダと、レイヤ７プロトコルヘッダと、メッセージコンテンツ部とを有している。レイヤ３プロトコルヘッダには、プロトコル番号などが記載され、レイヤ４プロトコルヘッダには、ポート番号などが記載され、レイヤ７プロトコルヘッダには、Ｃｏｏｋｉｅなどが記載される。また、メッセージコンテンツ部には、ＳＯＡＰのヘッダ・ボディであり、ＳＯＡＰの機能を提供する制御情報が記載されるため、一意性保証を行うためのセッション識別子が記載される場合もある。
【０００７】
一般的な負荷分散装置は、上述したレイヤ３プロトコルヘッダ、レイヤ４プロトコルヘッダ、レイヤ７プロトコルヘッダを参照して負荷分散を行うが、ＳＯＡＰを用いる場合には、メッセージコンテンツを参照できる装置を用いる必要がある。そこで、最近では、負荷分散装置と振り分け先となるサーバとの間に、メッセージコンテンツ部を参照して、サーバに振り分けを行うメッセージ中継装置が用いるシステムが利用されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−４０７６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、メッセージコンテンツ部のフォーマットがアプリケーションに依存し、メッセージごとに異なることから、メッセージを受信するたびにメッセージコンテンツ部の中身まで参照すると、処理負荷が非常に高くなる。そのため、クライアントへの応答性能が劣化するという課題があった。
【００１０】
上述したように、メッセージ中継装置がシステム上のボトルネックとなる可能性が高い。これを解消する手法として、メッセージ中継装置を並列化して負荷分散する手法も考えられ、この手法であっても一意性保証を行う必要がある。具体的に例を挙げると、図５３に示すように、クライアント端末と負荷分散装置が接続され、負荷分散装置と複数のサーバとの間に複数のメッセージ中継装置が接続されるシステムが考えられる。
【００１１】
図５３に示すクライアント端末は、サーバが提供するサービスを利用する端末であり、各サーバは、セッション情報など利用者固有のステートを生成し、ステートを特定する識別子をメッセージコンテンツ部に含めて送受信する。負荷分散装置は、自律振分アルゴリズムに従って、クライアント端末から受信したメッセージをメッセージ中継装置に振分ける。管理装置は、サーバからセッション識別子と当該セッション識別子を保持するサーバのＩＰアドレスとを収集し、一意性を保証するための情報であるこれらを対応付けた転送ルールを生成して、各メッセージ中継装置に配布する。各メッセージ中継装置は、負荷分散装置から送信されたメッセージのメッセージコンテンツ部からセッション識別子を参照し、転送ルールに基づいて、該当のサーバにメッセージを中継する。また、各メッセージ中継装置は、転送ルールがない場合には、自律振分アルゴリズムに従って、メッセージを各サーバに振分ける。
【００１２】
次に、図５４を用いて、図５３に示したシステムの処理シーケンスを説明する。図５４に示すように、クライアント端末は、負荷分散装置に対してリクエストを発行し（ステップＳ１）、負荷分散装置は、自律振分アルゴリズムに従って、いずれかのメッセージ中継装置にリクエストを振分ける（ステップＳ２）。続いて、リクエストを受信したメッセージ中継装置は、自律振分アルゴリズムに従って、いずれかのサーバにリクエストを振分ける（ステップＳ３）。リクエストを受信したサーバは、セッション情報（セッション識別子）を生成して管理装置に送信する（ステップＳ４とステップＳ５）。
【００１３】
管理装置は、受信したセッション識別子と受信したサーバのＩＰアドレスとを対応付けた一意性保証設定（転送ルール）を生成し、全てのメッセージ中継装置に配布する（ステップＳ６）。そして、管理装置は、セッション識別子を生成したサーバに対して、全てのメッセージ中継装置に一意性保証設定が設定されたことを通知し（ステップＳ７）、設定完了通知を受けたサーバは、クライアント装置に応答する（ステップＳ８）。
【００１４】
その後、同一セッションにおいて、クライアント装置が後続リクエストを負荷分散装置に発行すると（ステップＳ９）、負荷分散装置は、自律振分アルゴリズムに従って、いずれかのメッセージ中継装置にリクエストを振分ける（ステップＳ１０）。続いて、リクエストを受信したメッセージ中継装置は、保持する一意性保証設定（転送ルール）に基づいて、該当するサーバにリクエストを中継する（ステップＳ１１）。このようにして、メッセージ中継装置を並列化して負荷分散しつつ、一意性保証を行うこともできる。
【００１５】
しかしながら、この手法の場合、管理装置は、すべてのメッセージ中継装置へ転送ルールを配布しなければならない。さらに、メッセージを確実に適切なサーバへ届けるためには、すべてのメッセージ中継装置への設定が完了したことを確認した後に、処理を継続することが必要とされる。したがって、転送ルールを設定する回数が多く、また、全てのメッセージ中継装置が設定を完了するまで待機状態となり、クライアントへの応答性能が劣化する。
【００１６】
開示の技術は、上記に鑑みてなされたものであって、一意性を保証しつつ、クライアントへの応答性能の劣化を防止することが可能である負荷分散装置、負荷分散方法および負荷分散プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
本願の開示する負荷分散装置は、クライアント装置から送信されたメッセージが通過する経路を識別する経路制御識別子と、前記経路制御識別子を生成した中継装置を特定する中継装置情報と対応付けた負荷分散装置用転送ルールを記憶するルール記憶部と、前記クライアント装置からメッセージを受信した場合に、当該メッセージに経路制御識別子が含まれているか否かを判定する識別子判定部と、前記識別子判定部によって経路制御識別子が含まれていると判定された場合に、当該経路制御識別子と対応付けられた中継装置情報を前記ルール記憶部に記憶される負荷分散装置用転送ルールから特定し、特定した中継装置情報によって特定される中継装置に前記メッセージを振分ける第一振分部と、前記識別子判定部によって経路制御識別子が含まれていないと判定された場合に、所定の条件に従って特定した中継装置に前記メッセージを振分ける第二振分部とを有する。
【発明の効果】
【００１８】
本願の開示する負荷分散装置、負荷分散方法および負荷分散プログラムの一つの態様によれば、一意性を保証しつつ、クライアントへの応答性能の劣化を防止することが可能であるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】図１は、実施例１にかかる負荷分散装置を含むシステムの全体構成を示す図である。
【図２−１】図２−１は、クライアント装置が保持するＡＲＰテーブルを示す図である。
【図２−２】図２−２は、クライアント装置のネットワーク構成を示す図である。
【図３−１】図３−１は、負荷分散装置が保持するＡＲＰテーブルを示す図である。
【図３−２】図３−２は、負荷分散装置のネットワーク構成を示す図である。
【図４−１】図４−１は、中継装置が保持するＡＲＰテーブルを示す図である。
【図４−２】図４−２は、中継装置のネットワーク構成を示す図である。
【図５】図５は、中継装置が保持するコネクションテーブルを保持する図である。
【図６−１】図６−１は、各サーバ装置が保持するＡＲＰテーブルを示す図である。
【図６−２】図６−２は、各サーバ装置のネットワーク構成を示す図である。
【図７】図７は、クライアント装置の構成を示すブロック図である。
【図８】図８は、Ｃｏｏｋｉｅテーブル１２ａに保持される情報の例を示す図である。
【図９】図９は、アプリセッション識別子テーブル１２ｂに保持される情報の例を示す図である。
【図１０】図１０は、負荷分散装置の構成を示すブロック図である。
【図１１】図１１は、中継装置リストテーブル２２ａに記憶される情報の例を示す図である。
【図１２】図１２は、転送ルールテーブル２２ｂに記憶される情報の例を示す図である。
【図１３】図１３は、中継装置の構成を示すブロック図である。
【図１４】図１４は、転送ルールテーブル３２ａに記憶される情報の例を示す図である。
【図１５】図１５は、サーバリストテーブル３２ｂに記憶される情報の例を示す図である。
【図１６】図１６は、コネクションテーブル３２ｃに記憶される情報の例を示す図である。
【図１７】図１７は、サーバ装置の構成を示すブロック図である。
【図１８】図１８は、セッションテーブル４２ａに記憶される情報の例を示す図である。
【図１９】図１９は、管理装置の構成を示すブロック図である。
【図２０】図２０は、実施例１にかかる負荷分散装置を含むシステムの処理シーケンスを示す図である。
【図２１】図２１は、各装置の様々なシチュエーションを説明する図である。
【図２２】図２２は、リクエスト送信時のクライアント動作を示すフローチャートである。
【図２３】図２３は、セッション確立までのメッセージ例を示す図である。
【図２４】図２４は、セッション確立後のメッセージ例を示す図である。
【図２５】図２５は、リクエスト受信時の負荷分散装置動作を示すフローチャートである。
【図２６】図２６は、セッション確立後に中継装置へ送信されるメッセージ例を示す図である。
【図２７】図２７は、セッション確立前に中継装置へ送信されるメッセージ例を示す図である。
【図２８】図２８は、リクエスト受信時の中継装置動作を示すフローチャートである。
【図２９】図２９は、セッション確立後にサーバ装置へ送信されるメッセージ例を示す図である。
【図３０】図３０は、セッション確立前にサーバ装置へ送信されるメッセージ例を示す図である。
【図３１】図３１は、リクエスト受信時のサーバ装置動作を示すフローチャートである。
【図３２】図３２は、セッション確立後にサーバ装置から中継装置へ送信されるメッセージ例を示す図である。
【図３３】図３３は、セッション識別子受信時の管理装置動作を示すフローチャートである。
【図３４】図３４は、管理装置５０が受信するセッション情報の例を示す図である。
【図３５】図３５は、管理装置５０が作成する転送ルールの例を示す図である。
【図３６】図３６は、管理装置５０が配布する転送ルールの例を示す図である。
【図３７】図３７は、応答受信時の中継装置動作を示すフローチャートである。
【図３８】図３８は、セッション確立後に経路制御識別子が埋め込まれたメッセージ例を示す図である。
【図３９】図３９は、セッション確立後に中継装置から負荷分散装置へ送信されるメッセージ例を示す図である。
【図４０】図４０は、応答受信時の負荷分散装置動作を示すフローチャートである。
【図４１】図４１は、セッション確立後に負荷分散装置からクライアント装置へ送信されるメッセージ例を示す図である。
【図４２】図４２は、応答受信時のクライアント動作を示すフローチャートである。
【図４３】図４３は、ルール設定時の中継装置動作を示すフローチャートである。
【図４４】図４４は、実施例２に係る中継装置の構成を示すブロック図である。
【図４５】図４５は、実施例２に係る管理装置の構成を示すブロック図である。
【図４６】図４６は、実施例２に係るシステムにおける処理シーケンスを示す図である。
【図４７】図４７は、実施例３に係る中継装置の構成を示すブロック図である。
【図４８】図４８は、セッション対応テーブル３２ｄに記憶される情報の例を示す図である。
【図４９】図４９は、実施例３に係る管理装置の構成を示すブロック図である。
【図５０】図５０は、実施例３に係るシステムにおける処理シーケンスを示す図である。
【図５１】図５１は、サーバ負荷分散時の一意性保証を説明する図である。
【図５２】図５２は、ＳＯＡＰメッセージの一例を示す図である。
【図５３】図５３は、従来技術を説明する図である。
【図５４】図５４は、従来技術の処理シーケンスを説明する図である。
【発明を実施するための形態】
【００２０】
以下に、本願の開示する負荷分散装置、負荷分散方法および負荷分散プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００２１】
［全体構成］
まず、図１を用いて、開示する負荷分散装置を含むシステムの全体構成について説明する。図１は、実施例１にかかる負荷分散装置を含むシステムの全体構成を示す図である。
【００２２】
図１に示すように、このシステムは、クライアント装置、負荷分散装置、複数の中継装置、複数のサーバ装置、管理装置を有している。なお、図示した装置の台数などは、図示したものに限定されるものではない。
【００２３】
クライアント装置は、サーバ装置が提供するＷｅｂサービスなどを利用する端末装置である。そして、クライアント装置は、図２−１に示すように、負荷分散装置のＩＰ（Internet  Protocol）アドレスを示す「ＩＰ」、負荷分散装置のＭＡＣ（Media  Access  Control  address）アドレスを示す「ＭＡＣ」を対応付けたＡＲＰテーブル１を保持している。ここでは、「ＩＰ」として「ＩＰ−ＳＬＢ」、「ＭＡＣ」として「ＭＡＣ-ＳＬＢ」を記憶している。なお、ＡＲＰとは、Address  Resolution  Protocolのことである。また、クライアント装置は、図２−２に示すように、自装置のＩＰアドレスとして「ＩＰ−ＣＬ」、ＭＡＣとして「ＭＡＣ−ＣＬ」をネットワーク情報として記憶しており、これらを用いて通信を行う。図２−１は、クライアント装置が保持するＡＲＰテーブルを示す図であり、図２−２は、クライアント装置のネットワーク構成を示す図である。
【００２４】
負荷分散装置は、クライアント装置から受信したリクエストメッセージを中継装置に負荷分散する装置である。そして、負荷分散装置は、図３−１に示すように、クライアント装置の「ＩＰ、ＭＡＣ」として「ＩＰ−ＣＬ、ＭＡＣ−ＣＬ」、中継装置の「ＩＰ、ＭＡＣ」として「ＩＰ−ＭＳＧ、ＭＡＣ−ＭＳＧ」をＡＲＰテーブル２として保持している。なお、このＡＲＰテーブル２は、中継装置の台数分保持することとなる。また、負荷分散装置は、図３−２に示すように、自装置のＩＰアドレスとして「ＩＰ−ＳＬＢ」、ＭＡＣとして「ＭＡＣ−ＳＬＢ」をネットワーク情報として記憶しており、これらを用いて通信を行う。図３−１は、負荷分散装置が保持するＡＲＰテーブルを示す図であり、図３−２は、負荷分散装置のネットワーク構成を示す図である。
【００２５】
各中継装置は、負荷分散装置から受信したリクエストメッセージをサーバ装置に負荷分散する装置である。そして、各中継装置は、図４−１に示すように、クライアント装置の「ＩＰ、ＭＡＣ」として「ＩＰ−ＣＬ、ＭＡＣ−ＳＬＢ」、負荷分散装置の「ＩＰ、ＭＡＣ」として「ＩＰ−ＳＬＢ、ＭＡＣ−ＳＬＢ」をＡＲＰテーブル３として保持している。また、各中継装置は、サーバ装置の「ＩＰ、ＭＡＣ」として「ＩＰ−ＳＶＲ、ＭＡＣ−ＳＬＢ」をＡＲＰテーブル３にさらに保持している。なお、このＡＲＰテーブル３は、サーバの台数分保持することとなる。そして、各中継装置は、図４−２に示すように、自装置のＩＰアドレスとして「ＩＰ−ＭＳＧ」、ＭＡＣとして「ＭＡＣ−ＭＳＧ」をネットワーク情報として記憶しており、これらを用いて通信を行う。
【００２６】
また、各中継装置は、図５に示すように、クライアント側コネクションと、サーバ側コネクションとをコネクションテーブルとして保持している。具体的には、接続される装置のＴＣＰ（Transmission  Control  Protocol）、ＵＤＰ（User  Datagram  Protocol）ポート番号を記憶している。例えば、クライアント側コネクションとして、「ＩＰ−ＣＬ：Ｐｏｒｔ＃１、ＩＰ−ＭＳＧ：Ｐｏｒｔ＃２」を記憶している。この情報は、ポート１に接続されるＩＰ−ＣＬのアドレスを持つクライアント装置と、ポート２に接続されるＩＰ−ＭＳＧのアドレスを持つ中継装置とのセッションが確立されていることを示している。また、サーバ側コネクションとして、「ＩＰ−ＭＳＧ：Ｐｏｒｔ＃３、ＩＰ−ＳＶＲ：Ｐｏｒｔ＃２」を記憶している。この情報は、ポート３に接続されるＩＰ−ＭＳＧのアドレスを持つ中継装置と、ポート２に接続されるＩＰ−ＳＶＲのアドレスを持つサーバ装置とのセッションが確立されていることを示している。なお、図４−１は、中継装置が保持するＡＲＰテーブルを示す図であり、図４−２は、中継装置のネットワーク構成を示す図であり、図５は、中継装置が保持するコネクションテーブルを保持する図である。
【００２７】
各サーバ装置は、クライアント装置との間で一意性を保証しつつ、Ｗｅｂサービスなどを提供する装置である。そして、各サーバ装置は、図６−１に示すように、中継装置の「ＩＰ、ＭＡＣ」として「ＩＰ−ＭＳＧ、ＭＡＣ−ＭＳＧ」をＡＲＰテーブル４として保持している。また、各サーバ装置は、図６−２に示すように、自装置のＩＰアドレスとして「ＩＰ−ＳＶＲ」、ＭＡＣとして「ＭＡＣ−ＳＶＲ」をネットワーク情報として記憶しており、これらを用いて通信を行う。なお、このＡＲＰテーブル４は、サーバの台数分保持することとなる。図６−１は、各サーバ装置が保持するＡＲＰテーブルを示す図であり、図６−２は、各サーバ装置のネットワーク構成を示す図である。
【００２８】
管理装置は、負荷分散を行う転送ルールを中継装置や負荷分散装置に配布する装置である。そして、管理装置もＡＲＰテーブルを保持しており、具体的には、中継装置の「ＩＰ、ＭＡＣ」、負荷分散装置の「ＩＰ、ＭＡＣ」、サーバ装置の「ＩＰ、ＭＡＣ」を保持している。
【００２９】
［各装置の構成］
次に、図７〜１９を用いて、上述した各装置の構成について説明する。ここでは、クライアント装置１０、負荷分散装置２０、中継装置３０、サーバ装置４０、管理装置５０の順に説明する。
【００３０】
（クライアント装置の構成）
まず、図７を用いて、クライアント装置の構成について説明する。図７は、クライアント装置の構成を示すブロック図である。図７に示すように、クライアント装置１０は、通信制御Ｉ／Ｆ部１１と、記憶部１２と、制御部１３とを有している。
【００３１】
通信制御Ｉ／Ｆ部１１は、負荷分散装置２０などの他の装置との間でやり取りする各種情報に関する通信を制御する。例えば、通信制御Ｉ／Ｆ部１１は、負荷分散装置２０に対してリクエストメッセージを送信し、負荷分散装置２０からリクエストメッセージを受信する。また、通信制御Ｉ／Ｆ部１１は、サーバ装置４０とセッションを確立して、利用するサービスの情報を送受信する。
【００３２】
記憶部１２は、制御部１３による各種処理に必要なデータおよびプログラムを格納するとともに、Ｃｏｏｋｉｅテーブル１２ａと、アプリセッション識別子テーブル１２ｂとを有する。
【００３３】
Ｃｏｏｋｉｅテーブル１２ａは、アプリケーションによって指定される宛先のＵＲＬ（Uniform  Resource  Locator）やＩＰアドレスなどリクエストメッセージの宛先に対応付けてｃｏｏｋｉｅを保持する。ここで記憶されるｃｏｏｋｉｅとしては、例えば、後述する経路制御識別子を用いることができる。具体的に例をあげると、Ｃｏｏｋｉｅテーブル１２ａは、図８に示すように、「宛先、ｃｏｏｋｉｅ」として「192.168.1.1、Ｋ０００００」や「xxx.url、Ｋａａａａａ」などを記憶する。なお、図８は、Ｃｏｏｋｉｅテーブル１２ａに保持される情報の例を示す図である。
【００３４】
アプリセッション識別子テーブル１２ｂは、アプリケーションによって指定される宛先のＵＲＬやＩＰアドレスなどリクエストメッセージの宛先に対応付けてアプリケーションの識別子を保持する。ここで記憶されるアプリケーションの識別子としては、例えば、後述するセッション情報を用いることができる。具体的に例をあげると、アプリセッション識別子テーブル１２ｂは、図９に示すように、「宛先、アプリケーションのセッション識別子」として「192.168.1.1、Ｓ０００００」や「xxx.url、Ｓ１１１１１」などを記憶する。なお、図９は、アプリセッション識別子テーブル１２ｂに保持される情報の例を示す図である。
【００３５】
制御部１３は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、アプリ実行部１３ａを有し、これらによって各種処理を実行する。
【００３６】
アプリ実行部１３ａは、Ｗｅｂブラウザなどを用いたアプリケーションを実行し、負荷分散装置２０に対して、リクエストメッセージを送信したり、各種サービスを利用したりする。例えば、アプリ実行部１３ａは、アプリケーションを実行し、宛先となるＵＲＬやＩＰアドレスがＣｏｏｋｉｅテーブル１２ａに記憶されている場合には、宛先に対応するｃｏｏｋｉｅ（経路制御識別子）を取得する。そして、アプリ実行部１３ａは、取得したｃｏｏｋｉｅを、ＳＯＡＰメッセージのレイヤ７プロトコルヘッダに含める。同様に、アプリ実行部１３ａは、宛先となるＵＲＬやＩＰアドレスがアプリセッション識別子テーブル１２ｂに記憶されている場合には、宛先に対応するプリケーションのセッション識別子を取得する。そして、アプリ実行部１３ａは、取得したセッション識別子を、ＳＯＡＰメッセージのメッセージコンテンツ部に含める。アプリ実行部１３ａは、ｃｏｏｋｉｅ（経路制御識別子）やセッション識別子を格納したメッセージを負荷分散装置２０に送信する。
【００３７】
（負荷分散装置の構成）
次に、図１０を用いて、負荷分散装置の構成について説明する。図１０は、負荷分散装置の構成を示すブロック図である。図１０に示すように、負荷分散装置２０は、通信制御Ｉ／Ｆ部２１と、記憶部２２と、制御部２３とを有している。
【００３８】
通信制御Ｉ／Ｆ部２１は、クライアント装置１０や中継装置３０などの他の装置との間でやり取りする各種情報に関する通信を制御する。例えば、通信制御Ｉ／Ｆ部２１は、クライアント装置１０からリクエストメッセージを受信し、クライアント装置１０に対して応答メッセージを送信する。また、通信制御Ｉ／Ｆ部２１は、中継装置３０に対してリクエストメッセージを送信し、中継装置３０から応答メッセージを受信する。また、通信制御Ｉ／Ｆ部２１は、中継装置３０に対してリクエストメッセージを負荷分散する際に利用する転送ルールを中継装置３０から受信する。
【００３９】
記憶部２２は、制御部２３による各種処理に必要なデータおよびプログラムを格納するとともに、中継装置リストテーブル２２ａと、転送ルールテーブル２２ｂとを有する。
【００４０】
中継装置リストテーブル２２ａは、負荷分散装置２０が負荷分散の対象とする中継装置のＩＰアドレスを記憶する。例えば、中継装置リストテーブル２２ａは、図１１に示すように、「中継装置のＩＰアドレス」として「10.1.1.1」、「10.1.1.2」、「10.1.1.3」などと記憶する。なお、図１１は、中継装置リストテーブル２２ａに記憶される情報の例を示す図である。
【００４１】
転送ルールテーブル２２ｂは、一意性を保証するセッションを特定し、適切な中継装置に負荷分散する転送ルールを保持する。例えば、転送ルールテーブル２２ｂは、図１２に示すように、「経路情報識別子、転送先の中継装置のＩＰアドレス」として「Ｋ０００００、10.1.1.1」などと記憶する。ここで記憶される「経路情報識別子」とは、適切な転送先の中継装置を特定するための識別子である。なお、図１２は、転送ルールテーブル２２ｂに記憶される情報の例を示す図である。
【００４２】
制御部２３は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、メッセージ識別部２３ａと、負荷分散機能部２３ｂと、自律学習部２３ｃとを有し、これらによって各種処理を実行する。
【００４３】
メッセージ識別部２３ａは、リクエストメッセージをクライアント装置１０から受信し、当該メッセージに「経路情報識別子」が含まれているか否かを識別する。例えば、メッセージ識別部２３ａは、ＳＯＡＰのリクエストメッセージをクライアント装置１０から受信した場合、メッセージのレイヤ７プロトコルヘッダのｃｏｏｋｉｅを参照して、「経路情報識別子」が含まれているか否かを識別する。そして、メッセージ識別部２３ａは、受信したメッセージと、識別した結果とを負荷分散機能部２３ｂに送信する。
【００４４】
負荷分散機能部２３ｂは、クライアント装置１０から受信したリクエストメッセージを中継装置３０に負荷分散する。例えば、負荷分散機能部２３ｂは、メッセージ識別部２３ａによって「経路情報識別子」が含まれていないと判定されたメッセージについては、ラウンドロビンなどの自律振分アルゴリズムに従って、負荷分散先の中継装置を決定する。そして、負荷分散機能部２３ｂは、決定した中継装置のＩＰアドレスを中継装置リストテーブル２２ａから特定し、クライアント装置１０から受信したリクエストメッセージを送信する。
【００４５】
また、負荷分散機能部２３ｂは、メッセージ識別部２３ａによって「経路情報識別子」が含まれていると判定されたメッセージについては、メッセージのレイヤ７プロトコルヘッダのｃｏｏｋｉｅを参照して、「経路情報識別子」を取得する。そして、負荷分散機能部２３ｂは、取得した「経路情報識別子」に対応する中継装置のＩＰアドレスを転送ルールテーブル２２ｂから特定し、クライアント装置１０から受信したリクエストメッセージを送信する。
【００４６】
自律学習部２３ｃは、中継装置から応答メッセージを受信し、経路制御識別子と転送先の中継装置のＩＰアドレスとを取得し、転送ルールを生成して転送ルールテーブル２２ｂに格納する。例えば、自律学習部２３ｃは、中継装置からＳＯＡＰの応答メッセージを受信した場合に、レイヤ７プロトコルヘッダのｃｏｏｋｉｅを参照して「経路情報識別子」を取得する。また、自律学習部２３ｃは、当該応答メッセージのレイヤ３プロトコルヘッダなどから送信元の「中継装置のＩＰアドレス」を取得する。そして、自律学習部２３ｃは、「経路情報識別子」と「中継装置のＩＰアドレス」とを対応付けた転送ルールを作成して、転送ルールテーブル２２ｂに格納する。
【００４７】
（中継装置の構成）
次に、図１３を用いて、各中継装置の構成について説明する。図１３は、中継装置の構成を示すブロック図である。図１３に示すように、中継装置３０は、通信制御Ｉ／Ｆ部３１と、記憶部３２と、制御部３３とを有している。
【００４８】
通信制御Ｉ／Ｆ部３１は、負荷分散装置２０、サーバ装置４０、管理装置５０などの他の装置との間でやり取りする各種情報に関する通信を制御する。例えば、通信制御Ｉ／Ｆ部３１は、負荷分散装置２０からリクエストメッセージを受信し、負荷分散装置２０に対して応答メッセージを送信する。また、通信制御Ｉ／Ｆ部３１は、サーバ装置４０に対してリクエストメッセージを負荷分散し、サーバ装置４０から応答メッセージを受信する。また、通信制御Ｉ／Ｆ部４１は、サーバ装置４０に対してリクエストメッセージを負荷分散する際に利用する転送ルールを管理装置５０から受信する。
【００４９】
記憶部３２は、制御部３３による各種処理に必要なデータおよびプログラムを格納するとともに、転送ルールテーブル３２ａと、サーバリストテーブル３２ｂと、コネクションテーブル３２ｃとを有する。
【００５０】
転送ルールテーブル３２ａは、クライアント装置１０とサーバ装置との間のセッションを識別するセッション情報と、クライアント装置から送信されたメッセージが振り分けられたサーバ装置を特定するサーバ情報とが対応付けられた転送ルールを保持する。例えば、転送ルールテーブル３２ａは、図１４に示すように、「セッション識別子、転送先サーバのＩＰアドレス」として「Ｓ００００１、1.1.1.1」などを記憶する。なお、図１４は、転送ルールテーブル３２ａに記憶される情報の例を示す図である。
【００５１】
サーバリストテーブル３２ｂは、中継措置３０が負荷分散の対象とするサーバ装置のＩＰアドレスを記憶する。例えば、サーバリストテーブル３２ｂは、図１５に示すように、「サーバのＩＰアドレス」として「1.1.1.1」や「1.1.1.2」などを記憶する。なお、図１５は、サーバリストテーブル３２ｂに記憶される情報の例を示す図である。
【００５２】
コネクションテーブル３２ｃは、クライアント装置１０からメッセージリクエストを受信して、サーバ装置に中継した際に書き換えたパケットヘッダの情報を保持する。例えばコネクションテーブル３２ｃは、図１６に示すように、クライアント装置からのリクエストを受信したコネクションを示す「クライアント側コネクション」とサーバ装置からのリクエストを送受信したコネクションを示す「サーバ側コネクション」とを記憶する。「クライアント側コネクション」には、送信元のクライアント装置のＩＰアドレスとポート番号、宛先の中継装置のＩＰとポート番号とがそれぞれ対応付けられた情報が格納される。また、「サーバ側コネクション」には、送信元の中継装置のＩＰアドレスとポート番号、宛先のサーバ装置のＩＰとポート番号とがそれぞれ対応付けられた情報が格納される。なお、図１６は、コネクションテーブル３２ｃに記憶される情報の例を示す図である。
【００５３】
制御部３３は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有する。また、制御部３３は、メッセージ判定部３３ａと、第一振分部３３ｂと、第二振分部３３ｃと、転送ルール格納部３３ｄと、メッセージ応答部３３ｅとを有し、これらによって各種処理を実行する。
【００５４】
メッセージ判定部３３ａは、負荷分散装置２０から振り分けられたリクエストメッセージを受信し、当該リクエストメッセージにセッション識別子が含まれるか否かを判定する。例えば、メッセージ判定部３３ａは、負荷分散装置２０から振り分けられたＳＯＡＰのリクエストメッセージを受信した場合に、当該メッセージのメッセージコンテンツ部を参照して、「セッション識別子」が含まれているか否かを判定する。そして、メッセージ判定部３３ａは、「セッション識別子」が含まれていると判定したメッセージを第一振分部３３ｂに送信し、「セッション識別子」が含まれていないと判定したメッセージを第二振分部３３ｃに送信する。
【００５５】
第一振分部３３ｂは、メッセージ判定部３３ａによってセッション識別子が含まれると判定された場合に、転送ルールテーブル３２ａに保持される転送ルールに従って、適切なサーバ装置にメッセージを振り分ける。例えば、第一振分部３３ｂは、リクエストメッセージのメッセージコンテンツ部にセッション識別子「Ｓ００００１」が含まれている場合には、「Ｓ００００１」に対応する転送先のＩＰアドレス「1.1.1.1」を転送ルールテーブル３２ａから特定する。そして、第一振分部３３ｂは、特定したＩＰアドレス「1.1.1.1」に対して、リクエストメッセージを送信する。
【００５６】
第二振分部３３ｃは、メッセージ判定部３３ａによってセッション識別子が含まれないと判定された場合に、所定の条件に基づいて特定されるサーバ装置に対して、当該メッセージを振り分ける。例えば、第二振分部３３ｃは、メッセージ判定部３３ａによってセッション識別子が含まれないと判定された場合に、ラウンドロビンなどの自律振分アルゴリズムに従って、振分先のサーバ装置を特定する。そして、第二振分部３３ｃは、特定したサーバ装置のＩＰアドレスをサーバリストテーブル３２ｂから特定して、リクエストメッセージを送信する。
【００５７】
また、第二振分部３３ｃは、メッセージ判定部３３ａによって受信されたときの送信元のクライアント装置のＩＰアドレスとポート番号、宛先の中継装置のＩＰとポート番号を取得して、コネクションテーブル３２ｃの「クライアント側コネクション」に格納する。同様に、第二振分部３３ｃは、メッセージを振り分けたときの送信元の中継装置のＩＰアドレスとポート番号、宛先のサーバ装置のＩＰとポート番号とを取得して、コネクションテーブル３２ｃの「サーバ側コネクション」に格納する。
【００５８】
転送ルール格納部３３ｄは、セッション識別子と、第二振分部３３ｃによってメッセージが振り分けられたサーバ装置を特定するサーバ情報とが対応付けられた転送ルールを管理装置５０から受信して転送ルールテーブル３２ａに格納する。例えば、転送ルール格納部３３ｄは、セッション識別子「Ｓ１１１１１」とサーバ情報「1.1.1.2」とを管理装置５０から受信し、これらを対応付けて転送ルールテーブル３２ａに格納する。
【００５９】
メッセージ応答部３３ｅは、クライアント装置１０から送信されたメッセージが通過する経路を識別する経路制御識別子を埋め込んだ応答メッセージを負荷分散装置２０に送信する。例えば、メッセージ応答部３３ｅは、第一振分部３３ｂ又は第二振分部３３ｃがメッセージを振り分けたサーバ装置からＳＯＡＰの応答メッセージを受信する。すると、メッセージ応答部３３ｅは、当該応答メッセージを受信するクライアント装置１０とのセッションを識別するための識別子であり、当該中継装置３０を特定する識別子である経路制御識別子を生成する。そして、メッセージ応答部３３ｅは、負荷分散装置２０が参照可能な領域であるレイヤ７プロトコルヘッダのｃｏｏｋｉｅの領域に、生成した経路制御識別子を埋め込んだ応答メッセージを生成して、負荷分散装置２０に送信する。
【００６０】
（サーバ装置の構成）
次に、図１７を用いて、各サーバ装置の構成について説明する。図１７は、サーバ装置の構成を示すブロック図である。図１７に示すように、サーバ装置４０は、通信制御Ｉ／Ｆ部４１と、記憶部４２と、制御部４３とを有している。
【００６１】
通信制御Ｉ／Ｆ部４１は、中継装置３０、管理装置５０などの他の装置との間でやり取りする各種情報に関する通信を制御する。例えば、通信制御Ｉ／Ｆ部４１は、中継装置３０からリクエストメッセージを受信し、中継装置３０に対して応答メッセージを送信する。また、通信制御Ｉ／Ｆ部４１は、管理装置５０に対して、セッション識別子を含むセッション情報を送信する。
【００６２】
記憶部４２は、制御部４３による各種処理に必要なデータおよびプログラムを格納するとともに、セッションテーブル４２ａを有する。
【００６３】
セッションテーブル４２ａは、クライアント装置１０との間で接続されるセッションでやり取りされているデータを記憶する。例えば、セッションテーブル４２ａは、図１８に示すように、「セッション識別子、セッションデータ」として「Ｓ００００１、ＸＸＸＸ」や「Ｓ１１１１１、ＹＹＹＹ」などを記憶する。ここで記憶される「セッション識別子」や「セッションデータ」は、中継装置３０から送信されたメッセージから取得することができる。なお、図１８は、セッションテーブル４２ａに記憶される情報の例を示す図である。
【００６４】
制御部４３は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、セッション情報通知部４３ａと、アプリ提供部４３ｂとを有し、これらによって各種処理を実行する。
【００６５】
セッション情報通知部４３ａは、クライアント装置１０とサーバ装置との間のセッションを識別するセッション識別子を管理装置５０に送信する。例えば、セッション情報通知部４３ａは、後述するアプリ提供部４３ｂによって作成されたセッション識別子「Ｓ００００１」と、自装置のＩＰアドレス「1.1.1.1」とを対応付けたセッション情報を管理装置５０に送信する。
【００６６】
また、セッション情報通知部４３ａは、クライアント装置１０とのメッセージの経路として特定された中継装置のＩＰアドレスを管理装置５０から受信する。そして、セッション情報通知部４３ａは、受信したリクエストメッセージの応答メッセージのメッセージコンテンツ部にセッション識別子を埋め込んで、受信した中継装置のＩＰアドレスに送信する。
【００６７】
アプリ提供部４３ｂは、負荷分散装置２０および中継装置３０を介してセッションが確立されたクライアント装置１０が要求するサービスを、メモリなどから取得して、クライアント装置１０に提供する。例えば、アプリ提供部４３ｂは、は、中継装置からセッション識別子が含まれていないメッセージを受信した場合に、当該メッセージを送信したクライアント装置１０との間のセッションを識別するためのセッション識別子「Ｓ００００１」を作成する。そして、アプリ提供部４３ｂは、セッション情報通知部４３ａに作成したセッション識別子「Ｓ００００１」を送信する。
【００６８】
（管理装置の構成）
次に、図１９を用いて、管理装置の構成について説明する。図１９は、管理装置の構成を示すブロック図である。図１９に示すように、管理装置５０は、通信制御Ｉ／Ｆ部５１と、記憶部５２と、制御部５３とを有している。
【００６９】
通信制御Ｉ／Ｆ部５１は、中継装置３０、サーバ装置４０などの他の装置との間でやり取りする各種情報に関する通信を制御する。例えば、通信制御Ｉ／Ｆ部５１は、サーバ装置４０からセッション情報を受信する。また、通信制御Ｉ／Ｆ部５１は、中継装置３０に対して転送ルールを送信する。
【００７０】
記憶部５２は、制御部５３による各種処理に必要なデータおよびプログラムを格納するとともに、転送ルールテーブル５２ａを有する。転送ルールテーブル５２ａは、後述するルール作成部５３ｂによって作成された転送ルールを保持する記憶部であり、中継装置３０の転送ルールテーブル３２ａと同様の情報を記憶する。
【００７１】
制御部５３は、制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、セッション情報受信部５３ａ、ルール作成部５３ｂ、ルール配布部５３ｃを有し、これらによって各種処理を実行する。
【００７２】
セッション情報受信部５３ａは、クライアント装置１０から送信されたメッセージが負荷分散装置２０によって中継装置３０に振分けられ、中継装置３０によってメッセージが振分けられたサーバ装置４０からセッション識別子を受信する。例えば、セッション情報受信部５３ａは、セッション識別子「Ｓ００００１」と、メッセージが振り分けられたサーバ装置のＩＰアドレス「1.1.1.1」と、負荷分散元の中継装置３０のＩＰアドレスを対応付けたセッション情報を受信する。
【００７３】
ルール作成部５３ｂは、中継装置３０がメッセージを振分ける際に参照する転送ルールであって、セッション識別子と、サーバ情報とを対応付けた中継装置用転送ルールを作成する。例えば、ルール作成部５３ｂは、セッション情報受信部５３ａによって受信されたセッション識別子「Ｓ００００１」と、メッセージが振り分けられたサーバ装置のＩＰアドレス「1.1.1.1」とを対応付けた中継装置用転送ルールを作成する。そして、ルール作成部５３ｂは、作成した中継装置用転送ルールを転送ルールテーブル５２ａに格納する。
【００７４】
ルール配布部５３ｃは、ルール作成部５３ｂによって作成された中継装置用転送ルールを、所定の条件に基づいて特定される中継装置に対して配布する。例えば、ルール配布部５３ｃは、セッション情報に含まれる負荷分散元の中継装置３０やラウンドロビンなどの自律振分アルゴリズムや予め定めた順番などに従って中継装置を特定する。そして、ルール配布部５３ｃは、特定した中継装置に対して、ルール作成部５３ｂにより作成されたルールを転送ルールテーブル５２ａから取得して配布する。
【００７５】
［処理シーケンス］
次に、図２０を用いて、上述したシステムにおける処理シーケンスを説明する。図２０は、実施例１にかかる負荷分散装置を含むシステムの処理シーケンスを示す図である。
【００７６】
図２０に示すように、クライアント装置１０のアプリ実行部１３ａは、アプリを起動し、負荷分散装置２０に対してリクエストメッセージを送信する（ステップＳ１０１）。そして、負荷分散装置２０のメッセージ識別部２３ａは、受信したメッセージに経路制御識別子が含まれていないと判定し、負荷分散機能部２３ｂは、自律振分アルゴリズムに従って特定した中継装置３０にリクエストメッセージを負荷分散する（ステップＳ１０２）。
【００７７】
リクエストメッセージを受信した中継装置３０のメッセージ判定部３３ａは、メッセージに経路制御識別子が含まれていないと判定し、第二振分部３３ｃは、自律振分アルゴリズムで特定したサーバ装置４０にメッセージを負荷分散する（ステップＳ１０３）。
【００７８】
その後、メッセージを受信したサーバ装置４０のアプリ提供部４３ｂは、当該メッセージを送信したクライアント装置１０との間のセッションを確立するセッション識別子を生成する（ステップＳ１０４）。続いて、セッション情報通知部４３ａは、生成したセッション識別子と、自装置のＩＰアドレスとを含むセッション情報を管理装置５０に送信する（ステップＳ１０５）。
【００７９】
管理装置５０のルール作成部５３ｂは、受信したセッション識別子とＩＰアドレスとを対応付けた転送ルールを作成し、ルール配布部５３ｃは、自律振分アルゴリズムなどで特定した中継装置に作成された転送ルールを配布する（ステップＳ１０６）。その後、管理装置５０のルール配布部５３ｃは、中継装置３０が転送ルールを格納したことを示す完了通知を受信すると、転送ルール設定完了通知をサーバ装置４０に送信する（ステップＳ１０７）。このとき、管理装置５０のルール配布部５３ｃは、クライアント装置１０とのメッセージの経路として特定された中継装置３０のＩＰアドレスもあわせて送信する。
【００８０】
設定完了通知を受信したサーバ装置４０のセッション情報通知部４３ａは、受信したリクエストメッセージの応答メッセージのメッセージコンテンツ部にセッション識別子を埋め込んで、受信した中継装置３０のＩＰアドレスに送信する（ステップＳ１０８）。
【００８１】
セッション識別子を受信した中継装置３０は、クライアント装置１０から送信されたメッセージが通過する経路を識別する経路制御識別子を埋め込んだ応答メッセージを負荷分散装置２０に送信する（ステップＳ１０９）。負荷分散装置２０は、受信したメッセージをクライアント装置１０に送信する（ステップＳ１１０）。
【００８２】
その後、クライアント装置１０のアプリ実行部１３ａは、経路制御識別子とセッション識別子とが埋め込まれたリクエストメッセージを、負荷分散装置２０に対して送信する（ステップＳ１１１）。
【００８３】
そして、負荷分散装置２０のメッセージ識別部２３ａは、受信したメッセージに経路制御識別子が含まれていると判定し、負荷分散機能部２３ｂは、経路制御識別子によって特定される転送ルールに従って、中継装置３０に負荷分散する（ステップＳ１１２）。
【００８４】
さらに、中継装置３０のメッセージ判定部３３ａは、メッセージに経路制御識別子が含まれていると判定し、第一振分部３３ｂは、経路制御識別子によって特定されるサーバ装置４０にメッセージを負荷分散する（ステップＳ１１３）。このようにして、一意性が保証された通信が可能となる。
【００８５】
［フローチャート］
次に、図２１〜４３を用いて、上述したシステムにおける各装置のフローチャートを説明する。ここでは、各装置の様々なシチュエーションにおいて実行されるフローチャートを説明する。具体的には、図２１に示すように、リクエスト送信時のクライアント動作、リクエスト受信時の負荷分散装置動作、リクエスト受信時の中継装置動作、リクエスト受信時のサーバ装置動作、セッション識別子受信時の管理装置動作について説明する。さらに、応答受信時の中継装置動作、応答受信時の負荷分散装置動作、応答受信時のクライアント動作、ルール設定時の中継装置動作についても説明する。なお、図２１は、各装置の様々なシチュエーションを説明する図である。
【００８６】
（リクエスト送信時のクライアント動作）
まず、図２２を用いて、リクエスト送信時のクライアント動作を示すフローチャートについて説明する。図２２は、リクエスト送信時のクライアント動作を示すフローチャートである。
【００８７】
図２２に示すように、クライアント装置１０のアプリ実行部１３ａは、ユーザからの指定や実行されるアプリケーションによって、宛先（ＵＲＬまたはＩＰアドレス）が指定され、送信するリクエストメッセージを生成する（ステップＳ２０１）。
【００８８】
ここで生成されるメッセージは、図２３に示すように、Ｌ２プロトコルヘッダを示すＬ２ヘッダと、Ｌ３プロトコルヘッダおよびＬ４プロトコルヘッダを示すパケットヘッダと、Ｌ７プロトコルヘッダを示すプロトコルヘッダと有する。さらに、ここで生成されるメッセージは、メッセージコンテンツ部も有する。Ｌ２ヘッダには、送信元ＭＡＣアドレスであるクライアント装置１０のＭＡＣアドレスと、宛先ＭＡＣアドレスである負荷分散装置２０のＭＡＣアドレスとが記載される。パケットヘッダには、送信元ＩＰアドレスとポート番号としてクライアント装置１０のＩＰアドレスとポート番号、宛先ＩＰアドレスとポート番号として負荷分散装置２０のＩＰアドレスとポート番号とが記載される。メッセージコンテンツ部には、リクエストメッセージのデータ本体が記載される。また、送信元ＭＡＣアドレス、ＩＰアドレス、ポート番号は、クライアント装置１０自体のネットワーク設定から取得することができる。宛先ＭＡＣアドレスは、例えば、ＵＲＬ（Uniform  Resource  Locator）などユーザから入力された宛先情報から取得した宛先ＩＰアドレスをキーにしてＡＲＰテーブル１を検索することで取得できる。ポート番号は、ユーザから入力された宛先情報から取得することができる。なお、図２３は、セッション確立までのメッセージ例を示す図である。
【００８９】
続いて、アプリ実行部１３ａは、付与するアプリセッション識別子（セッション識別子）が存在するか否かを判定する（ステップＳ２０２）。例えば、アプリ実行部１３ａは、ステップＳ２０１で指定された宛先をキーにして、アプリセッション識別子テーブル１２ｂを検索することにより、アプリセッション識別子の存在を確認することができる。
【００９０】
そして、アプリ実行部１３ａは、付与するアプリセッション識別子が存在する場合（ステップＳ２０２肯定）、該当するセッション識別子をアプリセッション識別子テーブル１２ｂから取得し、送信対象のリクエストメッセージに付与する（ステップＳ２０３）。ここで、アプリ実行部１３ａは、送信対象のリクエストメッセージのメッセージコンテンツ部にセッション識別子を付与する。
【００９１】
続いて、アプリ実行部１３ａは、付与するＣｏｏｋｉｅ（経路制御識別子）が存在するか否かを判定する（ステップＳ２０４）。例えば、アプリ実行部１３ａは、ステップＳ２０１で指定された宛先をキーにして、Ｃｏｏｋｉｅテーブル１２ａを検索することにより、Ｃｏｏｋｉｅ（経路制御識別子）の存在を確認することができる。
【００９２】
そして、アプリ実行部１３ａは、付与するＣｏｏｋｉｅ（経路制御識別子）が存在する場合（ステップＳ２０４肯定）、該当する経路制御識別子をＣｏｏｋｉｅテーブル１２ａから取得し、送信対象のリクエストメッセージに付与する（ステップＳ２０５）。ここで、アプリ実行部１３ａは、送信対象のリクエストメッセージのプロトコルヘッダに経路制御識別子を付与する。
【００９３】
その後、アプリ実行部１３ａは、セッション識別子と経路制御識別子とを付与したリクエストメッセージを宛先の負荷分散装置２０に送信する（ステップＳ２０６）。ここで送信されるメッセージは、図２４に示すように、Ｌ２ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。Ｌ２ヘッダには、送信元ＭＡＣアドレスであるクライアント装置１０のＭＡＣアドレスと、宛先ＭＡＣアドレスである負荷分散装置２０のＭＡＣアドレスとが記載される。パケットヘッダには、送信元ＩＰアドレスとポート番号としてクライアント装置１０のＩＰアドレスとポート番号、宛先ＩＰアドレスとポート番号として負荷分散装置２０のＩＰアドレスとポート番号とが記載される。さらに、プロトコルヘッダには、経路制御識別子が記載される。メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子とが記載される。なお、図２４は、セッション確立後のメッセージ例を示す図である。
【００９４】
一方、ステップＳ２０２に戻り、アプリ実行部１３ａは、付与するアプリセッション識別子が存在しない場合（ステップＳ２０２否定）、ステップＳ２０４と同様、付与するＣｏｏｋｉｅ（経路制御識別子）が存在するか否かを判定する（ステップＳ２０７）。
【００９５】
そして、アプリ実行部１３ａは、付与するＣｏｏｋｉｅ（経路制御識別子）が存在する場合（ステップＳ２０７肯定）、図２３や図２４とは異なる処理対象外のメッセージを負荷分散装置２０に送信する（ステップＳ２０８）。一方、アプリ実行部１３ａは、付与するＣｏｏｋｉｅ（経路制御識別子）が存在しない場合（ステップＳ２０７否定）、図２４に示したリクエストメッセージを負荷分散装置２０に送信する（ステップＳ２０９）。
【００９６】
また、ステップＳ２０４において、アプリ実行部１３ａは、付与するアプリセッション識別子が存在しないと判定した場合（ステップＳ２０４否定）、図２３や図２４とは異なる処理対象外のメッセージを負荷分散装置２０に送信する（ステップＳ２１０）。
【００９７】
（リクエスト受信時の負荷分散装置動作）
次に、図２５を用いて、リクエスト受信時の負荷分散装置動作を示すフローチャートについて説明する。図２５は、リクエスト受信時の負荷分散装置動作を示すフローチャートである。
【００９８】
図２５に示すように、負荷分散装置２０のメッセージ識別部２３ａは、クライアント装置１０からリクエストメッセージを受信し、当該メッセージに「経路制御識別子」が含まれているか否かを識別する（ステップＳ３０１）。例えば、メッセージ識別部２３ａは、受信したリクエストメッセージのプロトコルヘッダのｃｏｏｋｉｅを参照して、「経路制御識別子」が存在するか否かを判定する。
【００９９】
そして、負荷分散機能部２３ｂは、メッセージ識別部２３ａによって、「経路制御識別子」が抽出された場合（ステップＳ３０１肯定）、抽出された「経路制御識別子」に対応する転送ルールが存在するか否かを判定する（ステップＳ３０２）。例えば、負荷分散機能部２３ｂは、抽出された「経路制御識別子」をキーにして転送ルールテーブル２２ｂを検索し、抽出された「経路制御識別子」に対応する転送ルールが存在するか否かを判定する。
【０１００】
抽出された「経路制御識別子」に対応する転送ルールが存在する場合（ステップＳ３０２肯定）、負荷分散機能部２３ｂは、転送ルールに従って中継装置３０を特定し（ステップＳ３０３）、受信したリクエストメッセージを送信する（ステップＳ３０４）。具体的には、負荷分散機能部２３ｂは、受信したメッセージのパケットヘッダのＤｅｓｔｉｎａｔｉｏｎ値を中継装置のＩＰアドレスに書換える。また、負荷分散機能部２３ｂは、中継装置のＩＰアドレスをキーにしてＡＲＰテーブル２から特定した中継装置のＭＡＣアドレスで、受信したメッセージのＬ２ヘッダのＤｅｓｔｉｎａｔｉｏｎ値を書換える。
【０１０１】
このようにして作成されたメッセージは、例えば、図２６に示すように、Ｌ２ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。Ｌ２ヘッダには、送信元ＭＡＣアドレスであるクライアント装置１０のＭＡＣアドレスと、宛先ＭＡＣアドレスである中継装置３０のＭＡＣアドレスとが記載される。パケットヘッダには、送信元ＩＰアドレスとポート番号としてクライアント装置１０のＩＰアドレスとポート番号、宛先ＩＰアドレスとポート番号として中継装置３０のＩＰアドレスとポート番号とが記載される。さらに、プロトコルヘッダには、経路制御識別子が記載される。メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子とが記載される。なお、図２６は、セッション確立後に中継装置へ送信されるメッセージ例を示す図である。
【０１０２】
一方、負荷分散機能部２３ｂは、メッセージに「経路制御識別子」が含まれていない場合（ステップＳ３０１否定）、自律負荷分散アルゴリズムに従って、負荷分散先の中継装置３０を選択し、受信したリクエストメッセージを送信する（ステップＳ３０５）。また、抽出された「経路制御識別子」に対応する転送ルールが存在しない場合も（ステップＳ３０２否定）、同様の処理が実行される。
【０１０３】
ここで送信されるメッセージは、図２６と同様に、パケットヘッダのＤｅｓｔｉｎａｔｉｏｎ値を中継装置のＩＰアドレスに書換えられ、メッセージのＬ２ヘッダのＤｅｓｔｉｎａｔｉｏｎ値が中継装置のＭＡＣアドレスで書き換えられたメッセージである。図２６と異なる点は、図２７に示すように、プロトコルヘッダに、経路制御識別子が記載されておらず、メッセージコンテンツ部にセッション識別子とが記載されていない点である。なお、図２７は、セッション確立前に中継装置へ送信されるメッセージ例を示す図である。
【０１０４】
（リクエスト受信時の中継装置動作）
次に、図２８を用いて、リクエスト受信時の中継装置動作を示すフローチャートについて説明する。図２８は、リクエスト受信時の中継装置動作を示すフローチャートである。
【０１０５】
図２８に示すように、中継装置３０のメッセージ判定部３３ａは、負荷分散装置２０から振り分けられたリクエストメッセージを受信し、当該リクエストメッセージにセッション識別子が含まれるか否かを判定する（ステップＳ４０１）。例えば、メッセージ判定部３３ａは、受信したリクエストメッセージのメッセージコンテンツ部を参照して、「セッション識別子」が存在するか否かを判定する。
【０１０６】
そして、メッセージ判定部３３ａによって、「セッション識別子」が抽出された場合（ステップＳ４０１肯定）、第一振分部３３ｂは、抽出された「経路情報識別子」に対応する転送ルールが存在するか否かを判定する（ステップＳ４０２）。例えば、第一振分部３３ｂは、抽出された「セッション識別子」をキーにして転送ルールテーブル３２ａを検索し、抽出された「セッション識別子」に対応する転送ルールが存在するか否かを判定する。
【０１０７】
抽出された「セッション識別子」に対応する転送ルールが存在する場合（ステップＳ４０２肯定）、第一振分部３３ｂは、転送ルールに従ってサーバ装置４０を特定し（ステップＳ４０３）、受信したリクエストメッセージを送信する（ステップＳ４０４）。具体的には、第一振分部３３ｂは、受信したメッセージのパケットヘッダのＤｅｓｔｉｎａｔｉｏｎ値をサーバ装置４０のＩＰアドレスに書換える。また、第一振分部３３ｂは、サーバ装置４０のＩＰアドレスをキーにしてＡＲＰテーブル２から特定したサーバ装置４０のＭＡＣアドレスで、受信したメッセージのＬ２ヘッダのＤｅｓｔｉｎａｔｉｏｎ値を書換える。
【０１０８】
さらに、第一振分部３３ｂは、受信したメッセージのＬ２ヘッダのＳｏｕｒｃｅ値を、メッセージを送信した中継装置３０のＭＡＣアドレスに書き換える。また、第一振分部３３ｂは、受信したメッセージのパケットヘッダのＳｏｕｒｃｅ値を、メッセージを送信した中継装置３０のＩＰアドレスに書換える。
【０１０９】
このようにして作成されたメッセージは、例えば、図２９に示すように、Ｌ２ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。Ｌ２ヘッダには、送信元ＭＡＣアドレスである中継装置３０のＭＡＣアドレスと、宛先ＭＡＣアドレスであるサーバ装置４０のＭＡＣアドレスとが記載される。パケットヘッダには、送信元ＩＰアドレスとポート番号として中継装置３０のＩＰアドレスとポート番号、宛先ＩＰアドレスとポート番号としてサーバ装置４０のＩＰアドレスとポート番号とが記載される。さらに、プロトコルヘッダには、経路制御識別子が記載される。メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子とが記載される。なお、図２９は、セッション確立後にサーバ装置へ送信されるメッセージ例を示す図である。
【０１１０】
一方、第二振分部３３ｃは、メッセージに「セッション識別子」が含まれていない場合（ステップＳ４０１否定）、自律負荷分散アルゴリズムに従って、負荷分散先のサーバ装置４０を選択し、受信したリクエストメッセージを送信する（ステップＳ４０５）。また、抽出された「セッション識別子」に対応する転送ルールが存在しない場合も（ステップＳ４０２否定）、同様の処理が実行される。
【０１１１】
ここで送信されるメッセージは、図２９と同様に、パケットヘッダのＤｅｓｔｉｎａｔｉｏｎ値とＳｏｕｒｃｅ値とが書換えられ、メッセージのＬ２ヘッダのＤｅｓｔｉｎａｔｉｏｎ値とＳｏｕｒｃｅ値とが書き換えられたメッセーである。図２９と異なる点は、図３０に示すように、プロトコルヘッダに、経路制御識別子が記載されておらず、メッセージコンテンツ部にセッション識別子とが記載されていない点である。なお、図３０は、セッション確立前にサーバ装置へ送信されるメッセージ例を示す図である。
【０１１２】
（リクエスト受信時のサーバ装置動作）
次に、図３１を用いて、リクエスト受信時のサーバ装置動作を示すフローチャートについて説明する。図３１は、リクエスト受信時のサーバ装置動作を示すフローチャートである。
【０１１３】
図３１に示すように、サーバ装置４０のアプリ提供部４３ｂは、中継装置３０から受信したリクエストメッセージのメッセージコンテンツ部にセッション識別子が含まれているか否かを判定する（ステップＳ５０１）。
【０１１４】
そして、アプリ提供部４３ｂは、セッション識別子が含まれている場合（ステップＳ５０１肯定）、同セッションに関するアプリを実行し（ステップＳ５０２）、クライアントへ応答を送信する（ステップＳ５０３）。
【０１１５】
具体的には、アプリ提供部４３ｂは、抽出したセッション識別子をキーにして、セッションテーブル４２ａを参照し、セッションデータを取得し、これを用いた処理を実行した応答を作成する。また、アプリ提供部４３ｂは、図２９に示したメッセージのパケットヘッダのＳｏｕｒｃｅ値から取得した中継装置３０のＩＰアドレスで、パケットヘッダのＤｅｓｔｉｎａｔｉｏｎ値を書き換える。そして、アプリ提供部４３ｂは、中継装置３０のＩＰアドレスをキーにして、ＡＲＰテーブル４を参照して取得した中継装置３０のＭＡＣアドレスで、図２９に示したメッセージのＬ２ヘッダのＤｅｓｔｉｎａｔｉｏｎ値を書き換える。さらに、アプリ提供部４３ｂは、メッセージのメッセージコンテンツ部に、セッション識別子およびセッションデータを格納する。
【０１１６】
このようにして作成されたメッセージは、例えば、図３２に示すように、Ｌ２ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。Ｌ２ヘッダには、送信元ＭＡＣアドレスであるサーバ装置４０のＭＡＣアドレスと、宛先ＭＡＣアドレスである中継装置３０のＭＡＣアドレスとが記載される。パケットヘッダには、送信元ＩＰアドレスとポート番号としてサーバ装置４０のＩＰアドレスとポート番号、宛先ＩＰアドレスとポート番号として中継装置３０のＩＰアドレスとポート番号とが記載される。さらに、メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子およびセッションデーとが記載される。なお、図３２は、セッション確立後にサーバ装置から中継装置へ送信されるメッセージ例を示す図である。
【０１１７】
一方、アプリ提供部４３ｂは、セッション識別子が含まれていない場合（ステップＳ５０１否定）、セッション作成、すなわち、アプリケーションがセッションデータを生成し、そのデータに付与するセッション識別子を生成する（ステップＳ５０４）。
【０１１８】
その後、セッション情報通知部４３ａは、セッション識別子、サーバ装置４０のＩＰアドレス、送信元（負荷分散元）の中継装置のＩＰアドレスを含むセッション情報を管理装置５０に送信する（ステップＳ５０５）。そして、セッション情報通知部４３ａは、管理装置５０から応答を受信すると（ステップＳ５０６肯定）、ステップＳ５０２以降の処理を実行する。
【０１１９】
（セッション識別子受信時の管理装置動作）
続いて、図３３を用いて、セッション識別子受信時の管理装置動作を示すフローチャートについて説明する。図３３は、セッション識別子受信時の管理装置動作を示すフローチャートである。
【０１２０】
図３３に示すように、管理装置５０のセッション情報受信部５３ａは、サーバ装置４０からセッション情報を受信し（ステップＳ６０１）、メッセージを中継する中継装置３０を選択する（ステップＳ６０２）。続いて、ルール作成部５３ｂは、転送ルールを作成する（ステップＳ６０３）。
【０１２１】
例えば、セッション情報受信部５３ａは、図３４に示すように、「セッション識別子、セッション保持サーバアドレス、中継装置アドレス」が対応付けられたメッセージを受信する。ここで「セッション識別子」とは、サーバ装置４０が生成した識別子であり、「セッション保持サーバアドレス」とは、セッション識別子を生成したサーバ装置４０のＩＰアドレスである。また、「中継装置アドレス」とは、メッセージをサーバ装置４０に送信した中継装置のＩＰアドレスである。
【０１２２】
そして、セッション情報受信部５３ａは、図３５に示すように、「セッション識別子」と「中継装置アドレス」とを対応付けた転送ルールを作成する。なお、図３４は、管理装置５０が受信するセッション情報の例を示す図であり、図３５は、管理装置５０が作成する転送ルールの例を示す図である。
【０１２３】
図３３に戻り、ルール配布部５３ｃは、ルール作成部５３ｂによって作成された転送ルールを、ステップＳ６０２で選択・特定された中継装置に対して配布する（ステップＳ６０４）。例えば、ルール配布部５３ｃは、図３６に示すように、ルール配布先の中継装置３０のＩＰアドレスを示す「設定先アドレス」、セッション識別子とサーバのＩＰアドレスが含まれる「転送ルール」とを選択・特定された中継装置３０に対して配布する。なお、図３６は、管理装置５０が配布する転送ルールの例を示す図である。
【０１２４】
その後、ルール配布部５３ｃは、ルール配布先の中継装置３０からルール設定完了通知を受信すると（ステップＳ６０５肯定）、セッション情報送信元のサーバ装置４０に対して、設定完了通知を送信する（ステップＳ６０６）。
【０１２５】
（応答受信時の中継装置動作）
続いて、図３７を用いて、応答受信時の中継装置動作を示すフローチャートについて説明する。図３７は、応答受信時の中継装置動作を示すフローチャートである。
【０１２６】
図３７に示すように、中継装置３０のメッセージ応答部３３ｅは、クライアント装置１０から送信されたメッセージが通過する経路として自装置を選択する（ステップＳ７０１）。そして、メッセージ応答部３３ｅは、自装置を通過する経路制御識別子を、負荷分散装置２０が参照できる領域に埋め込んだ応答メッセージを作成し（ステップＳ７０２）、負荷分散装置２０に送信する（ステップＳ７０３）。
【０１２７】
例えば、メッセージ応答部３３ｅは、任意に文字列からなる経路制御識別子を生成し、図３２に示したメッセージのプロトコルヘッダ領域（ｃｏｏｋｉｅ）に埋め込む。具体的には、メッセージ応答部３３ｅは、図３８に示すように、図３２のメッセージのプロトコルヘッダに経路制御識別子を埋め込んだメッセージを作成する。なお、図３８の各領域については、図３２と同様の情報が埋め込まれているため、ここでは詳細な説明は省略する。図３８は、セッション確立後に経路制御識別子が埋め込まれたメッセージ例を示す図である。
【０１２８】
その後、メッセージ応答部３３ｅは、図３８のパケットヘッダからコネクションを特定する情報として「送信元ＩＰアドレス：ポート番号、宛先ＩＰアドレス：ポート番号」を抽出する。続いて、メッセージ応答部３３ｅは、抽出したコネクションを特定する情報をキーにして、コネクションテーブル３２ｃを検索し、リクエスト送信時に格納したコネクションを特定する。そして、メッセージ応答部３３ｅは、特定したコネクション情報を図３８に示したメッセージのパケットヘッダに書き込む。さらに、メッセージ応答部３３ｅは、書き換えたパケットヘッダの宛先ＩＰ（ＩＰ−ＣＬ）をキーにして、ＡＲＰテーブル３を検索し、負荷分散装置２０のＭＡＣアドレス（ＭＡＣ−ＳＬＢ）を取得し、Ｌ２ヘッダの宛先ＭＡＣアドレスをＭＡＣ−ＳＬＢに書き換える。メッセージ応答部３３ｅは、生成した応答メッセージを負荷分散装置２０に送信する。
【０１２９】
このようにして作成されたメッセージは、例えば、図３９に示すように、Ｌ２ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。Ｌ２ヘッダには、送信元ＭＡＣアドレスである中継装置３０のＭＡＣアドレスと、宛先ＭＡＣアドレスである負荷分散装置２０のＭＡＣアドレスとが記載される。パケットヘッダには、送信元ＩＰアドレスとポート番号として中継装置３０のＩＰアドレスとポート番号、宛先ＩＰアドレスとポート番号としてクライアント装置１０のＩＰアドレスとポート番号とが記載される。さらに、プロトコルヘッダには、経路制御識別子が記載されている。メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子およびセッションデータとが記載される。なお、図３９は、セッション確立後に中継装置から負荷分散装置へ送信されるメッセージ例を示す図である。
【０１３０】
（応答受信時の負荷分散装置動作）
次に、図４０を用いて、応答受信時の負荷分散装置動作を示すフローチャートについて説明する。図４０は、応答受信時の負荷分散装置動作を示すフローチャートである。
【０１３１】
図４０に示すように、負荷分散装置２０の自律学習部２３ｃは、中継装置３０からリクエストメッセージを受信し、当該メッセージから「経路制御識別子」を抽出する（ステップＳ８０１）。例えば、自律学習部２３ｃは、受信したリクエストメッセージのプロトコルヘッダのｃｏｏｋｉｅから「経路制御識別子」を抽出する。
【０１３２】
そして、自律学習部２３ｃは、抽出した「経路制御識別子」に対応する転送ルールが存在するか否かを判定する（ステップＳ８０２）。例えば、自律学習部２３ｃは、抽出された「経路制御識別子」をキーにして転送ルールテーブル２２ｂを検索し、抽出された「経路制御識別子」に対応する転送ルールが存在するか否かを判定する。
【０１３３】
抽出された「経路制御識別子」に対応する転送ルールが存在する場合（ステップＳ８０２肯定）、自律学習部２３ｃは、新たに受信した転送ルールで既存の転送ルールを更新する（ステップＳ８０３）。そして、自律学習部２３ｃは、中継装置３０から受信した応答メッセージをクライアント装置１０へ送信する（ステップＳ８０４）。
【０１３４】
一方、抽出された「経路制御識別子」に対応する転送ルールが存在しない場合（ステップＳ８０２否定）、自律学習部２３ｃは、受信した転送ルールを新たなエントリとして格納する（ステップＳ８０５）。そして、自律学習部２３ｃは、中継装置３０から受信した応答メッセージをクライアント装置１０へ送信する（ステップＳ８０４）。
【０１３５】
例えば、自律学習部２３ｃは、図３９に示したＬ２ヘッダとパケットヘッダのＳｏｕｒｃｅ値を自装置の負荷分散装置２０の値に書き換える。また、自律学習部２３ｃは、クライアント装置のＩＰアドレスであるパケットヘッダのＤｉｓｔｉｎａｔｉｏｎ値をキーにして、ＡＲＰテーブル２を検索し、クライアント装置１０のＭＡＣアドレスを特定する。そして、自律学習部２３ｃは、図３９に示したＬ２ヘッダのＤｉｓｔｉｎａｔｉｏｎ値をクライアント装置１０のＭＡＣアドレスで書き換える。
【０１３６】
このようにして作成されたメッセージは、例えば、図４１に示すように、Ｌ２ヘッダと、パケットヘッダと、プロトコルヘッダと、メッセージコンテンツ部とを有する。Ｌ２ヘッダには、送信元ＭＡＣアドレスである負荷分散装置２０のＭＡＣアドレスと、宛先ＭＡＣアドレスであるクライアント装置１０のＭＡＣアドレスとが記載される。パケットヘッダには、送信元ＩＰアドレスとポート番号として負荷分散装置２０のＩＰアドレスとポート番号、宛先ＩＰアドレスとポート番号としてクライアント装置１０のＩＰアドレスとポート番号とが記載される。さらに、プロトコルヘッダには、経路制御識別子が記載される。メッセージコンテンツ部には、リクエストメッセージのデータ本体と、セッション識別子とが記載される。なお、図４１は、セッション確立後に負荷分散装置からクライアント装置へ送信されるメッセージ例を示す図である。
【０１３７】
（応答受信時のクライアント動作）
続いて、図４２を用いて、応答受信時のクライアント動作を示すフローチャートについて説明する。図４２は、応答受信時のクライアント動作を示すフローチャートである。
【０１３８】
図４２に示すように、クライアント装置１０のアプリ実行部１３ａは、負荷分散装置２０から受信した応答メッセージのプロトコルヘッダを参照して、経路制御識別子が含まれているか否かを判定する（ステップＳ９０１）。
【０１３９】
そして、アプリ実行部１３ａは、経路制御識別子が含まれている場合（ステップＳ９０１肯定）、応答メッセージから経路制御識別子を取得し、ｃｏｏｋｉｅテーブル１２ａに格納する（ステップＳ９０２）。一方、アプリ実行部１３ａは、経路制御識別子が含まれていない場合（ステップＳ９０１否定）、ステップＳ９０２をスキップして、ステップＳ９０３を実行する。
【０１４０】
さらに、アプリ実行部１３ａは、負荷分散装置２０から受信した応答メッセージのメッセージコンテンツ部を参照して、セッション識別子が含まれているか否かを判定する（ステップＳ９０３）。
【０１４１】
そして、アプリ実行部１３ａは、セッション識別子が含まれている場合（ステップＳ９０３肯定）、応答メッセージからセッション識別子を取得し、アプリセッション識別子テーブル１２ｂに格納する（ステップＳ９０４）。一方、アプリ実行部１３ａは、セッション識別子が含まれていない場合（ステップＳ９０３否定）、処理を終了する。
【０１４２】
（ルール設定時の中継装置動作）
続いて、図４３を用いて、ルール設定時の中継装置動作を示すフローチャートについて説明する。図４３は、ルール設定時の中継装置動作を示すフローチャートである。
【０１４３】
図４３に示すように、中継装置３０の転送ルール格納部３３ｄは、管理装置５０からリクエストメッセージ（図３６参照）を受信し、当該メッセージから「セッション識別子」を抽出する（ステップＳ１００１）。例えば、転送ルール格納部３３ｄは、受信したリクエストメッセージのメッセージコンテンツ部から「セッション識別子」を抽出する。
【０１４４】
そして、転送ルール格納部３３ｄは、抽出した「セッション識別子」に対応する転送ルールが存在するか否かを判定する（ステップＳ１００２）。例えば、転送ルール格納部３３ｄは、抽出された「セッション識別子」をキーにして転送ルールテーブル３２ａを検索し、抽出された「セッション識別子」に対応する転送ルールが存在するか否かを判定する。
【０１４５】
抽出された「セッション識別子」に対応する転送ルールが存在する場合（ステップＳ１００２肯定）、転送ルール格納部３３ｄは、受信したメッセージに含まれる転送ルールで既存の転送ルールを更新する（ステップＳ１００３）。そして、転送ルール格納部３３ｄは、管理装置５０に対して設定完了通知を送信する（ステップＳ１００４）。
【０１４６】
一方、抽出された「セッション識別子」に対応する転送ルールが存在しない場合（ステップＳ１００２否定）、転送ルール格納部３３ｄは、受信したメッセージに含まれる転送ルールを新たなエントリとして、転送ルールテーブル３２ａに格納する（ステップＳ１００５）。そして、転送ルール格納部３３ｄは、管理装置５０に対して設定完了通知を送信する（ステップＳ１００４）。
【０１４７】
［実施例１による効果］
このように、実施例１によれば、転送ルールを設定する中継装置３０は１台のみとなり、転送ルールを設定する回数が少ない。また、１台の中継装置３０が設定時間だけが待機状態となるため、待機時間を大幅に削減できる。その結果、一意性を保証しつつ、クライアントへの応答性能の劣化を防止することが可能である。
【０１４８】
また、実施例１によれば、並列化されたＮ台の中継装置３０に一意性保証のための転送ルールを配布して一意性保証を実現する方式と比較して、設定配布先が１カ所になるため配布のための処理を１／Ｎに削減できる。この効果は、中継装置３０の並列度Ｎが増すほど大きくなる。さらにシステムへの波及効果として、設定配布の負荷が１／Ｎとなったことで、ある処理性能を持つサーバで単位時間当たりにさばける設定処理がＮ倍になり、所望のシステム性能に対して必要な設定処理サーバ数の削減が期待できる。設定回数削減による効果として、クライアントへの応答時間も削減されることが期待できる。
【実施例２】
【０１４９】
ところで、実施例１では、負荷分散装置２０が中継装置３０から受信した情報に基づいて転送ルールを作成する例について説明したが、これに限定されるものではない。例えば、負荷分散装置２０は、管理装置５０から転送ルールを受信して格納するようにすることもできる。
【０１５０】
そこで、実施例２では、負荷分散装置２０が管理装置５０から転送ルールを受信して格納する例について説明する。なお、実施例２では、実施例１と異なる機能を有する中継装置３０の構成、管理装置５０の構成、実施例２に係る処理シーケンスについて説明する。
【０１５１】
（中継装置の構成）
図４４に示すように、中継装置３０は、通信制御Ｉ／Ｆ部３１と、記憶部３２と、制御部３３とを有している。ここでは、実施例１とは異なる機能である経路制御識別子通知部３３ｆについて説明し、その他の機能は実施例１と同様であるので、ここでは省略する。なお、図４４は、実施例２に係る中継装置の構成を示すブロック図である。
【０１５２】
経路制御識別子通知部３３ｆは、メッセージ応答部３３ｅによって作成された経路制御識別子を管理装置５０に送信する。具体的には、経路制御識別子通知部３３ｆは、メッセージ応答部３３ｅによって作成された経路制御識別子と、自装置である中継装置３０のＩＰアドレスとを対応付けて、管理装置５０に送信する。
【０１５３】
（管理装置の構成）
図４５に示すように、管理装置５０は、通信制御Ｉ／Ｆ部５１と、記憶部５２と、制御部５３とを有している。ここでは、実施例１とは異なる機能である負荷分散装置用ルール配布部５３ｄについて説明し、その他の機能は実施例１と同様であるので、ここでは省略する。なお、図４５は、実施例２に係る管理装置の構成を示すブロック図である。
【０１５４】
負荷分散装置用ルール配布部５３ｄは、負荷分散装置２０が使用する転送ルールを作成して配布する。具体的には、負荷分散装置用ルール配布部５３ｄは、中継装置３０の経路制御識別子通知部３３ｆから送信された経路制御識別子と中継装置３０のＩＰアドレスとを対応付けた転送ルールを作成し、負荷分散装置２０に配布する。その後、負荷分散装置用ルール配布部５３ｄは、設定が完了したことを負荷分散装置２０から受信し、受信した中継装置３０のＩＰアドレスに対して設定完了通知を送信する。
【０１５５】
（処理シーケンス）
次に、図４６を用いて、実施例２に係るシステムにおける処理シーケンスを説明する。図４６は、実施例２に係るシステムにおける処理シーケンスを示す図である。
【０１５６】
図４６に示すように、ステップＳ１１０１〜ステップＳ１１０８までの処理は、実施例１で説明したステップＳ１０１〜ステップＳ１０８までの処理と同様であるので、ここでは省略する。
【０１５７】
実施例１とは異なる点は、ステップＳ１１１０〜ステップＳ１１１５であり、具体的には、中継装置３０の経路制御識別子通知部３３ｆは、メッセージ応答部３３ｅによって作成された経路制御識別子を管理装置５０に送信する（ステップＳ１１０９）。
【０１５８】
続いて、管理装置５０の負荷分散装置用ルール配布部５３ｄは、中継装置３０の経路制御識別子通知部３３ｆから送信された経路制御識別子と中継装置３０のＩＰアドレスとを対応付けた転送ルールを作成する（ステップＳ１１１０）。そして、負荷分散装置用ルール配布部５３ｄは、作成した転送ルールを負荷分散装置２０に配布する（ステップＳ１１１１）。
【０１５９】
負荷分散装置２０は、管理装置５０から受信した転送ルールを転送ルールテーブル２２ｂに格納し、格納が終了したことを示す完了応答を管理装置５０に送信する（ステップＳ１１１２）。管理装置５０の負荷分散装置用ルール配布部５３ｄは、負荷分散装置用の転送ルールの配布が完了したことを示す完了応答を中継装置３０に送信する（ステップＳ１１１３）。
【０１６０】
その後、中継装置３０は、クライアント装置１０から送信されたメッセージが通過する経路を識別する経路制御識別子を埋め込んだ応答メッセージを負荷分散装置２０に送信する（ステップＳ１１１４）。負荷分散装置２０は、受信したメッセージをクライアント装置１０に送信する（ステップＳ１１１５）。
【０１６１】
その後に実行されるステップＳ１１１６〜ステップＳ１１１８の処理は、実施例１で説明したステップＳ１１１〜ステップＳ１１３の処理と同様であるので、ここでは省略する。
【０１６２】
［実施例２による効果］
このように、実施例２によれば、負荷分散装置２０は、自律して転送ルールを作成する必要がないので、ボトルネックとなる可能性が高い負荷分散装置２０の処理負荷を軽減することができ、クライアントへの応答時間も削減されることがより期待できる。
【実施例３】
【０１６３】
ところで、実施例１や２では、中継装置３０が経路制御識別子を生成する例について説明したが、これに限定されるものではない。例えば、管理装置５０が、メッセージの経路となる中継装置を特定して、経路制御識別子を生成することもできる。
【０１６４】
そこで、実施例３では、管理装置５０が、メッセージの経路となる中継装置を特定して、経路制御識別子を生成する例について説明する。なお、実施例３では、実施例１と異なる機能を有する中継装置３０の構成、管理装置５０の構成、実施例３に係る処理シーケンスについて説明する。
【０１６５】
（中継装置の構成）
図４７に示すように、中継装置３０は、通信制御Ｉ／Ｆ部３１と、記憶部３２と、制御部３３とを有している。ここでは、実施例１とは異なる機能であるセッション対応テーブル３２ｄと、テーブル格納部３３ｇとについて説明し、その他の機能は実施例１と同様であるので、ここでは省略する。なお、図４７は、実施例３に係る中継装置の構成を示すブロック図である。
【０１６６】
セッション対応テーブル３２ｄは、管理装置５０から送信されたセッション識別子と経路制御識別子とを対応付けて記憶する。例えば、セッション対応テーブル３２ｄは、図４８に示すように、「セッション識別子、経路制御識別子」として「Ｓ００００１、Ｋ００００１」や「Ｓ００００２、Ｋａａａａａ」などと記憶する。なお、図４８は、セッション対応テーブル３２ｄに記憶される情報の例を示す図である。
【０１６７】
テーブル格納部３３ｇは、管理装置５０から受信したセッション識別子と経路制御識別子とを対応付けて、セッション対応テーブル３２ｄに格納する。なお、メッセージ応答部３３ｅは、実施例１とは異なり、サーバ装置４０から応答メッセージを受信した場合に、当該応答メッセージからセッション識別子を抽出する。そして、メッセージ応答部３３ｅは、抽出したセッション識別子に対応する経路制御識別子をセッション対応テーブル３２ｄから取得し、応答メッセージに組み込んで、負荷分散装置２０に送信する。
【０１６８】
（管理装置の構成）
図４９に示すように、管理装置５０は、通信制御Ｉ／Ｆ部５１と、記憶部５２と、制御部５３とを有している。ここでは、実施例１とは異なる機能である経路制御識別子生成部５３ｅと、負荷分散装置用ルール配布部５３ｆとについて説明し、その他の機能は実施例１と同様であるので、ここでは省略する。なお、図４９は、実施例３に係る管理装置の構成を示すブロック図である。
【０１６９】
経路制御識別子生成部５３ｅは、例えば、ラウンドロビンなどの自律振分アルゴリズムなどに従って、メッセージの振分先となる中継装置３０を特定し、特定した中継装置３０を特定するための経路制御識別子を生成する。そして、経路制御識別子生成部５３ｅは、生成した経路制御識別子と、サーバ装置４０から受信したセッション識別子とを対応付けて、特定した中継装置３０に送信する。なお、自律振分アルゴリズムを用いなくても、例えば、サーバ装置４０にメッセージを振分けた中継装置を振分先と決定してもよい。この場合、振り分けられたサーバ装置から中継装置の情報を取得すればよい。その他の場合は、中継装置のホスト名とＩＰアドレスとを対応付けて記憶しておけばよい。
【０１７０】
負荷分散装置用ルール配布部５３ｆは、負荷分散装置２０が使用する転送ルールを作成して配布する。具体的には、負荷分散装置用ルール配布部５３ｆは、経路制御識別子生成部５３ｅによって生成された経路制御識別子と、経路制御識別子生成部５３ｅによって特定された中継装置３０のホスト名から特定したＩＰアドレスとを対応付けた転送ルールを作成する。そして、負荷分散装置用ルール配布部５３ｆは、生成した転送ルールを負荷分散装置２０に配布する。その後、負荷分散装置用ルール配布部５３ｆは、設定が完了したことを負荷分散装置２０から受信し、受信した中継装置３０のＩＰアドレスに対して設定完了通知を送信する。
【０１７１】
（処理シーケンス）
次に、図５０を用いて、実施例３に係るシステムにおける処理シーケンスを説明する。図５０は、実施例３に係るシステムにおける処理シーケンスを示す図である。
【０１７２】
図５０に示すように、ステップＳ１２０１〜ステップＳ１２０６までの処理は、実施例１で説明したステップＳ１０１〜ステップＳ１０６までの処理と同様であるので、ここでは省略する。
【０１７３】
実施例１とは異なる点は、ステップＳ１２０７〜ステップＳ１２１６であり、具体的には、管理装置５０の経路制御識別子生成部５３ｅは、所定の条件に基づいて、メッセージの振分先となる中継装置３０を特定する（ステップＳ１２０７）。続いて、経路制御識別子生成部５３ｅは、特定した中継装置３０を特定するための経路制御識別子を生成する（ステップＳ１２０８）。
【０１７４】
そして、経路制御識別子生成部５３ｅは、生成した経路制御識別子と、サーバ装置４０から受信したセッション識別子とを対応付けて、特定した中継装置３０に送信する（ステップＳ１２０９）。
【０１７５】
その後、サーバ装置４０のセッション情報通知部４３ａは、受信したリクエストメッセージの応答メッセージのメッセージコンテンツ部にセッション識別子を埋め込んで、受信した中継装置３０のＩＰアドレスに送信する（ステップＳ１２１０）。
【０１７６】
中継装置３０のメッセージ応答部３３ｅは、応答メッセージから抽出したセッション識別子に対応する経路制御識別子をセッション対応テーブル３２ｄから取得し、応答メッセージに組み込んで、負荷分散装置２０に送信する（ステップＳ１２１１）。
【０１７７】
一方で、管理装置５０の負荷分散装置用ルール配布部５３ｆは、路制御識別子と、経路制御識別子生成部５３ｅによって特定された中継装置３０のＩＰアドレスとを対応付けた転送ルールを作成する（ステップＳ１２１２）。そして、負荷分散装置用ルール配布部５３ｆは、生成した転送ルールを負荷分散装置２０に配布する（ステップＳ１２１３）。
【０１７８】
負荷分散装置２０は、管理装置５０から受信した転送ルールを転送ルールテーブル２２ｂに格納し、格納が終了したことを示す完了応答を管理装置５０に送信する（ステップＳ１２１４）。また、負荷分散装置２０は、ステップＳ１２１１で受信したメッセージをクライアント装置１０に送信する（ステップＳ１２１５）。
【０１７９】
そして、管理装置５０は、中継装置３０が転送ルールを格納したことを示す完了応答や負荷分散装置用の転送ルールの配布が完了したことを示す完了応答をサーバ装置４０に送信する（ステップＳ１２１６）。
【０１８０】
その後に実行されるステップＳ１２１７〜ステップＳ１２１９の処理は、実施例１で説明したステップＳ１１１〜ステップＳ１１３の処理と同様であるので、ここでは省略する。
【０１８１】
［実施例３による効果］
このように、実施例３によれば、負荷分散装置２０は、自律して転送ルールを作成する必要がないので、ボトルネックとなる可能性が高い負荷分散装置２０の処理負荷を軽減することができる。さらに、中継装置も転送ルールや経路制御識別子等を作成する必要がない。したがって、実施例１や２と比較しても、クライアントへの応答時間も削減されることがより期待できる。
【実施例４】
【０１８２】
さて、これまで様々な実施例について説明したが、上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に示すように、異なる実施例を説明する。
【０１８３】
（経路制御識別子）
例えば、実施例１〜３では、任意に文字列からなる経路制御識別子を生成して利用する例について説明したが、これに限定されるものではない。例えば、中継装置のＩＰアドレスやＵＲＬ、ＭＡＣアドレスなど中継装置のネットワーク情報そのものを経路制御識別子として利用することもできる。
【０１８４】
（中継装置の情報）
また、例えば、実施例１〜３では、経路制御識別子と対応付けなどする中継装置の情報としてＩＰアドレスを用いたが、これに限定されるものではなく、例えば、ＵＲＬ＋名前解決などを用いることもできる。
【０１８５】
（システム構成等）
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１８６】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１８７】
（プログラム）
なお、本実施例で説明した負荷分散方法、メッセージ中継方法、転送ルール管理方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【符号の説明】
【０１８８】
１０  クライアント装置
１１  通信制御Ｉ／Ｆ部
１２  記憶部
１２ａ  Ｃｏｏｋｉｅテーブル
１２ｂ  アプリセッション識別子テーブル
１３  制御部
１３ａ  アプリ実行部
２０  負荷分散装置
２１  通信制御Ｉ／Ｆ部
２２  記憶部
２２ａ  中継装置リストテーブル
２２ｂ  転送ルールテーブル
２３  制御部
２３ａ  メッセージ識別部
２３ｂ  負荷分散機能部
２３ｃ  自律学習部
３０  中継措置
３１  通信制御Ｉ／Ｆ部
３２  記憶部
３２ａ  転送ルールテーブル
３２ｂ  サーバリストテーブル
３２ｃ  コネクションテーブル
３２ｄ  セッション対応テーブル
３３  制御部
３３ａ  メッセージ判定部
３３ｂ  第一振分部
３３ｃ  第二振分部
３３ｄ  転送ルール格納部
３３ｅ  メッセージ応答部
３３ｆ  経路制御識別子通知部
３３ｇ  テーブル格納部
４０  サーバ装置
４１  通信制御Ｉ／Ｆ部
４２  記憶部
４２ａ  セッションテーブル
４３  制御部
４３ａ  セッション情報通知部
４３ｂ  アプリ提供部
５０  管理装置
５１  通信制御Ｉ／Ｆ部
５２  記憶部
５２ａ  転送ルールテーブル
５３  制御部
５３ａ  セッション情報受信部
５３ｂ  ルール作成部
５３ｃ  ルール配布部
５３ｄ  負荷分散装置用ルール配布部
５３ｅ  経路制御識別子生成部
５３ｆ  負荷分散装置用ルール配布部
【図１】
2011041006.tif 000003
【図２−１】
2011041006.tif 000004
【図２−２】
2011041006.tif 000005
【図３−１】
2011041006.tif 000006
【図３−２】
2011041006.tif 000007
【図４−１】
2011041006.tif 000008
【図４−２】
2011041006.tif 000009
【図５】
2011041006.tif 000010
【図６−１】
2011041006.tif 000011
【図６−２】
2011041006.tif 000012
【図７】
2011041006.tif 000013
【図８】
2011041006.tif 000014
【図９】
2011041006.tif 000015
【図１０】
2011041006.tif 000016
【図１１】
2011041006.tif 000017
【図１２】
2011041006.tif 000018
【図１３】
2011041006.tif 000019
【図１４】
2011041006.tif 000020
【図１５】
2011041006.tif 000021
【図１６】
2011041006.tif 000022
【図１７】
2011041006.tif 000023
【図１８】
2011041006.tif 000024
【図１９】
2011041006.tif 000025
【図２０】
2011041006.tif 000026
【図２１】
2011041006.tif 000027
【図２２】
2011041006.tif 000028
【図２３】
2011041006.tif 000029
【図２４】
2011041006.tif 000030
【図２５】
2011041006.tif 000031
【図２６】
2011041006.tif 000032
【図２７】
2011041006.tif 000033
【図２８】
2011041006.tif 000034
【図２９】
2011041006.tif 000035
【図３０】
2011041006.tif 000036
【図３１】
2011041006.tif 000037
【図３２】
2011041006.tif 000038
【図３３】
2011041006.tif 000039
【図３４】
2011041006.tif 000040
【図３５】
2011041006.tif 000041
【図３６】
2011041006.tif 000042
【図３７】
2011041006.tif 000043
【図３８】
2011041006.tif 000044
【図３９】
2011041006.tif 000045
【図４０】
2011041006.tif 000046
【図４１】
2011041006.tif 000047
【図４２】
2011041006.tif 000048
【図４３】
2011041006.tif 000049
【図４４】
2011041006.tif 000050
【図４５】
2011041006.tif 000051
【図４６】
2011041006.tif 000052
【図４７】
2011041006.tif 000053
【図４８】
2011041006.tif 000054
【図４９】
2011041006.tif 000055
【図５０】
2011041006.tif 000056
【図５１】
2011041006.tif 000057
【図５２】
2011041006.tif 000058
【図５３】
2011041006.tif 000059
【図５４】
2011041006.tif 000060